ports/98105: [patch] new feature: IA32_BINARY_PORT macro
Gabor Kovesdan
gabor at FreeBSD.org
Mon May 29 19:40:19 UTC 2006
>Number: 98105
>Category: ports
>Synopsis: [patch] new feature: IA32_BINARY_PORT macro
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Mon May 29 19:40:14 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Gabor Kovesdan
>Release: FreeBSD 5.3-RELEASE-p17 amd64
>Organization:
n/a
>Environment:
>Description:
This patch adds a new macro (IA32_BINARY_PORT), which can be set in port Makefiles.
This feature is an axtension to the existing NOT_FOR_ARCHS / ONLY_FOR_ARCHS
system, especially for i386 binary ports that fetch compiled i386 binaries.
These ports can also be used on amd64/ia64 architectures, but the compatibility
layer must be installed. Currently, we don't have a method to check if it is
installed, so the affected ports can't be handled appropriately.
While here, I added a ${SYSCTL} variable, I think, it enhances the readability.
An update for Porter's Handbook is also attached.
Reviewed by: erwin
More info: http://wikitest.freebsd.org/G%C3%A1borK%C3%B6vesd%C3%A1n
>How-To-Repeat:
>Fix:
--- bsd.port.mk.diff begins here ---
Index: Mk/bsd.port.mk
===================================================================
RCS file: /usr/cvs/ports/Mk/bsd.port.mk,v
retrieving revision 1.533
diff -u -r1.533 bsd.port.mk
--- Mk/bsd.port.mk 23 May 2006 21:53:18 -0000 1.533
+++ Mk/bsd.port.mk 29 May 2006 08:44:18 -0000
@@ -1048,6 +1048,7 @@
SORT?= /usr/bin/sort
STRIP_CMD?= /usr/bin/strip
SU_CMD?= /usr/bin/su root -c
+SYSCTL?= /sbin/sysctl
TAIL?= /usr/bin/tail
TEST?= test # Shell builtin
TR?= /usr/bin/tr
@@ -1077,6 +1078,25 @@
# Kludge for pre-3.0 systems
MACHINE_ARCH?= i386
+# Check the compatibility layer for amd64/ia64
+.if defined(IA32_BINARY_PORT) && ${ARCH} != "i386"
+.if ${ARCH} == "amd64" || ${ARCH} =="ia64"
+.if exists(/usr/lib32)
+HAVE_COMPAT_IA32_LIBS?= YES
+.endif
+.if !defined(HAVE_COMPAT_IA32_KERN)
+HAVE_COMPAT_IA32_KERN!= if ${SYSCTL} -a compat.ia32.maxvmem >/dev/null 2>&1; then echo YES; fi
+.endif
+.if !defined(HAVE_COMPAT_IA32_KERN)
+IGNORE= you need a kernel with compiled-in IA32 compatibility to use this port
+.elif !defined(HAVE_COMPAT_IA32_LIBS)
+IGNORE= you need the 32-bit libraries installed under /usr/lib32 to use this port
+.endif
+.else
+IGNORE= you have to use i386 (or compatible) platform to use this port
+.endif
+.endif
+
# Get the operating system type
.if !defined(OPSYS)
OPSYS!= ${UNAME} -s
@@ -1089,7 +1109,7 @@
# Get __FreeBSD_version
.if !defined(OSVERSION)
-OSVERSION!= /sbin/sysctl -n kern.osreldate
+OSVERSION!= ${SYSCTL} -n kern.osreldate
.endif
# Get the object format.
@@ -2651,7 +2671,7 @@
.if defined(GNU_CONFIGURE)
# Maximum command line length
.if !defined(CONFIGURE_MAX_CMD_LEN)
-CONFIGURE_MAX_CMD_LEN!= /sbin/sysctl -n kern.argmax
+CONFIGURE_MAX_CMD_LEN!= ${SYSCTL} -n kern.argmax
.endif
CONFIGURE_ARGS+= --prefix=${PREFIX} ${CONFIGURE_TARGET}
CONFIGURE_ENV+= lt_cv_sys_max_cmd_len=${CONFIGURE_MAX_CMD_LEN}
--- bsd.port.mk.diff ends here ---
--- porters-handbook.diff begins here ---
Index: en_US.ISO8859-1/books/porters-handbook/book.sgml
===================================================================
RCS file: /usr/cvs/doc/en_US.ISO8859-1/books/porters-handbook/book.sgml,v
retrieving revision 1.714
diff -u -r1.714 book.sgml
--- en_US.ISO8859-1/books/porters-handbook/book.sgml 25 May 2006 21:43:57 -0000 1.714
+++ en_US.ISO8859-1/books/porters-handbook/book.sgml 27 May 2006 10:36:42 -0000
@@ -9881,6 +9881,13 @@
<makevar>NOT_FOR_ARCHS_REASON_<replaceable>ARCH</replaceable></makevar>.
</listitem>
+ <listitem>
+ <para>If a port fetches compiled i386 binaries and installs them
+ <makevar>IA32_BINARY_PORT</makevar> should be set. If this variable
+ is set it will be checked if the kernel has compiled-in IA32
+ compatibility and if one of these two dependencies isn't available
+ <makevar>IGNORE<makevar> will be set automatically.</para>
+ </listitem>
</itemizedlist>
</sect2>
--- porters-handbook.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list