aboutsummaryrefslogtreecommitdiff
path: root/xbps-mini-builder
blob: df1e5b6e3fccb34ebec005c3745850cee1e4567f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/bin/sh

PRIVATE_KEY="$(realpath "./private.pem")"
BRANCH="$(git rev-parse --abbrev-ref "HEAD")"
SIGNED_BY="Luca Matei Pintilie <luca@lucamatei.com>"
HOST_XBPS_ARCH="x86_64"

# Jump to the directory that owns this script
cd "${0%/*}" || exit 1

# Do we have keys to sign with?
if [ ! -f "${PRIVATE_KEY}" ] ; then
    rm -rf "${PRIVATE_KEY}" "${PRIVATE_KEY}".pub
    ssh-keygen -b 4096 -t rsa -m PEM -N "" -f "${PRIVATE_KEY}"
fi

# Remove old state
# rm -f changed

# Create the void-packages directory if it doesn't exit
# mkdir -p void-packages
# cd void-packages || exit 2

# Do we actually have the repo yet?
# if [ ! -d srcpkgs ] ; then
#     # No, clone a fresh copy
#     git clone https://github.com/void-linux/void-packages .

#     # On bootstrap we need to build everything
#     cp ../packages.list ../changed
# else
#     # Yes, pull in the changes for this run
#     git reset --hard HEAD
#     git pull | tee ../changed
# fi

# Does this system use another set of repos
if [ -d /etc/xbps.d ] ; then
    cat /etc/xbps.d/* > etc/repos-remote.conf
    # If this platform is 64 bit, override those as well
    if [ "$(xbps-uhelper arch)" = "x86_64" ] ; then
        cat /etc/xbps.d/* > etc/repos-remote-x86_64.conf
    fi

    # The bootstrap config is loaded seperately
    if [ -f /etc/xbps.d/00-repository-main.conf ] ; then
        repo="$(sed 's/^.*=//' < /etc/xbps.d/00-repository-main.conf)"
        printf 'XBPS_INSTALL_ARGS="--repository=%s --repository=%s/musl"\n' "${repo}" "${repo}" > etc/conf
    fi
fi

# Do we have a live build environment
if [ ! -d masterdir-"${HOST_XBPS_ARCH}" ] ; then
    # No masterdir, go ahead and bootstrap it
    ./xbps-src -A "${HOST_XBPS_ARCH}" binary-bootstrap
else
    # Have a masterdir, keep it up to date
    ./xbps-src -A "${HOST_XBPS_ARCH}" bootstrap-update
fi

if [ -z "$@" ] ; then
    while read -r package ; do
	./xbps-src -QKsgEA "${HOST_XBPS_ARCH}" pkg "${package}"
    done < ./packages.list
else
	for pkg in "$@"; do
		./xbps-src -QKsgEA "${HOST_XBPS_ARCH}" pkg "${pkg}"
	done
fi

# Sign built packages
xbps-rindex --sign --signedby "${SIGNED_BY}" --privkey "${PRIVATE_KEY}" "hostdir/binpkgs/${BRANCH}"
xbps-rindex --sign-pkg --privkey "private.pem" "hostdir/binpkgs/${BRANCH}/"*.xbps

for folder in debug multilib multilib/nonfree nonfree ; do
    _folder="${BRANCH}/${folder}"
    printf "Trying to sign packages in %s\\n" ${_folder}
    if [ -d "hostdir/binpkgs/${folder}" ] ; then
        printf "Updating repodata in hostdir/binpkgs/%s\\n" ${_folder}
        xbps-rindex --sign --signedby "${SIGNED_BY}" --privkey "${PRIVATE_KEY}" "hostdir/binpkgs/${_folder}/"
        printf "Signing packages in hostdir/binpkgs/%s\\n" ${_folder}
        xbps-rindex --sign-pkg --privkey "${PRIVATE_KEY}" "hostdir/binpkgs/${_folder}"/*.xbps
    fi
done