svn commit: r215309 - in head/sys: amd64/amd64 i386/i386 sys vm

Warner Losh imp at bsdimp.com
Mon Nov 15 15:44:50 UTC 2010


From: Kostik Belousov <kostikbel at gmail.com>
Subject: Re: svn commit: r215309 - in head/sys: amd64/amd64 i386/i386 sys vm
Date: Sun, 14 Nov 2010 23:37:49 +0200

> On Mon, Nov 15, 2010 at 12:20:37AM +0300, Anonymous wrote:
> > Konstantin Belousov <kib at FreeBSD.org> writes:
> > 
> > > Author: kib
> > > Date: Sun Nov 14 18:24:12 2010
> > > New Revision: 215309
> > > URL: http://svn.freebsd.org/changeset/base/215309
> > >
> > > Log:
> > >   Use symbolic names instead of hardcoding values for magic p_osrel constants.
> > >   
> > >   MFC after:   1 week
> > [...]
> > > Modified: head/sys/sys/param.h
> > > ==============================================================================
> > > --- head/sys/sys/param.h	Sun Nov 14 18:05:03 2010	(r215308)
> > > +++ head/sys/sys/param.h	Sun Nov 14 18:24:12 2010	(r215309)
> > > @@ -60,6 +60,11 @@
> > >  #undef __FreeBSD_version
> > >  #define __FreeBSD_version 900025	/* Master, propagated to newvers */
> > >  
> > > +#ifdef _KERNEL
> > > +#define	__FreeBSD_version_SIGSEGV	700004
> > > +#define	__FreeBSD_version_MAP_ANON	800104
> > > +#endif
> > > +
> > 
> > This breaks bsd.port.mk regexp to determine OSVERSION.
> > 
> >   # Get __FreeBSD_version
> >   .if !defined(OSVERSION)
> >   .if exists(/usr/include/sys/param.h)
> >   OSVERSION!=	${AWK} '/^\#define[[:blank:]]__FreeBSD_version/ {print $$3}' < /usr/include/sys/param.h
> >   .elif exists(/usr/src/sys/sys/param.h)
> >   OSVERSION!=	${AWK} '/^\#define[[:blank::]]__FreeBSD_version/ {print $$3}' < /usr/src/sys/sys/param.h
> >   .else
> >   OSVERSION!=	${SYSCTL} -n kern.osreldate
> >   .endif
> >   .endif
> > 
> >   $ make -V OSVERSION
> >   900025 700004 800104
> > 
> > And every port chokes on it.
> > 
> >  $ make -C devel/libpthread-stubs
> >   "Makefile", line 26: warning: String comparison operator should be either == or !=
> >   "Makefile", line 26: Malformed conditional (${OSVERSION} < 700000)
> >   "Makefile", line 28: if-less endif
> >   "/usr/ports/Mk/bsd.port.mk", line 1739: warning: String comparison operator should be either == or !=
> >   "/usr/ports/Mk/bsd.port.mk", line 1739: Malformed conditional (defined(USE_XZ) && ( (${OSVERSION} >= 900000 && ${OSVERSION} < 900012) || ${OSVERSION} < 800505 ))
> >   "/usr/ports/Mk/bsd.port.mk", line 6394: if-less endif
> >   make: fatal errors encountered -- cannot continue
> > 
> > %%
> > Index: Mk/bsd.port.mk
> > ===================================================================
> > RCS file: /a/.cvsup/ports/Mk/bsd.port.mk,v
> > retrieving revision 1.654
> > diff -u -p -r1.654 bsd.port.mk
> > --- Mk/bsd.port.mk	8 Nov 2010 16:07:03 -0000	1.654
> > +++ Mk/bsd.port.mk	14 Nov 2010 21:18:32 -0000
> > @@ -1219,9 +1219,9 @@ OSREL!=	${UNAME} -r | ${SED} -e 's/[-(].
> >  # Get __FreeBSD_version
> >  .if !defined(OSVERSION)
> >  .if exists(/usr/include/sys/param.h)
> > -OSVERSION!=	${AWK} '/^\#define[[:blank:]]__FreeBSD_version/ {print $$3}' < /usr/include/sys/param.h
> > +OSVERSION!=	${AWK} '/^\#define[[:blank:]]__FreeBSD_version[[:blank:]]/ {print $$3}' < /usr/include/sys/param.h
> >  .elif exists(/usr/src/sys/sys/param.h)
> > -OSVERSION!=	${AWK} '/^\#define[[:blank::]]__FreeBSD_version/ {print $$3}' < /usr/src/sys/sys/param.h
> > +OSVERSION!=	${AWK} '/^\#define[[:blank::]]__FreeBSD_version[[:blank:]]/ {print $$3}' < /usr/src/sys/sys/param.h
> >  .else
> >  OSVERSION!=	${SYSCTL} -n kern.osreldate
> >  .endif
> > %%
> 
> I think it is better to select different namespace for the special versions.
> Can you confirm that the following patch fixes the ports mk for you ?
> It is enough to cd /usr/src/include && make install after patching.

I think this is a better idea.  There's a number of other places
lurking that make a similar assumption.

Warner


More information about the freebsd-ports mailing list