Patched pmbootstrap to build my packages
Find a file
Oliver Smith 3a3dd8063f
Merge branch 'lazy-reproducible-builds'
We have "lazy reproducible builds" now. What I mean by that is, that
the resulting "apk" archive is not fully reproducible, but all binaries
inside it are. This is necessary to kick-off the binary repo, which is
in turn required to get the testsuite going on Travis. Read #64 for more
information.

Usage:
```
pmbootstrap build hello-world --buildinfo
pmbootstrap challenge /tmp/path/to/hello-world-1-r2.apk
```

The "--buildinfo" parameter generates a "buildinfo.json", which contains
the versions of all dependencies. It is not very optimizied, so this
is a performance bottleneck and takes 10 seconds (which is quite much
considering that the hello-world package builds in less than a second).
This can be improved in the future, and then the buildinfo parameter
may become the default.
2017-06-11 14:19:57 +02:00
aports Merge branch 'lazy-reproducible-builds' 2017-06-11 14:19:57 +02:00
keys Hello, there! 2017-05-26 22:08:45 +02:00
pmb Merge branch 'lazy-reproducible-builds' 2017-06-11 14:19:57 +02:00
test Add testcase for interactive shell 2017-06-02 22:28:46 +02:00
.gitignore Add *.rej and *.orig to gitignore (failed patches create these files) 2017-06-06 16:29:22 +02:00
.travis.yml Rename travis.yaml to travis.yml 2017-05-28 02:48:03 +02:00
CONTRIBUTING.md Add CONTRIBUTING.md 2017-05-28 03:40:30 +02:00
LICENSE Initial commit 2017-05-26 19:25:48 +00:00
pmbootstrap.py Merge branch 'lazy-reproducible-builds' 2017-06-11 14:19:57 +02:00
README.md Slightly re-arrange the links, add link to the security warning 2017-06-04 04:50:06 +02:00

pmbootstrap

Sophisticated chroot/build/flash tool to develop and install postmarketOS.

Static code analysis status: travis badge

Requirements

  • GNU/Linux
  • Python 3
  • OpenSSL

Usage

Check out the porting guide for a practical start!

Run ./pmbootstrap.py init first, to select a target device and the work folder, which will contain all the chroots and other data. After that, you can run any command. All dependencies (e.g. chroots) will be installed automatically, if they are not available yet.

Here are some examples:

./pmbootstrap.py --help: List all available commands

./pmbootstrap.py log: Run tail -f on the logfile, which contains detailed output. Do this in a second terminal, while executing another pmbootstrap command to get all the details.

./pmbootstrap.py chroot: Open a shell inside a native Alpine Linux chroot (~6 MB install size).

./pmbootstrap.py chroot --suffix=buildroot_armhf: Open a shell inside an armhf Alpine Linux chroot, with qemu user mode emulation and binfmt support automatically set up.

./pmbootstrap.py build heimdall: Build the "heimdall" package (specify any package from the aports-folder here).

./pmbootstrap.py build heimdall --arch=armhf: Build the "heimdall" package for armhf inside the armhf chroot, with the cross-compiler installed in the native chroot (chroots are connected via distcc).

./pmbootstrap.py install: Generate a system image file with a full postmarketOS installation. All required packages get built first, if they do not exist yet. You will get asked for the "user" password and the root partition password.

./pmbootstrap.py install --sdcard=/dev/mmcblk0: Format and partition the SD card /dev/mmcblk0, and put a full postmarketOS installation on it

Testsuite

Simply install pytest (via your package manager or via pip) and run it inside the pmbootstrap folder.