Opened 10 years ago

Closed 10 years ago

#24184 closed defect (fixed)

Spidermonkey build failure (undefined symbols) with non-default build_arch

Reported by: breaker.dave@… Owned by: akitada@…
Priority: Normal Milestone:
Component: ports Version: 1.8.2
Keywords: Cc: MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Port: spidermonkey

Description (last modified by jmroot (Joshua Root))

The spidermonkey port on 32bit OS X 10.6/32bit firmware fails.

macports.conf settings are:

build_arch                      i386

# machine architectures
universal_archs        i386
The following ports are currently installed:
  apache2 @2.2.14_1+darwin+preforkmpm (active)
  apr @1.3.12_1 (active)
  apr-util @1.3.9_2 (active)
  bzip2 @1.0.5_3+darwin (active)
  db46 @4.6.21_6 (active)
  expat @2.0.1_0 (active)
  gperf @3.0.4_0 (active)
  icu @4.3.4_0 (active)
  libiconv @1.13.1_0 (active)
  ncurses @5.7_0+darwin_10 (active)
  ncursesw @5.7_0+darwin_10 (active)
  openssl @0.9.8m_0+darwin (active)
  pcre @7.9_0 (active)
  readline @6.1.000_1+darwin (active)
  sqlite3 @3.6.23_0 (active)
  xercesc @2.8.0_2+darwin (active)
  zlib @1.2.4_1 (active)
