#!/bin/sh
# Usage: ./make-cross-container.sh <gdb-cross-pkg.tar.xz>
BSN=gdb64
BS=$(pwd)/$BSN
mkdir -p $BS/{etc,sys,proc,dev,usr,root,tmp,run,var/lib/pacman}
cd $BS
pacman -U --arch aarch64 --noconfirm --noscriptlet -b $BS/var/lib/pacman -r $BS "$1"
echo "/usr/lib/aarch64" >> etc/ld.so.conf
cat > etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false
user:x:1000:1000::/home/user:/usr/bin/bash
builder:x:2000:2000::/home/builder:/usr/bin/bash
EOF
cat > etc/shadow << "EOF"
root::19818:0:99999:7:::
nobody:x:19818:0:99999:7:::
user::19897:0:99999:7:::
builder::19897:0:99999:7:::
EOF
cat > etc/group << "EOF"
root:x:0:
kmem:x:3:
tape:x:4:
tty:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
cdrom:x:15:
adm:x:16:
input:x:24:
mail:x:34:
kvm:x:61:
wheel:x:97:builder,user
users:x:999:builder,user
nogroup:x:65534:
user:x:1000:
builder:x:2000:
EOF
cat > etc/gshadow << "EOF"
root:x::
kmem:x::
tape:x::
tty:x::
daemon:x::
floppy:x::
disk:x::
lp:x::
dialout:x::
audio:x::
video:x::
utmp:x::
cdrom:x::
adm:x::
input:x::
mail:x::
kvm:x::
wheel:x::builder,user
users:x::builder,user
nogroup:x::
user:x::
builder:x::
EOF
chmod 0600 etc/{g,}shadow
# These need to exist for systemd to overmount them
touch etc/{localtime,resolv.conf}
# HTTPS debuginfod downloads need the cert database for curl
mkdir -p etc/pki/tls/certs
cp /etc/pki/tls/certs/ca-bundle.crt etc/pki/tls/certs/
mkdir -p home/{user,builder}
chown -R 1000 home/user
chown -R 2000 home/builder
ldconfig -r .
cd ..
mksquashfs $BSN $BSN.sqfs -b 1M -comp zstd