1
0
Fork
You've already forked caports
0
Canopy package sources
  • Shell 96.5%
  • C 3%
  • Lua 0.5%
2023年08月11日 13:28:31 -07:00
device/main treewide: bootstrapping mostly done, and usrmerge 2023年07月17日 19:44:20 +01:00
main DO NOT MERGE: testing bpo triggering 2023年08月11日 13:28:31 -07:00
temp small fixes and updates 2023年07月18日 00:11:17 +01:00
.editorconfig Initial commit 2023年07月11日 17:00:47 +01:00
channels.cfg Initial commit 2023年07月11日 17:00:47 +01:00
COMMITSTYLE.md Initial commit 2023年07月11日 17:00:47 +01:00
LICENSE Initial commit 2023年07月11日 17:00:47 +01:00
pmaports.cfg Initial commit 2023年07月11日 17:00:47 +01:00
README.md small fixes and updates 2023年07月18日 00:11:17 +01:00

Canopy aports

Packages repo for Canopy.

Getting started

Huge thanks for Jane for bootstrapping systemd on top of postmarketOS, almost all of the initial packages were set up by her.

You should check out the initramfs-log-to-kmsg pmaports branch if building for an sdm845 device.

You will need to use the fork of pmbootstrap too to enable support for multiple aports directories and various additional fixes (and hacks..) for usrmerge, Canopy, and systemd.

Then clone caports into $PMBWORK/cache_git/ and edit ~/.config/pmbootstrap.cfg to match:

[pmbootstrap]
aports = /home/<MY_USER>/.local/var/pmbootstrap/cache_git/caports,/home/<MY_USER>/.local/var/pmbootstrap/cache_git/pmaports
...

Testing using my (temporary) binary repo

Security here is FAR from ideal, but hopefully good enough for testing.

Fetch the temporary key I used for signing and put it in $PMBWORK/config_apk_keys.

https://calebs.dev/canopy/pmos%40local-64aef6f1.rsa.pub

Then configure pmbootstrap.cfg to add my mirror:

mirrors_postmarketos = http://calebs.dev/canopy/edge,http://mirror.postmarketos.org/postmarketos/

You should be able to generate a rootfs for qemu-amd64 or for the shift6mq with minimal effort.

Bootstrapping from source

You can bootstrap from just the source repo following roughly these steps.

pmbootstrap config ui gnome-mobile
pmbootstrap config device shift-axolotl # Or whatever
# We need to bootstrap without merge-usr so we can build the forked packages
# for usrmerge support
pmbootstrap config merge_usr False
pmbootstrap build --force tar abuild coreutils busybox
pmbootstrap config merge_usr True
# canopy-base provides os-release which systemd needs
# avoid the dependency cycle by building it first with --ignore-depends
# cycle: postmarketos-base ->
# postmarketos-initramfs -> multipath-tools -> systemd
# postmarketos-initramfs also needs to be built this way
pmbootstrap build --ignore-depends canopy-base postmarketos-initramfs
# dbus and linux-pam need to built without systemd first (and without eudev/elogind)
pmbootstrap build --bootstrap dbus linux-pam
# Build systemd \o/
pmbootstrap build alpine-base systemd
# build the real versions of the bootstrap packages as they can now pull in systemd-dev
pmbootstrap build --force dbus linux-pam
# Attempt to install and pray
pmbootstrap install --password 147147

Issues

rc-update is missing, the alpine-base fork includes a wrapper which invokes systemd instead, this is so that "enable" commands will work in the chroot. sysv-init compatibility only works on a running system. Packages to fix:

  • call_audio_idle_suspend_workaround <- soc-qcom-sdm845
  • deferred-initcalls <- not sure where this comes from
  • hkdm
  • postmarketos-tweakd
  • swapfile

Additionally, some important services don't get enabled automatically. Either their relevant service file from systemd-services package doesn't get installed, or the (bridged) call to systemctl enable happens too early. Notably:

  • sshd
  • NetworkManager

These need to be enabled explicitly on first boot.