Git Product home page Git Product logo

fexofenadine / portmaster-new Goto Github PK

View Code? Open in Web Editor NEW

This project forked from portsmaster/portmaster-new

0.0 1.0 0.0 8.93 GB

New PortMaster repo

License: MIT License

Shell 5.01% JavaScript 3.45% Ruby 0.01% C++ 0.45% Scheme 0.71% Python 1.04% Perl 0.02% C 12.55% PHP 0.01% Common Lisp 3.21% Lua 70.39% Haskell 0.01% Assembly 1.36% PowerShell 0.02% TypeScript 0.04% CSS 0.03% Squirrel 0.11% GAP 0.01% GDScript 0.55% Makefile 1.07%

portmaster-new's Introduction

PortMaster

PortMaster is a simple tool that allows easy installation of Ports for devices running AmberELEC, ArkOS, JelOS, RetroOZ, TheRA, and EmuELEC for various handheld linux based devices.

One of the goals of PortMaster is to not install or upgrade any existing OS libraries for any ports. Any of the ports that need a particular non standard library are maintained within the ports' folder and made available specifically to that port during execution.

To learn more visit portmaster.games.

Nitty gritty details

PortMaster used to be a collection of zips inside of a git repo, this got unwieldy, especially now that we have 300+ ports. It was impossible to tell from one release to the next what files were actually changed. It made checking scripts incredibly hard, and even harder to learn from other ports.

The PortMaster-New repo now has all the ports unzipped, this makes the repo slightly larger initially, however changes will no longer greatly increase the size. The release system intelligently

Submitting a PR

To submit a PR you will have to fork the repo. After forking the repo, go into the settings for the fork and disable github actions for your fork.

Afterwards you can clone the repo, and you should run the newly made tools/prepare_repo.sh from the root of repo. This will download the latest files from the release system.

tools/prepare_repo.sh

From there you can create a new directory in ports/ for your new port, be sure to check the below New Port Structure section to make sure your port has all the required files.

After your port has been added and you are ready to submit it, you can run the build_release.py script to check if your port adheres to the port standards.

python3 tools/build_release.py --do-check

This will check your port to make sure it has all the required files, and will warn of any issues.

If you add a file that is larger than 90+ MB, you will have to run the script tools/build_data.py. It will split the file into 50mb chunks suitable for committing to github. If you edit the large-file just rerun the above script and it will update the chunks. This also adds the file to .gitginore in the ports directory so that the large file will not be committed to the repo.

From there you can do a PR and it will be checked again, portmaster crew members will double check it once again.

You can use the build_release.py to build the zips of any ports that have changed.

python3 tools/build_release.py

Your port zips will then be in releases/, these are suitable for posting to discord for testing.


Portname requirements

The portname must start with either a lowercase letter (a-z) or a number (0-9).

You can then have a combination of lowercase letters (a-z), numbers (0-9), periods (.), or underscores (_).

There is no limit on the length of the name, but keep it short.

This name must not clash with any other existing ports.

New Port Structure:

Ports are now contained within the port top level directory, each port has its own sub-directory named after the port itself. Each port must adhere to the portname rules stated above. Each port must have a port.json, screenshot.{jpg,png}, README.md, a port script and a port directory. It may optionally include a cover.{jpg,png} and a gameinfo.xml.

The script should have capital letters (like Port Name.sh) and must end in .sh, the port directory should be the same as the containing directory. Some legacy ports have different names, new ports won't be accepted unless they follow the new convention.

Scripts and port directories must be unique across the whole project, checks will be run to ensure this is right.

A port directory might look like the following:

- portname/
  - port.json
  - README.md
  - screenshot.jpg
  - cover.jpg
  - gameinfo.xml
  - Port Name.sh
  - portname/
    - <portfiles here>

The above file structure would create a portname.zip file.

README.md

This adds additional info for the port on the wiki, we have a handy README.md generator here.

## Notes

{ADDITIONAL NOTES HERE}

Thanks to {THANKS INFO HERE} for the source code. Also thanks to {PORTER NAME} for the packaging for portmaster.

port.json

This is used by portmaster, this should include all the pertinent info for the port, we have a handy port.json generator here.

Example from 2048.

{
    "version": 2,
    "name": "2048.zip",
    "items": [
        "2048.sh",
        "2048/"
    ],
    "items_opt": null,
    "attr": {
        "title": "2048",
        "desc": "The 2048 puzzle game",
        "inst": "Ready to run.",
        "genres": [
            "puzzle"
        ],
        "porter": [
            "Christian_Haitian"
        ],
        "image": {},
        "rtr": true,
        "runtime": null,
        "reqs": [],
        "arch": [
            "aarch64",
            "armhf"
        ]
    }
}

TODO:

  • Load port data
  • Check port has reqired files
  • Check for common errors in ports.
  • Check for gameinfo.xml errors.
  • Check if port clashes with other ports
  • Run port.spec before zipping port
  • Create portname.zip only if port is changed
  • Run in --do-check for PR pre-check
  • Create ports.json
  • Create markdown.zip
  • Create images.zip

portmaster-new's People

Contributors

ajenbo avatar captain-barge avatar cebion avatar christopher-roelofs avatar fexofenadine avatar fraxinus88 avatar jantrueno avatar jareth247 avatar jeodc avatar johnnyonflame avatar joyrider3774 avatar kloptops avatar madshmupper avatar mhoogcarspel avatar monkeyx-net avatar mxmgorin avatar nkahoang avatar octopuserectus avatar onionland avatar porschemad911 avatar siliconexarch avatar slayer366 avatar tabreturn avatar tlaggypyro avatar wesamdev avatar wolod avatar wwark avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.