--- b/lang/Makefile +++ b/lang/Makefile @@ -162,6 +162,7 @@ SUBDIR += julia07 SUBDIR += julia10 SUBDIR += julia11 + SUBDIR += julia12 SUBDIR += jython SUBDIR += kawa SUBDIR += kf5-kross --- b/lang/julia/Makefile +++ b/lang/julia/Makefile @@ -2,8 +2,7 @@ # $FreeBSD$ PORTNAME= julia -PORTVERSION= 1.0.3 -PORTREVISION= 3 +PORTVERSION= 1.0.4 CATEGORIES= lang math MASTER_SITES= # empty DISTFILES= # empty @@ -23,30 +22,23 @@ PLIST_FILES= bin/julia \ man/man1/julia.1.gz\ etc/julia -OPTIONS_DEFINE= V06 V07 V10 V11 OPTIONS_DEFAULT= V${JULIA_DEFAULT:S/.//} D${JULIA_DEFAULT:S/.//} OPTIONS_SINGLE= DEFAULTVER -OPTIONS_SINGLE_DEFAULTVER= D06 D07 D10 D11 # D stands for default -V06_DESC= Install v${:!${MAKE} -C ${PORTSDIR}/lang/julia06 -v PORTVERSION!} release -V07_DESC= Install v${:!${MAKE} -C ${PORTSDIR}/lang/julia07 -v PORTVERSION!} release -V10_DESC= Install v${:!${MAKE} -C ${PORTSDIR}/lang/julia10 -v PORTVERSION!} release \ - (1.x long-term support branch) -V11_DESC= Install v${:!${MAKE} -C ${PORTSDIR}/lang/julia11 -v PORTVERSION!} release +.for v in 06 07 10 11 12 +OPTIONS_DEFINE+= V${v} +OPTIONS_SINGLE_DEFAULTVER+= D${v} # D stands for default -V06_RUN_DEPENDS= julia06:lang/julia06 -V07_RUN_DEPENDS= julia07:lang/julia07 -V10_RUN_DEPENDS= julia10:lang/julia10 -V11_RUN_DEPENDS= julia11:lang/julia11 +V${v}_DESC= Install v${:!${MAKE} -C ${PORTSDIR}/lang/julia${v} -v PORTVERSION!} release +V${v}_RUN_DEPENDS= julia${v}:lang/julia${v} + +D${v}_IMPLIES= V${v} +.endfor DEFAULTVER_DESC= Select default version D06_DESC= Please select a version for setting up symbolic links of D07_DESC= bin/julia, manpage and etc/startup.jl. -D06_IMPLIES= V06 -D07_IMPLIES= V07 -D10_IMPLIES= V10 -D11_IMPLIES= V11 .include --- b/lang/julia06/Makefile +++ b/lang/julia06/Makefile @@ -33,6 +33,8 @@ BUILD_DEPENDS= patchelf:sysutils/patchelf \ USES= gmake compiler:c++11-lib fortran python:2.7,build perl5 USE_LDCONFIG= yes +DESCR= ${.CURDIR}/../julia/pkg-descr + WRKSRC= ${WRKDIR}/${PORTNAME} INSTALLDIR= julia/${PORTNAME}${PKGNAMESUFFIX} MANDIRS+= ${PREFIX}/${INSTALLDIR}/man @@ -143,7 +145,7 @@ EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-ui_Makefile .endif post-extract: - ${GMAKE} -C ${WRKSRC}/deps extract + ${MAKE_CMD} -C ${WRKSRC}/deps extract post-patch: echo "override TAGGED_RELEASE_BANNER=\"FreeBSD port lang/${PORTNAME}${PKGNAMESUFFIX} build\"" >> ${WRKSRC}/Make.user --- a/lang/julia06/pkg-descr +++ /dev/null @@ -1,9 +0,0 @@ -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. It provides a sophisticated compiler, distributed -parallel execution, numerical accuracy, and an extensive mathematical function -library. The library, largely written in Julia itself, also integrates mature, -best-of-breed C and Fortran libraries for linear algebra, random number -generation, signal processing, and string processing. - -WWW: https://julialang.org/ --- b/lang/julia07/Makefile +++ b/lang/julia07/Makefile @@ -33,6 +33,8 @@ BUILD_DEPENDS= patchelf:sysutils/patchelf \ USES= gmake compiler:c++11-lib fortran python:2.7,build perl5 USE_LDCONFIG= yes +DESCR= ${.CURDIR}/../julia/pkg-descr + WRKSRC= ${WRKDIR}/${PORTNAME} INSTALLDIR= julia/${PORTNAME}${PKGNAMESUFFIX} MANDIRS+= ${PREFIX}/${INSTALLDIR}/man @@ -132,7 +134,7 @@ EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-ui_Makefile .endif post-extract: - ${GMAKE} -C ${WRKSRC}/deps extract + ${MAKE_CMD} -C ${WRKSRC}/deps extract post-patch: echo "override TAGGED_RELEASE_BANNER=\"FreeBSD port lang/${PORTNAME}${PKGNAMESUFFIX} build\"" >> ${WRKSRC}/Make.user --- a/lang/julia07/pkg-descr +++ /dev/null @@ -1,9 +0,0 @@ -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. It provides a sophisticated compiler, distributed -parallel execution, numerical accuracy, and an extensive mathematical function -library. The library, largely written in Julia itself, also integrates mature, -best-of-breed C and Fortran libraries for linear algebra, random number -generation, signal processing, and string processing. - -WWW: https://julialang.org/ --- /dev/null +++ b/lang/julia12/Makefile @@ -0,0 +1,186 @@ +# Created by: Iblis Lin +# $FreeBSD$ + +PORTNAME= julia +PORTVERSION= 1.2.0 +DISTVERSIONSUFFIX= -full +CATEGORIES= lang math +MASTER_SITES= https://github.com/JuliaLang/julia/releases/download/v${PORTVERSION}/ +PKGNAMESUFFIX= 12 + +MAINTAINER= iblis@hs.ntnu.edu.tw +COMMENT= Julia Language: A fresh approach to technical computing + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE.md + +ONLY_FOR_ARCHS= amd64 i386 + +LIB_DEPENDS= libcurl.so:ftp/curl \ + 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 +EXTRACT_DEPENDS=gmake:devel/gmake +BUILD_DEPENDS= patchelf:sysutils/patchelf \ + pcre2-config:devel/pcre2 \ + cmake:devel/cmake + +USES= gmake compiler:c++11-lib fortran python:2.7,build perl5 \ + shebangfix +USE_LDCONFIG= yes + +DESCR= ${.CURDIR}/../julia/pkg-descr + +SHEBANG_GLOB= *.sh + +WRKSRC= ${WRKDIR}/julia-${PORTVERSION} +INSTALLDIR= julia/${PORTNAME}${PKGNAMESUFFIX} +MANDIRS+= ${PREFIX}/${INSTALLDIR}/man + +ALL_TARGET= default +INSTALL_TARGET= install +TEST_TARGET= test + +PLIST_SUB= VERSION="${PORTVERSION:R}" \ + JULIA="${INSTALLDIR}" + +CXXFLAGS+= -stdlib=libc++ -std=c++11 +MAKE_ARGS+= prefix=${PREFIX}/${INSTALLDIR} \ + JCXXFLAGS="${CXXFLAGS}" \ + FORCE_ASSERTIONS=${FORCE_ASSERTIONS} \ + USE_GPL_LIBS=${USE_GPL_LIBS} \ + USE_SYSTEM_CURL=1 \ + USE_SYSTEM_GMP=1 \ + USE_SYSTEM_LAPACK=1 \ + USE_SYSTEM_LIBGIT2=1 \ + USE_SYSTEM_LIBSSH2=1 \ + USE_SYSTEM_LIBUV=0 \ + USE_SYSTEM_MBEDTLS=1 \ + USE_SYSTEM_MPFR=1 \ + USE_SYSTEM_PATCHELF=1 \ + USE_SYSTEM_PCRE=1 \ + USE_SYSTEM_UTF8PROC=1 \ + NO_GIT=1 + +OPTIONS_DEFINE= DEBUG DOCS GPL_LIBS DESKTOP NATIVE +OPTIONS_DEFAULT= OPENLIBM +OPTIONS_GROUP= PRIVATE +OPTIONS_GROUP_PRIVATE= OPENBLAS +OPTIONS_SINGLE= LIBM +OPTIONS_SINGLE_LIBM= SYSLIBM OPENLIBM +OPTIONS_SUB= yes + +PRIVATE_DESC= Build self-shipped private depends +LIBM_DESC= Math library implementation + +DEBUG_VARS= FORCE_ASSERTIONS=1 \ + ALL_TARGET=all +DEBUG_MAKE_ARGS= BUNDLE_DEBUG_LIBS=1 + +DOCSDIR= ${PREFIX}/share/doc/${PORTNAME}${PKGNAMESUFFIX} +PORTDOCS= html +DOCS_VARS= INSTALL_TARGET+=install-docs + +GPL_LIBS_DESC= Build with GPL lib: SUITESPARSE +GPL_LIBS_MAKE_ARGS= USE_SYSTEM_SUITESPARSE=0 +GPL_LIBS_VARS= USE_GPL_LIBS=1 + +DESKTOP_DESC= Install icon, .desktop and appdata files +DESKTOP_VARS= INSTALL_TARGET+=install-desktop \ + INSTALLS_ICONS=yes + +SYSLIBM_DESC= Build with system libm +SYSLIBM_MAKE_ARGS= USE_SYSTEM_LIBM=1 + +OPENLIBM_DESC= Build with OpenLibm (math/openlibm) +OPENLIBM_MAKE_ARGS= USE_SYSTEM_OPENLIBM=1 +OPENLIBM_LIB_DEPENDS= libopenlibm.so:math/openlibm + +OPENBLAS_DESC= Private OpenBLAS v0.3.5\ + (ports tree: v${:!${MAKE} -C ${PORTSDIR}/math/openblas -V PORTVERSION!}) +OPENBLAS_MAKE_ARGS= USE_SYSTEM_BLAS=0 OPENBLAS_DYNAMIC_ARCH=1 +OPENBLAS_MAKE_ARGS_OFF= USE_SYSTEM_BLAS=1 +OPENBLAS_LIB_DEPENDS_OFF= libopenblasp.so:math/openblas + +.include + +NATIVE_DESC= Build with native CPU JIT tuning +.if ${PORT_OPTIONS:MNATIVE} +MAKE_ARGS+= JULIA_CPU_TARGET=native +.else +.if ${ARCH} == "amd64" +MAKE_ARGS+= JULIA_CPU_TARGET=x86-64 +.elif ${ARCH} == "i386" +MAKE_ARGS+= JULIA_CPU_TARGET=pentium4 +.else +MAKE_ARGS+= JULIA_CPU_TARGET=generic +.endif +.endif # .if ${PORT_OPTIONS:MNATIVE} + +# OPENBLAS plist +.if ${PORT_OPTIONS:MOPENBLAS} +.if ${ARCH} == "amd64" +PLIST_SUB+= OPENBLAS64="64_" +.else +PLIST_SUB+= OPENBLAS64="" +.endif +.endif # .if ${PORT_OPTIONS:MOPENBLAS} + +.if ${ARCH} == "i386" +EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-ui_Makefile +.endif + +post-extract: + ${MAKE_CMD} -C ${WRKSRC}/deps extract + ${MAKE_CMD} -C ${WRKSRC}/stdlib install + +post-patch: + echo "override TAGGED_RELEASE_BANNER=\"FreeBSD port lang/${PORTNAME}${PKGNAMESUFFIX} 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 + +post-patch-OPENBLAS-on: + ${CP} ${FILESDIR}/extra-patch-openblas-fix-arch.patch ${WRKSRC}/deps/patches/openblas-fix-arch.patch + +post-patch-OPENBLAS-off: + echo "LIBBLAS= -lopenblasp -L${LOCALBASE}/lib" >> ${WRKSRC}/Make.user + echo "LIBBLASNAME=libopenblasp" >> ${WRKSRC}/Make.user + echo 'LIBLAPACK= $$(LIBBLAS)' >> ${WRKSRC}/Make.user + echo 'LIBLAPACKNAME= $$(LIBBLASNAME)' >> ${WRKSRC}/Make.user + +post-configure-OPENBLAS-off: + ${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 \ + ) + +post-install: + ${RLN} ${STAGEDIR}${PREFIX}/${INSTALLDIR}/bin/julia ${STAGEDIR}${PREFIX}/bin/${PORTNAME}${PKGNAMESUFFIX} + ${RLN} ${STAGEDIR}${PREFIX}/${INSTALLDIR}/man/man1/julia.1 ${STAGEDIR}${PREFIX}/man/man1/${PORTNAME}${PKGNAMESUFFIX}.1 + + # clean up for Pkg3.jl +.for file in .codecov.yml .travis.yml appveyor.yml bors.toml .gitignore source-extracted + ${RM} ${STAGEDIR}${PREFIX}/${INSTALLDIR}/share/julia/stdlib/v${PORTVERSION:R}/Pkg/${file} + ${RM} ${STAGEDIR}${PREFIX}/${INSTALLDIR}/share/julia/stdlib/v${PORTVERSION:R}/Pkg/ext/TOML/${file} +.endfor + +post-install-DEBUG-on: + ${RLN} ${STAGEDIR}${PREFIX}/${INSTALLDIR}/bin/julia-debug ${STAGEDIR}${PREFIX}/bin/${PORTNAME}${PKGNAMESUFFIX}-debug + +post-install-DOCS-on: + ${MV} ${STAGEDIR}${PREFIX}/${INSTALLDIR}/share/doc/julia ${STAGEDIR}${DOCSDIR} + ${RMDIR} ${STAGEDIR}${PREFIX}/${INSTALLDIR}/share/doc + +post-install-DOCS-off: + # remove empty dir + ${RM} -r ${STAGEDIR}${PREFIX}/${INSTALLDIR}/share/doc + +.include --- /dev/null +++ b/lang/julia12/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1566261792 +SHA256 (julia-1.2.0-full.tar.gz) = 2419b268fc5c3666dd9aeb554815fe7cf9e0e7265bc9b94a43957c31a68d9184 +SIZE (julia-1.2.0-full.tar.gz) = 123450012 --- /dev/null +++ b/lang/julia12/files/check_openblas.c @@ -0,0 +1,10 @@ +#include + +char* openblas_get_config(void); + +int main() +{ + if (strstr(openblas_get_config(), "USE64BITINT") == NULL) + return 1; + return 0; +} --- /dev/null +++ b/lang/julia12/files/extra-patch-ui_Makefile @@ -0,0 +1,11 @@ +--- ui/Makefile.orig 2016-09-20 02:54:22 UTC ++++ ui/Makefile +@@ -14,7 +14,7 @@ SRCS := repl + HEADERS := $(addprefix $(JULIAHOME)/src/,julia.h julia_threads.h julia_internal.h options.h) \ + $(BUILDDIR)/../src/julia_version.h $(wildcard $(JULIAHOME)/src/support/*.h) $(LIBUV_INC)/uv.h + +-FLAGS := -I$(BUILDROOT)/src -I$(JULIAHOME)/src -I$(JULIAHOME)/src/support -I$(build_includedir) ++FLAGS := -I$(BUILDROOT)/src -I$(JULIAHOME)/src -I$(JULIAHOME)/src/support -I$(build_includedir) -latomic + ifneq ($(USEMSVC), 1) + FLAGS += -Wall -Wno-strict-aliasing -fno-omit-frame-pointer -Wc++-compat + endif --- /dev/null +++ b/lang/julia12/files/patch-Make.inc @@ -0,0 +1,70 @@ +--- Make.inc.orig 2019-08-20 00:05:52 UTC ++++ Make.inc +@@ -136,12 +136,7 @@ endif + # disable automatic Makefile rules + .SUFFIXES: + +-# find out if git repository is available +-ifeq ($(shell [ -e $(JULIAHOME)/.git ] && echo true || echo "Warning: git information unavailable; versioning information limited" >&2), true) +-NO_GIT := 0 +-else + NO_GIT := 1 +-endif + + # Julia's Semantic Versioning system labels the three decimal places in a version number as + # the major, minor and patch versions. Typically the major version would be incremented +@@ -191,7 +186,7 @@ libdir := $(prefix)/lib + libexecdir := $(prefix)/libexec + datarootdir := $(prefix)/share + docdir := $(datarootdir)/doc/julia +-mandir := $(datarootdir)/man ++mandir := $(prefix)/man + man1dir := $(mandir)/man1 + includedir := $(prefix)/include + sysconfdir := $(prefix)/etc +@@ -204,7 +199,7 @@ build_depsbindir := $(build_prefix)/tools + 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 +@@ -359,7 +354,7 @@ endif + ifeq ($(USEIFC), 1) + FC := ifort + else +-FC := $(CROSS_COMPILE)gfortran ++FC ?= $(CROSS_COMPILE)gfortran + endif + + STDLIBCPP_FLAG := +@@ -412,8 +407,8 @@ SHIPFLAGS := -O3 -ggdb2 -falign-functions + endif + + ifeq ($(USECLANG),1) +-CC := $(CROSS_COMPILE)clang +-CXX := $(CROSS_COMPILE)clang++ ++CC ?= $(CROSS_COMPILE)clang ++CXX ?= $(CROSS_COMPILE)clang++ + JCFLAGS := -pipe $(fPIC) -fno-strict-aliasing -D_FILE_OFFSET_BITS=64 + # AArch64 needs this flag to generate the .eh_frame used by libunwind + JCPPFLAGS := -fasynchronous-unwind-tables +@@ -928,16 +923,7 @@ else + UTF8PROC_INC := $(build_includedir) + endif + +-# BinaryBuilder options. We default to "on" for all the projects listed in BB_PROJECTS, +-# but only if contrib/normalize_triplet.py works for our requested triplet. +-ifeq ($(shell python $(JULIAHOME)/contrib/normalize_triplet.py $(or $(XC_HOST),$(XC_HOST),$(BUILD_MACHINE)) >/dev/null 2>/dev/null; echo $$?),0) +-USE_BINARYBUILDER := 1 +-else +-ifneq ($(shell python $(JULIAHOME)/contrib/normalize_triplet.py x86_64-linux-gnu),x86_64-linux-gnu) +-$(warning python normalize_triplet.py appears to be non-functional, so BinaryBuilder disabled) +-endif + USE_BINARYBUILDER := 0 +-endif + + # GMP and MPFR have serious performance regressions for now + USE_BINARYBUILDER_GMP ?= 0 --- /dev/null +++ b/lang/julia12/files/patch-Makefile @@ -0,0 +1,121 @@ +--- Makefile.orig 2019-08-20 00:05:52 UTC ++++ Makefile +@@ -191,24 +191,6 @@ endif + endif + endif + +-# On FreeBSD, /lib/libgcc_s.so.1 is incompatible with Fortran; to use Fortran on FreeBSD, +-# we need to link to the libgcc_s that ships with the same GCC version used by libgfortran. +-# To work around this, we copy the GCC libraries we need, namely libgfortran, libgcc_s, +-# and libquadmath, into our build library directory, $(build_libdir). We also add them to +-# JL_PRIVATE_LIBS-0 so that they know where they need to live at install time. +-ifeq ($(OS),FreeBSD) +-define std_so +-julia-deps: | $$(build_libdir)/$(1).so +-$$(build_libdir)/$(1).so: | $$(build_libdir) +- $$(INSTALL_M) $$(GCCPATH)/$(1).so* $$(build_libdir) +-JL_PRIVATE_LIBS-0 += $(1) +-endef +- +-$(eval $(call std_so,libgfortran)) +-$(eval $(call std_so,libgcc_s)) +-$(eval $(call std_so,libquadmath)) +-endif # FreeBSD +- + ifeq ($(OS),WINNT) + # find the standard .dll folders + ifeq ($(XC_HOST),) +@@ -269,7 +251,7 @@ JL_PRIVATE_LIBS-0 += libgfortran libgcc_s libquadmath + endif + + +-install: $(build_depsbindir)/stringreplace $(BUILDROOT)/doc/_build/html/en/index.html ++install: $(build_depsbindir)/stringreplace + ifeq ($(BUNDLE_DEBUG_LIBS),1) + @$(MAKE) $(QUIET_MAKE) all + else +@@ -317,10 +299,6 @@ endif + fi \ + done \ + done +- for suffix in $(JL_PRIVATE_LIBS-1) ; do \ +- lib=$(build_private_libdir)/$${suffix}.$(SHLIB_EXT); \ +- $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) ; \ +- done + endif + + # Copy public headers +@@ -333,8 +311,6 @@ endif + + # Copy in all .jl sources as well + cp -R -L $(build_datarootdir)/julia $(DESTDIR)$(datarootdir)/ +- # Copy documentation +- cp -R -L $(BUILDROOT)/doc/_build/html $(DESTDIR)$(docdir)/ + # Remove various files which should not be installed + -rm -f $(DESTDIR)$(datarootdir)/julia/base/version_git.sh + -rm -f $(DESTDIR)$(datarootdir)/julia/test/Makefile +@@ -344,16 +320,6 @@ endif + -rm -f $(DESTDIR)$(datarootdir)/julia/stdlib/$(VERSDIR)/*/build-checked + # Copy in beautiful new man page + $(INSTALL_F) $(build_man1dir)/julia.1 $(DESTDIR)$(man1dir)/ +- # Copy icon and .desktop file +- mkdir -p $(DESTDIR)$(datarootdir)/icons/hicolor/scalable/apps/ +- $(INSTALL_F) $(JULIAHOME)/contrib/julia.svg $(DESTDIR)$(datarootdir)/icons/hicolor/scalable/apps/ +- -touch -c $(DESTDIR)$(datarootdir)/icons/hicolor/ +- -gtk-update-icon-cache --ignore-theme-index $(DESTDIR)$(datarootdir)/icons/hicolor/ +- mkdir -p $(DESTDIR)$(datarootdir)/applications/ +- $(INSTALL_F) $(JULIAHOME)/contrib/julia.desktop $(DESTDIR)$(datarootdir)/applications/ +- # Install appdata file +- mkdir -p $(DESTDIR)$(datarootdir)/appdata/ +- $(INSTALL_F) $(JULIAHOME)/contrib/julia.appdata.xml $(DESTDIR)$(datarootdir)/appdata/ + + # Update RPATH entries and JL_SYSTEM_IMAGE_PATH if $(private_libdir_rel) != $(build_private_libdir_rel) + ifneq ($(private_libdir_rel),$(build_private_libdir_rel)) +@@ -364,7 +330,7 @@ ifeq ($(OS), Darwin) + done + else ifneq (,$(findstring $(OS),Linux FreeBSD)) + for j in $(JL_TARGETS) ; do \ +- patchelf --set-rpath '$$ORIGIN/$(private_libdir_rel):$$ORIGIN/$(libdir_rel)' $(DESTDIR)$(bindir)/$$j; \ ++ patchelf --set-rpath '$(GCCPATH):$$ORIGIN/$(private_libdir_rel):$$ORIGIN/$(libdir_rel)' $(DESTDIR)$(bindir)/$$j; \ + done + endif + +@@ -375,22 +341,24 @@ ifeq ($(BUNDLE_DEBUG_LIBS),1) + endif + + endif +- # On FreeBSD, remove the build's libdir from each library's RPATH +-ifeq ($(OS),FreeBSD) +- $(JULIAHOME)/contrib/fixup-rpath.sh $(build_depsbindir)/patchelf $(DESTDIR)$(libdir) $(build_libdir) +- $(JULIAHOME)/contrib/fixup-rpath.sh $(build_depsbindir)/patchelf $(DESTDIR)$(private_libdir) $(build_libdir) +- $(JULIAHOME)/contrib/fixup-rpath.sh $(build_depsbindir)/patchelf $(DESTDIR)$(bindir) $(build_libdir) +- # Set libgfortran's RPATH to ORIGIN instead of GCCPATH. It's only libgfortran that +- # needs to be fixed here, as libgcc_s and libquadmath don't have RPATHs set. If we +- # don't set libgfortran's RPATH, it won't be able to find its friends on systems +- # that don't have the exact GCC port installed used for the build. +- for lib in $(DESTDIR)$(private_libdir)/libgfortran*$(SHLIB_EXT)*; do \ +- $(build_depsbindir)/patchelf --set-rpath '$$ORIGIN' $$lib; \ +- done +-endif +- + mkdir -p $(DESTDIR)$(sysconfdir) + cp -R $(build_sysconfdir)/julia $(DESTDIR)$(sysconfdir)/ ++ ++install-docs: ++ # Copy documentation ++ cp -R -L $(BUILDROOT)/doc/_build/html $(DESTDIR)$(docdir)/ ++ ++install-desktop: ++ # Copy icon and .desktop file ++ mkdir -p $(DESTDIR)$(datarootdir)/icons/hicolor/scalable/apps/ ++ $(INSTALL_F) $(JULIAHOME)/contrib/julia.svg $(DESTDIR)$(datarootdir)/icons/hicolor/scalable/apps/ ++ -touch -c $(DESTDIR)$(datarootdir)/icons/hicolor/ ++ -gtk-update-icon-cache --ignore-theme-index $(DESTDIR)$(datarootdir)/icons/hicolor/ ++ mkdir -p $(DESTDIR)$(datarootdir)/applications/ ++ $(INSTALL_F) $(JULIAHOME)/contrib/julia.desktop $(DESTDIR)$(datarootdir)/applications/ ++ # Install appdata file ++ mkdir -p $(DESTDIR)$(datarootdir)/appdata/ ++ $(INSTALL_F) $(JULIAHOME)/contrib/julia.appdata.xml $(DESTDIR)$(datarootdir)/appdata/ + + distclean: + -rm -fr $(BUILDROOT)/julia-*.tar.gz $(BUILDROOT)/julia*.exe $(BUILDROOT)/julia-*.7z $(BUILDROOT)/julia-$(JULIA_COMMIT) --- /dev/null +++ b/lang/julia12/files/patch-base_Makefile @@ -0,0 +1,11 @@ +--- base/Makefile.orig 2018-09-20 04:08:53 UTC ++++ base/Makefile +@@ -109,7 +109,7 @@ ifneq ($(OS), WINNT) + # put a symlink in the private libdir. + # System package managers may want to install these links manually, + # but if not, this will try to create the proper symlink to the right minor version. +-all: symlink_system_libraries ++all: + SYMLINK_SYSTEM_LIBRARIES := + + # if it's a symlink, pick up the symlink target instead, for one level of indirection --- /dev/null +++ b/lang/julia12/files/patch-src_Makefile @@ -0,0 +1,20 @@ +--- src/Makefile.orig 2019-08-20 00:05:52 UTC ++++ src/Makefile +@@ -278,7 +278,7 @@ else + endif + + $(build_shlibdir)/libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT): $(SRCDIR)/julia.expmap $(DOBJS) $(BUILDDIR)/flisp/libflisp-debug.a $(BUILDDIR)/support/libsupport-debug.a $(LIBUV) +- @$(call PRINT_LINK, $(CXXLD) $(JCXXFLAGS) $(CXXLDFLAGS) $(DEBUGFLAGS) $(DOBJS) $(RPATH_LIB) -o $@ $(JLDFLAGS) $(JLIBLDFLAGS) $(DEBUG_LIBS) $(SONAME_DEBUG)) ++ @$(call PRINT_LINK, $(CXXLD) $(JCXXFLAGS) $(CXXLDFLAGS) $(DEBUGFLAGS) $(DOBJS) $(RPATH_LIB) -o $@ $(JLDFLAGS) $(JLIBLDFLAGS) $(DEBUG_LIBS) $(SONAME_DEBUG)) -lgcc_s + $(INSTALL_NAME_CMD)libjulia-debug.$(SHLIB_EXT) $@ + ifneq ($(OS), WINNT) + @ln -sf libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT) $(build_shlibdir)/libjulia-debug.$(JL_MAJOR_SHLIB_EXT) +@@ -293,7 +293,7 @@ $(BUILDDIR)/libjulia-debug.a: $(SRCDIR)/julia.expmap $ + libjulia-debug: $(build_shlibdir)/libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT) $(PUBLIC_HEADER_TARGETS) + + $(build_shlibdir)/libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT): $(SRCDIR)/julia.expmap $(OBJS) $(BUILDDIR)/flisp/libflisp.a $(BUILDDIR)/support/libsupport.a $(LIBUV) +- @$(call PRINT_LINK, $(CXXLD) $(JCXXFLAGS) $(CXXLDFLAGS) $(SHIPFLAGS) $(OBJS) $(RPATH_LIB) -o $@ $(JLDFLAGS) $(JLIBLDFLAGS) $(RELEASE_LIBS) $(SONAME)) ++ @$(call PRINT_LINK, $(CXXLD) $(JCXXFLAGS) $(CXXLDFLAGS) $(SHIPFLAGS) $(OBJS) $(RPATH_LIB) -o $@ $(JLDFLAGS) $(JLIBLDFLAGS) $(RELEASE_LIBS) $(SONAME)) -lgcc_s + $(INSTALL_NAME_CMD)libjulia.$(SHLIB_EXT) $@ + ifneq ($(OS), WINNT) + @ln -sf libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT) $(build_shlibdir)/libjulia.$(JL_MAJOR_SHLIB_EXT) --- /dev/null +++ b/lang/julia12/pkg-message @@ -0,0 +1,9 @@ +[ +{ type: install + message: <