aarch64_base_unstable_docker_build #1135
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: aarch64_base_unstable_docker_build | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: '30 1 * * *' | |
concurrency: | |
group: ${{ github.repository }}-${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build-container: | |
runs-on: ubuntu-20.04 | |
steps: | |
- | |
name: install-build-dependencies | |
shell: bash | |
run: | | |
sudo apt-get update | |
sudo apt install \ | |
gdisk \ | |
zip \ | |
systemd-container \ | |
bmap-tools asciidoc \ | |
libarchive-tools \ | |
git \ | |
build-essential \ | |
cmake \ | |
libarchive-dev \ | |
pkg-config \ | |
libcurl4-openssl-dev \ | |
libgpgme-dev \ | |
libssl-dev \ | |
fakeroot \ | |
dh-autoreconf \ | |
qemu-utils \ | |
qemu-efi-aarch64 \ | |
qemu-system-arm \ | |
qemu-user-static | |
sudo pip3 install meson | |
sudo pip3 install ninja | |
# Install proper docker | |
sudo apt install \ | |
apt-transport-https \ | |
ca-certificates \ | |
curl \ | |
software-properties-common | |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - | |
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" | |
sudo apt install docker-ce | |
- | |
name: install-pacman | |
shell: bash | |
env: | |
PACMAN_VERSION: 6.0.2 | |
run: | | |
sudo git clone --depth 1 https://gitlab.manjaro.org/packages/core/pacman.git | |
pushd pacman | |
sudo wget https://sources.archlinux.org/other/pacman/pacman-${PACMAN_VERSION}.tar.xz | |
sudo tar -xvf pacman-${PACMAN_VERSION}.tar.xz | |
pushd pacman-${PACMAN_VERSION} | |
sudo meson --prefix=/usr \ | |
--buildtype=plain \ | |
-Ddoc=disabled \ | |
-Ddoxygen=enabled \ | |
-Dscriptlet-shell=/usr/bin/bash \ | |
-Dldconfig=/usr/bin/ldconfig \ | |
build | |
sudo meson compile -C build | |
sudo meson install -C build | |
popd | |
sudo install -m644 pacman.conf /etc/pacman.conf | |
sudo install -m644 makepkg.conf /etc/ | |
sudo mkdir -p /etc/pacman.d | |
sudo touch /etc/pacman.d/mirrorlist | |
popd | |
- | |
name: setup-qemu-binfmt | |
shell: bash | |
run: | | |
sudo wget https://gitlab.manjaro.org/packages/community/manjaro-arm-qemu-static/-/raw/master/qemu-static.conf -O /usr/lib/binfmt.d/qemu-static.conf | |
sudo service systemd-binfmt restart | |
- | |
name: install-arch-install-scripts | |
shell: bash | |
env: | |
VERSION: 28 | |
run: | | |
sudo wget https://github.com/archlinux/arch-install-scripts/archive/refs/tags/v${VERSION}.tar.gz -O arch-install-scripts.tar.gz | |
sudo tar -xvf arch-install-scripts.tar.gz | |
sudo make -C arch-install-scripts-${VERSION} | |
sudo make -C arch-install-scripts-${VERSION} check | |
sudo make -C arch-install-scripts-${VERSION} PREFIX=/usr install | |
- | |
name: install-manjaro-arm-tools | |
shell: bash | |
run: | | |
sudo git clone https://gitlab.manjaro.org/manjaro-arm/applications/manjaro-arm-tools.git | |
install_m_a_tools() { | |
pkgname=manjaro-arm-tools | |
sudo install -dm777 /usr/share/$pkgname/lib | |
sudo install -dm777 /usr/share/$pkgname/profiles | |
sudo install -d /etc/$pkgname/ | |
sudo install -dm777 /var/lib/$pkgname/{pkg,img,tmp,profiles} | |
sudo install -dm777 /var/cache/$pkgname/{pkg/pkg-cache,img} | |
sudo install -Dm755 $pkgname/lib/* /usr/share/$pkgname/lib/ | |
sudo install -Dm755 $pkgname/bin/* /usr/bin/ | |
sudo install -Dm755 $pkgname/lib/manjaro-arm-tools.conf /etc/manjaro-arm-tools/ | |
} | |
install_m_a_tools | |
sudo sed -i -e 's|1>/dev/null||g' /usr/share/manjaro-arm-tools/lib/functions.sh | |
sudo sed -i -e 's|1> /dev/null 2>&1||g' /usr/share/manjaro-arm-tools/lib/functions.sh | |
sudo sed -i -e 's|2>/dev/null||g' /usr/share/manjaro-arm-tools/lib/functions.sh | |
- | |
name: build | |
shell: bash | |
run: | | |
# Set globals | |
LIBDIR=/usr/share/manjaro-arm-tools/lib | |
ARCH="aarch64" | |
DOCKER_IMAGE_NAME="manjaro-$ARCH-base" | |
source $LIBDIR/functions.sh | |
msg "Creating rootfs..." | |
# cd to root_fs | |
sudo mkdir -p $BUILDDIR/$ARCH | |
# Switch branch | |
BRANCH="unstable" | |
info "Switching branch to $BRANCH..." | |
sed -i s/"arm-stable"/"arm-$BRANCH"/g $LIBDIR/pacman.conf.$ARCH | |
# Pacstrap the rootfs filesystem | |
sudo $LIBDIR/pacstrap -G -c -C $LIBDIR/pacman.conf.$ARCH $BUILDDIR/$ARCH base-devel | |
# Enable cross architecture Chrooting | |
sudo cp /usr/bin/qemu-aarch64-static $BUILDDIR/$ARCH/usr/bin/ | |
# fix SSL in the rootfs | |
sudo $NSPAWN $BUILDDIR/$ARCH update-ca-trust | |
#Only for testing purpose. | |
#info "Sed branch" | |
#sudo $NSPAWN $BUILDDIR/$ARCH sed -i s/"stable"/"arm-$BRANCH"/g /etc/pacman-mirrors.conf | |
#info "End of Sed branch" | |
info "Setting up keyrings..." | |
sudo $NSPAWN $BUILDDIR/$ARCH pacman-key --init | |
sudo $NSPAWN $BUILDDIR/$ARCH pacman-key --populate archlinuxarm manjaro manjaro-arm | |
sudo $NSPAWN $BUILDDIR/$ARCH pacman-mirrors --api --set-branch unstable | |
sudo $NSPAWN $BUILDDIR/$ARCH pacman-mirrors -f5 | |
msg "Making Docker image..." | |
# Create Dockerfile | |
echo "FROM scratch" > $BUILDDIR/Dockerfile | |
echo "COPY $ARCH/ /" >> $BUILDDIR/Dockerfile | |
echo 'CMD ["bash"]' >> $BUILDDIR/Dockerfile | |
# Build and push new image | |
sudo docker build -t $DOCKER_IMAGE_NAME:dev $BUILDDIR/ | |
sudo docker login -u=${{ secrets.DOCKER_USERNAME }} -p=${{ secrets.DOCKER_PASSWORD }} | |
sudo docker image tag $DOCKER_IMAGE_NAME:dev manjaroarm/$DOCKER_IMAGE_NAME:dev | |
sudo docker push manjaroarm/$DOCKER_IMAGE_NAME:dev |