32-bit ports on amd64,
ldd32 missing on FreeBSD/amd64 8.0B2 install
John Baldwin
jhb at freebsd.org
Tue Aug 4 21:02:00 UTC 2009
On Tuesday 04 August 2009 1:03:18 am Antony Mawer wrote:
> I've just been tinkering with FreeBSD/amd64 from the 8.0-BETA2 install
> media. At this stage I'm trying to do a test deployment of a new
> 8.0-based 64-bit (amd64) system, running ports from an existing 32-bit
> 6.x system. So far there seems to be very little documentation on
> running 32-bit applications on amd64, so I am finding my way as I go
> along...
>
> In experimenting with this, I have discovered that "ldd" on amd64 is
> supposed to be able to automatically spawn ldd32 when run on a 32-bit
> binary, however even after installing the lib32 distribution I do not
> appear to have a "ldd32" installed in /usr/bin. Is this an accidental
> omission somewhere from the installation distributions? From a brief
> bit of digging it looks as though if I build by hand it should get
> built and installed, but it doesn't appear to be packaged onto the
> installation media. I am running:
>
> # uname -a
> FreeBSD 8.0-BETA2 FreeBSD 8.0-BETA2 #0: Wed Jul 15 21:48:41 UTC 2009
> root at mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
Yes, this is a bug in the lib32-make.sh release script. It also forgets to
include the usr/libexec/ld-elf32.so.1 symlink. I've changed the script to
use a blacklist instead of a whitelist. Also, the 'find' invocation to purge
empty directories from dist's in 'make release' did not work because
the '-empty' predicate does not get "updated" when a subdirectory becomes
empty as a result of rmdir deleting all its children. I've fixed that by
having find delete the directories itself using -delete. This works properly
as find can then notice that the directory is now empty.
Index: scripts/lib32-make.sh
===================================================================
--- scripts/lib32-make.sh (revision 196050)
+++ scripts/lib32-make.sh (working copy)
@@ -5,4 +5,4 @@
# Clean the dust.
cd ${RD}/trees/lib32 && \
- find . ! -path '*/libexec/*' ! -path '*/usr/lib32/*' -delete
+ find . -path '*/usr/share/*' -o -path '*/usr/lib/*' -delete
Index: Makefile
===================================================================
--- Makefile (revision 196050)
+++ Makefile (working copy)
@@ -651,7 +691,7 @@
# Remove all the directories we don't need.
-cd ${RD}/trees && \
(find ${OTHER_DISTS} -path '*/var/empty' | xargs chflags noschg; \
- find ${OTHER_DISTS} -depth -type d -empty -print | xargs rmdir)
+ find ${OTHER_DISTS} -depth -type d -empty -delete)
touch ${.TARGET}
#
--
John Baldwin
More information about the freebsd-current
mailing list