Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 31 Aug 2009 18:02:40 +0000
From:      "b. f." <bf1783@googlemail.com>
To:        freebsd-questions@FreeBSD.org
Subject:   Re: 32 bit ports on an AMD64 system
Message-ID:  <d873d5be0908311102n4d44f7tcf3181aeeb7d344f@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
>> /usr/local/[same-as-before]-32 (i.e. [...]/bin32, [...]/lib32,
>> [...]/libexec32, etc)

>The one above sounds most logical. The base system puts 32 bit libraries in
>/usr/lib32.

It's too much trouble to append a 32 to every subdirectory of
/usr/local/ -- I'd still recommend something like
PREFIX=/usr/local/32, with all relative paths the same.

>Currently the ports system is not set up to handle multiple versions of the
>same port, AFAIK. You could ask on the ports list.

Multiple versions of the same port with different PKGNAME s can be
handled.  Otherwise, no.

>You'd need a separate
>/var/db/pkg32 to store information about installed 32-bit ports. And
>/var/db/ports32 for options for 32-bit ports. You would also need changed port
>makefiles (different /ve/db paths, -m32 flag etc.) for this to work. It should
>be possible, but I don't think anybody has volunteered to do the work yet. :-)

In many cases, the same port Makefile would suffice, using the
make.conf additions I mentioned in my earlier message. In some cases,
you may have to add patches to the port or change the port Makefile.

The point about the package registration is a good one.  It would
certainly be easier to maintain two separate package databases.  To do
so, and to also have different OPTIONS-handling for the 32-bit ports
via separate ports databases, then you could simply add:

PKG_DBDIR=/var/db/pkg32
PORT_DBDIR=/var/db/ports32

to the make.conf block in my last message.

However, I think it would be better to instead maintain unified
package and port databases and somehow differentiate between the
entries for 32-bit and 64-bit packages, by either tinkering with the
fake-pkg target in bsd.port.mk, or, preferably, by changing the
PKGNAME and UNIQUENAME.  The simplest way to do this would be to add a
block like

.ifdef(32BIT)
PKGNAMEPREFIX+=32
.endif

just before the definitions of PKGNAME and UNIQUENAME in bsd.port.mk.

...

>(* 'need' in this case means that you are regularly running out of address
>space on i386.)

Or if you need improved performance from a 64-bit app, etc.

As the I and the others have mentioned, a jail or a separate 32-bit
installation would probably be better.

b.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?d873d5be0908311102n4d44f7tcf3181aeeb7d344f>