Re: 32-bit ports on amd64, ldd32 missing on FreeBSD/amd64 8.0B2 install

From: John Baldwin <jhb_at_freebsd.org>
Date: Tue, 4 Aug 2009 17:01:50 -0400
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)
_at__at_ -5,4 +5,4 _at__at_
 
 # 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)
_at__at_ -651,7 +691,7 _at__at_
 	# 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
Received on Tue Aug 04 2009 - 19:02:00 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:53 UTC