summaryrefslogtreecommitdiff
path: root/makerepropkg.in
diff options
context:
space:
mode:
Diffstat (limited to 'makerepropkg.in')
-rwxr-xr-xmakerepropkg.in33
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