DEBUG: Found port in file:///opt/local/var/macports/sources/rsync.macports.org/release/ports/lang/spidermonkey
DEBUG: Changing to port directory: /opt/local/var/macports/sources/rsync.macports.org/release/ports/lang/spidermonkey
DEBUG: OS Platform: darwin
DEBUG: OS Version: 10.2.0
DEBUG: Mac OS X Version: 10.6
DEBUG: System Arch: i386
DEBUG: setting option os.universal_supported to yes
DEBUG: org.macports.load registered provides 'load', a pre-existing procedure. Target override will not be provided
DEBUG: org.macports.unload registered provides 'unload', a pre-existing procedure. Target override will not be provided
DEBUG: org.macports.distfiles registered provides 'distfiles', a pre-existing procedure. Target override will not be provided
DEBUG: Using group file /opt/local/var/macports/sources/rsync.macports.org/release/ports/_resources/port1.0/group/muniversal-1.0.tcl
DEBUG: Reading variant descriptions from /opt/local/var/macports/sources/rsync.macports.org/release/ports/_resources/port1.0/variant_descriptions.conf
DEBUG: universal variant already exists, so not adding the default one
DEBUG: Requested variant darwin is not provided by port spidermonkey.
DEBUG: Requested variant i386 is not provided by port spidermonkey.
DEBUG: Requested variant macosx is not provided by port spidermonkey.
DEBUG: Found port in file:///opt/local/var/macports/sources/rsync.macports.org/release/ports/devel/readline
DEBUG: epoch: in tree: 0 installed: 0
DEBUG: readline 6.1.000_1 exists in the ports tree
DEBUG: readline 6.1.000_1 +darwin is the latest installed
DEBUG: readline 6.1.000_1 +darwin is active
DEBUG: Merging existing variants darwin into variants
DEBUG: new fully merged portvariants: 
DEBUG: Changing to port directory: /opt/local/var/macports/sources/rsync.macports.org/release/ports/devel/readline
DEBUG: OS Platform: darwin
DEBUG: OS Version: 10.2.0
DEBUG: Mac OS X Version: 10.6
DEBUG: System Arch: i386
DEBUG: setting option os.universal_supported to yes
DEBUG: org.macports.load registered provides 'load', a pre-existing procedure. Target override will not be provided
DEBUG: org.macports.unload registered provides 'unload', a pre-existing procedure. Target override will not be provided
DEBUG: org.macports.distfiles registered provides 'distfiles', a pre-existing procedure. Target override will not be provided
DEBUG: Using group file /opt/local/var/macports/sources/rsync.macports.org/release/ports/_resources/port1.0/group/muniversal-1.0.tcl
DEBUG: Reading variant descriptions from /opt/local/var/macports/sources/rsync.macports.org/release/ports/_resources/port1.0/variant_descriptions.conf
DEBUG: universal variant already exists, so not adding the default one
DEBUG: Requested variant i386 is not provided by port readline.
DEBUG: Requested variant macosx is not provided by port readline.
DEBUG: Executing variant darwin provides darwin
DEBUG: Found port in file:///opt/local/var/macports/sources/rsync.macports.org/release/ports/devel/ncurses
DEBUG: epoch: in tree: 0 installed: 0
DEBUG: ncurses 5.7_0 exists in the ports tree
DEBUG: ncurses 5.7_0 +darwin_10 is the latest installed
DEBUG: ncurses 5.7_0 +darwin_10 is active
DEBUG: Merging existing variants darwin_10 into variants
DEBUG: new fully merged portvariants: 
DEBUG: Changing to port directory: /opt/local/var/macports/sources/rsync.macports.org/release/ports/devel/ncurses
DEBUG: OS Platform: darwin
DEBUG: OS Version: 10.2.0
DEBUG: Mac OS X Version: 10.6
DEBUG: System Arch: i386
DEBUG: setting option os.universal_supported to yes
DEBUG: org.macports.load registered provides 'load', a pre-existing procedure. Target override will not be provided
DEBUG: org.macports.unload registered provides 'unload', a pre-existing procedure. Target override will not be provided
DEBUG: org.macports.distfiles registered provides 'distfiles', a pre-existing procedure. Target override will not be provided
DEBUG: Using group file /opt/local/var/macports/sources/rsync.macports.org/release/ports/_resources/port1.0/group/muniversal-1.0.tcl
DEBUG: Reading variant descriptions from /opt/local/var/macports/sources/rsync.macports.org/release/ports/_resources/port1.0/variant_descriptions.conf
DEBUG: universal variant already exists, so not adding the default one
DEBUG: Requested variant darwin is not provided by port ncurses.
DEBUG: Requested variant i386 is not provided by port ncurses.
DEBUG: Requested variant macosx is not provided by port ncurses.
DEBUG: Executing variant darwin_10 provides darwin_10
DEBUG: Found port in file:///opt/local/var/macports/sources/rsync.macports.org/release/ports/devel/ncursesw
DEBUG: epoch: in tree: 0 installed: 0
DEBUG: ncursesw 5.7_0 exists in the ports tree
DEBUG: ncursesw 5.7_0 +darwin_10 is the latest installed
DEBUG: ncursesw 5.7_0 +darwin_10 is active
DEBUG: Merging existing variants darwin_10 into variants
DEBUG: new fully merged portvariants: 
DEBUG: Changing to port directory: /opt/local/var/macports/sources/rsync.macports.org/release/ports/devel/ncursesw
DEBUG: OS Platform: darwin
DEBUG: OS Version: 10.2.0
DEBUG: Mac OS X Version: 10.6
DEBUG: System Arch: i386
DEBUG: setting option os.universal_supported to yes
DEBUG: org.macports.load registered provides 'load', a pre-existing procedure. Target override will not be provided
DEBUG: org.macports.unload registered provides 'unload', a pre-existing procedure. Target override will not be provided
DEBUG: org.macports.distfiles registered provides 'distfiles', a pre-existing procedure. Target override will not be provided
DEBUG: Using group file /opt/local/var/macports/sources/rsync.macports.org/release/ports/_resources/port1.0/group/muniversal-1.0.tcl
DEBUG: Reading variant descriptions from /opt/local/var/macports/sources/rsync.macports.org/release/ports/_resources/port1.0/variant_descriptions.conf
DEBUG: universal variant already exists, so not adding the default one
DEBUG: Requested variant darwin is not provided by port ncursesw.
DEBUG: Requested variant i386 is not provided by port ncursesw.
DEBUG: Requested variant macosx is not provided by port ncursesw.
DEBUG: Executing variant darwin_10 provides darwin_10
DEBUG: No need to upgrade! ncursesw 5.7_0 >= ncursesw 5.7_0
DEBUG: No need to upgrade! ncurses 5.7_0 >= ncurses 5.7_0
DEBUG: No need to upgrade! readline 6.1.000_1 >= readline 6.1.000_1
--->  Computing dependencies for spidermonkey
DEBUG: Searching for dependency: nspr
DEBUG: Didn't find receipt, going to depspec regex for: nspr
DEBUG: Found port in file:///opt/local/var/macports/sources/rsync.macports.org/release/ports/devel/nspr
DEBUG: Changing to port directory: /opt/local/var/macports/sources/rsync.macports.org/release/ports/devel/nspr
DEBUG: OS Platform: darwin
DEBUG: OS Version: 10.2.0
DEBUG: Mac OS X Version: 10.6
DEBUG: System Arch: i386
DEBUG: setting option os.universal_supported to yes
DEBUG: org.macports.load registered provides 'load', a pre-existing procedure. Target override will not be provided
DEBUG: org.macports.unload registered provides 'unload', a pre-existing procedure. Target override will not be provided
DEBUG: org.macports.distfiles registered provides 'distfiles', a pre-existing procedure. Target override will not be provided
DEBUG: Using group file /opt/local/var/macports/sources/rsync.macports.org/release/ports/_resources/port1.0/group/muniversal-1.0.tcl
DEBUG: Reading variant descriptions from /opt/local/var/macports/sources/rsync.macports.org/release/ports/_resources/port1.0/variant_descriptions.conf
DEBUG: universal variant already exists, so not adding the default one
DEBUG: Requested variant darwin is not provided by port nspr.
DEBUG: Requested variant i386 is not provided by port nspr.
DEBUG: Requested variant macosx is not provided by port nspr.
DEBUG: Searching for dependency: readline
DEBUG: Found Dependency: receipt exists for readline
DEBUG: Executing org.macports.main (nspr)
DEBUG: Skipping completed org.macports.fetch (nspr)
DEBUG: Skipping completed org.macports.checksum (nspr)
DEBUG: Skipping completed org.macports.extract (nspr)
DEBUG: Skipping completed org.macports.patch (nspr)
DEBUG: Skipping completed org.macports.configure (nspr)
--->  Building nspr
DEBUG: Executing org.macports.build (nspr)
DEBUG: Environment: MACOSX_DEPLOYMENT_TARGET='10.6'
DEBUG: Assembled command: 'cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_nspr/work/nspr-4.8.3/mozilla/nsprpub" && /usr/bin/make -j3 all'
/usr/bin/make -j1 -C config export
make[1]: warning: -jN forced in submake: disabling jobserver mode.
/usr/bin/gcc-4.2  now.o -L/opt/local/lib  -o now
ld: warning: in now.o, file is not of required architecture
Undefined symbols:
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[1]: *** [now] Error 1
make: *** [export] Error 2
Error: Target org.macports.build returned: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_nspr/work/nspr-4.8.3/mozilla/nsprpub" && /usr/bin/make -j3 all " returned error 2
DEBUG: Backtrace: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_nspr/work/nspr-4.8.3/mozilla/nsprpub" && /usr/bin/make -j3 all " returned error 2
    while executing
