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