mirror of
https://github.com/macports/macports-ports.git
synced 2026-07-12 18:20:25 -07:00
184 lines
7.0 KiB
Tcl
184 lines
7.0 KiB
Tcl
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
|
|
|
|
PortSystem 1.0
|
|
PortGroup github 1.0
|
|
PortGroup gpg_verify 1.0
|
|
PortGroup compilers 1.0
|
|
|
|
compilers.choose fc f77 f90
|
|
compilers.setup require_fortran -g95
|
|
compiler.blacklist-append {clang < 900}
|
|
|
|
github.setup JuliaLang julia 1.12.6 v
|
|
revision 0
|
|
categories-append lang math science
|
|
maintainers {ieee.org:s.t.smith @essandess} \
|
|
{b-data.ch:olivier.benz @benz0li} \
|
|
openmaintainer
|
|
platforms {darwin >= 14}
|
|
license MIT
|
|
homepage http://julialang.org
|
|
|
|
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 to users of other technical \
|
|
computing environments.
|
|
|
|
github.tarball_from releases
|
|
|
|
distfiles ${name}-${version}-full${extract.suffix}
|
|
|
|
checksums ${name}-${version}-full${extract.suffix} \
|
|
rmd160 9edb80677cfa540ccc328a2eadd2923e4d0f958b \
|
|
sha256 711f3aa8d6ec5c9004593eb8f3d53e3564cd759acba8ad4adae967afc20332cc \
|
|
size 570081040
|
|
|
|
extract.only ${distfiles}
|
|
|
|
gpg_verify.use_gpg_verification \
|
|
yes
|
|
|
|
if {[option gpg_verify.use_gpg_verification]} {
|
|
distfiles-append \
|
|
${name}-${version}-full${extract.suffix}.asc
|
|
checksums-append \
|
|
${name}-${version}-full${extract.suffix}.asc \
|
|
size 902
|
|
|
|
post-checksum {
|
|
gpg_verify.verify_gpg_signature \
|
|
${filespath}/juliareleases.asc \
|
|
${distpath}/${name}-${version}-full${extract.suffix}.asc \
|
|
${distpath}/${name}-${version}-full${extract.suffix}
|
|
}
|
|
}
|
|
|
|
# julia build is `make && make install`
|
|
# see https://github.com/JuliaLang/julia/blob/master/Makefile
|
|
|
|
use_configure no
|
|
|
|
build.target release
|
|
|
|
pre-build {
|
|
# create a `gfortran` symbolic link
|
|
xinstall -m 0755 -d ${workpath}/bin
|
|
ln -sf ${configure.fc} ${workpath}/bin/gfortran
|
|
|
|
build.env-append \
|
|
PATH=$env(PATH):${workpath}/bin \
|
|
PREFIX=${prefix} \
|
|
FC=${configure.fc}
|
|
}
|
|
|
|
set app_name "[string totitle ${name}].app"
|
|
|
|
variant app \
|
|
description {Install macOS app.} {
|
|
post-build {
|
|
# create the app by hand following ${worksrcpath}/contrib/mac/app/Makefile
|
|
set app_copyright "© [exec date +%Y] The Julia Project"
|
|
system -W ${worksrcpath}/contrib/mac/app \
|
|
"/bin/sh -c \"
|
|
osacompile -o ${app_name} startup.applescript
|
|
rm ${app_name}/Contents/Resources/applet.icns
|
|
cp julia.icns ${app_name}/Contents/Resources/
|
|
plutil -replace CFBundleDevelopmentRegion -string \"en\" ${app_name}/Contents/Info.plist
|
|
plutil -insert CFBundleDisplayName -string \"Julia\" ${app_name}/Contents/Info.plist
|
|
plutil -replace CFBundleIconFile -string \"julia.icns\" ${app_name}/Contents/Info.plist
|
|
plutil -replace CFBundleIconName -string \"julia\" ${app_name}/Contents/Info.plist
|
|
plutil -insert CFBundleIdentifier -string \"org.julialang.launcherapp\" ${app_name}/Contents/Info.plist
|
|
plutil -replace CFBundleName -string \"Julia\" ${app_name}/Contents/Info.plist
|
|
plutil -insert CFBundleShortVersionString -string \'${version}\' ${app_name}/Contents/Info.plist
|
|
plutil -insert CFBundleVersion -string \'${version}\' ${app_name}/Contents/Info.plist
|
|
plutil -insert NSHumanReadableCopyright -string \'${app_copyright}\' ${app_name}/Contents/Info.plist
|
|
mkdir -p ${app_name}/Contents/Resources/julia/bin
|
|
ln -s ${prefix}/bin/julia ${app_name}/Contents/Resources/julia/bin/julia\"
|
|
"
|
|
|
|
if {${configure.build_arch} eq {arm64}} {
|
|
system -W ${worksrcpath}/contrib/mac/app \
|
|
"codesign -f -s - '${app_name}/Contents/MacOS/applet'"
|
|
}
|
|
}
|
|
|
|
post-destroot {
|
|
copy ${worksrcpath}/contrib/mac/app/${app_name} \
|
|
${destroot}${applications_dir}
|
|
}
|
|
}
|
|
|
|
default_variants-append \
|
|
+app
|
|
|
|
pre-destroot {
|
|
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 ${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.dylib ${destroot}${prefix}/lib
|
|
move ${dpw}/julia-${version}/lib/libjulia.${version}.dylib ${destroot}${prefix}/lib
|
|
# see https://github.com/JuliaLang/julia/pull/48931
|
|
move ${dpw}/julia-${version}/libexec/julia ${destroot}${prefix}/libexec/julia
|
|
move ${dpw}/julia-${version}/share/julia ${destroot}${prefix}/share
|
|
delete ${destroot}${prefix}/share/man
|
|
move ${dpw}/julia-${version}/share/man ${destroot}${prefix}/share
|
|
|
|
delete ${destroot}${prefix}/var
|
|
|
|
system -W ${destroot}${prefix}/bin "install_name_tool -add_rpath ${prefix}/lib julia"
|
|
system -W ${destroot}${prefix}/lib/julia "install_name_tool -change ${worksrcpath}/usr/lib/libccalllazyfoo.dylib @rpath/libccalllazyfoo.dylib libccalllazybar.dylib"
|
|
if {${os.arch} eq "arm"} {
|
|
# manually fix code signature on arm
|
|
system -W ${destroot}${prefix} "/usr/bin/codesign --sign - --force lib/libjulia.${version}.dylib"
|
|
system -W ${destroot}${prefix} "/usr/bin/codesign --sign - --force libexec/julia/dsymutil"
|
|
system -W ${destroot}${prefix} "/usr/bin/codesign --sign - --force libexec/julia/lld"
|
|
}
|
|
}
|
|
|
|
pre-test {
|
|
test.env-append \
|
|
PATH=$env(PATH):${workpath}/bin \
|
|
PREFIX=${prefix} \
|
|
FC=${configure.fc}
|
|
}
|
|
|
|
test.run yes
|
|
|
|
if {${os.arch} eq "arm"} {
|
|
notes-append \
|
|
"
|
|
On Apple Silicon machines, access the macOS Accelerate\
|
|
and Metal frameworks using, respectively:\
|
|
|
|
using AppleAccelerate
|
|
using Metal
|
|
"
|
|
}
|
|
|
|
if {${os.platform} eq "darwin" && ${os.major} < 14} {
|
|
known_fail yes
|
|
pre-fetch {
|
|
ui_error "${name} @${version} requires OS X 10.10 or later"
|
|
return -code error "incompatible OS X version"
|
|
}
|
|
}
|
|
|
|
github.livecheck.regex {([^"-]+)}
|