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 <[EMAIL PROTECTED]>
Signed-off-by: Allan McRae <[EMAIL PROTECTED]>
---
 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 [EMAIL PROTECTED]; do
-               if [ -f $i ]; then
-                       msg2 "$(gettext "Adding %s...")" "$i"
-                       comp_files="$comp_files $i"
+       local netfile
+       for netfile in [EMAIL PROTECTED]; 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


_______________________________________________
pacman-dev mailing list
[email protected]
http://archlinux.org/mailman/listinfo/pacman-dev

Reply via email to