Skip to content

Commit

Permalink
julia: Update to v1.1.1 with Portfile simplifications
Browse files Browse the repository at this point in the history
* Update to latest Julia release 1.1.1
* Simplify Portfile for easier maintenance
* Build all julia dependencies from source
* GPG verification
* Run make test
  • Loading branch information
essandess authored and cjones051073 committed Aug 18, 2019
1 parent 2f22825 commit e7c3ca3
Show file tree
Hide file tree
Showing 2 changed files with 128 additions and 106 deletions.
182 changes: 76 additions & 106 deletions lang/julia/Portfile
Expand Up @@ -4,17 +4,17 @@ PortSystem 1.0
PortGroup github 1.0
PortGroup compilers 1.0

github.setup JuliaLang julia 0.6.2 v
revision 3
compilers.choose fc f77 f90
compilers.setup require_fortran -g95

github.setup JuliaLang julia 1.1.1 v
revision 0
categories-append lang math science
maintainers nomaintainer
maintainers {ieee.org:s.t.smith @essandess} openmaintainer
platforms darwin
license MIT
homepage http://julialang.org

compilers.choose fc f77 f90
compilers.setup require_fortran -g95

description The Julia Language: A fresh approach to technical computing.
long_description Julia is a high-level, high-performance dynamic programming \
language for technical computing, with syntax that is familiar \
Expand All @@ -24,122 +24,92 @@ github.tarball_from releases

distfiles ${name}-${version}-full${extract.suffix}

checksums rmd160 c5a50b478cbef04ce2937c46173ebc63d9403934 \
sha256 1e34c13091c9ddb47cf87a51566d94a06613f3db3c483b8f63b276e416dd621b

# Force buildbot to skip this since julia builds its own blas; see https://trac.macports.org/ticket/45187
archive_sites

set llvm_ver 4.0

depends_lib-append port:llvm-${llvm_ver} \
port:curl \
port:pcre2 \
port:gmp \
port:mpfr \
port:SuiteSparse_UMFPACK \
port:SuiteSparse_CHOLMOD \
port:SuiteSparse_AMD \
port:SuiteSparse_CAMD \
port:SuiteSparse_COLAMD \
port:SuiteSparse_SPQR \
port:fftw-3 \
port:fftw-3-single \
port:ncurses \
port:arpack \
port:libgit2 \
path:lib/libopenblas.dylib:OpenBLAS
checksums ${name}-${version}-full${extract.suffix} \
rmd160 8eac1e29a71bac430c93810afac15be07c8ed62b \
sha256 3c5395dd3419ebb82d57bcc49dc729df3b225b9094e74376f8c649ee35ed79c2 \
size 96079453

set verify_gpg_signature false

if {${verify_gpg_signature} == "true"} {
distfiles-append \
${name}-${version}-full${extract.suffix}.asc
checksums-append \
${name}-${version}-full${extract.suffix}.asc \
rmd160 5b43a22ac7c852639fb251cc94a16c012efd7629 \
sha256 4553930eae7745123dc6229557c8ace54b1a1e4f4f1d979e87d3578593581546 \
size 866
}

use_configure no
# use_parallel_build no

