Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add .travis.yml and test target #12

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open

Add .travis.yml and test target #12

wants to merge 4 commits into from

Conversation

dmjio
Copy link
Member

@dmjio dmjio commented Nov 5, 2019

No description provided.

arrayfire.cabal Outdated Show resolved Hide resolved
@chessai
Copy link
Collaborator

chessai commented Nov 5, 2019

Why not use haskell-ci (which is really good), using travis for ubuntu? Unless you can have multiple travis setups for nix and non-nix builds. We could potentially test-drive typhon here for nix

@dmjio
Copy link
Member Author

dmjio commented Nov 5, 2019

@chessai I'll check out haskell-ci tonight, bigger issue is why cabal on ubuntu doesn't respect extra-lib-dirs and extra-include-dirs in the cabal file after cabal configure

@noughtmare
Copy link

@chessai try passing the -v3 flag to cabal.

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

why is a travis build not triggering on the most recent commits?

@chessai chessai closed this Nov 6, 2019
@chessai chessai reopened this Nov 6, 2019
@noughtmare
Copy link

@chessai It is working again, but you added -v3 in the wrong place.

@noughtmare
Copy link

noughtmare commented Nov 6, 2019

The log shows:

/usr/bin/gcc returned ExitFailure 1 with error message:
gcc: error: /opt/arrayfire/lib: No such file or directory

I think this is because of the ld-options field in the cabal file. I think it is best if the entire field is removed completely.

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

okay, configure seems to succeed now. however, hspec-discover fails.

@noughtmare
Copy link

Yes, I fixed that error on my machine by running cabal install hspec-discover.

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

most recent failure seems spurious (just adding hvr-ppa)

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

changed cabal to ${CABAL}. typo

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

use $WITHCOMPILER

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

sorry, i keep forgetting that git with do weird things with '$'-prefixed strings.

@noughtmare
Copy link

Now we're seeing real errors 🎉

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

okay, the library is building, but running anything is failing with:

/tmp/dist-test.N8AS/dist-newstyle/build/x86_64-linux/ghc-8.8.1/arrayfire-0.1.0.0/build/libHSarrayfire-0.1.0.0-inplace.a(LAPACK.o)(.text+0x71f): error: undefined reference to 'af_pinverse'
/tmp/dist-test.N8AS/dist-newstyle/build/x86_64-linux/ghc-8.8.1/arrayfire-0.1.0.0/build/libHSarrayfire-0.1.0.0-inplace.a(Image.o)(.text+0x48a5): error: undefined reference to 'af_iterative_deconv'
/tmp/dist-test.N8AS/dist-newstyle/build/x86_64-linux/ghc-8.8.1/arrayfire-0.1.0.0/build/libHSarrayfire-0.1.0.0-inplace.a(Image.o)(.text+0x4be4): error: undefined reference to 'af_inverse_deconv'
/tmp/dist-test.N8AS/dist-newstyle/build/x86_64-linux/ghc-8.8.1/arrayfire-0.1.0.0/build/libHSarrayfire-0.1.0.0-inplace.a(LAPACK.o)(.text+0x1000): error: undefined reference to 'af_pinverse'
/tmp/dist-test.N8AS/dist-newstyle/build/x86_64-linux/ghc-8.8.1/arrayfire-0.1.0.0/build/libHSarrayfire-0.1.0.0-inplace.a(Signal.o)(.text+0x4aa): error: undefined reference to 'af_approx1_uniform'
/tmp/dist-test.N8AS/dist-newstyle/build/x86_64-linux/ghc-8.8.1/arrayfire-0.1.0.0/build/libHSarrayfire-0.1.0.0-inplace.a(Signal.o)(.text+0xa6f): error: undefined reference to 'af_approx2_uniform'

@noughtmare
Copy link

That was fixed in #17

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

ok, rebasing

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

once a build with 8.8.1 passes, i will re-add the older ghcs

@noughtmare
Copy link

It seems that #23 forgot to also remove the tests for the Ord instance.

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

/tmp/dist-test.Iv7D/dist-newstyle/build/x86_64-linux/ghc-8.8.1/arrayfire-0.3.0.0/t/test/build/test/test: error while loading shared libraries: libaf.so.3: cannot open shared object file: No such file or directory
Test suite test: FAIL 
Test suite logged to: /tmp/dist-test.Iv7D/dist-newstyle/build/x86_64-linux/ghc-8.8.1/arrayfire-0.3.0.0/t/test/test/arrayfire-0.3.0.0-test.log 
0 of 1 test suites (0 of 1 test cases) passed. 
-----BEGIN CABAL OUTPUT-----
cabal: Tests failed for test:test from arrayfire-0.3.0.0.
-----END CABAL OUTPUT-----

