Opened 12 years ago

Closed 12 years ago

Last modified 12 years ago

#38465 closed defect (fixed)

ghc-bootstrap: universal variant doesn't install universal software

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by: neverpanic (Clemens Lang)
Priority: Normal Milestone:
Component: ports Version: 2.1.3
Keywords: Cc: kitchen.andy@…
Port: ghc-bootstrap

Description

Enabling i386 support in ghc-bootstrap in r104166 had the effect of also turning on the default universal variant, but it doesn't work. Either fix the universal variant or disable it again.

$ sudo port install ghc-bootstrap +universal
Password:
--->  Computing dependencies for ghc-bootstrap
--->  Fetching distfiles for ghc-bootstrap
--->  Attempting to fetch ghc-7.0.4-x86_64-apple-darwin.tar.bz2 from http://haskell.org/ghc/dist/7.0.4/
--->  Verifying checksum(s) for ghc-bootstrap
--->  Extracting ghc-bootstrap
--->  Configuring ghc-bootstrap
--->  Building ghc-bootstrap
--->  Staging ghc-bootstrap into destroot
--->  Installing ghc-bootstrap @7.0.4_0+universal
--->  Activating ghc-bootstrap @7.0.4_0+universal
--->  Cleaning ghc-bootstrap
$ port -v installed ghc-bootstrap
The following ports are currently installed:
  ghc-bootstrap @7.0.4_0+universal (active) platform='darwin 12' archs='i386 x86_64'
$ port -q contents ghc-bootstrap | xargs -n 1 lipo -info 2>/dev/null | head -n 10
Non-fat file: /opt/local/share/ghc-bootstrap/bin/hp2ps is architecture: x86_64
Non-fat file: /opt/local/share/ghc-bootstrap/bin/hpc is architecture: x86_64
Non-fat file: /opt/local/share/ghc-bootstrap/lib/ghc-7.0.4/Cabal-1.10.2.0/HSCabal-1.10.2.0.o is architecture: x86_64
input file /opt/local/share/ghc-bootstrap/lib/ghc-7.0.4/Cabal-1.10.2.0/libHSCabal-1.10.2.0.a is not a fat file
Non-fat file: /opt/local/share/ghc-bootstrap/lib/ghc-7.0.4/Cabal-1.10.2.0/libHSCabal-1.10.2.0.a is architecture: x86_64
input file /opt/local/share/ghc-bootstrap/lib/ghc-7.0.4/Cabal-1.10.2.0/libHSCabal-1.10.2.0_p.a is not a fat file
Non-fat file: /opt/local/share/ghc-bootstrap/lib/ghc-7.0.4/Cabal-1.10.2.0/libHSCabal-1.10.2.0_p.a is architecture: x86_64
Non-fat file: /opt/local/share/ghc-bootstrap/lib/ghc-7.0.4/HSffi.o is architecture: x86_64
Non-fat file: /opt/local/share/ghc-bootstrap/lib/ghc-7.0.4/array-0.3.0.2/HSarray-0.3.0.2.o is architecture: x86_64
input file /opt/local/share/ghc-bootstrap/lib/ghc-7.0.4/array-0.3.0.2/libHSarray-0.3.0.2.a is not a fat file
$

Change History (10)

comment:1 Changed 12 years ago by neverpanic (Clemens Lang)

Cc: kitchen.andy@… added; cal@… removed
Owner: changed from kitchen.andy@… to cal@…
Status: newassigned

It should be disabled. I wasn't aware that having both i386 and x86_64 in the supported_archs automatically enables the universal variant.

comment:2 Changed 12 years ago by neverpanic (Clemens Lang)

Resolution: fixed
Status: assignedclosed

comment:3 Changed 12 years ago by cooljeanius (Eric Gallager)

If ghc-bootstrap can't be universal, all ports that depend on ghc should have their universal variants removed. So far I see these ports:

