diff --git a/lang/julia/Makefile b/lang/julia/Makefile index 7f58a71dc31b..9ce33333abb9 100644 --- a/lang/julia/Makefile +++ b/lang/julia/Makefile @@ -1,150 +1,154 @@ PORTNAME= julia DISTVERSION= 1.9.4 -PORTREVISION= 2 +PORTREVISION= 3 DISTVERSIONSUFFIX= -full CATEGORIES= lang math MASTER_SITES= https://github.com/JuliaLang/${PORTNAME}/releases/download/v${DISTVERSION}/ MAINTAINER= ports@FreeBSD.org COMMENT= Implementation of Julia, a language for technical computing WWW= https://julialang.org/ LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE.md ONLY_FOR_ARCHS= amd64 ONLY_FOR_ARCHS_REASON= Has not been ported to this platform for freebsd MY_DEPENDS= 7zz:archivers/7-zip BUILD_DEPENDS= patchelf:sysutils/patchelf \ cmake:devel/cmake-core \ gfortran${_GCC_VER}:lang/gcc${_GCC_VER} \ ${MY_DEPENDS} LIB_DEPENDS= libcurl.so:ftp/curl \ libdSFMT.so:math/dsfmt \ libgit2.so:devel/libgit2 \ libgmp.so:math/gmp \ libmbedtls.so:security/mbedtls \ libmpfr.so:math/mpfr \ libpcre2-8.so:devel/pcre2 \ libssh2.so:security/libssh2 \ libutf8proc.so:textproc/utf8proc \ libnghttp2.so:www/libnghttp2 \ libunwind.so:devel/libunwind \ libopenlibm.so:math/openlibm RUN_DEPENDS= ${MY_DEPENDS} \ gfortran${_GCC_VER}:lang/gcc${_GCC_VER} BUILD_DEPENDS_amd64= ittapi>0:devel/ittapi BUILD_DEPENDS_i386= ittapi>0:devel/ittapi # Do not set USES=fortran to avoid extra-linkage -USES= gmake cpe python perl5 blaslapack:openblas +USES= blaslapack:openblas cpe elfctl gmake perl5 python _GCC_VER= ${GCC_DEFAULT:S/.//} CPE_VENDOR= julialang +ELF_FEATURES= +wxneeded:usr/bin/julia + USE_CXXSTD= c++14 USE_LDCONFIG= yes MAKE_ARGS+= NO_GIT=1 \ USE_BINARYBUILDER=0 \ prefix=${PREFIX} \ JCXXFLAGS="${CXXFLAGS}" \ USE_GPL_LIBS=0 \ ARCH=x86_64 \ JULIA_CPU_TARGET=generic \ USE_SYSTEM_CURL=1 \ USE_SYSTEM_DSFMT=1 \ USE_SYSTEM_GMP=1 \ USE_SYSTEM_OPENLIBM=1 \ USE_SYSTEM_LAPACK=1 \ USE_SYSTEM_LIBGIT2=1 \ USE_SYSTEM_LIBSSH2=1 \ USE_SYSTEM_MBEDTLS=1 \ USE_SYSTEM_MPFR=1 \ USE_SYSTEM_PATCHELF=1 \ USE_SYSTEM_PCRE=1 \ USE_SYSTEM_UTF8PROC=1 \ USE_SYSTEM_P7ZIP=1 \ USE_SYSTEM_BLAS=1 \ USE_SYSTEM_NGHTTP2=1 \ USE_SYSTEM_CSL=1 \ USE_SYSTEM_ZLIB=1 \ USE_SYSTEM_LIBUNWIND=1 ALL_TARGET= default INSTALL_TARGET= install TEST_TARGET= test CFLAGS+= -fpic BINARY_ALIAS= python3=${PYTHON_CMD} gfortran=gfortran${_GCC_VER} WRKSRC= ${WRKDIR}/julia-${DISTVERSION} PLIST_SUB= VERSION="${PORTVERSION:R}" PORTDOCS= html OPTIONS_DEFINE= DEBUG DOCS NATIVE OPTIONS_DEFAULT= DOCS OPTIONS_SUB= yes NATIVE_DESC= Build with native CPU JIT tuning NATIVE_MAKE_ARGS= JULIA_CPU_TARGET=native DEBUG_MAKE_ARGS= FORCE_ASSERTIONS=1 \ ALL_TARGET=all \ BUNDLE_DEBUG_LIBS=1 DOCS_VARS= INSTALL_TARGET+=install-docs .include .if ${ARCH} == amd64 || ${ARCH} == i386 MAKE_ARGS+= USE_SYSTEM_ITTAPI=1 .endif pre-configure: echo "override TAGGED_RELEASE_BANNER=\"FreeBSD port lang/${PORTNAME} build\"" >> ${WRKSRC}/Make.user # unset ARCH for auto-detection # Julia build script uses the name x86_86/x86, which are different from ports framework echo "ARCH=" >> ${WRKSRC}/Make.user echo "LIBBLAS= -L${LOCALBASE}/lib -lopenblas" >> ${WRKSRC}/Make.user echo "LIBBLASNAME=libopenblas" >> ${WRKSRC}/Make.user echo 'LIBLAPACK= $$(LIBBLAS)' >> ${WRKSRC}/Make.user echo 'LIBLAPACKNAME= $$(LIBBLASNAME)' >> ${WRKSRC}/Make.user ${CC} ${CFLAGS} -lopenblas ${LDFLAGS} -o ${WRKSRC}/check_openblas \ ${FILESDIR}/check_openblas.c ${WRKSRC}/check_openblas && ( \ echo "USE_BLAS64=1" >> ${WRKSRC}/Make.user \ ) || ( \ echo "USE_BLAS64=0" >> ${WRKSRC}/Make.user \ ) + echo 'LLVM_PATCH_VERSIONFIXES= $(FILESDIR)/llvm-patch-backport-version-fixes' \ + >> ${WRKSRC}/Make.user pre-install: ${CP} ${WRKSRC}/deps/srccache/cacert-2022-10-11.pem ${WRKSRC}/usr/share/julia/cert.pem post-install: # clean up for Pkg3.jl .for file in .codecov.yml .travis.yml appveyor.yml bors.toml .gitignore source-extracted *.orig ${FIND} ${STAGEDIR}${PREFIX}/share/julia/ -name "${file}" -delete .endfor .for dir in Statistics SuiteSparse ArgTools Pkg Downloads LibCURL NetworkOptions Tar ${RM} -fr ${STAGEDIR}${PREFIX}/share/julia/stdlib/v${PORTVERSION:R}/${dir}/.github/ .endfor ${RM} -rf ${STAGEDIR}${PREFIX}/share/julia/compiled post-install-DEBUG-off: ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/julia* ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libjulia.so* .for bin in libccalltest.so libllvmcalltest.so libjulia-internal.so* libblastrampoline.so libuv.so* libLLVM* sys.so libjulia-codegen.so* ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/julia/${bin} .endfor .for bin in lld dsymutil ${STRIP_CMD} ${STAGEDIR}${PREFIX}/libexec/julia/${bin} .endfor post-install-DOCS-off: ${RM} -r ${STAGEDIR}${PREFIX}/${INSTALLDIR}/share/doc .include diff --git a/lang/julia/files/patch-Make.inc b/lang/julia/files/patch-Make.inc index 0eec09c34495..d9c0231de3e5 100644 --- a/lang/julia/files/patch-Make.inc +++ b/lang/julia/files/patch-Make.inc @@ -1,140 +1,155 @@ ---- Make.inc.orig 2023-08-24 16:20:21 UTC +--- Make.inc.orig 2023-11-14 16:57:00 UTC +++ Make.inc @@ -268,7 +268,7 @@ docdir := $(datarootdir)/doc/julia libexecdir := $(prefix)/libexec datarootdir := $(prefix)/share docdir := $(datarootdir)/doc/julia -mandir := $(datarootdir)/man +mandir := $(prefix)/share/man man1dir := $(mandir)/man1 includedir := $(prefix)/include sysconfdir := $(prefix)/etc @@ -286,7 +286,7 @@ build_datarootdir := $(build_prefix)/share build_libdir := $(build_prefix)/lib build_libexecdir := $(build_prefix)/libexec build_datarootdir := $(build_prefix)/share -build_mandir := $(build_datarootdir)/man +build_mandir := $(build_prefix)/man build_man1dir := $(build_mandir)/man1 build_includedir := $(build_prefix)/include build_sysconfdir := $(build_prefix)/etc @@ -654,33 +654,6 @@ endif include $(BUILDROOT)/$(MAKE_USER_FNAME) endif -# A bit of a kludge to work around libraries linking to FreeBSD's outdated system libgcc_s -# Instead, let's link to the libgcc_s corresponding to the installation of gfortran -ifeq ($(OS),FreeBSD) -ifneq (,$(findstring gfortran,$(FC))) - -# First let's figure out what version of GCC we're dealing with -_GCCMAJOR := $(shell $(FC) -dumpversion 2>/dev/null | cut -d'.' -f1) -_GCCMINOR := $(shell $(FC) -dumpversion 2>/dev/null | cut -d'.' -f2) - -# The ports system uses major and minor for GCC < 5 (e.g. gcc49 for GCC 4.9), otherwise major only -ifeq ($(_GCCMAJOR),4) - _GCCVER := $(_GCCMAJOR)$(_GCCMINOR) -else - _GCCVER := $(_GCCMAJOR) -endif - -# Allow the user to specify this in Make.user -GCCPATH ?= $(LOCALBASE)/lib/gcc$(_GCCVER) - -# We're going to copy over the libraries we need from GCCPATH into build_libdir, then -# tell everyone to look for them there. At install time, the build_libdir added into -# the RPATH here is removed by patchelf. -LDFLAGS += -L$(build_libdir) -Wl,-rpath,$(build_libdir) - -endif # gfortran -endif # FreeBSD - ifneq ($(CC_BASE)$(CXX_BASE),$(shell echo $(CC) | cut -d' ' -f1)$(shell echo $(CXX) | cut -d' ' -f1)) $(error Forgot override directive on CC or CXX in Make.user? Cowardly refusing to build) endif -@@ -1295,14 +1268,8 @@ JLDFLAGS += -Wl,-Bdynamic +@@ -1278,7 +1251,7 @@ JLDFLAGS += -Wl,-Bdynamic + JCPPFLAGS += -DJULIA_HAS_IFUNC_SUPPORT=1 + endif + JLDFLAGS += -Wl,-Bdynamic +-OSLIBS += -Wl,--version-script=$(JULIAHOME)/src/julia.expmap ++OSLIBS = -Wl,--version-script=$(JULIAHOME)/src/julia.expmap + ifneq ($(SANITIZE),1) + JLDFLAGS += -Wl,-no-undefined + endif +@@ -1295,16 +1268,12 @@ JLDFLAGS += -Wl,-Bdynamic ifeq ($(OS), FreeBSD) JLDFLAGS += -Wl,-Bdynamic -OSLIBS += -lelf -lkvm -lrt -lpthread -latomic +OSLIBS += -lelf -lkvm -lrt -lpthread -# Tweak order of libgcc_s in DT_NEEDED, -# make it loaded first to -# prevent from linking to outdated system libs. -# See #21788 -OSLIBS += -lgcc_s - - OSLIBS += -Wl,--export-dynamic -Wl,--version-script=$(JULIAHOME)/src/julia.expmap \ - $(NO_WHOLE_ARCHIVE) +-OSLIBS += -Wl,--export-dynamic -Wl,--version-script=$(JULIAHOME)/src/julia.expmap \ +- $(NO_WHOLE_ARCHIVE) ++JLIBVERFLAGS = -Wl,--version-script=$(JULIAHOME)/src/julialib.expmap ++JCGVERFLAGS = -Wl,--version-script=$(JULIAHOME)/src/juliacg.expmap ++JEXEVERFLAGS = -Wl,--version-script=$(JULIAHOME)/src/flisp/juliaexe.expmap ++OSLIBS += -Wl,--export-dynamic $(NO_WHOLE_ARCHIVE) endif -@@ -1511,30 +1478,6 @@ LIBJULIACODEGEN_DEBUG_INSTALL_DEPLIB := $(call dep_lib + + ifeq ($(OS), Darwin) +@@ -1511,30 +1480,6 @@ LIBJULIACODEGEN_DEBUG_INSTALL_DEPLIB := $(call dep_lib LIBJULIACODEGEN_DEBUG_BUILD_DEPLIB := $(call dep_lib_path,$(build_libdir),$(build_shlibdir)/libjulia-codegen-debug.$(JL_MAJOR_SHLIB_EXT)) LIBJULIACODEGEN_DEBUG_INSTALL_DEPLIB := $(call dep_lib_path,$(libdir),$(private_shlibdir)/libjulia-codegen-debug.$(JL_MAJOR_SHLIB_EXT)) -ifeq ($(OS),WINNT) -ifeq ($(BINARY),32) -LIBGCC_NAME := libgcc_s_sjlj-1.$(SHLIB_EXT) -else -LIBGCC_NAME := libgcc_s_seh-1.$(SHLIB_EXT) -endif -endif -# On macOS, libgcc_s has soversion 1.1 always on aarch64 and only for GCC 12+ -# (-> libgfortran 5) on x86_64 -ifeq ($(OS),Darwin) -ifeq ($(ARCH),aarch64) -LIBGCC_NAME := libgcc_s.1.1.$(SHLIB_EXT) -else -ifeq ($(LIBGFORTRAN_VERSION),5) -LIBGCC_NAME := libgcc_s.1.1.$(SHLIB_EXT) -else -LIBGCC_NAME := libgcc_s.1.$(SHLIB_EXT) -endif -endif -endif -ifneq ($(findstring $(OS),Linux FreeBSD),) -LIBGCC_NAME := libgcc_s.$(SHLIB_EXT).1 -endif - # USE_SYSTEM_CSL causes it to get symlinked into build_private_shlibdir ifeq ($(USE_SYSTEM_CSL),1) LIBGCC_BUILD_DEPLIB := $(call dep_lib_path,$(build_libdir),$(build_private_shlibdir)/$(LIBGCC_NAME)) -@@ -1567,7 +1510,6 @@ LIBM_INSTALL_DEPLIB := $(call dep_lib_path,$(libdir),$ +@@ -1567,7 +1512,6 @@ LIBM_INSTALL_DEPLIB := $(call dep_lib_path,$(libdir),$ LIBM_INSTALL_DEPLIB := $(call dep_lib_path,$(libdir),$(private_shlibdir)/$(LIBMNAME).$(SHLIB_EXT)) # We list: -# * libgcc_s, because FreeBSD needs to load ours, not the system one. # * libopenlibm, because Windows has an untrustworthy libm, and we want to use ours more than theirs # * libstdc++, because while performing `libstdc++` probing we need to # know the path to the bundled `libstdc++` library. -@@ -1589,7 +1531,6 @@ LOADER_BUILD_DEP_LIBS = $(call build_deplibs, \ +@@ -1589,7 +1533,6 @@ LOADER_BUILD_DEP_LIBS = $(call build_deplibs, \ endef LOADER_BUILD_DEP_LIBS = $(call build_deplibs, \ - $(LIBGCC_BUILD_DEPLIB) \ $(LIBM_BUILD_DEPLIB) \ @$(LIBSTDCXX_BUILD_DEPLIB) \ @$(LIBJULIAINTERNAL_BUILD_DEPLIB) \ -@@ -1597,7 +1538,6 @@ LOADER_DEBUG_BUILD_DEP_LIBS = $(call build_deplibs, \ +@@ -1597,7 +1540,6 @@ LOADER_DEBUG_BUILD_DEP_LIBS = $(call build_deplibs, \ ) LOADER_DEBUG_BUILD_DEP_LIBS = $(call build_deplibs, \ - $(LIBGCC_BUILD_DEPLIB) \ $(LIBM_BUILD_DEPLIB) \ @$(LIBSTDCXX_BUILD_DEPLIB) \ @$(LIBJULIAINTERNAL_DEBUG_BUILD_DEPLIB) \ -@@ -1605,14 +1545,12 @@ LOADER_INSTALL_DEP_LIBS = $(call build_deplibs, \ +@@ -1605,14 +1547,12 @@ LOADER_INSTALL_DEP_LIBS = $(call build_deplibs, \ ) LOADER_INSTALL_DEP_LIBS = $(call build_deplibs, \ - $(LIBGCC_INSTALL_DEPLIB) \ $(LIBM_INSTALL_DEPLIB) \ @$(LIBSTDCXX_INSTALL_DEPLIB) \ @$(LIBJULIAINTERNAL_INSTALL_DEPLIB) \ @$(LIBJULIACODEGEN_INSTALL_DEPLIB) \ ) LOADER_DEBUG_INSTALL_DEP_LIBS = $(call build_deplibs, \ - $(LIBGCC_INSTALL_DEPLIB) \ $(LIBM_INSTALL_DEPLIB) \ @$(LIBSTDCXX_INSTALL_DEPLIB) \ @$(LIBJULIAINTERNAL_DEBUG_INSTALL_DEPLIB) \