[pacman-dev] [PATCH] makepkg: add --allsource option
Allan McRae
mcrae_allan at hotmail.com
Fri Jun 6 21:58:21 EDT 2008
This supplements the --source option and does nearly the same thing, except
downloaded source files are included in the archive as well. The sources are
now packages with a pkgname/ prefix.
Original work by: Dan McGee <dan at archlinux.org>
Signed-off-by: Allan McRae <mcrae_allan at hotmail.com>
---
scripts/makepkg.sh.in | 46 ++++++++++++++++++++++++++++++++++------------
1 files changed, 34 insertions(+), 12 deletions(-)
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 75db0c5..63187c0 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -921,14 +921,26 @@ create_xdelta() {
create_srcpackage() {
cd "$startdir"
+ if [ "$SOURCEONLY" = "2" ]; then
+ # get back to our src directory so we can begin with sources
+ mkdir -p "$srcdir"
+ cd "$srcdir"
+ download_sources
+ # we can only check checksums if we have all files
+ check_checksums
+ cd "$startdir"
+ fi
msg "$(gettext "Creating source package...")"
- local comp_files="$BUILDSCRIPT"
+ local srclinks="$(mktemp -d "$startdir"/srclinks.XXXXXXXXX)"
+ mkdir "${srclinks}"/${pkgname}
+
msg2 "$(gettext "Adding %s...")" "$BUILDSCRIPT"
+ ln -s "${startdir}/${BUILDSCRIPT}" "${srclinks}/${pkgname}/"
if [ "$install" != "" ]; then
if [ -f $install ]; then
msg2 "$(gettext "Adding install script...")"
- comp_files="$comp_files $install"
+ ln -s "${startdir}/$install" "${srclinks}/${pkgname}/"
else
error "$(gettext "Install script %s not found.")" "$install"
fi
@@ -936,14 +948,18 @@ create_srcpackage() {
if [ -f ChangeLog ]; then
msg2 "$(gettext "Adding %s...")" "ChangeLog"
- comp_files="$comp_files ChangeLog"
+ ln -s "${startdir}/ChangeLog" "${srclinks}/${pkgname}"
fi
- local i
- for i in ${source[@]}; do
- if [ -f $i ]; then
- msg2 "$(gettext "Adding %s...")" "$i"
- comp_files="$comp_files $i"
+ local netfile
+ for netfile in ${source[@]}; do
+ local file=$(strip_url "$netfile")
+ if [ -f $netfile ]; then
+ msg2 "$(gettext "Adding %s...")" "$netfile"
+ ln -s $netfile ${srclinks}/${pkgname}
+ elif [ "$SOURCEONLY" = "2" -a -f "$SRCDEST/$file" ]; then
+ msg2 "$(gettext "Adding %s...")" "$file"
+ ln -s "$SRCDEST/$file" "${srclinks}/${pkgname}/"
fi
done
@@ -951,10 +967,13 @@ create_srcpackage() {
# tar it up
msg2 "$(gettext "Compressing source package...")"
- if ! bsdtar -czf "$pkg_file" $comp_files; then
+ cd ${srclinks}
+ if ! bsdtar -czLf "$pkg_file" ${pkgname}; then
error "$(gettext "Failed to create source package file.")"
exit 1 # TODO: error code
fi
+ cd ${startdir}
+ rm -rf ${srclinks}
}
install_package() {
@@ -1126,8 +1145,10 @@ SRCDEST=${SRCDEST:-$startdir} #default to $startdir if undefined
# Parse Command Line Options.
OPT_SHORT="AbcCdefFghiLmop:rRsSV"
-OPT_LONG="ignorearch,asroot,builddeps,clean,cleancache,nodeps,noextract,force,forcever:,geninteg,help,holdver"
-OPT_LONG="$OPT_LONG,install,log,nocolor,nobuild,rmdeps,repackage,source,syncdeps,usesudo,version"
+OPT_LONG="allsource,asroot,ignorearch,builddeps,clean,cleancache,nodeps"
+OPT_LONG="$OPT_LONG,noextract,force,forcever:,geninteg,help,holdver"
+OPT_LONG="$OPT_LONG,install,log,nocolor,nobuild,rmdeps,repackage,source"
+OPT_LONG="$OPT_LONG,syncdeps,usesudo,version"
# Pacman Options
OPT_LONG="$OPT_LONG,noconfirm,noprogressbar"
OPT_TEMP="$(getopt -o "$OPT_SHORT" -l "$OPT_LONG" -n "$(basename "$0")" -- "$@" || echo 'GETOPT GO BANG!')"
@@ -1145,6 +1166,7 @@ while true; do
--noprogressbar) PACMAN_OPTS="$PACMAN_OPTS --noprogressbar" ;;
# Makepkg Options
+ --allsource) SOURCEONLY=2 ;;
--asroot) ASROOT=1 ;;
-A|--ignorearch) IGNOREARCH=1 ;;
-c|--clean) CLEANUP=1 ;;
@@ -1381,7 +1403,7 @@ if [ $EUID -eq 0 ]; then
fi
# if we are creating a source-only package, go no further
-if [ "$SOURCEONLY" = "1" ]; then
+if [ "$SOURCEONLY" != "0" ]; then
if [ -f "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}${SRCEXT}" \
-a "$FORCE" = "0" ]; then
error "$(gettext "A package has already been built. (use -f to overwrite)")"
--
1.5.5.3
More information about the pacman-dev
mailing list