Hi Schell,

If you're building onto a 4S/iPad4 or later, you're probably partially running into the thing I mentioned wherein the arm-apple-darwin10-clang script isn't quite correctly generating fat binaries for armv7 and armv7s yet. I reverted it back to just doing armv7s (you'd have to switch it to armv7 if you wanted an earlier device):
https://github.com/ghc-ios/ghc-ios-scripts/blob/master/arm-apple-darwin10-clang

You'll have to rebuild GHC with this :P.

Also, in "Build Settings", change "Architectures" to "Standard Architectures (armv7, armv7s)" (as opposed to "(including 64-bit)") which should fix the Arm64 messages (just added this to the wiki — we're awaiting llvm code from Apple before we can support Arm64), and possibly set "Valid Architectures" to just armv7s or armv7 depending on which device you're building for until we get the fat stuff figured out.

Cheers
Luke



On Mon, Dec 23, 2013 at 10:29 AM, Schell Scivally <efsubenovex@gmail.com> wrote:
It looks like nuking jobs: $ncpus did the trick. I now have primitive and vector installed and confirmed with arm-apple-darwin10-ghc. After building my static lib the next issue is that I'm having a lot of linking errors in Xcode. Here is the build log: https://gist.github.com/schell/f10af8c0d29e24da5c25


On Sun, Dec 22, 2013 at 4:47 PM, Luke Iannini <lukexipd@gmail.com> wrote:
Hey Schell,

I think I see the issue — did you see the note in section 6 of https://ghc.haskell.org/trac/ghc/wiki/Building/CrossCompiling/iOS regarding the
jobs: $ncpus
option in ~/.cabal/config ?
If you've got that, nuke it and see if that fixes it.

I need to file a bug about that with the Cabal team.

I've also been meaning to warn — I am pretty sure the fat armv7s/armv7 binary approach taken by arm-apple-darwin10-ghc doesn't fully work yet (I was convinced it did when I implemented it, but recent testing with armv7 and armv7s devices show missing symbols for one arch or the other). I haven't had nearly the time to work on it and if anyone's looking for a way to help with GHC iOS that's a great self-contained problem to work on : ).

If we can't get that approach to work (intercepting build commands and lipoing things together on the fly), there's always the approach of building one GHC for each armv7 and armv7s, but that's got its own pain points since GHC calls both of those just "arm" internally and you have to do some yucky stuff with directory management :/ (that's what I've done here, and it works at least : )).

Hopefully I'll be out of the woods in my primary work soon and able to devote more cycles help in cleaning these things up.

Cheers
Luke


On Sun, Dec 22, 2013 at 4:22 PM, Schell Scivally <efsubenovex@gmail.com> wrote:
The primitive log is empty, nothing is printed to it. The version of vector I'm trying to build is 0.10.9.1, which is currently on hackage. I've also tried building primitive 0.5.2.0 by hand - cloning it from github and then running arm-apple-darwin10-cabal install and it stops at the same error. Nothing is printed to the log file. If I try each step separately (configure, build, install) I can configure fine and building gives this output:

Building primitive-0.5.2.0...

Preprocessing library primitive-0.5.2.0...

[ 1 of 10] Compiling Data.Primitive.Internal.Compat ( Data/Primitive/Internal/Compat.hs, dist-arm/build/Data/Primitive/Internal/Compat.o )

[ 2 of 10] Compiling Data.Primitive.MachDeps ( Data/Primitive/MachDeps.hs, dist-arm/build/Data/Primitive/MachDeps.o )

[ 3 of 10] Compiling Data.Primitive.Internal.Operations ( Data/Primitive/Internal/Operations.hs, dist-arm/build/Data/Primitive/Internal/Operations.o )

[ 4 of 10] Compiling Control.Monad.Primitive ( Control/Monad/Primitive.hs, dist-arm/build/Control/Monad/Primitive.o )

[ 5 of 10] Compiling Data.Primitive.Types ( Data/Primitive/Types.hs, dist-arm/build/Data/Primitive/Types.o )

[ 6 of 10] Compiling Data.Primitive.Array ( Data/Primitive/Array.hs, dist-arm/build/Data/Primitive/Array.o )

[ 7 of 10] Compiling Data.Primitive.ByteArray ( Data/Primitive/ByteArray.hs, dist-arm/build/Data/Primitive/ByteArray.o )

[ 8 of 10] Compiling Data.Primitive.Addr ( Data/Primitive/Addr.hs, dist-arm/build/Data/Primitive/Addr.o )

[ 9 of 10] Compiling Data.Primitive   ( Data/Primitive.hs, dist-arm/build/Data/Primitive.o )

[10 of 10] Compiling Data.Primitive.MutVar ( Data/Primitive/MutVar.hs, dist-arm/build/Data/Primitive/MutVar.o )

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: archive library: dist-arm/build/libHSprimitive-0.5.2.0.a will be fat and ar(1) will not be able to operate on it

In-place registering primitive-0.5.2.0...

And then installing gives:

Resolving dependencies...

Configuring primitive-0.5.2.0...

Failed to install primitive-0.5.2.0

Last 10 lines of the build log ( /Users/schell/.cabal/logs/primitive-0.5.2.0.log ):

cabal: Error: some packages failed to install:

primitive-0.5.2.0 failed during the configure step. The exception was:

ExitFailure 127


To me it seems like the line "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: archive library: dist-arm/build/libHSprimitive-0.5.2.0.a will be fat and ar(1) will not be able to operate on it" could be important? Does that sound like it may have something to do with the install failure?
 


On Sun, Dec 22, 2013 at 2:49 PM, Carter Schonwald <carter.schonwald@gmail.com> wrote:
Oooooo.   What version of vector are you using?  It needs to be the one for ghc HEAD. 


On Sunday, December 22, 2013, Carter Schonwald wrote:
Could you also share the primitive log?  Seems like something is happening there. 
Can't you just build primitive by hand then vector?

On Sunday, December 22, 2013, Schell Scivally wrote:
Ah, cool - I didn't know that the verbosity arg took a parameter. Here is the full output: https://gist.github.com/schell/7c08631f52e1e6f54a39


On Sun, Dec 22, 2013 at 1:13 PM, Carter Schonwald <carter.schonwald@gmail.com> wrote:
The -v flag is for cabal.  Be sure to post a link to the full output.  


On Sunday, December 22, 2013, Schell Scivally wrote:
Hey guys, I thought I had fixed my issues by rebuilding HEAD but it looks like I just went in a circle and now I'm back at the same problem from my first message: http://www.haskell.org/pipermail/iphone/2013-December/000345.html

I'm trying to cabal install vector but it's failing while installing primitive. The log file shows no error, so it looks like it's silently erring. My setup is here: https://gist.github.com/schell/f3a737171ce2f6b1119c
Just for posterity I'll post the output from `arm-apple-darwin10-cabal install vector`:

Resolving dependencies...

Configuring primitive-0.5.1.0...

Failed to install primitive-0.5.1.0

Last 10 lines of the build log ( /Users/schell/.cabal/logs/primitive-0.5.1.0.log ):

cabal: Error: some packages failed to install:

primitive-0.5.1.0 failed during the configure step. The exception was:

ExitFailure 127

vector-0.10.9.1 depends on primitive-0.5.1.0 which failed to install.

The build log is empty.

Furthermore, for a while I was trying to use cabal like `arm-apple-darwin10-cabal --config-file=arm.config install vector`, pointing it to a custom cabal file (one that was just autogenerated the first time I issued the command). This looked like it was working, but it says that the package is already installed. If I don't include the --config-file option it errs like above. 

Using arm-apple-darwin10-ghc to build my project is failing because it can't find Data.Vector.Storable but I can't seem to get cabal to install it in the correct location.

--
Schell Scivally
http://blog.efnx.com
http://github.com/schell
http://twitter.com/schellsan



--
Schell Scivally
http://blog.efnx.com
http://github.com/schell
http://twitter.com/schellsan



--
Schell Scivally
http://blog.efnx.com
http://github.com/schell
http://twitter.com/schellsan

_______________________________________________
iPhone mailing list
iPhone@haskell.org
http://www.haskell.org/mailman/listinfo/iphone





--
Schell Scivally
http://blog.efnx.com
http://github.com/schell
http://twitter.com/schellsan