[pacman-dev] [PATCH] Autoversion deps upon package creation in makepkg
Darwin Bautista
djclue917 at gmail.com
Thu Jan 10 07:47:59 EST 2008
The text formatting apparently got messed up. Sorry about that.
Attached patch instead.
On Jan 10, 2008 8:39 PM, Darwin Bautista <djclue917 at gmail.com> wrote:
>
> From 8aa0a4560e7eb5970b35a509a4519455735ccb92 Mon Sep 17 00:00:00 2001
> From: Darwin Bautista <djclue917_at_gmail.com>
> Date: Thu, 10 Jan 2008 20:26:16 +0800
> Subject: [PATCH] Automatically include a '>=' version requirement for
> the dependencies.
>
> This option would only affect dependencies which have no explicitly-defined
> version requirement. For instance, depends=('pacman<3.0.0' 'gtk2')
> would "become" depends=('pacman<3.0.0' 'gtk2>=2.12.3').
>
> Signed-off-by: Darwin Bautista <djclue917_at_gmail.com>
> ---
> doc/makepkg.8.txt | 6 ++++
> scripts/makepkg.sh.in | 69 ++++++++++++++++++++++++++++++++++---------------
> 2 files changed, 54 insertions(+), 21 deletions(-)
>
> diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt
> index 689556d..f3c1505 100644
> --- a/doc/makepkg.8.txt
> +++ b/doc/makepkg.8.txt
> @@ -94,6 +94,12 @@ Options
> Read the package script `buildscript` instead of the `PKGBUILD` default;
> see linkman:PKGBUILD[5].
>
> +*-v, \--versiondeps*::
> + Automatically include a '>=' version requirement for the dependencies.
> + This option would only affect dependencies which have no explicitly-defined
> + version requirement. For instance, depends=('pacman<3.0.0' 'gtk2')
> + would "become" depends=('pacman<3.0.0' 'gtk2>=2.12.3')
> +
> *-r, \--rmdeps*::
> Upon successful build, remove any dependencies installed by makepkg
> during dependency auto-resolution (using `-b` or `-s`).
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index 5dbfb88..32fb051 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -53,6 +53,7 @@ NOBUILD=0
> NODEPS=0
> NOEXTRACT=0
> RMDEPS=0
> +VERSIONDEPS=0
> REPKG=0
> LOGGING=0
> SOURCEONLY=0
> @@ -439,6 +440,29 @@ remove_deps() {
> fi
> }
>
> +version_dep() {
> + local dep="$*"
> + local depver ret
> +
> + if [ -z "$(echo $dep | grep -E '<|=|>')" ]; then
> + depver="$(pacman -Q $dep | cut -d' ' -f2 | cut -d'-' -f1)"
> + ret=$?
> +
> + if [ $ret -ne 0 ]; then
> + error "$(gettext "Pacman returned a fatal error (%i): %s")" "$ret" "$depver"
> + exit 1
> + fi
> +
> + if [ -n "$depver" ]; then
> + echo "$dep>=$depver"
> + else
> + echo "$dep"
> + fi
> + else
> + echo "$dep"
> + fi
> +}
> +
> download_sources() {
> msg "$(gettext "Retrieving Sources...")"
>
> @@ -815,6 +839,7 @@ create_package() {
> echo "group = $it" >>.PKGINFO
> done
> for it in "${depends[@]}"; do
> + [ "$VERSIONDEPS" = "1" ] && it=$(version_dep $it)
> echo "depend = $it" >>.PKGINFO
> done
> for it in "${optdepends[@]}"; do
> @@ -1051,26 +1076,27 @@ usage() {
> printf "$(gettext "Usage: %s [options]")\n" "$0"
> echo
> echo "$(gettext "Options:")"
> - printf "$(gettext " -A, --ignorearch Ignore incomplete arch field
> in %s")\n" "$BUILDSCRIPT"
> - echo "$(gettext " -b, --builddeps Build missing dependencies from source")"
> - echo "$(gettext " -c, --clean Clean up work files after build")"
> - echo "$(gettext " -C, --cleancache Clean up source files from the cache")"
> - echo "$(gettext " -d, --nodeps Skip all dependency checks")"
> - echo "$(gettext " -e, --noextract Do not extract source files (use
> existing src/ dir)")"
> - echo "$(gettext " -f, --force Overwrite existing package")"
> - echo "$(gettext " -g, --geninteg Generate integrity checks for
> source files")"
> - echo "$(gettext " -h, --help This help")"
> - echo "$(gettext " -i, --install Install package after successful build")"
> - echo "$(gettext " -L, --log Log package build process")"
> - echo "$(gettext " -m, --nocolor Disable colorized output messages")"
> - echo "$(gettext " -o, --nobuild Download and extract files only")"
> - printf "$(gettext " -p <buildscript> Use an alternate build script
> (instead of '%s')")\n" "$BUILDSCRIPT"
> - echo "$(gettext " -r, --rmdeps Remove installed dependencies
> after a successful build")"
> + printf "$(gettext " -A, --ignorearch Ignore incomplete arch field
> in %s")\n" "$BUILDSCRIPT"
> + echo "$(gettext " -b, --builddeps Build missing dependencies from source")"
> + echo "$(gettext " -c, --clean Clean up work files after build")"
> + echo "$(gettext " -C, --cleancache Clean up source files from the cache")"
> + echo "$(gettext " -d, --nodeps Skip all dependency checks")"
> + echo "$(gettext " -e, --noextract Do not extract source files
> (use existing src/ dir)")"
> + echo "$(gettext " -f, --force Overwrite existing package")"
> + echo "$(gettext " -g, --geninteg Generate integrity checks for
> source files")"
> + echo "$(gettext " -h, --help This help")"
> + echo "$(gettext " -i, --install Install package after successful build")"
> + echo "$(gettext " -L, --log Log package build process")"
> + echo "$(gettext " -m, --nocolor Disable colorized output messages")"
> + echo "$(gettext " -o, --nobuild Download and extract files only")"
> + printf "$(gettext " -p <buildscript> Use an alternate build script
> (instead of '%s')")\n" "$BUILDSCRIPT"
> + echo "$(gettext " -v, --versiondeps Automatically include a '>='
> version requirement for the dependencies")"
> + echo "$(gettext " -r, --rmdeps Remove installed dependencies
> after a successful build")"
> # fix flyspray feature request #2978
> - echo "$(gettext " -R, --repackage Repackage contents of pkg/
> without building")"
> - echo "$(gettext " -s, --syncdeps Install missing dependencies
> with pacman")"
> - echo "$(gettext " --asroot Allow makepkg to run as root user")"
> - echo "$(gettext " --source Do not build package; generate a
> source-only tarball")"
> + echo "$(gettext " -R, --repackage Repackage contents of pkg/
> without building")"
> + echo "$(gettext " -s, --syncdeps Install missing dependencies
> with pacman")"
> + echo "$(gettext " --asroot Allow makepkg to run as root user")"
> + echo "$(gettext " --source Do not build package; generate
> a source-only tarball")"
> echo
> echo "$(gettext "These options can be passed to pacman:")"
> echo
> @@ -1116,9 +1142,9 @@ SRCDEST=${_SRCDEST:-$SRCDEST}
> SRCDEST=${SRCDEST:-$startdir} #default to $startdir if undefined
>
> # Parse Command Line Options.
> -OPT_SHORT="AbcCdefFghiLmop:rRsSV"
> +OPT_SHORT="AbcCdefFghiLmop:vrRsSV"
> OPT_LONG="ignorearch,asroot,builddeps,clean,cleancache,nodeps,noextract,force,geninteg,help,install,log"
> -OPT_LONG="$OPT_LONG,nocolor,nobuild,rmdeps,repackage,source,syncdeps,usesudo,version,forcever:"
> +OPT_LONG="$OPT_LONG,nocolor,nobuild,versiondeps,rmdeps,repackage,source,syncdeps,usesudo,version,forcever:"
> # Pacman Options
> OPT_LONG="$OPT_LONG,noconfirm,noprogressbar"
> OPT_TEMP="$(getopt -o "$OPT_SHORT" -l "$OPT_LONG" -n "$(basename
> "$0")" -- "$@" || echo 'GETOPT GO BANG!')"
> @@ -1151,6 +1177,7 @@ while true; do
> -m|--nocolor) USE_COLOR='n' ;;
> -o|--nobuild) NOBUILD=1 ;;
> -p) shift; BUILDSCRIPT=$1 ;;
> + -v|--versiondeps) VERSIONDEPS=1 ;;
> -r|--rmdeps) RMDEPS=1 ;;
> -R|--repackage) REPKG=1 ;;
> --source) SOURCEONLY=1 ;;
> --
> 1.5.3.7
>
>
> On Dec 29, 2007 9:35 PM, Aaron Griffin <aaronmgriffin at gmail.com> wrote:
> > On Dec 26, 2007 8:01 AM, Dan McGee <dpmcgee at gmail.com> wrote:
> > > Although Arch doesn't recommend it/support it, there would be people
> > > out there (me being one of them) that don't upgrade all their packages
> > > on a regular basis. Thus, installing one new package would be dragging
> > > in a lot more dependencies and such that people may not want upgraded.
> > >
> > > On that note, I also try and separate makepkg and its functionality
> > > from the ideals of Arch Linux, which may clash a bit at times (see the
> > > man page moving, removal of docs, etc). I'm a bit weary of defaulting
> > > to something that all users of makepkg may not want or use.
> >
> > I have to agree with Dan here. Maybe if this patch were implemented as
> > an option=() or something I could agree with it, but as a default, it
> > seems a bit overboard.
--
Darwin M. Bautista
BS Electronics and Communications Engineering
University of the Philippines Diliman
http://www.darwin.uk.to
University of the Philippines Linux Users' Group
http://www.uplug.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Automatically-include-a-version-requirement-for.patch
Type: application/octet-stream
Size: 6847 bytes
Desc: not available
URL: <http://archlinux.org/pipermail/pacman-dev/attachments/20080110/a46b24db/attachment.obj>
More information about the pacman-dev
mailing list