post-extract {
file mkdir ${worksrcpath}/usr/lib
ln -s ${prefix}/lib/libfftw3.dylib ${worksrcpath}/usr/lib/
ln -s ${prefix}/lib/libfftw3_threads.dylib ${worksrcpath}/usr/lib/
ln -s ${prefix}/lib/libfftw3f.dylib ${worksrcpath}/usr/lib/
ln -s ${prefix}/lib/libfftw3f_threads.dylib ${worksrcpath}/usr/lib/
ln -s ${prefix}/lib/libpcre2-8.dylib ${worksrcpath}/usr/lib/
ln -s ${prefix}/lib/libgmp.dylib ${worksrcpath}/usr/lib/
ln -s ${prefix}/lib/libmpfr.dylib ${worksrcpath}/usr/lib/
ln -s ${prefix}/lib/libumfpack.dylib ${worksrcpath}/usr/lib/
ln -s ${prefix}/lib/libcholmod.dylib ${worksrcpath}/usr/lib/
ln -s ${prefix}/lib/libsuitesparseconfig.dylib ${worksrcpath}/usr/lib/
ln -s ${prefix}/lib/libarpack.dylib ${worksrcpath}/usr/lib/
ln -s ${prefix}/lib/libopenblas.dylib ${worksrcpath}/usr/lib/
ln -s ${prefix}/lib/libgit2.dylib ${worksrcpath}/usr/lib/
if {${verify_gpg_signature} == "true"} {
depends_fetch-append \
port:gnupg2

post-checksum {
# check GPG signature: https://julialang.org/juliareleases.asc
# pre-load public key to avoid keyserver downtime issues
# note: tcl exec will return error if error messages not directed to /dev/null
system -W ${workpath} "/bin/sh -c '${prefix}/bin/gpg --homedir ${workpath}/.gnupg --import ${filespath}/juliareleases.asc 2>/dev/null || /usr/bin/true'"
set gpg_verification [exec /bin/sh -c "if ${prefix}/bin/gpg --homedir ${workpath}/.gnupg --verify ${distpath}/${name}-${version}-full${extract.suffix}.asc ${distpath}/${name}-${version}-full${extract.suffix} 2>/dev/null; then echo 'VERIFIED'; else echo 'UNVERIFIED'; fi"]
if {[string trim ${gpg_verification}] != "VERIFIED"} {
ui_error "GPG signature verification failed with key juliareleases.asc."
}
}
}

build {}
# julia build is `make && make install`
# see https://github.com/JuliaLang/julia/blob/master/Makefile

use_configure no

build.target {}

pre-build {
# create a `gfortran` symbolic link
xinstall -m 0755 -d ${workpath}/bin
ln -s ${configure.fc} ${workpath}/bin/gfortran

build.env-append \
PATH=$env(PATH):${workpath}/bin \
PREFIX=${prefix} \
FC=${configure.fc}
}

pre-destroot {
destroot.args-append \
CC=${configure.cc} \
CXX=${configure.cxx} \
FC=${configure.fc} \
USE_SYSTEM_LLVM=1 \
LLVM_CONFIG=llvm-config-mp-${llvm_ver} \
USE_SYSTEM_LIBUNWIND=1 \
USE_SYSTEM_LIBM=1 \
USE_SYSTEM_GMP=1 \
USE_SYSTEM_MPFR=1 \
USE_SYSTEM_ZLIB=1 \
USE_SYSTEM_PCRE=1 \
USE_SYSTEM_FFTW=1 \
USE_SYSTEM_ARPACK=1 \
USE_SYSTEM_SUITESPARSE=1 \
USE_SYSTEM_LIBGIT2=1 \
USE_SYSTEM_BLAS=1 \
USE_SYSTEM_LAPACK=1 \
USE_BLAS64=0 \
LIBBLAS=-lopenblas \
LIBBLASNAME=libopenblas \
LIBLAPACK=-lopenblas \
LIBLAPACKNAME=libopenblas
destroot.env-append \
PATH=$env(PATH):${workpath}/bin \
PREFIX=${prefix} \
FC=${configure.fc}
}

post-destroot {
# julia doesn't do destroot quite right
set short_version [join [lrange [split ${version} .] 0 1] .]
set major_version [lindex [split ${version} .] 0]
set dpw ${destroot}${worksrcpath}
delete ${destroot}${prefix}/bin
move [glob $dpw/julia-*/bin] ${destroot}${prefix}/bin
move [glob $dpw/julia-*/etc/julia] ${destroot}${prefix}/etc
move [glob $dpw/julia-*/include/julia] ${destroot}${prefix}/include
move [glob $dpw/julia-*/lib/julia] ${destroot}${prefix}/lib
move [glob $dpw/julia-*/share/julia] ${destroot}${prefix}/share

move [glob $dpw/julia-*/lib/libjulia.${version}.dylib] ${destroot}${prefix}/lib
move [glob $dpw/julia-*/lib/libjulia-debug.${version}.dylib] ${destroot}${prefix}/lib
move [glob $dpw/julia-*/lib/libjulia.${version}.dylib.dSYM] ${destroot}${prefix}/lib
move [glob $dpw/julia-*/lib/libjulia-debug.${version}.dylib.dSYM] ${destroot}${prefix}/lib

set version_short [join [lrange [split ${version} .] 0 1] .]
ln -sf libjulia.${version}.dylib ${destroot}${prefix}/lib/libjulia.dylib
ln -sf libjulia_debug.${version}.dylib ${destroot}${prefix}/lib/libjulia_debug.dylib
ln -sf libjulia.${version}.dylib ${destroot}${prefix}/lib/libjulia.${version_short}.dylib
ln -sf libjulia_debug.${version}.dylib ${destroot}${prefix}/lib/libjulia_debug.${version_short}.dylib
move ${dpw}/julia-${version}/bin ${destroot}${prefix}/bin
move ${dpw}/julia-${version}/etc/julia ${destroot}${prefix}/etc
move ${dpw}/julia-${version}/include/julia ${destroot}${prefix}/include
move ${dpw}/julia-${version}/lib/julia ${destroot}${prefix}/lib
move ${dpw}/julia-${version}/lib/libjulia.${short_version}.dylib ${destroot}${prefix}/lib
move ${dpw}/julia-${version}/lib/libjulia.${short_version}.dylib.dSYM ${destroot}${prefix}/lib
move ${dpw}/julia-${version}/lib/libjulia.dylib ${destroot}${prefix}/lib
move ${dpw}/julia-${version}/lib/libjulia.${major_version}.dylib ${destroot}${prefix}/lib
move ${dpw}/julia-${version}/share/julia ${destroot}${prefix}/share

delete ${destroot}${prefix}/var

foreach b {julia julia-debug} {
system -W ${destroot}${prefix}/bin "install_name_tool -add_rpath ${prefix}/lib $b"
}
system -W ${destroot}${prefix}/bin "install_name_tool -add_rpath ${prefix}/lib julia"
}

variant blas64 description {Build internal OpenBLAS with 64-bit interface} {
depends_lib-delete \
port:OpenBLAS

pre-destroot {
destroot.args-delete \
USE_SYSTEM_BLAS=1 \
USE_SYSTEM_LAPACK=1 \
USE_BLAS64=0 \
LIBBLAS=-lopenblas \
LIBBLASNAME=libopenblas \
LIBLAPACK=-lopenblas \
LIBLAPACKNAME=libopenblas
}
pre-test {
test.env-append \
PATH=$env(PATH):${workpath}/bin \
PREFIX=${prefix} \
FC=${configure.fc}
}

test.run yes

github.livecheck.regex {([^"-]+)}
52 changes: 52 additions & 0 deletions lang/julia/files/juliareleases.asc
@@ -0,0 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

mQINBFXxFlcBEADQDEBFlzoyehPuk13Ct928WwBvb0q9OKyjz2NlYq3sL5ReTbQB
9P5hyl68q5iJ6QTjKEaxr+Kmjhib9dQGZhtBXRa9q185Fdav48rS9rDKR5/aPXNi
4aA0BSp7fHIDrTUGOUMB5TFpVZil+Sz4llpPKDlgG70dn3ZLBznJQKUXJWhxrheG
ogUK4W3WAdBBPDVraPjBjvTTSrhoOBJh/oNib3J6xTIaUMhOFz+Vuq05BZI9UO6n
OsE3dSW7X7dvqjcN3Ti7TgbJD5d4iOsQl8NhqItyS8ZULV8TPGOuwitoWxqgFIAL
5bhM9Of4xOE0+rmgke1dKmMkq3cu6yCEFypqyxwShexe+1Mvx4Tn4/OqC7wFVpTA
IH2ys7NsVcoLtZGqlBQnbXFmIu9ay51Zb4wwbJ5Qr9Rfx5xPvJoOVUpP/0I8+vlI
CmBkP6vs9vMCCKcreP0FpjCTSRApv9IXuwjumOMb6P0GJPOuFVfsy4849ONPC/yM
dMbeopi/BWfHu/Nqt7pqY210jncsdBPlPy7LvvhIkbpeZHQDoQVDPX88ZylhqKTy
gpWPBT5ezJ5ib0nSvYIZjMOMlMWxDaNDBGZlyHizVFwLZk6qHWM7I2WbJGvNgBTv
0dX9jBIDhdKdSZjc3wxh+nqZQg1l8xOOx9yCLSiBL1OHf4PYqJudL09AUwARAQAB
tDNKdWxpYSAoQmluYXJ5IHNpZ25pbmcga2V5KSA8YnVpbGRib3RAanVsaWFsYW5n
Lm9yZz6JAjgEEwECACIFAlXxFlcCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheA
AAoJEGbjx9wD1uSVg78QAJZUeygDHj1zTxt+8UAm4TMu0nWmcPjSzTGj5Wt4Gtec
HlWsXTOvFbABv8r3vzD2W1Bi0D0UcUucBy3Jf0nrUBWY89VTREcG/EWsF2SwSB7H
cL3pu+vcdLiVtRGI4AiSoZz2CXc4vHY0X/3TlPejcO0UU8A0Ukth/cX1ZqCjKP8T
ciXy89X4mlRAsAXapkHxiO+bscTd/VdWaPaUx8/TxeFoPZFB/0FIeJHYbI1chKPd
vAtFYLpB89d8zbQYgISM6oc/f1j0CQR6JdHGoAGP9Wd8wRz+mDT3WzOqL4jXctcA
CQUKGgYkOW8OEFBlfUACZK5uFxWMktN8//IlzczCTbYb9Z89UeeF7oaXfSZMFwiF
kxseUGCceXb5Kqj3fZKmmUstAEzycyNuCeXG1KXyAz1mg/ihq/rzB11vQQjY4WYJ
rIoUecRN3btSex6jcdOxAIOeGcyfigT7NMgplFXXkbuux2N7qtOkLUNx80DMOggK
tnSP60GkO1xzJLi3EHtaDVPU59KpeXjyEsNB2ngc5+LwHwbYGvaaZaFXFm7oCmM7
xG88EU14mCLZbpGleD6cmpVAprFSIXV0Z0xm6pdH9XBCT4UJ8tFXTrJsc1dYd+mw
eAwCYZ38e95kqrYrRbhjOOAKEtf3t4VnrsifbTfTVclUbsrSXVTQdHoiMlODc/WX
uQINBFXxFlcBEADNmFCh53NJ+8CQSzQda/efBX+H/SCj2b3vIYJXY2nR9h4IQ7UV
/AU5sUB/bpIN3nwwdcILYSm2oJGP8fZ8Zf46XliUOK8+yD8ApDg6okl3R1G+E9Qk
/EN49BCeXx9uT5vHpcHWkBvKmqmjUJ283i6q3QT5qzbkCGGUQ7SyhU1ywbjYIQi/
HLJpntqz44LrM+vfGUAa+CJld3DyzAm66KFSRbDU12XPE948MxUDQ1NgY9hJIlfm
ud/ShKakfQoEsLiTkUbEY7Vc19s2+aM3S1zeRfsatuayPuEUsnuz42wKWSdPNGyJ
TkLdWz46vSgN9wpe0OLoWxsuomaViRaNFDSK7Uo+AGjWcjFNlehFlW/ELji1JbS5
f5EAD1A1I2RJvLHyri3xFJtM9qbGiA3ZIfcVXq5RxAOehDPCcKzBS4w37D2vLBOQ
Xa+ExTJxwiCnMPuo7acsfkyleakAe82L/fAoVWdPcFSjq3KFvkpGpTlvvh2jwhoW
AgDGu77K9T1rHjj7t2GjuR71RVc4r0CP9iF3rAPmq/FapONW1Pz0aom7XLBZt8Zq
4wsPsGaAECmwi07bE6Vr9nqCeQb7XmjVucVJP+VXDpOJzt4J5zSzTCWGyj47/K7a
Rlz9KtYmY0s4sKnx3sjKpC8xMXaLgvSjudrQCZ/sohKRayKGAMI2p71GbQARAQAB
iQIfBBgBAgAJBQJV8RZXAhsMAAoJEGbjx9wD1uSV6+oP/3MCyMWEBiu73HVI2dS2
hDct/E9fDkpB6o/HEGhdNFTeeb/L7GqcQACJDtBDNVtMu0WhCgKeteHXM0KMy55f
6HAQEVnWhGSyR4KksV93RPZvUO+zzX5M7F2LiI59MSruKAYTC0kXbjcu9aQAn+kJ
EPHiHwsTzRkWh90q54/B2NQ6oVAHgnMIeh32OBdFMNHOnP+n1zu/+Wd4miC3fR9V
tmsVrOS8WtozdEC6TmquYswQ/gT6c0afCZSlNF/ZPPrXGGdD6t9WTJntfYB1rbEk
E/9WpaUgpKpxXQEOMzMAm+2yBoYnCpXzvbY6fzNWfOg6DJ65t0rkrCwDRHLH1grA
61OQb0Ou8LQnrFGox8L394sFebIoaBUk2Vhw5LH78X6g1f7Mj6j9Er0YSabVVpHh
ncMYflOeswrV4C1oP5UvL7K3qtCixUU4LQ4XqmioQey8AnrCdJ7S5QeyP1n5vU3e
Nz1JHCcH4/e698CuIoCZa86Edmo3S0O2hhiC5qslf5u1pdndlmbrgsWpBH5kJ7mI
edeA2ND/KrLlllE7NImLdlrciShctFP1ciqqHtTebQ+5MH17ObOhSptUDEt5LjZt
3YXZtQ+C/UmfkC+QVUdWTQ4cWUCNtuzLP+PW3o1AQHmijWbaECq5yMRVlr7JuxPr
Lr+fAJHZvbYCQjMTkZYScgYU
=XN/B
-----END PGP PUBLIC KEY BLOCK-----

0 comments on commit e7c3ca3

Please sign in to comment.