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

julia-0.5.2 #3503

Merged
merged 55 commits into from
Aug 18, 2017
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
9d1ec7c
Julia-0.5.2
dfornika Aug 10, 2017
ee165c0
Update meta.yaml
dfornika Aug 10, 2017
6e4a9ef
Update meta.yaml
dfornika Aug 10, 2017
a765a18
Update meta.yaml
dfornika Aug 10, 2017
329ecf4
Update meta.yaml
dfornika Aug 10, 2017
0399205
Update meta.yaml
dfornika Aug 10, 2017
b59d56c
Update meta.yaml
dfornika Aug 10, 2017
fb78a2f
Addressed review by @bgruening
dfornika Aug 11, 2017
09ea8b4
Removed libgit2 dependency
dfornika Aug 11, 2017
79a24de
Added libgit2 dependency, un-pinned version
dfornika Aug 11, 2017
cd8c0f3
Set JULIA_HISTORY inside conda env
dfornika Aug 11, 2017
060bf17
Pinned llvmdev 3.7.1. Run all tests
dfornika Aug 12, 2017
056cb20
Add TAGGED_RELEASE_BANNER
bgruening Aug 12, 2017
50c9974
Remove testing from build.sh script
dfornika Aug 12, 2017
73cbd34
Merge remote-tracking branch 'upstream/master'
dfornika Aug 13, 2017
abb9ead
Add tagged release banner
dfornika Aug 13, 2017
4315d8f
Merge branch 'bgruening-patch-1'
dfornika Aug 13, 2017
c23dafc
Merge branch 'master' into patch-1
dfornika Aug 13, 2017
9f461d6
Merge pull request #1 from bgruening/patch-1
dfornika Aug 13, 2017
a1e0094
Update meta.yaml
dfornika Aug 14, 2017
9a16cd9
Update meta.yaml
dfornika Aug 14, 2017
8d1870b
Update meta.yaml
dfornika Aug 14, 2017
e50a172
Removed rpath patch, build llvm & fftw
dfornika Aug 15, 2017
f58ef7c
Remove conda mpfr
dfornika Aug 15, 2017
b42eac4
Added toolchain and patchelf to build reqs
dfornika Aug 15, 2017
ea8152b
Remove fftw
dfornika Aug 15, 2017
feab085
Add fftw
dfornika Aug 15, 2017
4fda532
Added juliarc.jl file
dfornika Aug 15, 2017
7f5062a
Removed toolchain
dfornika Aug 15, 2017
2e8b807
Added toolchain
dfornika Aug 16, 2017
f967c10
Added libtool
dfornika Aug 16, 2017
7ad4d18
Removed libtool
dfornika Aug 16, 2017
3f4ada5
Added gcc
dfornika Aug 16, 2017
1b9c389
Added libgcc
dfornika Aug 16, 2017
461dda3
Added mpfr and fftw as runtime deps
dfornika Aug 16, 2017
8a38506
[skip appveyor] Removed juliarc.jl
dfornika Aug 16, 2017
1f5a6e7
[skip appveyor] Pipe to bar during testing to avoid timeout
dfornika Aug 16, 2017
bc91f58
[skip appveyor] Add timeout modifier to test phase
dfornika Aug 16, 2017
62a07eb
[skip appveyor] Fixed syntax for timeout modifier
dfornika Aug 16, 2017
0b5087b
[skip appveyor] Fixed syntax for timeout modifier
dfornika Aug 17, 2017
6feace4
[skip appveyor] Removed timeout modifier
dfornika Aug 17, 2017
c92d774
[skip appveyor] added perl as runtime dep
dfornika Aug 17, 2017
fc2f8d3
[skip appveyor] Added python2 as runtime dep
dfornika Aug 17, 2017
22c76f5
[skip appveyor] Moved perl & python2 to build-time
dfornika Aug 17, 2017
9be917f
[skip appveyor] Moved perl requirement to test section
dfornika Aug 17, 2017
b87fd4e
[skip appveyor] Removed python 3.6 from build reqirements
dfornika Aug 17, 2017
9e15f34
[skip appveyor] Removed automake, autoconf and libxml2
dfornika Aug 17, 2017
747d101
[skip appveyor] Added perl as build requirement
dfornika Aug 17, 2017
8c6810f
[skip appveyor] Missing space before package name perl
dfornika Aug 17, 2017
d15efd2
[skip appveyor travis] Added arpack
dfornika Aug 17, 2017
e41adf6
[skip appveyor] [skip travis] Added curl as runtime requirement
dfornika Aug 17, 2017
a2b0fbe
[skip appveyor] Removed libssh2
dfornika Aug 17, 2017
79e1f4e
[skip appveyor] Added suitesparse
dfornika Aug 17, 2017
0a95d04
[skip appveyor] Added timeout modifier
dfornika Aug 18, 2017
6cb50af
[skip appveyor] Removed timeout modifier
dfornika Aug 18, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions recipes/julia/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/sh