cpphs has the variants:
(+)universal: Build for multiple architectures
DoCon has the variants:
(+)universal: Build for multiple architectures
gtk2hs has the variants:
(+)universal: Build for multiple architectures
hs-Edison has the variants:
(+)universal: Build for multiple architectures
hs-EdisonAPI has the variants:
(+)universal: Build for multiple architectures
buddha has the variants:
(+)universal: Build for multiple architectures
darcs-devel has the variants:
(+)universal: Build for multiple architectures
distract has the variants:
(+)universal: Build for multiple architectures
Djinn has the variants:
(+)universal: Build for multiple architectures
ghc has the variants:
(+)universal: Build for multiple architectures
haskell-chunks has the variants:
(+)universal: Build for multiple architectures
haskell-hinstaller has the variants:
(+)universal: Build for multiple architectures
haskell-parsedate has the variants:
(+)universal: Build for multiple architectures
hat has the variants:
(+)universal: Build for multiple architectures
hmake has the variants:
(+)universal: Build for multiple architectures
hs-alex has the variants:
(+)universal: Build for multiple architectures
hs-chunks has the variants:
(+)universal: Build for multiple architectures
hs-happy has the variants:
(+)universal: Build for multiple architectures
hs-hinstaller has the variants:
(+)universal: Build for multiple architectures
hs-plugins has the variants:
(+)universal: Build for multiple architectures
hs-typenats has the variants:
(+)universal: Build for multiple architectures
hsshellscript has the variants:
(+)universal: Build for multiple architectures
lhs2tex has the variants:
(+)universal: Build for multiple architectures
missingh has the variants:
(+)universal: Build for multiple architectures
pxsl-tools has the variants:
(+)universal: Build for multiple architectures

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

It should be possible to enable the universal variant, shouldn't it? The oracle-instantclient port could be used as a model, though you may want to wait until I update it to version 11 as that should simplify some unnecessarily complicated aspects of the current port.

comment:5 Changed 12 years ago by neverpanic (Clemens Lang)

I'm not entirely sure the ghc-bootstrap port affects the architectures ghc can actually use. Think of a C compiler: A compiler compiled in i386 can still generate x86_64 code. Somebody would have to evaluate, if this is actually possible (and if it is, add depends_skip_archcheck ghc-bootstrap to the ghc port).

Technically it would also be possible to provide a universal ghc-bootstrap port using lipo and merging. I'm not going to put a lot of effort into that, though…

comment:6 in reply to:  1 Changed 12 years ago by jmroot (Joshua Root)

Replying to cal@…:

I wasn't aware that having both i386 and x86_64 in the supported_archs automatically enables the universal variant.

Actually it's more like having only one item in supported_archs automatically disables it. As do use_configure no and use_xmkmf yes.

comment:7 Changed 12 years ago by cooljeanius (Eric Gallager)

Someone might want to cc sean@… on this; he just updated a bunch of the haskell ports...

comment:8 in reply to:  7 ; Changed 12 years ago by seanfarley (Sean Farley)

Replying to egall@…:

Someone might want to cc sean@… on this; he just updated a bunch of the haskell ports...

I tried to make sure all the ports I updated followed the no-universal advice from this ticket. Let me know if I missed any.

comment:9 in reply to:  8 ; Changed 12 years ago by cooljeanius (Eric Gallager)

Replying to sean@…:

Replying to egall@…:

Someone might want to cc sean@… on this; he just updated a bunch of the haskell ports...

I tried to make sure all the ports I updated followed the no-universal advice from this ticket. Let me know if I missed any.

larryv reverted all the universal_variant no's in the Haskell ports in r104471... apparently the Haskell portgroup handles it as of r100403.

Version 1, edited 12 years ago by cooljeanius (Eric Gallager) (previous) (next) (diff)

comment:10 in reply to:  9 Changed 12 years ago by seanfarley (Sean Farley)

Replying to egall@…:

Replying to sean@…:

Replying to egall@…:

Someone might want to cc sean@… on this; he just updated a bunch of the haskell ports...

I tried to make sure all the ports I updated followed the no-universal advice from this ticket. Let me know if I missed any.

larryv reverted all the universal_variant no's in the Haskell ports in r104471... apparently the Haskell portgroup handles it as of r100403.

Yes, it's already handled in the portgroup.

Note: See TracTickets for help on using tickets.