[pacman-dev] [PATCH] Introduce destarch keyword into makepkg
Thomas Bächler
thomas at archlinux.org
Tue Jul 1 13:47:08 EDT 2008
If destarch is added to a PKGBUILD, makepkg sets the architecture of the
resulting package to $destarch instead of $CARCH. This is useful if you
want to cross-create packages for one architecture on the other.
Using
arch=('i686')
destarch='x86_64'
makes it possible to build multilib packages and to build grub without
the export CARCH="x86_64" hack.
---
scripts/makepkg.sh.in | 32 ++++++++++++++++++--------------
1 files changed, 18 insertions(+), 14 deletions(-)
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index bce2e6c..c45d7e8 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -152,7 +152,7 @@ clean_up() {
rm -rf pkg src
if [ "$pkgname" != "" ]; then
# Can't do this unless the BUILDSCRIPT has been sourced.
- rm -f "${pkgname}-${pkgver}-${pkgrel}-${CARCH}.log*"
+ rm -f "${pkgname}-${pkgver}-${pkgrel}-${destarch}.log*"
fi
fi
@@ -662,7 +662,7 @@ run_build() {
local ret=0
if [ "$LOGGING" = "1" ]; then
- BUILDLOG="${startdir}/${pkgname}-${pkgver}-${pkgrel}-${CARCH}.log"
+ BUILDLOG="${startdir}/${pkgname}-${pkgver}-${pkgrel}-${destarch}.log"
if [ -f "$BUILDLOG" ]; then
local i=1
while true; do
@@ -792,8 +792,8 @@ create_package() {
echo "builddate = $builddate" >>.PKGINFO
echo "packager = $packager" >>.PKGINFO
echo "size = $size" >>.PKGINFO
- if [ "$CARCH" != "" ]; then
- echo "arch = $CARCH" >>.PKGINFO
+ if [ "$destarch" != "" ]; then
+ echo "arch = $destarch" >>.PKGINFO
fi
if [ "$(check_option force)" = "y" ]; then
echo "force = true" >> .PKGINFO
@@ -851,7 +851,7 @@ create_package() {
# tar it up
msg2 "$(gettext "Compressing package...")"
- local pkg_file="$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}"
+ local pkg_file="$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${destarch}${PKGEXT}"
if ! bsdtar -czf "$pkg_file" $comp_files *; then
error "$(gettext "Failed to create package file.")"
@@ -872,11 +872,11 @@ create_xdelta() {
local pkginfo="$(mktemp "$startdir"/xdelta-pkginfo.XXXXXXXXX)"
local old_file old_version
- for old_file in $(ls {"$cache_dir","$PKGDEST"}/${pkgname}-*-*{,-$CARCH}$PKGEXT 2>/dev/null); do
+ for old_file in $(ls {"$cache_dir","$PKGDEST"}/${pkgname}-*-*{,-$destarch}$PKGEXT 2>/dev/null); do
bsdtar -xOf "$old_file" .PKGINFO > "$pkginfo" || continue
if [ "$(cat "$pkginfo" | grep '^pkgname = ')" != "pkgname = $pkgname" ]; then
continue # Package name does not match.
- elif [ "$(cat "$pkginfo" | grep '^arch = ')" != "arch = $CARCH" ] ; then
+ elif [ "$(cat "$pkginfo" | grep '^arch = ')" != "arch = $destarch" ] ; then
continue # Not same arch.
fi
@@ -894,7 +894,7 @@ create_xdelta() {
if [ "$base_file" != "" ]; then
msg "$(gettext "Making delta from version %s...")" "$latest_version"
- local delta_file="$PKGDEST/$pkgname-${latest_version}_to_$pkgver-$pkgrel-$CARCH.delta"
+ local delta_file="$PKGDEST/$pkgname-${latest_version}_to_$pkgver-$pkgrel-$destarch.delta"
local ret=0
# xdelta will decompress base_file & pkg_file into TMP_DIR (or /tmp if
@@ -984,9 +984,9 @@ install_package() {
[ "$INSTALL" = "0" ] && return
msg "$(gettext "Installing package ${pkgname} with pacman -U...")"
if [ "$ASROOT" = "0" ]; then
- sudo pacman $PACMAN_OPTS -U $PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT} || exit $?
+ sudo pacman $PACMAN_OPTS -U $PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${destarch}${PKGEXT} || exit $?
else
- pacman $PACMAN_OPTS -U $PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT} || exit $?
+ pacman $PACMAN_OPTS -U $PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${destarch}${PKGEXT} || exit $?
fi
}
@@ -1330,6 +1330,10 @@ if [ "$arch" = 'any' ]; then
CARCH='any'
fi
+if [ -z "$destarch" ]; then
+ destarch="$CARCH"
+fi
+
if ! in_array $CARCH ${arch[@]}; then
if [ "$IGNOREARCH" = "0" ]; then
error "$(gettext "%s is not available for the '%s' architecture.")" "$pkgname" "$CARCH"
@@ -1374,7 +1378,7 @@ unset valid_options opt known kopt
devel_check
devel_update
-if [ -f "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}" \
+if [ -f "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${destarch}${PKGEXT}" \
-a "$FORCE" = "0" -a "$SOURCEONLY" = "0" -a "$NOBUILD" = "0" ]; then
if [ "$INSTALL" = "1" ]; then
warning "$(gettext "A package has already been built, installing existing package...")"
@@ -1402,7 +1406,7 @@ if [ "$INFAKEROOT" = "1" ]; then
exit 0 # $E_OK
fi
-msg "$(gettext "Making package: %s")" "$pkgname $pkgver-$pkgrel $CARCH ($(date))"
+msg "$(gettext "Making package: %s")" "$pkgname $pkgver-$pkgrel $destarch ($(date))"
if [ $EUID -eq 0 ]; then
warning "$(gettext "Running makepkg as root...")"
@@ -1504,10 +1508,10 @@ else
fi
fi
- create_xdelta "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}"
+ create_xdelta "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${destarch}${PKGEXT}"
fi
-msg "$(gettext "Finished making: %s")" "$pkgname $pkgver-$pkgrel $CARCH ($(date))"
+msg "$(gettext "Finished making: %s")" "$pkgname $pkgver-$pkgrel $destarch ($(date))"
install_package
--
1.5.6
More information about the pacman-dev
mailing list