export C_INCLUDE_PATH=${PREFIX}/include
export LD_LIBRARY_PATH=${PREFIX}/lib
export LIBRARY_PATH=${PREFIX}/lib
export CMAKE_PREFIX_PATH=${PREFIX}

make -j 2 prefix=${PREFIX} MARCH=core2 sysconfigdir=${PREFIX}/etc NO_GIT=1 \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there something like make test which we can run?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a test target in the Makefile. Can you suggest how to include that in the build script? Would we just run the make test command first then make install after, with the same env variables and flags? (ie:)

make -j 2 prefix=${PREFIX} MARCH=core2 sysconfigdir=${PREFIX}/etc NO_GIT=1 \
  USE_SYSTEM_LIBGIT2=1 USE_LLVM_SHLIB=0 USE_SYSTEM_CURL=1 USE_SYSTEM_MPFR=1 \
  USE_SYSTEM_PATCHELF=1 USE_SYSTEM_LIBSSH2=1 USE_SYSTEM_LLVM=1 USE_SYSTEM_BLAS=1 \
  USE_SYSTEM_FFTW=1 USE_SYSTEM_GMP=1 USE_SYSTEM_LAPACK=1 LIBBLAS=-lopenblas \
  LIBBLASNAME=libopenblas.so LIBLAPACK=-lopenblas LIBLAPACKNAME=libopenblas.so \
  test

make -j 2 prefix=${PREFIX} MARCH=core2 sysconfigdir=${PREFIX}/etc NO_GIT=1 \
  USE_SYSTEM_LIBGIT2=1 USE_LLVM_SHLIB=0 USE_SYSTEM_CURL=1 USE_SYSTEM_MPFR=1 \
  USE_SYSTEM_PATCHELF=1 USE_SYSTEM_LIBSSH2=1 USE_SYSTEM_LLVM=1 USE_SYSTEM_BLAS=1 \
  USE_SYSTEM_FFTW=1 USE_SYSTEM_GMP=1 USE_SYSTEM_LAPACK=1 LIBBLAS=-lopenblas \
  LIBBLASNAME=libopenblas.so LIBLAPACK=-lopenblas LIBLAPACKNAME=libopenblas.so \
  install

USE_SYSTEM_LIBGIT2=1 USE_LLVM_SHLIB=0 USE_SYSTEM_CURL=1 USE_SYSTEM_MPFR=1 \
USE_SYSTEM_PATCHELF=1 USE_SYSTEM_LIBSSH2=1 USE_SYSTEM_LLVM=1 USE_SYSTEM_BLAS=1 \
USE_SYSTEM_FFTW=1 USE_SYSTEM_GMP=1 USE_SYSTEM_LAPACK=1 LIBBLAS=-lopenblas \
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about using arpack and suitesparse from conda-forge?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does conda-forge's suitesparse build shared libraries?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes. the conda package has the following files

