From owner-freebsd-ports Mon Aug 21 14: 9:11 2000 Delivered-To: freebsd-ports@freebsd.org Received: from bmah-freebsd-0.cisco.com (bmah-freebsd-0.cisco.com [171.70.84.42]) by hub.freebsd.org (Postfix) with ESMTP id E83E737B443; Mon, 21 Aug 2000 14:08:55 -0700 (PDT) Received: (from bmah@localhost) by bmah-freebsd-0.cisco.com (8.11.0/8.11.0) id e7LL8tZ44405; Mon, 21 Aug 2000 14:08:55 -0700 (PDT) (envelope-from bmah) Message-Id: <200008212108.e7LL8tZ44405@bmah-freebsd-0.cisco.com> X-Mailer: exmh version 2.2 06/23/2000 with nmh-1.0.4 To: Kris Kennaway Cc: Will Andrews , Satoshi Asami , ports@FreeBSD.ORG Subject: Re: Proposal: PORTREVISION and PORTEPOCH In-Reply-To: References: Comments: In-reply-to Kris Kennaway message dated "Sun, 20 Aug 2000 13:49:29 -0700." From: bmah@cisco.com (Bruce A. Mah) Reply-To: bmah@cisco.com X-Face: g~c`.{#4q0"(V*b#g[i~rXgm*w;:nMfz%_RZLma)UgGN&=j`5vXoU^@n5v4:OO)c["!w)nD/!!~e4Sj7LiT'6*wZ83454H""lb{CC%T37O!!'S$S&D}sem7I[A 2V%N&+ X-Image-Url: http://www.employees.org/~bmah/Images/bmah-cisco-small.gif X-Url: http://www.employees.org/~bmah/ Mime-Version: 1.0 Content-Type: multipart/signed; boundary="==_Exmh_-382147961P"; micalg=pgp-sha1; protocol="application/pgp-signature" Content-Transfer-Encoding: 7bit Date: Mon, 21 Aug 2000 14:08:55 -0700 Sender: owner-freebsd-ports@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org --==_Exmh_-382147961P Content-Type: multipart/mixed ; boundary="==_Exmh_-3830051180" This is a multipart MIME message. --==_Exmh_-3830051180 Content-Type: text/plain; charset=us-ascii If memory serves me right, Kris Kennaway wrote: > On Sun, 20 Aug 2000, Will Andrews wrote: > > > On Sun, Aug 20, 2000 at 04:35:50AM -0700, Kris Kennaway wrote: > > > PROPOSAL FOR PACKAGE NAMING CONVENTIONS > > > > I'm all for this -- great job thinking this out, Kris! :) > > > > Satoshi? Please implement this in bsd.port.mk. > > Here's the patch (I didnt look at pkg_version yet, but as noted in the > proposal it should continue to work as well as before until it can be > taught about the new structure): [snip] Hi Kris-- If you haven't done so already, here's a patch for pkg_version that I think will work correctly with the new structure for ports numbering. Clearly, I've only tested it to a limited extent (since we have no ports with the new numbering scheme). Comments appreciated... Cheers, Bruce. --==_Exmh_-3830051180 Content-Type: text/plain ; name="pkg_version.pl.diff"; charset=us-ascii Content-Description: pkg_version.pl.diff *** /usr/src/usr.sbin/pkg_install/version/pkg_version.pl Tue Aug 8 23:06:17 2000 --- pkg_version.pl Mon Aug 21 13:19:56 2000 *************** *** 94,114 **** # # GetNameAndVersion # ! # Get the name and version number of a package. Returns a two element ! # array, first element is name, second element is version number. # sub GetNameAndVersion { ! local($string); ! $string = $_[0]; ! # If no hyphens then no version number ! return ($string, "") if $string !~ /-/; ! # Match (and group) everything in between two hyphens. Because the # regexp is 'greedy', the first .* will try and match everything up # to (but not including) the last hyphen ! $string =~ /(.*)-(.*)/; ! return ($1, $2); } # --- 94,129 ---- # # GetNameAndVersion # ! # Get the name and versions number of a package. Returns a five-element ! # array, first element is name, second element is full version string, ! # remaining elements are version number, revision number, and epoch. # sub GetNameAndVersion { ! local($fullname, $name, $fullversion, $version, $revision, $epoch); ! $fullname = $_[0]; ! # If no hyphens then no version numbers ! return ($fullname, "", "", "", "") if $fullname !~ /-/; ! # Match (and group) everything after hyphen(s). Because the # regexp is 'greedy', the first .* will try and match everything up # to (but not including) the last hyphen ! $fullname =~ /(.+)-(.+)/; ! $name = $1; ! $fullversion = $2; ! ! $fullversion =~ /([^_:]+)/; ! $version = $1; ! ! if ($fullversion =~ /_([^_:]+)/) { ! $revision = $1; ! } ! ! if ($fullversion =~ /:([^_:]+)/) { ! $epoch = $1; ! } ! ! return ($name, $fullversion, $version, $revision, $epoch); } # *************** *** 179,191 **** open CURRENT, "$CurrentPackagesCommand|"; while () { ($packageString, $rest) = split; ! ($packageName, $packageVersion) = &GetNameAndVersion($packageString); $currentPackages{$packageName}{'name'} = $packageName; ! if (defined $currentPackages{$packageName}{'version'}) { $currentPackages{$packageName}{'version'} .= "," . $packageVersion; } else { $currentPackages{$packageName}{'version'} = $packageVersion; } $currentPackages{$packageName}{'refcount'}++; } --- 194,213 ---- open CURRENT, "$CurrentPackagesCommand|"; while () { ($packageString, $rest) = split; ! ! ($packageName, $packageFullversion, $packageVersion, $packageRevision, $packageEpoch) = &GetNameAndVersion($packageString); $currentPackages{$packageName}{'name'} = $packageName; ! if (defined $currentPackages{$packageName}{'fullversion'}) { ! $currentPackages{$packageName}{'fullversion'} .= "," . $packageFullversion; $currentPackages{$packageName}{'version'} .= "," . $packageVersion; + $currentPackages{$packageName}{'revision'} .= "," . $packageRevision; + $currentPackages{$packageName}{'epoch'} .= "," . $packageEpoch; } else { + $currentPackages{$packageName}{'fullversion'} = $packageFullversion; $currentPackages{$packageName}{'version'} = $packageVersion; + $currentPackages{$packageName}{'revision'} = $packageRevision; + $currentPackages{$packageName}{'epoch'} = $packageEpoch; } $currentPackages{$packageName}{'refcount'}++; } *************** *** 198,213 **** open INDEX, "$IndexPackagesCommand|"; while () { ($packageString, $packagePath, $rest) = split(/\|/); ! ($packageName, $packageVersion) = &GetNameAndVersion($packageString); $indexPackages{$packageName}{'name'} = $packageName; $indexPackages{$packageName}{'path'} = $packagePath; ! if (defined $indexPackages{$packageName}{'version'}) { $indexPackages{$packageName}{'version'} .= "," . $packageVersion; } else { $indexPackages{$packageName}{'version'} = $packageVersion; } - $indexPackages{$packageName}{'refcount'}++; } close INDEX; --- 220,241 ---- open INDEX, "$IndexPackagesCommand|"; while () { ($packageString, $packagePath, $rest) = split(/\|/); ! ! ($packageName, $packageFullversion, $packageVersion, $packageRevision, $packageEpoch) = &GetNameAndVersion($packageString); $indexPackages{$packageName}{'name'} = $packageName; $indexPackages{$packageName}{'path'} = $packagePath; ! if (defined $indexPackages{$packageName}{'fullversion'}) { ! $indexPackages{$packageName}{'fullversion'} .= "," . $packageFullversion; $indexPackages{$packageName}{'version'} .= "," . $packageVersion; + $indexPackages{$packageName}{'revision'} .= "," . $packageRevision; + $indexPackages{$packageName}{'epoch'} .= "," . $packageEpoch; } else { + $indexPackages{$packageName}{'fullversion'} = $packageFullversion; $indexPackages{$packageName}{'version'} = $packageVersion; + $indexPackages{$packageName}{'revision'} = $packageRevision; + $indexPackages{$packageName}{'epoch'} = $packageEpoch; } } close INDEX; *************** *** 218,229 **** $~ = "STDOUT_VERBOSE" if $VerboseFlag; $~ = "STDOUT_COMMANDS" if $ShowCommandsFlag; ! $packageNameVer = "$packageName-$currentPackages{$packageName}{'version'}"; ! if (defined $indexPackages{$packageName}{'version'}) { ! $indexVersion = $indexPackages{$packageName}{'version'}; ! $currentVersion = $currentPackages{$packageName}{'version'}; $indexRefcount = $indexPackages{$packageName}{'refcount'}; $currentRefcount = $currentPackages{$packageName}{'refcount'}; --- 246,257 ---- $~ = "STDOUT_VERBOSE" if $VerboseFlag; $~ = "STDOUT_COMMANDS" if $ShowCommandsFlag; ! $packageNameVer = "$packageName-$currentPackages{$packageName}{'fullversion'}"; ! if (defined $indexPackages{$packageName}{'fullversion'}) { ! $indexVersion = $indexPackages{$packageName}{'fullversion'}; ! $currentVersion = $currentPackages{$packageName}{'fullversion'}; $indexRefcount = $indexPackages{$packageName}{'refcount'}; $currentRefcount = $currentPackages{$packageName}{'refcount'}; *************** *** 236,242 **** } else { ! $rc = &CompareVersions($currentVersion, $indexVersion); if ($rc == 0) { next if $ShowCommandsFlag; --- 264,286 ---- } else { ! # Comparison algorithm runs here. First we check epochs ! # for equality. If they're equal, then check version ! # numbers, and finally revisions. ! $rc = &CompareVersions($currentPackages{$packageName}{'epoch'}, ! $indexPackages{$packageName}{'epoch'}); ! if ($rc == 0) { ! $rc = ! &CompareVersions($currentPackages{$packageName}{'version'}, ! $indexPackages{$packageName}{'version'}); ! ! if ($rc == 0) { ! $rc = ! &CompareVersions($currentPackages{$packageName}{'revision'}, ! $indexPackages{$packageName}{'revision'}); ! } ! } ! if ($rc == 0) { next if $ShowCommandsFlag; *************** *** 288,294 **** # Verbose report (-v flag) format STDOUT_VERBOSE = ! @<<<<<<<<<<<<<<<<<<<<<<<<< @< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< $packageNameVer, $versionCode, $Comment . ; --- 332,338 ---- # Verbose report (-v flag) format STDOUT_VERBOSE = ! @<<<<<<<<<<<<<<<<<<<<<<<<< @< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< $packageNameVer, $versionCode, $Comment . ; --==_Exmh_-3830051180-- --==_Exmh_-382147961P Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: PGPfreeware 5.0i for non-commercial use MessageID: CgaW7YHQdLlF50xs1TzdpXUWWiSMozax iQA/AwUBOaGaZ9jKMXFboFLDEQL1dACgkEGj5gdk9A7uD5YaW5KPuv8pMQkAnRuH 2i33xFOhLiGXCsr6Iji6qCaR =wsPt -----END PGP SIGNATURE----- --==_Exmh_-382147961P-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ports" in the body of the message