diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2018-10-04 23:59:52 +0300 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2018-10-19 15:18:13 +0300 |
commit | cf976c90ae418db9e708747bfdd9fd125bb910ee (patch) | |
tree | 84364cced6e8e1f3f90beb7df93e651a1db18a38 | |
parent | 68b0b11cf688dc90fbd800ac5f9b5c1fdb08119c (diff) | |
download | abuild-cf976c90ae418db9e708747bfdd9fd125bb910ee.tar.bz2 abuild-cf976c90ae418db9e708747bfdd9fd125bb910ee.tar.xz |
abuild: init_root: enable network repos
-rw-r--r-- | abuild.in | 67 |
1 files changed, 43 insertions, 24 deletions
@@ -2124,10 +2124,40 @@ checksum() { echo "sha512sums=\"$sha512sums\"" >>"$APKBUILD" } +get_git_version() { + expr "$(git symbolic-ref --short HEAD)" : '\([0-9]\+\(\.[0-9]\+\)*\)-' +} + +configure_repos() { + local version + if version=$(get_git_version); then + version=v${version} + else + version=edge + fi + + local repo_template=$APORTSDIR/$repo/.rootbld-repositories + [ -s "$repo_template" ] || die "rootbld: $repo_template does not exist" + ( + for key in $(git config --list --name-only); do + k=${key#abuild.} + [ $k != $key ] && \ + eval "export $k=\"$(git config --get $key)\"" + done + + export mirror version + [ "$mirror" ] || mirror=http://dl-cdn.alpinelinux.org/alpine + + envsubst + echo "$REPODEST/$repo" + ) < "$repo_template" > "$1/etc/apk/repositories" +} + init_root() { mkdir -p "$1/etc/apk/keys" cp /etc/abuild.conf /etc/group /etc/passwd "$1/etc" - cp /etc/apk/keys/* "$1/etc/apk/keys" + cp /etc/apk/keys/* ${2:+/usr/share/apk/keys/$2/*} "$1/etc/apk/keys" + configure_repos "$1" $SUDO_APK add --initdb --quiet --root "$1" ${2:+--arch $2} } @@ -2181,33 +2211,18 @@ rootbld() { cp /etc/resolv.conf "$BUILD_ROOT/etc" fi - local version="edge" buildhost="edge" gitref - if gitref="$(expr "$(git symbolic-ref --short HEAD)" : '\([0-9]\+\(\.[0-9]\+\)*\)-')"; then - version=v${gitref} - buildhost=${gitref/./-} - fi - - local repo_template=$aportsgit/$repo/.rootbld-repositories - [ -s "$repo_template" ] || die "rootbld: $repo_template does not exist" - ( - for key in $(git config --list --name-only); do - k=${key#abuild.} - [ $k != $key ] && \ - eval "export $k=\"$(git config --get $key)\"" - done - - export mirror version - [ "$mirror" ] || mirror=http://dl-cdn.alpinelinux.org/alpine - - envsubst - echo "$REPODEST/$repo" - ) < "$repo_template" > "$BUILD_ROOT/etc/apk/repositories" - init_root $BUILD_ROOT calcdeps $SUDO_APK add --root "$BUILD_ROOT" --update \ abuild alpine-base build-base git $hostdeps $builddeps + local buildhost + if buildhost=$(get_git_version); then + buildhost=${buildhost/./-} + else + buildhost=edge + fi + local bwrap_opts="" options_has "net" || bwrap_opts="$bwrap_opts --unshare-net" bwrap --unshare-ipc --unshare-uts $bwrap_opts \ @@ -2352,7 +2367,11 @@ deps() { || return 1 if [ -n "$CBUILDROOT" ]; then [ -z "$_quiet" ] && msg "Installing for host:$hostdeps" - [ -d "$CBUILDROOT" ] || init_root "$CBUILDROOT" $CTARGET_ARCH + if [ -d "$CBUILDROOT" ]; then + configure_repos "$CBUILDROOT" + else + init_root "$CBUILDROOT" $CTARGET_ARCH + fi $SUDO_APK add $_quiet --root "$CBUILDROOT" --arch "$CTARGET_ARCH" --repository "$REPODEST/$repo" $apk_opt_wait \ --no-scripts --virtual .makedepends-$pkgname $hostdeps || return 1 fi |