libamd.a         libcamd.so.2.4.6      libcolamd.so.2        libldl.a          libspqr.so.2.0.8
libamd.so        libccolamd.a          libcolamd.so.2.9.6    libldl.so         libsuitesparseconfig.a
libamd.so.2      libccolamd.so         libcsparse.a          libldl.so.2       libsuitesparseconfig.so
libamd.so.2.4.6  libccolamd.so.2       libcxsparse.a         libldl.so.2.2.6   libsuitesparseconfig.so.4
libbtf.a         libccolamd.so.2.9.6   libcxsparse.so        librbio.a         libsuitesparseconfig.so.4.5.4
libbtf.so        libcholmod.a          libcxsparse.so.3      librbio.so        libumfpack.a
libbtf.so.1      libcholmod.so         libcxsparse.so.3.1.9  librbio.so.2      libumfpack.so
libbtf.so.1.2.6  libcholmod.so.3       libklu.a              librbio.so.2.2.6  libumfpack.so.5
libcamd.a        libcholmod.so.3.0.11  libklu.so             libspqr.a         libumfpack.so.5.7.6
libcamd.so       libcolamd.a           libklu.so.1           libspqr.so
libcamd.so.2     libcolamd.so          libklu.so.1.3.8       libspqr.so.2

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should they be added as build-time requirements, run-time requirements, or both?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

both (do run-time requirements in conda not get used at build time unless you also list them as build deps?)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both (@tkelman, yes run-time requirements are not added to build time)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dfornika, ping

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for adding arpack. Can you add suitesparse as well?

Copy link
Contributor Author

@dfornika dfornika Aug 17, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I was just doing it one at a time in case either of them caused some unexpected problem. The latest build includes both.

LIBBLASNAME=libopenblas.so LIBLAPACK=-lopenblas LIBLAPACKNAME=libopenblas.so \
install

mv --verbose "$PREFIX/bin/julia" "$PREFIX/bin/julia_"
cp --verbose "$RECIPE_DIR/julia-wrapper.sh" "$PREFIX/bin/julia"
chmod +x "$PREFIX/bin/julia"
16 changes: 16 additions & 0 deletions recipes/julia/julia-wrapper.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/bash

JULIA_HOME="$(dirname "${BASH_SOURCE[0]}")"

# Set JULIA_PKGDIR to $PREFIX/share/julia/site to avoid contaminating
# user's ~/.julia/. This script will modify Pkg.dir() and
# Base.LOAD_CACHE_PATH[1] appropriately. Note that wrapper script is
# used rather than /etc/julia/juliarc.jl because LOAD_CACHE_PATH is
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you should also be able to just replace its contents

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you clarify? I'm not sure what you're suggesting.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

