Using real version numbers within MacPorts
Juan Manuel Palacios
jmpp at macports.org
Tue Dec 18 16:19:08 PST 2007
Evening all!
The intent of my r32167 commit is to start the necessary work to
finally use real version numbers within MacPorts, rather than floating
point values that users have to interpret. The MacPorts version is now
saved in the "$macports::autoconf::macports_version" variable at
source configuration time and used in the "macports::selfupdate" and
"macports::version" procs (r32169 and r32170, respectively). If my
count is correct, these are the only two places where we read the $
{prefix}/etc/macports/mp_version file, so with them having been
"fixed" I'd like to look into removing the installation of said file
(it cannot disappear from our sources though, as autoconf uses it to
record the version in the macports1.0 namespace and selfupdate to
determine if the downloaded sources are newer than the installed
base); please alter me if I'm missing something that might break if I
now remove the Makefile rule to install the mp_version file.
Following that, I'd like to work over the selfupdate proc to use rpm-
vercomp, rather than plain arithmetical comparison, to compare the
installed MacPorts version number against the downloaded one, which
would ultimately allow us to use real version numbers in the
mp_version file directly. Chris, IIRC, you and I were once discussing
this on IRC and you raised some concerns (dealing with older
installations, IIRC); mind refreshing my mind? The one thing I do know
I'm gonna have to think about is keeping backwards compatibility.
Anything else?
Kevin, you and I also spoke about using real version numbers within
MacPorts at one time. Mind chiming in with whatever comment you may
have on the subject?
Lastly, and to anyone reading who might know some autoconf
(Landon ;-). From base/configure.ac (after r32167):
AC_INIT([MacPorts], [esyscmd(cat config/mp_version | tr -d '\n')], [macports-dev at lists.macosforge.org
], [macports])
(...)
MP_VERSION=$(cat config/mp_version | tr -d '\n')
(...)
AC_SUBST(MP_VERSION)
Any idea how I can avoid that duplicate code between the AC_INIT
macro and the MP_VERSION declaration? I would love to be able to
declare it above AC_INIT and then use it *in* AC_INIT, maybe as such:
MP_VERSION=$(cat config/mp_version | tr -d '\n')
AC_INIT([MacPorts], [$MP_VERSION], [macports-
dev at lists.macosforge.org], [macports])
But that issues a "configure.ac:7: warning: AC_INIT: not a literal:
$MP_VERSION" warning and the value of $MP_VERSION is not replaced in.
Using [echo $MP_VERSION] generates a similar warning ("configure.ac:8:
warning: AC_INIT: not a literal: echo $MP_VERSION") and plain
[MP_VERSION] does not complain but simply outputs the "MP_VESION"
string instead of its value. So, any pointers? (yes, I'm a total
autoconf n00b!)
Thanks for our feedback and help! Regards,...
-jmpp
More information about the macports-dev
mailing list