Skip to content

Latest commit

 

History

63 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PortMaster - Builds

This repository provides compile instructions for each port and how to setup the build environment used by me for my Ports. Also some inforamtion I gathered and wrote down over time.

Build Environment

My current build environment is a chroot inside an Ubuntu 22.04.

Instructions how to set it up:

Install required packages on Ubuntu 22.04 LTS WS2

sudo apt install \
build-essential \
binfmt-support \
daemonize \
libarchive-tools \
qemu-system \
qemu-user \
qemu-user-static \
gcc-aarch64-linux-gnu \
g++-aarch64-linux-gnu
  • Download the jammy arm64 WSL rootfs from Ubuntu Cloud image.
wget https://cloud-images.ubuntu.com/wsl/jammy/current/ubuntu-jammy-wsl-arm64-ubuntu22.04lts.rootfs.tar.gz
  • Extract the tarball in a folder:
mkdir folder
sudo bsdtar -xpf ubuntu-jammy-wsl-arm64-ubuntu22.04lts.rootfs.tar.gz -C folder
  • Copy qemu static binary into that folder:
sudo cp /usr/bin/qemu-aarch64-static folder/usr/bin
  • Start systemd with daemonize:
sudo daemonize \
/usr/bin/unshare -fp --mount-proc \
/lib/systemd/systemd --system-unit=basic.target
  • Check if AARCH64 binfmt entry is present:
ls /proc/sys/fs/binfmt_misc/
  • Mount and chroot into the environment:
sudo mount -o bind /proc folder/proc
sudo mount -o bind /dev folder/dev
sudo chroot folder qemu-aarch64-static /bin/bash
  • In the chroot, delete /etc/resolv.conf file and write a name server to it.
rm /etc/resolv.conf
echo "nameserver 8.8.8.8" > /etc/resolv.conf
  • Exit chroot
  • mkdir -p folder/tmp/.X11-unix
  • Create chroot.sh
#!/bin/bash
set -e
# Only start the namespace+systemd if one isn't already running
if ! pgrep -f "unshare -fp --mount-proc /lib/systemd/systemd --system-unit=basic.target" > /dev/null; then
    sudo daemonize \
    /usr/bin/unshare -fp --mount-proc \
    /lib/systemd/systemd --system-unit=basic.target
fi
# Only bind-mount if not already mounted
mountpoint -q folder/proc          || sudo mount -o bind /proc folder/proc
mountpoint -q folder/dev           || sudo mount -o bind /dev folder/dev
mountpoint -q folder/tmp/.X11-unix || sudo mount -o bind /tmp/.X11-unix folder/tmp/.X11-unix
xhost + local:
cleanup() {
    sudo umount folder/tmp/.X11-unix 2>/dev/null || true
    sudo umount folder/dev 2>/dev/null || true
    sudo umount folder/proc 2>/dev/null || true
}
trap cleanup EXIT
sudo chroot folder qemu-aarch64-static /bin/bash
  • Make the chroot.sh executable
chmod +x chroot.sh

Chroot into the new environment

sudo ./chroot.sh
  • Update & Upgrade the chroot
apt-get update && apt-get upgrade 
  • Helpful development tools & libraries to have in the chroot
apt-get install --no-install-recommends build-essential git wget libdrm-dev python3 python3-pip python3-setuptools python3-wheel ninja-build libopenal-dev premake4 autoconf libevdev-dev ffmpeg libboost-tools-dev magics++ libboost-thread-dev libboost-all-dev pkg-config zlib1g-dev libsdl-mixer1.2-dev libsdl1.2-dev libsdl-gfx1.2-dev libsdl2-mixer-dev clang cmake cmake-data libarchive13 libcurl4 libfreetype6-dev librhash0 libuv1 mercurial mercurial-common libgbm-dev libsdl-image1.2-dev
  • Install custom SDL2 Libraries for better compatibility
apt-get remove --purge -y libsdl2-2.0-0 libsdl2-dev
rm -f /usr/lib/aarch64-linux-gnu/libSDL2.*
rm -f /usr/lib/aarch64-linux-gnu/libSDL2-2.0.so*

Build and install 2.26.2 from source:

wget https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.26.2.tar.gz
tar xfv release-2.26.2.tar.gz
cd SDL-release-2.26.2/
./configure --prefix=/usr
make -j8
make install
/sbin/ldconfig

Hold the packages so a later apt-get install/upgrade can't reinstall them out from under the custom build:

apt-mark hold libsdl2-2.0-0 libsdl2-dev

About

Compile instructions and Portmaster releases

Resources

Stars

13 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors