diff options
author | Levente Polyak <anthraxx@archlinux.org> | 2021-07-18 18:27:14 +0200 |
---|---|---|
committer | Levente Polyak <anthraxx@archlinux.org> | 2021-11-18 20:31:23 +0100 |
commit | dacde204c91b9c5cb25ac793c17e13d287187b57 (patch) | |
tree | 5bb42b72e661ad58a9c27b0437c280497840b450 /makerepropkg.in | |
parent | 1f1f6be8892d95eb62fb8d0d190f816b3db32d8e (diff) | |
download | devtools-dacde204c91b9c5cb25ac793c17e13d287187b57.tar.xz |
makerepropkg: use correct devtools makepkg.conf files from dist
Use the recorded buildtool in order to download the matching dist
package and use the appropriate makepkg.conf for reproducing the
package. This is required as the flags are not recorded in the BUILDINFO
hence we need to provide the matching config that declared those flags.
Diffstat (limited to 'makerepropkg.in')
-rwxr-xr-x | makerepropkg.in | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/makerepropkg.in b/makerepropkg.in index ec9cd36..70abcbe 100755 --- a/makerepropkg.in +++ b/makerepropkg.in @@ -81,6 +81,18 @@ get_pkgfile() { return 1 } +get_makepkg_conf() { + local fname=${1} + local makepkg_conf="${2}" + if ! buildtool_file=$(get_pkgfile "${fname}"); then + error "failed to retrieve ${fname}" + return 1 + fi + msg2 "using makepkg.conf from ${fname}" + bsdtar xOqf "${buildtool_file/file:\/\//}" usr/share/devtools/makepkg-x86_64.conf > "${makepkg_conf}" + return 0 +} + usage() { cat << __EOF__ usage: ${BASH_SOURCE[0]##*/} [options] <package_file> @@ -185,7 +197,26 @@ for fname in "${installed[@]}"; do exit 1 fi done -printf '%s\n' "${allpkgfiles[@]}" | mkarchroot -M @pkgdatadir@/makepkg-x86_64.conf -U "${archroot_args[@]}" "${buildroot}"/root - || exit 1 + +trap 'rm -rf $TEMPDIR' EXIT INT TERM QUIT +TEMPDIR=$(mktemp -d --tmpdir makerepropkg.XXXXXXXXXX) + +makepkg_conf="${TEMPDIR}/makepkg.conf" +# anything before buildtool support is pinned to the last none buildtool aware release +if [[ -z "${BUILDTOOL}" ]]; then + get_makepkg_conf "devtools-20210202-3-any" "${makepkg_conf}" || exit 1 +# prefere to assume devtools up until matching makepkg version so repository packages remain reproducible +elif [[ "${BUILDTOOL}" = makepkg ]] && (( $(vercmp "${BUILDTOOLVER}" 6.0.1) <= 0 )); then + get_makepkg_conf "devtools-20210202-3-any" "${makepkg_conf}" || exit 1 +# all devtools builds +elif [[ "${BUILDTOOL}" = devtools ]] && get_makepkg_conf "${BUILDTOOL}-${BUILDTOOLVER}" "${makepkg_conf}"; then + true +# fallback to current makepkg.conf +else + warning "Unknown buildtool (${BUILDTOOL}-${BUILDTOOLVER}), using fallback" + makepkg_conf=@pkgdatadir@/makepkg-x86_64.conf +fi +printf '%s\n' "${allpkgfiles[@]}" | mkarchroot -M "${makepkg_conf}" -U "${archroot_args[@]}" "${buildroot}"/root - || exit 1 # use makechrootpkg to prep the build directory makechrootpkg -r "${buildroot}" -l "${chroot}" -- --packagelist || exit 1 |