modify LOAD_CACHE_PATH in a juliarc instead of doing this non portable wrapper script business

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Though juliarc is going to be in the user's home directory, right? It would be better if we had a way to set this without touching the user's home directory. Is there one?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there's a juliarc in the installation as well

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I missed this before and maybe you did as well @tkelman, but the comment here says that "LOAD_CACHE_PATH is configured in base/sysimg.jl which is loaded before juliarc.jl." Hence its manipulation in the wrapper script. Knowing very little about Julia's loading procedure I can't comment further, but it sounds like changes to LOAD_CACHE_PATH in juliarc will simply be ignored. Thoughts on this?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the sysimg.jl value is just a default, it's a mutable array so can be modified anywhere

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right. That much is clear. What is less clear is what has already been done based on LOAD_CACHE_PATH at this point. Are there any docs on Julia's loading procedure?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW opened issue ( conda-forge/julia-feedstock#10 ) to get rid of the wrapper script and @dfornika's PR ( conda-forge/julia-feedstock#11 ) is an attempt to solve this. Maybe you can advise on how best to proceed.

# configured in base/sysimg.jl which is loaded before juliarc.jl.
if [ -z ${JULIA_PKGDIR+x} ] # see: http://stackoverflow.com/a/13864829
then
JULIA_PKGDIR="$(dirname "$JULIA_HOME")/share/julia/site"
export JULIA_PKGDIR
fi

exec "$JULIA_HOME/julia_" "$@"
57 changes: 57 additions & 0 deletions recipes/julia/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package:
name: julia
version: "0.5.2"

source:
fn: v0.5.2.tar.gz
url: https://github.com/JuliaLang/julia/archive/v0.5.2.tar.gz
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would template out the version as in the example. Should make it easier to update.

sha256: efa3303d63e39bf3ea06e23ef68807cca0095c7e0507bdf26eae1d5dee7868c7
patches:
- rpath.patch

build:
skip: True # [osx]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to be combined in one like [py3k or osx]

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Skip windows builds too? (ie:)

build:
  skip: True  # [py3k or osx or win]

The AppVeyor CI build fails with message:

Packages missing in current win-32 channels: 
  - autoconf 2.69 pl5.*
  - automake 1.15 pl5.*
  - openblas
  - gmp 0.5.*

...and

Packages missing in current win-64 channels: 
  - autoconf 2.69 pl5.*
  - automake 1.15 pl5.*
  - openblas
  - gmp 0.5.*

(I realized the gmp version is wrong anyways, but not sure about the others)

skip: True # [py3k]
rpaths:
- lib/julia/
number: 0
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we are using openblas, we should change this like so.

  number: 200
  features:
    - blas_{{ variant }}


requirements:
build:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also please add toolchain as a build dependency.

- gcc # [linux]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need gcc on Linux? There should be a compiler in the docker image.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The build fails at a very early stage if I don't add gcc.

- llvm # [osx]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe this should be dropped until someone tries to do macOS builds.

- cmake
- zlib
- python
- autoconf 2.69 pl5.*
- automake 1.15 pl5.*
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what were you needing autotools for? likewise with libxml2, don't usually expect that to be a build-dep

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't write the original meta.yaml file, so all I can say is that they were there in the bioconda recipe.

- openblas
- llvmdev 3.9.*
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

llvm 3.9 with julia 0.5.x is not a recommended configuration that would be supported in upstream bug reports

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What version would be recommended?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

llvm 3.7.1 (heavily patched) with julia 0.5.x, or llvm 3.9.1 (also heavily patched) with julia 0.6.0

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there any news on when these patches might move upstream?

We can include patches for llvm. There is a mechanism for it, but I haven't kept up with the latest details. Maybe @SylvainCorlay can comment.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We upstream everything we can. See all the "Remove for" comments here https://github.com/JuliaLang/julia/blob/4c5cc04156ba074a8baa028c2a8a41b9e70d56ee/deps/llvm.mk#L432-L482 that mean things were successfully upstreamed. The problem is LLVM breaks other things before their next release and we haven't tested or ifdef-ed code sufficiently to work with anything else. We also haven't tested backporting our patches against other LLVM-using projects, they may cause issues in use cases that Julia doesn't care about. Realistically LLVM does not work well as a shared dependency.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can I get some advice on how to solve this? Should I remove llvm and llvmdev from meta.yaml? My understanding is that the julia build system would pull down its own copy if we don't list it as a dependency and set USE_SYSTEM_LLVM=0 in the build.sh script.

- fftw
- gmp 0.5.*
- mpfr
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mpfr 3.1.*

- curl
- libssh2 1.7.*
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if libgit2 depends on this at run time, then I suspect Julia's Pkg would too for handling ssh remotes (though it'll only do so through libgit2 and depend how libgit2 was built, we don't link or call libssh2 directly)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So are you suggesting to add libssh2 as a runtime requirement?

It looks like the pkg tests pass.

     * pkg                  INFO: Initializing package repository /tmp/Zpu2ogMF/v0.5
INFO: Cloning METADATA from https://github.com/JuliaLang/METADATA.jl
INFO: No packages to install, update or remove
INFO: Cloning cache of Example from notarealprotocol://github.com/JuliaLang/Example.jl.git
INFO: Cloning cache of Example from https://github.com/JuliaLang/Example.jl.git
INFO: Installing Example v0.4.1
INFO: Package database updated
INFO: Checking out Example master...
INFO: Pulling Example latest master...
INFO: No packages to install, update or remove
INFO: Freeing Example
INFO: No packages to install, update or remove
INFO: Checking out Example master...
INFO: Pulling Example latest master...
INFO: No packages to install, update or remove
INFO: Freeing Example
INFO: No packages to install, update or remove
INFO: Removing Example v0.4.1
INFO: Package database updated
INFO: Nothing to be done
INFO: Cloning Example from https://github.com/JuliaLang/Example.jl.git
INFO: Computing changes...
INFO: No packages to install, update or remove
INFO: Package database updated
INFO: Freeing Example
INFO: No packages to install, update or remove
INFO: Checking out Example master...
INFO: Pulling Example latest master...
INFO: No packages to install, update or remove
INFO: Freeing Example
INFO: No packages to install, update or remove
INFO: Cloning Example2 from /tmp/Zpu2ogMF/v0.5/Example
INFO: Computing changes...
INFO: No packages to install, update or remove
INFO: Cloning Example3 from /tmp/Zpu2ogMF/v0.5/Example
INFO: Computing changes...
INFO: No packages to install, update or remove
INFO: Checking out Example2 test-branch-1...
INFO: Pulling Example2 latest test-branch-1...
INFO: No packages to install, update or remove
INFO: Checking out Example3 test-branch-1...
INFO: Pulling Example3 latest test-branch-1...
INFO: No packages to install, update or remove
INFO: Checking out Example master...
INFO: Pulling Example latest master...
INFO: No packages to install, update or remove
INFO: Cloning Example4 from /tmp/Zpu2ogMF/v0.5/Example
INFO: Computing changes...
INFO: No packages to install, update or remove
INFO: Checking out Example4 test-branch-2...
INFO: Pulling Example4 latest test-branch-2...
INFO: No packages to install, update or remove
INFO: Updating METADATA...
INFO: Updating Example2 test-branch-1...
INFO: Updating Example4 test-branch-2...
INFO: Updating Example3 test-branch-1...
INFO: Computing changes...
INFO: No packages to install, update or remove
INFO: Removing Example v0.4.1
INFO: Package database updated
INFO: Freeing Example
INFO: Upgrading ColorTypes: v0.2.12 => v0.5.2
INFO: Upgrading Colors: v0.6.4 => v0.7.4
INFO: Upgrading FixedPointNumbers: v0.2.1 => v0.3.9
INFO: Removing Example v0.4.1
INFO: Package database updated
WARNING: FixedPointNumbers is fixed at 0.0.6+ conflicting with requirement for ColorTypes: [0.3.0,∞)
WARNING: FixedPointNumbers is fixed at 0.0.6+ conflicting with requirement for Colors: [0.3.0,∞)
WARNING: ColorTypes is fixed at 0.0.0- conflicting with requirement for Colors: [0.3.0,∞)
WARNING: Compat is fixed at 0.2.12+ conflicting with requirement for FixedPointNumbers: [0.17.0,∞)
WARNING: Compat is fixed at 0.2.12+ conflicting with requirement for ColorTypes: [0.26.0,∞)
WARNING: Compat is fixed at 0.2.12+ conflicting with requirement for Colors: [0.18.0,∞)
INFO: Installing Example v0.4.0
INFO: Package database updated
INFO: METADATA is out-of-date — you may not have the latest version of Example
INFO: Use `Pkg.update()` to get the latest versions of your packages
 in 240.46 seconds, maxrss  434.51 MB
     * libgit2-online        in   0.47 seconds, maxrss  434.51 MB
    SUCCESS

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd probably leave it as an indirect dependency, if libgit2 is built against it then libgit2 will have a runtime dependency on it right? Pkg will work but with degraded functionality if libgit2 happens to get built without libssh2 support. I think there are tests that would fail if that happened.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can remove libssh2 as it is only needed as a indirect dependency of libgit2

- libxml2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

- libgit2 0.24.*

run:
- zlib
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you pin zlib to zlib 1.2.8 both run and build environments.

- libgcc # [linux]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be dropped if gcc ends up being dropped above.

- libgit2 0.24.*
- gmp 0.5.*
- openblas
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you pin openblas to openblas 0.2.19|0.2.19.*

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I've got gmp wrong too. Will use gmp 6.1.*


test:
commands:
- "julia -v"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the quotes can be removed


about:
home: http://julialang.org/
license: MIT
license_file: LICENSE.md
summary: A high-performance dynamic programming language for data science

extra:
recipe-maintainers:
- dfornika
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to add me.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, I'm going to add @acaprez too.

31 changes: 31 additions & 0 deletions recipes/julia/rpath.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
--- Makefile 2017-05-06 16:34:02.000000000 +0000
+++ Makefile.new 2017-06-06 16:23:56.660979100 +0000
@@ -414,19 +414,19 @@
# Update RPATH entries and JL_SYSTEM_IMAGE_PATH if $(private_libdir_rel) != $(build_private_libdir_rel)
ifneq ($(private_libdir_rel),$(build_private_libdir_rel))
ifeq ($(OS), Darwin)
- for julia in $(DESTDIR)$(bindir)/julia* ; do \
- install_name_tool -rpath @executable_path/$(build_private_libdir_rel) @executable_path/$(private_libdir_rel) $$julia; \
- install_name_tool -add_rpath @executable_path/$(build_libdir_rel) @executable_path/$(libdir_rel) $$julia; \
- done
+ #for julia in $(DESTDIR)$(bindir)/julia* ; do \
+ # install_name_tool -rpath @executable_path/$(build_private_libdir_rel) @executable_path/$(private_libdir_rel) $$julia; \
+ # install_name_tool -add_rpath @executable_path/$(build_libdir_rel) @executable_path/$(libdir_rel) $$julia; \
+ #done
else ifeq ($(OS), Linux)
- for julia in $(DESTDIR)$(bindir)/julia* ; do \
- patchelf --set-rpath '$$ORIGIN/$(private_libdir_rel):$$ORIGIN/$(libdir_rel)' $$julia; \
- done
+ #for julia in $(DESTDIR)$(bindir)/julia* ; do \
+ # patchelf --set-rpath '$$ORIGIN/$(private_libdir_rel):$$ORIGIN/$(libdir_rel)' $$julia; \
+ #done
endif

# Overwrite JL_SYSTEM_IMAGE_PATH in julia library
- $(call stringreplace,$(DESTDIR)$(libdir)/libjulia.$(SHLIB_EXT),sys.$(SHLIB_EXT)$$,$(private_libdir_rel)/sys.$(SHLIB_EXT))
- $(call stringreplace,$(DESTDIR)$(libdir)/libjulia-debug.$(SHLIB_EXT),sys-debug.$(SHLIB_EXT)$$,$(private_libdir_rel)/sys-debug.$(SHLIB_EXT))
+ #$(call stringreplace,$(DESTDIR)$(libdir)/libjulia.$(SHLIB_EXT),sys.$(SHLIB_EXT)$$,$(private_libdir_rel)/sys.$(SHLIB_EXT))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why are you commenting this out? I would expect this to break things

Copy link
Contributor Author

@dfornika dfornika Aug 12, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know much about the purpose of that patch. It was written by @acaprez for the bioconda package:

bioconda/bioconda-recipes@dae9e67

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This may make it impossible for Julia to run except via the wrapper script.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think that's true, because the julia-0.5.2 package on bioconda uses that patch but doesn't use a wrapper script.

https://anaconda.org/bioconda/julia

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then is this condition even true in your build? If not, you don't need to be patching it at all.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know, but I removed the patch and re-built on my system and it seemed to work fine. It passed the test suite. I created a new conda env based on that build and ran julia, installed a simple package ("ArgParse") and imported it. Everything seemed to work.

+ #$(call stringreplace,$(DESTDIR)$(libdir)/libjulia-debug.$(SHLIB_EXT),sys-debug.$(SHLIB_EXT)$$,$(private_libdir_rel)/sys-debug.$(SHLIB_EXT))
endif

mkdir -p $(DESTDIR)$(sysconfdir)