Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLevente Polyak <anthraxx@archlinux.org>2024-01-09 00:39:43 +0100
committerLevente Polyak <anthraxx@archlinux.org>2024-01-10 00:14:08 +0100
commitd210079037d34fd32fc9a84e490655204bae103a (patch)
tree17e941b5ae61261ec003e4668a3d1ed65ab8f82c
parentb264c7f1c771790c53561f5d3f4de589e0000c05 (diff)
feat(util): add library function to generate source packages
-rw-r--r--src/lib/util/makepkg.sh35
-rw-r--r--src/offload-build.in11
2 files changed, 42 insertions, 4 deletions
diff --git a/src/lib/util/makepkg.sh b/src/lib/util/makepkg.sh
new file mode 100644
index 0000000..adb3af6
--- /dev/null
+++ b/src/lib/util/makepkg.sh
@@ -0,0 +1,35 @@
+#!/hint/bash
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+[[ -z ${DEVTOOLS_INCLUDE_UTIL_MAKEPKG_SH:-} ]] || return 0
+DEVTOOLS_INCLUDE_UTIL_MAKEPKG_SH=1
+
+_DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@}
+# shellcheck source=src/lib/common.sh
+source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh
+# shellcheck source=src/lib/util/srcinfo.sh
+source "${_DEVTOOLS_LIBRARY_DIR}"/lib/util/srcinfo.sh
+
+
+set -e
+
+makepkg_source_package() {
+ if (( EUID != 0 )); then
+ [[ -z ${WORKDIR:-} ]] && setup_workdir
+ export WORKDIR DEVTOOLS_INCLUDE_COMMON_SH
+ fakeroot -- bash -$- -c "source '${BASH_SOURCE[0]}' && ${FUNCNAME[0]}"
+ return
+ fi
+ (
+ export LIBMAKEPKG_LINT_PKGBUILD_SH=1
+ lint_pkgbuild() { :; }
+
+ export LIBMAKEPKG_SRCINFO_SH=1
+ write_srcinfo() { print_srcinfo; }
+
+ set +e -- -F --source
+ # shellcheck source=/usr/bin/makepkg
+ source "$(command -v makepkg)"
+ )
+}
diff --git a/src/offload-build.in b/src/offload-build.in
index 0aa2e38..5238129 100644
--- a/src/offload-build.in
+++ b/src/offload-build.in
@@ -6,11 +6,16 @@
#
# SPDX-License-Identifier: GPL-3.0-or-later
+_DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@}
+# shellcheck source=src/lib/common.sh
+source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh
+# shellcheck source=src/lib/util/makepkg.sh
+source "${_DEVTOOLS_LIBRARY_DIR}"/lib/util/makepkg.sh
+
source /usr/share/makepkg/util/config.sh
# Deprecation warning
if [[ -z $_DEVTOOLS_COMMAND ]]; then
- colorize
warning "${0##*/} is deprecated and will be removed. Use 'pkgctl build --offload' instead"
fi
@@ -19,8 +24,6 @@ repo=extra
arch=x86_64
server=build.archlinux.org
-die() { printf "error: $1\n" "${@:2}"; exit 1; }
-
usage() {
cat <<- _EOF_
Usage: ${BASH_SOURCE[0]##*/} [--repo REPO] [--arch ARCHITECTURE] [--server SERVER] -- [ARCHBUILD_ARGS]
@@ -84,7 +87,7 @@ load_makepkg_config
# transferred, including local sources, install scripts, and changelogs.
export TEMPDIR=$(mktemp -d --tmpdir offload-build.XXXXXXXXXX)
export SRCPKGDEST=${TEMPDIR}
-makepkg --source || die "unable to make source package"
+makepkg_source_package || die "unable to make source package"
# Temporary cosmetic workaround makepkg if SRCDEST is set somewhere else
# but an empty src dir is created in PWD. Remove once fixed in makepkg.