-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rebasing to the new arch julia. (#76)
* Rebasing to the new arch julia. * adding missing deps --------- Co-authored-by: Laio Oriel Seman <[email protected]> Co-authored-by: ptr1337 <[email protected]>
- Loading branch information
1 parent
26c8091
commit 28864c1
Showing
8 changed files
with
439 additions
and
136 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
pkgbase = julia | ||
pkgdesc = High-level, high-performance, dynamic programming language | ||
pkgver = 1.10.0 | ||
pkgrel = 2 | ||
epoch = 2 | ||
url = https://julialang.org/ | ||
arch = x86_64 | ||
license = MIT | ||
makedepends = cmake | ||
makedepends = gcc-fortran | ||
makedepends = libwhich | ||
makedepends = llvm-julia | ||
makedepends = patchelf | ||
makedepends = python | ||
depends = blas64-openblas | ||
depends = fftw | ||
depends = libblastrampoline | ||
depends = libgit2 | ||
depends = libunwind | ||
depends = libutf8proc | ||
depends = lld | ||
depends = llvm-julia-libs | ||
depends = mbedtls2 | ||
depends = openlibm | ||
depends = p7zip | ||
depends = pcre2 | ||
depends = suitesparse | ||
optdepends = gnuplot: If using the Gaston Package from julia | ||
backup = etc/julia/startup.jl | ||
source = https://github.com/JuliaLang/julia/releases/download/v1.10.0/julia-1.10.0-full.tar.gz | ||
source = https://github.com/JuliaLang/julia/releases/download/v1.10.0/julia-1.10.0-full.tar.gz.asc | ||
source = c12e8515.patch | ||
source = julia-libgit2-1.7.patch::https://github.com/JuliaLang/julia/commit/2c4c068e.patch | ||
source = julia-libunwind-1.6.patch | ||
source = julia-libcholmod-cuda.patch | ||
source = julia-suitesparse-7.patch | ||
source = julia-hardcoded-libs.patch | ||
source = git+https://github.com/JuliaLang/Microbenchmarks.git | ||
validpgpkeys = 3673DF529D9049477F76B37566E3C7DC03D6E495 | ||
sha256sums = a5f8c0ce08cf132bdd919ca0b5b3b2b66c89e0e5f7e7fb2a81ffa7f225e3db4c | ||
sha256sums = SKIP | ||
sha256sums = 2cc294b63e601d50341979fb936826bdba59de2165a5929eae927e152652f367 | ||
sha256sums = b533dd999f019258cbcae1563f18715f41e42e0786b681150cb2c28f8a0da963 | ||
sha256sums = 3c0c03eabb668e3242fcd3058c1011dfbb579cc1c5adc3ae1016531e711cc64e | ||
sha256sums = f69afd7db3fabe4b747afa2404e1202c1dcfe0f8c5fe5238e424eea737fa2a23 | ||
sha256sums = 0fd1a0c1fcbe7f583139ed3a4a87f77963f06876d69058fa3ffbedfaec609ee7 | ||
sha256sums = 02f0ae518dfd50c2b3abf95fa760de85298baf79d80c2f6f48ac182e58a736d7 | ||
sha256sums = SKIP | ||
|
||
pkgname = julia |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,3 @@ | ||
# Original Julia PKGBUILD | ||
# Maintainer: Antonio Rojas <[email protected]> | ||
# Contributor: Alexander F. Rødseth <[email protected]> | ||
# Contributor: Eli Schwartz <[email protected]> | ||
|
@@ -13,48 +12,93 @@ | |
|
||
pkgname=julia | ||
pkgver=1.10.0 | ||
pkgrel=1 | ||
pkgdesc="Julia with Profile-Guided Optimization (PGO)" | ||
arch=('x86_64') | ||
url="https://github.com/JuliaLang/julia" | ||
license=('MIT') # Update if different | ||
pkgrel=2 | ||
arch=(x86_64) | ||
pkgdesc='High-level, high-performance, dynamic programming language' | ||
url='https://julialang.org/' | ||
license=(MIT) | ||
depends=(blas64-openblas | ||
fftw | ||
libblastrampoline | ||
libgit2 | ||
libunwind | ||
libutf8proc | ||
lld | ||
llvm-julia-libs | ||
mbedtls2 | ||
mbedtls | ||
openlibm | ||
p7zip | ||
pcre2 | ||
suitesparse) | ||
makedepends=(cmake | ||
gcc-fortran | ||
libwhich | ||
llvm-julia | ||
patchelf | ||
python) | ||
source=(https://github.com/JuliaLang/julia/releases/download/v${pkgver}/julia-${pkgver}-full.tar.gz | ||
julia-hardcoded-libs.patch | ||
julia-suitesparse-7.patch) | ||
python | ||
clang | ||
llvm) | ||
optdepends=('gnuplot: If using the Gaston Package from julia') | ||
source=(https://github.com/JuliaLang/julia/releases/download/v$pkgver/$pkgname-$pkgver-full.tar.gz{,.asc} | ||
c12e8515.patch | ||
julia-libgit2-1.7.patch::https://github.com/JuliaLang/julia/commit/2c4c068e.patch | ||
julia-libunwind-1.6.patch | ||
julia-libcholmod-cuda.patch | ||
julia-suitesparse-7.patch | ||
julia-hardcoded-libs.patch | ||
git+https://github.com/JuliaLang/Microbenchmarks.git) | ||
backup=(etc/julia/startup.jl) | ||
sha256sums=('a5f8c0ce08cf132bdd919ca0b5b3b2b66c89e0e5f7e7fb2a81ffa7f225e3db4c' | ||
'SKIP' | ||
'2cc294b63e601d50341979fb936826bdba59de2165a5929eae927e152652f367' | ||
'b533dd999f019258cbcae1563f18715f41e42e0786b681150cb2c28f8a0da963' | ||
'3c0c03eabb668e3242fcd3058c1011dfbb579cc1c5adc3ae1016531e711cc64e' | ||
'f69afd7db3fabe4b747afa2404e1202c1dcfe0f8c5fe5238e424eea737fa2a23' | ||
'0fd1a0c1fcbe7f583139ed3a4a87f77963f06876d69058fa3ffbedfaec609ee7' | ||
'02f0ae518dfd50c2b3abf95fa760de85298baf79d80c2f6f48ac182e58a736d7' | ||
'SKIP') | ||
validpgpkeys=('3673DF529D9049477F76B37566E3C7DC03D6E495') # Julia (Binary signing key) <[email protected]> | ||
sha256sums=('SKIP' | ||
'2c61b21c347900b52b26555a0c35d5c88fd23e55efc809a58aa6bc66da1fc506' | ||
'90e7f90053486bba26348cbc4f725958159ca5b6b1805124ccf050203dc2f468') | ||
|
||
prepare() { | ||
cd $pkgname-$pkgver | ||
|
||
# libunwind 1.6 compatibility | ||
patch -p1 -i ../julia-libunwind-1.6.patch | ||
# Ignore harmless test failure, needs investigation | ||
sed -e '/int.jl/d' -i test/cmdlineargs.jl | ||
# Revert test that depends on patched gmp | ||
patch -Rp1 -i ../c12e8515.patch | ||
# Harmless test failure, needs investigation | ||
sed -e '/int.jl/d' -i test/cmdlineargs.jl | ||
# libgit2 1.7 compatibility | ||
patch -p1 -i ../julia-libgit2-1.7.patch | ||
# Don't use libcholmod-cuda | ||
patch -p1 -i ../julia-libcholmod-cuda.patch | ||
# Don't hardcode library names | ||
patch -p1 -i ../julia-hardcoded-libs.patch | ||
# Fix warnings with suitesparse 7 | ||
cd stdlib/srccache | ||
_SAsha=279b363ca8d3129d4742903d37c8b11545fa08a2 | ||
tar -xzf SparseArrays-$_SAsha.tar.gz | ||
patch -d JuliaSparse-SparseArrays.jl-${_SAsha:0:7} -p1 < "$srcdir"/julia-suitesparse-7.patch | ||
rm SparseArrays-$_SAsha.tar.gz | ||
tar -czf SparseArrays-$_SAsha.tar.gz JuliaSparse-SparseArrays.jl-${_SAsha:0:7} | ||
md5sum SparseArrays-$_SAsha.tar.gz | cut -d ' ' -f 1 > ../../deps/checksums/SparseArrays-$_SAsha.tar.gz/md5 | ||
sha512sum SparseArrays-$_SAsha.tar.gz | cut -d ' ' -f 1 > ../../deps/checksums/SparseArrays-$_SAsha.tar.gz/sha512 | ||
|
||
mkdir -p ${srcdir}/${pkgname}-${pkgver}/pgo-lto | ||
} | ||
|
||
_make() { | ||
local make_options=( | ||
prefix=/usr | ||
bindir=/usr/bin | ||
sysconfdir=/etc | ||
libexecdir=/usr/lib | ||
#USE_BINARYBUILDER=0 | ||
USE_BINARYBUILDER=0 | ||
USE_SYSTEM_CSL=1 | ||
#USE_SYSTEM_LLVM=1 | ||
#USE_SYSTEM_LLD=1 | ||
USE_SYSTEM_LLVM=1 | ||
USE_SYSTEM_LLD=1 | ||
USE_SYSTEM_LIBUNWIND=1 | ||
USE_SYSTEM_PCRE=1 | ||
USE_SYSTEM_BLAS=1 | ||
|
@@ -83,129 +127,103 @@ _make() { | |
MARCH=x86-64 | ||
VERBOSE=1 | ||
JLDFLAGS="$LDFLAGS" | ||
#LLVM_CONFIG=llvm-config-15 | ||
LLVM_CONFIG=/usr/lib/llvm-julia/bin/llvm-config | ||
) | ||
|
||
make "${make_options[@]}" "$@" | ||
} | ||
|
||
prepare() { | ||
|
||
# create a var to the current dir | ||
CURRENT_DIR=$(pwd) | ||
cd $pkgname-$pkgver | ||
# Don't hardcode library names | ||
patch -p1 -i ../julia-hardcoded-libs.patch | ||
|
||
# go back to the current dir | ||
cd $CURRENT_DIR | ||
mkdir -p ${srcdir}/${pkgname}-${pkgver}/pgo-lto | ||
#cp ../pgoing.jl ${srcdir}/${pkgname}-${pkgver}/pgo-lto | ||
LD_LIBRARY_PATH="/usr/lib/mbedtls2" make "${make_options[@]}" "$@" | ||
} | ||
|
||
|
||
build() { | ||
cd "${srcdir}/${pkgname}-${pkgver}" | ||
sed -i '/\$(eval \$(call symlink_system_library,LIBSUITESPARSE,libcholmod_cuda))/d' base/Makefile | ||
sed -i '/\$(eval \$(call symlink_system_library,LIBSUITESPARSE,libspqr_cuda))/d' base/Makefile | ||
|
||
# Perform the build steps | ||
cd pgo-lto | ||
|
||
export PROFILE_FILE=$(pwd)/profile.profraw | ||
export COUNTERS_PER_SITE=6 | ||
export PROFILE_DIR=${PWD}/profiles | ||
mkdir -p $PROFILE_DIR | ||
|
||
cd .. | ||
export STAGE0=${srcdir}/${pkgname}-${pkgver}/pgo-lto/stage0.build | ||
export STAGE1=${srcdir}/${pkgname}-${pkgver}/pgo-lto/stage1.build | ||
export STAGE2=${srcdir}/${pkgname}-${pkgver}/pgo-lto/stage2.build | ||
mkdir -p $STAGE0 | ||
mkdir -p $STAGE1 | ||
mkdir -p $STAGE2 | ||
|
||
export STAGE0_TOOLS=${STAGE0}/usr/tools | ||
export LLVM_CXXFILT=${STAGE0_TOOLS}/llvm-cxxfilt | ||
export LLVM_PROFDATA=${STAGE0_TOOLS}/llvm-profdata | ||
export LLVM_OBJCOPY=${STAGE0_TOOLS}/llvm-objcopy | ||
|
||
make O=pgo-lto/stage0.build configure | ||
export USE_BINARYBUILDER_LLVM=1 | ||
make -C ${STAGE0}/deps install-clang install-llvm install-lld install-llvm-tools | ||
find -name 'libclang_rt.profile-*.a' -exec $LLVM_OBJCOPY --rename-section .ctors=.init_array --rename-section .dtors=.fini_array {} \; | ||
|
||
export CC=${STAGE0_TOOLS}/clang | ||
export CXX=${STAGE0_TOOLS}/clang++ | ||
export LD=${STAGE0_TOOLS}/ld.lld | ||
export AR=${STAGE0_TOOLS}/llvm-ar | ||
export RANLIB=${STAGE0_TOOLS}/llvm-ranlib | ||
|
||
export USE_BINARYBUILDER_LLVM=0 | ||
export PATH=${STAGE0_TOOLS}:$PATH | ||
_make O=pgo-lto/stage1.build configure | ||
_make O=pgo-lto/stage2.build configure | ||
|
||
cd pgo-lto | ||
|
||
# Set PGO flags | ||
export PGO_CFLAGS="-fprofile-generate=${PROFILE_DIR} -Xclang -mllvm -Xclang -vp-counters-per-site=${COUNTERS_PER_SITE}" | ||
export PGO_CXXFLAGS="-fprofile-generate=${PROFILE_DIR} -Xclang -mllvm -Xclang -vp-counters-per-site=${COUNTERS_PER_SITE}" | ||
export PGO_LDFLAGS="-fuse-ld=${LD} -flto=thin -fprofile-generate=${PROFILE_DIR}" | ||
|
||
# backup original flags | ||
export CFLAGS_ORIG=$CFLAGS | ||
export CXXFLAGS_ORIG=$CXXFLAGS | ||
export LDFLAGS_ORIG=$LDFLAGS | ||
|
||
# Append PGO flags | ||
export CFLAGS="${CFLAGS} ${PGO_CFLAGS}" | ||
export CXXFLAGS="${CXXFLAGS} ${PGO_CXXFLAGS}" | ||
export LDFLAGS="${LDFLAGS} ${PGO_LDFLAGS}" | ||
|
||
_make -C $STAGE1 | ||
|
||
# Clean profile dir | ||
rm -rf $PROFILE_DIR | ||
mkdir -p $PROFILE_DIR | ||
|
||
# Run stage 1 profiling | ||
git clone https://github.com/JuliaLang/Microbenchmarks.git | ||
cd Microbenchmarks | ||
../stage1.build/julia perf.jl | ||
cd .. | ||
|
||
# create PROFAW_FILES_LIST | ||
$LLVM_PROFDATA merge -output=${PROFILE_FILE} ${PROFILE_DIR}/*.profraw | ||
|
||
# Build stage 2 | ||
export PGO_CFLAGS="-fprofile-use=${PROFILE_FILE}" | ||
export PGO_CXXFLAGS="-fprofile-use=${PROFILE_FILE}" | ||
export PGO_LDFLAGS="-fuse-ld=${LD} -flto=thin -fprofile-use=${PROFILE_FILE} -Wl,--icf=safe" | ||
|
||
export CFLAGS="${CFLAGS_ORIG} ${PGO_CFLAGS}" | ||
export CXXFLAGS="${CXXFLAGS_ORIG} ${PGO_CXXFLAGS}" | ||
export LDFLAGS="${LDFLAGS_ORIG} ${PGO_LDFLAGS}" | ||
export PROFILE_FILE=$(pwd)/profile.profraw | ||
export ROOT_DIR=$(pwd) | ||
cd $pkgname-$pkgver | ||
export JULIA_BUILD_DIR=$(pwd) | ||
|
||
export STAGE1=${srcdir}/${pkgname}-${pkgver}/pgo-lto/stage1.build | ||
export STAGE2=${srcdir}/${pkgname}-${pkgver}/pgo-lto/stage2.build | ||
export CC=clang | ||
export CXX=clang++ | ||
|
||
rm -rf $STAGE1 | ||
rm -rf $STAGE2 | ||
mkdir -p $STAGE1 | ||
mkdir -p $STAGE2 | ||
|
||
# Set PGO flags | ||
export COUNTERS_PER_SITE=6 | ||
export PROFILE_DIR=${PWD}/profiles | ||
rm -rf $PROFILE_DIR | ||
mkdir -p $PROFILE_DIR | ||
|
||
export USE_BINARYBUILDER_LLVM=0 | ||
_make -C $STAGE2 | ||
export PGO_CFLAGS=" -fprofile-generate=${PROFILE_DIR} -mllvm -vp-counters-per-site=${COUNTERS_PER_SITE}" | ||
export PGO_CXXFLAGS=" -fprofile-generate=${PROFILE_DIR} -mllvm -vp-counters-per-site=${COUNTERS_PER_SITE}" | ||
|
||
# backup original flags | ||
export CFLAGS_ORIG=$CFLAGS | ||
export CXXFLAGS_ORIG=$CXXFLAGS | ||
|
||
# Append PGO flags | ||
export CFLAGS="${CFLAGS} ${PGO_CFLAGS}" | ||
export CXXFLAGS="${CXXFLAGS} ${PGO_CXXFLAGS}" | ||
|
||
_make O=$STAGE1 configure | ||
_make -C $STAGE1 | ||
|
||
# Clean profile dir | ||
rm -rf $PROFILE_DIR | ||
mkdir -p $PROFILE_DIR | ||
|
||
cd $ROOT_DIR/Microbenchmarks | ||
LLVM_PROFILE_FILE=${PROFILE_DIR}/_%m_%p.profraw $STAGE1/julia perf.jl | ||
LLVM_PROFILE_FILE=${PROFILE_DIR}/_%m_%p.profraw $STAGE1/julia perf.jl | ||
LLVM_PROFILE_FILE=${PROFILE_DIR}/_%m_%p.profraw $STAGE1/julia perf.jl | ||
cd .. | ||
|
||
# Build stage 2 | ||
export PGO_CFLAGS="-fprofile-use=${PROFILE_FILE}" | ||
export PGO_CXXFLAGS="-fprofile-use=${PROFILE_FILE}" | ||
|
||
llvm-profdata merge -output=${PROFILE_FILE} ${PROFILE_DIR}/*.profraw | ||
|
||
export CFLAGS="${CFLAGS_ORIG} ${PGO_CFLAGS}" | ||
export CXXFLAGS="${CXXFLAGS_ORIG} ${PGO_CXXFLAGS}" | ||
|
||
cd $JULIA_BUILD_DIR | ||
_make O=$STAGE2 configure | ||
_make -C $STAGE2 | ||
} | ||
|
||
check() { | ||
export STAGE2_DONE=${srcdir}/${pkgname}-${pkgver}/pgo-lto/stage2.build | ||
cd $STAGE2_DONE/test | ||
ln -s /etc/ssl/cert.pem ../usr/share/julia | ||
|
||
$STAGE2_DONE/julia --check-bounds=yes --startup-file=no ./runtests.jl \ | ||
--skip Downloads \ | ||
--skip Sockets \ | ||
--skip nghttp2_jll \ | ||
--skip GMP_jll \ | ||
--skip LibCURL \ | ||
--skip LibSSH2_jll \ | ||
--skip MbedTLS_jll \ | ||
--skip MPFR_jll \ | ||
--skip OpenBLAS_jll \ | ||
--skip SuiteSparse_jll \ | ||
--skip PCRE2_jll \ | ||
--skip LibGit2_jll \ | ||
--skip Zlib_jll | ||
find ../stdlib \( -name \*.cov -o -name \*.mem \) -delete | ||
rm -fr ../stdlib/Artifacts/test/artifacts | ||
} | ||
|
||
package() { | ||
|
||
cd $pkgname-$pkgver/pgo-lto/stage2.build | ||
export STAGE2_DONE=${srcdir}/${pkgname}-${pkgver}/pgo-lto/stage2.build | ||
cd $STAGE2_DONE | ||
_make DESTDIR="$pkgdir" install | ||
echo $PWD | ||
cd $pkgdir | ||
echo $PWD | ||
patch -p1 -i ../../julia-suitesparse-7.patch | ||
ln -sf /etc/ssl/cert.pem "$pkgdir"/usr/share/julia # Needed by some packages | ||
|
||
rm "$pkgdir"/usr/lib/julia/libccalltest.so.debug # Remove debug testing library | ||
} | ||
ln -sf /etc/ssl/cert.pem "$STAGE2_DONE"/usr/share/julia # Needed by some packages | ||
|
||
# vim:set ts=2 sw=2 et: | ||
sha256sums=('SKIP' | ||
'79a7a73cf9fe304e7ae2d21b961ab3bc5dfeb39a9cb79bef6c3447108ffb2949' | ||
'90e7f90053486bba26348cbc4f725958159ca5b6b1805124ccf050203dc2f468') | ||
rm -f "$STAGE2_DONE"/usr/lib/julia/libccalltest.so.debug # Remove debug testing library | ||
install -Dm644 ${srcdir}/${pkgname}-${pkgver}/LICENSE.md -t "$STAGE2_DONE"/usr/share/licenses/$pkgname | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
diff --git a/test/gmp.jl b/test/gmp.jl | ||
index 8f6be13c38054..6efc349ca2ba1 100644 | ||
--- a/test/gmp.jl | ||
+++ b/test/gmp.jl | ||
@@ -11,6 +11,11 @@ ee = typemax(Int64) | ||
@test BigInt <: Signed | ||
@test big(1) isa Signed | ||
|
||
+ if sizeof(Culong) >= 8 | ||
+ @test_throws OutOfMemoryError big(96608869069402268615522366320733234710)^16374500563449903721 | ||
+ @test_throws OutOfMemoryError 555555555555555555555555555555555555555555555555555^55555555555555555 | ||
+ end | ||
+ | ||
let x = big(1) | ||
@test signed(x) === x | ||
@test convert(Signed, x) === x |
Oops, something went wrong.