looks like this isnt getting copied in properly

@noughtmare
Copy link

noughtmare commented Nov 6, 2019

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

hmm. that is strange.

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

do i need to remove the Ord tests from the test suite?

@noughtmare
Copy link

Yes, I think so.

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

now we at least see the same error on both.

@noughtmare
Copy link

noughtmare commented Nov 6, 2019

Oh, I think I know how to fix this. The linux documentation of arrayfire mentions that you have to do this:

Given sudo permissions, you can add the ArrayFire libraries via ldconfig like so:

echo /opt/arrayfire/lib64 > /etc/ld.so.conf.d/arrayfire.conf
sudo ldconfig

Otherwise, you will need to set the LD_LIBRARY_PATH environment variable in order to let your shared library loader find the ArrayFire libraries.

@noughtmare
Copy link

noughtmare commented Nov 6, 2019

I think that is also the reason for the ld-options field in the cabal file.

So another alternative we have is putting:

ld-options: -Wl,-rpath /opt/arrayfire/lib64

back in the cabal file.

(not -Wl,-rpath /opt/arrayfire/lib)

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

we could do that. would it be better instead to do export LD_LIBRARY_PATH="/opt/arrayfire/lib64:$LD_LIBRARY_PATH"?

@noughtmare
Copy link

Yes, that would also work.

@noughtmare
Copy link

I don't know if it carries over from before-install to script, but we will see.

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

me either. i should probably just do it right after the arrayfire script finishes.

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

failure on push is spurious.

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

actually, those have to be persisting, because a lot of them are actually used during install. so i'm less worried about that. for example, if the extension to PATH to include $CABALHOME/bin didn't persist, the hspec-discover failure would still be occurring.

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

extending LD_LIBRARY_PATH worked.

Test suite now fails with:

Failures:
  test/ArrayFire/ArithSpec.hs:31:7: 
  1) ArrayFire.Arith, Arith tests, Should take cubed root
       expected: ArrayFire Array
                 [1 1 1 1]
                     3.0000 
                 
        but got: ArrayFire Array
                 [1 1 1 1]
                     3.0000 
                 
  To rerun use: --match "/ArrayFire.Arith/Arith tests/Should take cubed root/"
Randomized with seed 938744424

Which i think is a problem with floating point arithemtic

@noughtmare
Copy link

test/ArrayFire/ArithSpec.hs:31:7: 
1) ArrayFire.Arith, Arith tests, Should take cubed root
     expected: ArrayFire Array
               [1 1 1 1]
                   3.0000 

      but got: ArrayFire Array
               [1 1 1 1]
                   3.0000 

🤔

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

perhaps we should add a shouldBeEps :: Array Double -> ArrayFire Double -> Expectation that compares for equality within some epsilon.

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

push failure is spurious

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

nice. it built and passed.

@chessai
Copy link
Collaborator

chessai commented Nov 6, 2019

added ghc 8.6.5 and 8.4.4.

@chessai
Copy link
Collaborator

chessai commented Nov 7, 2019

Configure fails on older ghcs/cabal 2.4. Havent looked into it.

@chessai
Copy link
Collaborator

chessai commented Nov 8, 2019

i am going to get arrayfire locally so i can test without travis. i don't know why configure is failing on older ghcs, but not 881 with cabal 3.0

@noughtmare
Copy link

lapack spec: failing with "free(): invalid next size (normal)"

I get a similar error message in #13 (comment).

- use haskell-ci
- download arrayfire installer and unpack to /opt/arrayfire/
- remove Ord tests from test suite
- use shouldBeEps for comparing Array Double

nix updates

- change shellHooks to use runhaskell instead of cabal-v1
- extend LD_LIBRARY_PATH to include $AF_LIB
- ghcid shellHook uses -fno-nocode
- get tests to build and _almost_ pass
@chessai
Copy link
Collaborator

chessai commented Nov 20, 2019

just trying to appease travis right now, because locally everything is fine.

@chessai
Copy link
Collaborator

chessai commented Nov 20, 2019

OK, we now have CI for GHC 8.4.4, 8.6.5, and 8.8.1. @noughtmare @dmjio please review when you have time.

@chessai
Copy link
Collaborator

chessai commented Nov 20, 2019

have to add back LAPACK/doctest tests

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants