diff options
Diffstat (limited to 'pkgtools/revbump')
-rw-r--r-- | pkgtools/revbump/DESCR | 5 | ||||
-rw-r--r-- | pkgtools/revbump/Makefile | 34 | ||||
-rw-r--r-- | pkgtools/revbump/PLIST | 3 | ||||
-rw-r--r-- | pkgtools/revbump/files/blbump | 146 | ||||
-rw-r--r-- | pkgtools/revbump/files/blbump.1 | 65 | ||||
-rw-r--r-- | pkgtools/revbump/files/revbump | 165 | ||||
-rw-r--r-- | pkgtools/revbump/files/revbump.1 | 100 |
7 files changed, 518 insertions, 0 deletions
diff --git a/pkgtools/revbump/DESCR b/pkgtools/revbump/DESCR new file mode 100644 index 00000000000..1956cd74113 --- /dev/null +++ b/pkgtools/revbump/DESCR @@ -0,0 +1,5 @@ +Tools for bumping PKGREVISIONs and adapting BUILDLINK_RECOMMENDED +versions to the latest version automatically. + +This tool is mostly intended for pkgsrc developers with commit +access. diff --git a/pkgtools/revbump/Makefile b/pkgtools/revbump/Makefile new file mode 100644 index 00000000000..f98dfea1ea4 --- /dev/null +++ b/pkgtools/revbump/Makefile @@ -0,0 +1,34 @@ +# $NetBSD: Makefile,v 1.1.1.1 2005/01/05 00:31:38 wiz Exp $ +# + +DISTNAME= revbump-1.0 +CATEGORIES= pkgtools +MASTER_SITES= # empty +DISTFILES= # empty + +MAINTAINER= wiz@NetBSD.org +HOMEPAGE= http://www.pkgsrc.org/ +COMMENT= Tools for bumping PKGREVISIONs (for pkgsrc developers) + +PKG_INSTALLATION_TYPES= overwrite pkgviews + +WRKSRC= ${WRKDIR} +NO_BUILDLINK= yes +NO_CHECKSUM= yes +NO_CONFIGURE= yes +USE_PERL5= run +USE_LANGUAGES= # empty + +INSTALLATION_DIRS= bin man/man8 + +do-build: + ${SED} -e "s!@PERL@!${PERL5}!g" ${FILESDIR}/revbump \ + > ${WRKDIR}/revbump + ${SED} -e "s!@PERL@!${PERL5}!g" ${FILESDIR}/blbump \ + > ${WRKDIR}/blbump + +do-install: + ${INSTALL_SCRIPT} ${WRKDIR}/blbump ${PREFIX}/bin + ${INSTALL_SCRIPT} ${WRKDIR}/revbump ${PREFIX}/bin + +.include "../../mk/bsd.pkg.mk" diff --git a/pkgtools/revbump/PLIST b/pkgtools/revbump/PLIST new file mode 100644 index 00000000000..326392a80fe --- /dev/null +++ b/pkgtools/revbump/PLIST @@ -0,0 +1,3 @@ +@comment $NetBSD: PLIST,v 1.1.1.1 2005/01/05 00:31:38 wiz Exp $ +bin/blbump +bin/revbump diff --git a/pkgtools/revbump/files/blbump b/pkgtools/revbump/files/blbump new file mode 100644 index 00000000000..cb6249c0286 --- /dev/null +++ b/pkgtools/revbump/files/blbump @@ -0,0 +1,146 @@ +#!@PERL@ -w +# +# $NetBSD: blbump,v 1.1.1.1 2005/01/05 00:31:39 wiz Exp $ +# +# Copyright (c) 2003, 2004 The NetBSD Foundation, Inc. +# +# This code was originally contributed to the NetBSD Foundation, Inc. +# by Julio Merino <jmmv@NetBSD.org> and Thomas Klausner <wiz@NetBSD.org>. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of author nor the names of its contributors may +# be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND +# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +$PKGSRCDIR = $ENV{PKGSRCDIR}; +if (! $PKGSRCDIR) { + $PKGSRCDIR = "/usr/pkgsrc"; +} + +sub usage { + print STDERR "usage: blbump [-p pkgsrcdir] [cat1/pkg1 ... catN/pkgN]\n\n"; + print STDERR "If no packages are given as arguments, the list is read from stdin.\n"; + print STDERR "Packages whose buildlink files cannot be updated automatically\n"; + print STDERR "are written to stdout.\n"; + exit 0; +} + +sub blbump { + my $pkgdir = shift; + my ($oldpkgver, $pkgver, $done, $rev, $oldbl, $newbl, $backupbl); + local (*MAKE); + + open(MAKE, '-|', "cd $PKGSRCDIR/$pkgdir ; make show-var VARNAME=PKGNAME"); + $pkgver = <MAKE>; + close(MAKE); + chop $pkgver; + $pkgver =~ s/-([^-]*)$/>=$1/; + + if (-f "$PKGSRCDIR/$pkgdir/buildlink3.mk") { + $ret = bumpbl("$PKGSRCDIR/$pkgdir/buildlink3.mk", $pkgver); + if ($ret == 0) { + return 0; + } + } + + return 1; +} + +sub bumpbl { + $oldbl = shift; + $pkgver = shift; + my ($done, $rev, $newbl, $backupbl); + local (*OLDBL); + + open(OLDBL, $oldbl) or return 0; + $newbl = "$oldbl.new"; + open(NEWBL, ">$newbl"); + + $done = 0; + while (<OLDBL>) { + if ($done == 0 && /^(BUILDLINK_RECOMMENDED.+=[ \t]+)(.+)$/) { + print NEWBL "$1$pkgver\n"; + $done = 1; + } elsif ($done == 0 && /^BUILDLINK_PKGSRCDIR(.*=[ \t]+)/) { + print NEWBL "BUILDLINK_RECOMMENDED${1}$pkgver\n"; + print NEWBL $_; + $done = 1; + } else { + print NEWBL $_; + } + } + + # no suitable place found + if ($done == 0) { + close(NEWBL); + close(OLDBL); + unlink "$newbl"; + return 0; + } + + close(NEWBL); + close(OLDBL); + rename("$newbl", "$oldbl"); + + return 1; +} + +@PACKAGES = (); + +while (@ARGV) { + $arg = shift; + if ($arg eq '-h') { + usage(); + } elsif ($arg eq '-p') { + $PKGSRCDIR = shift; + } else { + push @PACKAGES, $arg; + } +} + +if (! -d $PKGSRCDIR || ! -d "$PKGSRCDIR/doc" || ! -d "$PKGSRCDIR/mk") { + print STDERR "Invalid pkgsrc directory $PKGSRCDIR\n"; + exit 1; +} + +if (! @PACKAGES) { + while (<STDIN>) { + chop; + push @PACKAGES, $_; + } +} + +@valid = (); +foreach $pkg (@PACKAGES) { + if (! -f "$PKGSRCDIR/$pkg/Makefile") { + print "$pkg\n"; + } else { + print "$pkg\n" if blbump("$pkg") == 0; + $pkg =~ /\/(.*)$/; + push @valid, $1; + } +} + +exit 0; diff --git a/pkgtools/revbump/files/blbump.1 b/pkgtools/revbump/files/blbump.1 new file mode 100644 index 00000000000..7186f5a1b22 --- /dev/null +++ b/pkgtools/revbump/files/blbump.1 @@ -0,0 +1,65 @@ +.\" $NetBSD: blbump.1,v 1.1.1.1 2005/01/05 00:31:39 wiz Exp $ +.\" +.\" Copyright (c) 2003, 2004, 2005 The NetBSD Foundation, Inc. +.\" +.\" This code was originally contributed to the NetBSD Foundation, Inc. +.\" by Julio Merino <jmmv@NetBSD.org> and Thomas Klausner <wiz@NetBSD.org>. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in +.\" the documentation and/or other materials provided with the +.\" distribution. +.\" 3. Neither the name of author nor the names of its contributors may +.\" be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND +.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY +.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.Dd January 4, 2005 +.Dt BLBUMP 1 +.Os +.Sh NAME +.Nm blbump +.Nd tool to help bumping dependencies in buildlink3 files automatically +.Sh SYNOPSIS +.Nm +.Op Fl p Ar pkgsrcdir +.Op cat1/pkg1 ... catN/pkgN +.Sh DESCRIPTION +.Nm +is a perl script for pkgsrc developers that simplifies bumping +buildlink3 file dependencies automatically. +Given a package (in +.Ar category/package +format) on the command line or stdin, it will try to adjust the +.Dv BUILDLINK_RECOMMENDED +line for that package to the current version automatically. +If +.Fl p +is given, +.Ar pkgsrcdir +is used instead of the default +.Pa /usr/pkgsrc . +.Nm +reports successful updates on stdout, and prints the package name +(in +.Ar category/package +form) on stdout for each package where it failed. +.Sh SEE ALSO +.Xr revbump 1 diff --git a/pkgtools/revbump/files/revbump b/pkgtools/revbump/files/revbump new file mode 100644 index 00000000000..81c2ba26bc3 --- /dev/null +++ b/pkgtools/revbump/files/revbump @@ -0,0 +1,165 @@ +#!@PERL@ -w +# +# $NetBSD: revbump,v 1.1.1.1 2005/01/05 00:31:38 wiz Exp $ +# +# Copyright (c) 2003, 2004 The NetBSD Foundation, Inc. +# +# This code was originally contributed to the NetBSD Foundation, Inc. +# by Julio Merino <jmmv@NetBSD.org> and Thomas Klausner <wiz@NetBSD.org>. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of author nor the names of its contributors may +# be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND +# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +$PKGSRCDIR = $ENV{PKGSRCDIR}; +if (! $PKGSRCDIR) { + $PKGSRCDIR = "/usr/pkgsrc"; +} + +sub usage { + print STDERR "usage: revbump [-p pkgsrcdir] [cat1/pkg1 ... catN/pkgN]\n\n"; + print STDERR "If no packages are given as arguments, the list is read from stdin.\n"; + print STDERR "Packages for which revision cannot be bumped are written to stdout.\n"; + exit 0; +} + +sub revbump { + my $pkgdir = shift; + my ($pkg, $oldpkgver, $pkgver, $done, $rev, $oldmk, $newmk, $backupmk); + local (*OLDMK, *MAKE); + + $pkgdir =~ /\/(.*)$/; + $pkg = $1; + + $oldmk = "$PKGSRCDIR/$pkgdir/Makefile"; + + open(MAKE, '-|', "cd $PKGSRCDIR/$pkgdir ; make show-var VARNAME=PKGVERSION"); + $oldpkgver = <MAKE>; + close(MAKE); + chop $oldpkgver; + + open(OLDMK, $oldmk); + $newmk = "$oldmk.new"; + open(NEWMK, ">$newmk"); + + $done = 0; + while (<OLDMK>) { + if ($done == 0 && /^PKGREVISION=([ \t]+)([0-9]+)$/) { + $done = $2 + 1; + print NEWMK "PKGREVISION=${1}${done}\n"; + } elsif ($done == 0 && /^SVR4_PKGNAME=([ \t]+)/) { + print NEWMK "PKGREVISION=${1}1\n"; + print NEWMK $_; + $done = 1; + } elsif ($done == 0 && /^CATEGORIES=([ \t]+)/) { + print NEWMK "PKGREVISION=${1}1\n"; + print NEWMK $_; + $done = 1; + } else { + print NEWMK $_; + } + } + + # no suitable place found + if ($done == 0) { + close(NEWMK); + close(OLDMK); + unlink "$newmk"; + return 0; + } + + close(NEWMK); + close(OLDMK); + $backupmk = "$oldmk.orig"; + rename("$oldmk", "$backupmk"); + rename("$newmk", "$oldmk"); + + open(MAKE, '-|', "cd $PKGSRCDIR/$pkgdir ; make show-var VARNAME=PKGVERSION"); + $pkgver = <MAKE>; + close(MAKE); + chop $pkgver; + + # compare previous PKGVERSION and current PKGVERSION to see if update + # was successful + print("Updated $pkgdir from $oldpkgver to $pkgver\n"); + if ($oldpkgver =~ /.*nb([0-9]+)$/) { + $oldpkgver = $1; + } else { + $oldpkgver = 0; + } + if ($pkgver =~ /.*nb([0-9]+)$/) { + $pkgver = $1; + } else { + $pkgver = 0; + } + if ($oldpkgver + 1 != $pkgver) { + # unsuccessful, revert change + rename("$backupmk", "$oldmk"); + return 0; + } + + unlink "$backupmk"; + + return 1; +} + +@PACKAGES = (); + +while (@ARGV) { + $arg = shift; + if ($arg eq '-h') { + usage(); + } elsif ($arg eq '-p') { + $PKGSRCDIR = shift; + } else { + push @PACKAGES, $arg; + } +} + +if (! -d $PKGSRCDIR || ! -d "$PKGSRCDIR/doc" || ! -d "$PKGSRCDIR/mk") { + print STDERR "Invalid pkgsrc directory $PKGSRCDIR\n"; + exit 1; +} + +if (! @PACKAGES) { + while (<STDIN>) { + chop; + push @PACKAGES, $_; + } +} + +@valid = (); +foreach $pkg (@PACKAGES) { + if (! -f "$PKGSRCDIR/$pkg/Makefile") { + print "$pkg\n"; + } else { + print "$pkg\n" if revbump("$pkg") == 0; + $pkg =~ /\/(.*)$/; + push @valid, $1; + } +} + +exit 0; diff --git a/pkgtools/revbump/files/revbump.1 b/pkgtools/revbump/files/revbump.1 new file mode 100644 index 00000000000..1af07c981c0 --- /dev/null +++ b/pkgtools/revbump/files/revbump.1 @@ -0,0 +1,100 @@ +.\" $NetBSD: revbump.1,v 1.1.1.1 2005/01/05 00:31:38 wiz Exp $ +.\" +.\" Copyright (c) 2003, 2004, 2005 The NetBSD Foundation, Inc. +.\" +.\" This code was originally contributed to the NetBSD Foundation, Inc. +.\" by Julio Merino <jmmv@NetBSD.org> and Thomas Klausner <wiz@NetBSD.org>. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in +.\" the documentation and/or other materials provided with the +.\" distribution. +.\" 3. Neither the name of author nor the names of its contributors may +.\" be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND +.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY +.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.Dd January 4, 2005 +.Dt REVBUMP 1 +.Os +.Sh NAME +.Nm revbump +.Nd tool to help bump PKGREVISIONs automatically +.Sh SYNOPSIS +.Nm +.Op Fl p Ar pkgsrcdir +.Op cat1/pkg1 ... catN/pkgN +.Sh DESCRIPTION +.Nm +is a perl script for pkgsrc developers that simplifies bumping +PKGREVISIONs automatically. +Given a package (in +.Ar category/package +format) on the command line or stdin, it will try to increase +the PKGREVISION for that package automatically. +If +.Fl p +is given, +.Ar pkgsrcdir +is used instead of the default +.Pa /usr/pkgsrc . +.Nm +reports successful updates on stdout, and prints the package name +(in +.Ar category/package +form) on stdout for each package where it failed. +.Sh EXAMPLES +.Dl revbump devel/gmake x11/glib2 +.Pp +would bump the PKGREVISIONs of gmake and glib2, as would +.Bd -literal -offset indent +revbump << EOF +devel/gmake +x11/glib2 +EOF +.Ed +.Pp +The complete procedure for a recursive dependency bump for +the openssl package using +.Nm +and +.Xr blbump 1 +would be: +.Bd -literal -offset indent +cd /usr/pkgsrc +cvs update +make index +make show-deps PKG=openssl > deps +revbump < deps > deps.manual +[handle the PKGREVISION bumps in deps.manual manually] +blbump < deps > deps.manual +[handle the *RECOMMENDED* bumps in deps.manual manually] +cvs diff +[look for PYPKGPREFIX -> py22 or py23pth expansions + in buildlink files and any unrelated diffs you have in your + local tree, and fix them] +lintpkgsrc -d > deps.manual +[fix broken dependencies noted by this (usually meta-pkg/kde3, + subversion, nessus)] +cvs diff +cvs commit +.Ed +.Sh SEE ALSO +.Xr blbump 1 |