"command_exec build"
    (procedure "portbuild::build_main" line 9)
    invoked from within
"$procedure $targetname"
Warning: the following items did not execute (for nspr): org.macports.activate org.macports.build org.macports.destroot org.macports.install
Error: The following dependencies failed to build: nspr
Error: Status 1 encountered during processing.

Change History (4)

comment:1 Changed 10 years ago by jmroot (Joshua Root)

Description: modified (diff)
Keywords: spidernonkey javascript removed
Owner: changed from macports-tickets@… to akitada@…
Port: spidermonkey added; 1.7.0 removed

Please remember to preview and use WikiFormatting, and cc the maintainer.

Please show the output of sysctl hw.cpu64bit_capable. BTW, although it likely has nothing to do with this problem, setting universal_archs to a single arch makes no sense.

comment:2 Changed 10 years ago by breaker.dave@…

At this stage we are just tring to get a 32bit version of our in house app ported from Linux to OSX. It relies on Xerces, Xalan and Spidermonkey. From reading the Macports documentation we thought that by setting the architecture to i386 we would only get 32-bit binaries of the libraries. Is this not correct?

hw.cpu64bit_capable
hw.cpu64bit_capable: 1

Model Name: Mac Pro
Model Identifier: MacPro1,1
Processor Name: Dual-Core Intel Xeon
Processor Speed: 3 GHz
Number Of Processors: 2
Total Number Of Cores: 4
L2 Cache (per processor): 4 MB
Memory: 2 GB
Bus Speed: 1.33 GHz
Boot ROM Version: MP11.005C.B08
SMC Version (system): 1.7f10

comment:3 Changed 10 years ago by jmroot (Joshua Root)

Summary: Spidermonkey build failure (undefined symbols) on 32-bit OS X 10.6Spidermonkey build failure (undefined symbols) with non-default build_arch

Setting 'build_arch i386' is the correct way to get macports to build for i386, yes. The important thing here is that you are on an x86_64 machine, which means 10.6's gcc produces x86_64 binaries by default. This is a bug, but not the bug you initially described.

comment:4 Changed 10 years ago by ryandesign (Ryan Schmidt)

Cc: mcalhoun@… added
Resolution: fixed
Status: newclosed

Marcus fixed spidermonkey so it respects build_arch in r63295.

Note: See TracTickets for help on using tickets.