[Pkg-julia-devel] Bug#802583: julia: please build everywhere
Graham Inggs
ginggs at debian.org
Wed Oct 21 12:08:56 UTC 2015
Source: julia
Version: 0.3.11-1
Severity: wishlist
Tags: patch
Hi Maintainer
Please consider uploading to experimental a version of Julia that
enables building on all architectures.
This will be useful for testing the packaging changes that will be
needed for the 0.4.0 release, but I think this can be useful now with
a version 0.3.11 in experimental.
The attached patch contains changes I have made to debian/control and
debian/rules, as well as a minor change to
debian/patches/require-sse2-on-i386.patch.
I will follow up this bug report with a series of cherry-picked
patches from upstream 0.4.0 which enable building on other
architectures and fix some issues on armhf. These patches may cause
regressions, which is why I am requesting that this be uploaded to
experimental rather than unstable.
I would be happy to join the Debian Julia Team and make the changes in
an experimental branch on git myself, and to assist with maintenance
of Julia and related packages in Debian on an ongoing basis.
Regards
Graham
-------------- next part --------------
diff -Nru julia-0.3.11/debian/control julia-0.3.11/debian/control
--- julia-0.3.11/debian/control 2015-05-25 14:51:48.000000000 +0200
+++ julia-0.3.11/debian/control 2015-10-21 13:43:00.000000000 +0200
@@ -5,8 +5,8 @@
Build-Depends: dpkg-dev (>= 1.16.2~), debhelper (>= 9), dh-exec, llvm-3.5-dev,
libdouble-conversion-dev, libsuitesparse-dev (>= 1:4.2.1), libgmp-dev,
libunwind8-dev, libfftw3-dev, libpcre3-dev, libarpack2-dev, libmpfr-dev,
- libopenblas-dev (>= 0.2.10-1~), libopenlibm-dev, libopenspecfun-dev (>= 0.4~),
- patchelf, python-sphinx, python-sphinx-rtd-theme, libjs-mathjax
+ libopenblas-dev (>= 0.2.10-1~) [!ppc64el], libopenlibm-dev [i386 amd64], libopenspecfun-dev (>= 0.4~),
+ python-sphinx, python-sphinx-rtd-theme, libjs-mathjax
Standards-Version: 3.9.6
Section: science
Homepage: http://julialang.org
@@ -14,14 +14,14 @@
Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-julia/julia.git
Package: julia
-Architecture: amd64 i386
+Architecture: any
Pre-Depends: ${misc:Pre-Depends}
# NB: several shared libs have to be hardcoded because they are dlopen'd from
# Julia scripts, and therefore dpkg-shlibdeps cannot detect them
Depends: ${shlibs:Depends}, ${misc:Depends},
- libopenblas-base (>= 0.2.10-1~), libpcre3,
+ libopenblas-base (>= 0.2.10-1~) [!ppc64el], libpcre3,
libfftw3-double3, libfftw3-single3, libcholmod2.1.2, libumfpack5.6.2,
- libgmp10, libarpack2, libmpfr4, libopenlibm1, libopenspecfun1
+ libgmp10, libarpack2, libmpfr4, libopenlibm1 [i386 amd64], libopenspecfun1
Recommends: git
Suggests: julia-doc, ess (>= 12.09-1~)
Description: high-performance programming language for technical computing
@@ -60,7 +60,7 @@
Package: julia-dbg
Section: debug
-Architecture: amd64 i386
+Architecture: any
Depends: julia (= ${binary:Version}), ${misc:Depends}
Description: high-performance programming language for technical computing
Julia is a high-level, high-performance dynamic programming language for
diff -Nru julia-0.3.11/debian/patches/require-sse2-on-i386.patch julia-0.3.11/debian/patches/require-sse2-on-i386.patch
--- julia-0.3.11/debian/patches/require-sse2-on-i386.patch 2015-07-17 23:03:13.000000000 +0200
+++ julia-0.3.11/debian/patches/require-sse2-on-i386.patch 2015-09-16 10:14:00.000000000 +0200
@@ -1,15 +1,17 @@
Description: Julia requires SSE2 on i386
This patch adds an explicit error message if the CPU does not support SSE2.
By the way, it also enables SSE2 in dSFMT.
-Author: Sébastien Villemot <sebastien at debian.org>
Bug: https://github.com/JuliaLang/julia/issues/7185
Forwarded: no
+Author: Sébastien Villemot <sebastien at debian.org>
Last-Update: 2014-09-17
+Author: Graham Inggs <ginggs at debian.org>
+Last-Update: 2015-09-16
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/src/codegen.cpp
+++ b/src/codegen.cpp
-@@ -4494,6 +4494,16 @@ static void init_julia_llvm_env(Module *
+@@ -4494,6 +4494,16 @@
extern "C" void jl_init_codegen(void)
{
@@ -28,13 +30,13 @@
cl::ParseCommandLineOptions(sizeof(argv)/sizeof(argv[0]), argv, "disable-copyprop\n");
--- a/deps/Makefile
+++ b/deps/Makefile
-@@ -690,9 +690,7 @@ DSFMT_CFLAGS += -finline-functions -fomi
+@@ -690,6 +690,9 @@
else
DSFMT_CFLAGS += -Wl,-dll
endif
--ifeq ($(ARCH), x86_64)
++ifeq ($(ARCH), i386)
++DSFMT_CFLAGS += -msse2 -DHAVE_SSE2
++endif
+ ifeq ($(ARCH), x86_64)
DSFMT_CFLAGS += -msse2 -DHAVE_SSE2
--endif
-
- $(DSFMT_OBJ_SOURCE): dsfmt-$(DSFMT_VER)/config.status
- cd dsfmt-$(DSFMT_VER) && \
+ endif
diff -Nru julia-0.3.11/debian/rules julia-0.3.11/debian/rules
--- julia-0.3.11/debian/rules 2015-05-25 15:47:36.000000000 +0200
+++ julia-0.3.11/debian/rules 2015-10-09 14:53:35.000000000 +0200
@@ -7,19 +7,26 @@
COMMON_FLAGS = USE_SYSTEM_LIBUNWIND=1 USE_SYSTEM_PCRE=1 USE_SYSTEM_BLAS=1 \
USE_SYSTEM_LAPACK=1 USE_BLAS64=0 USE_SYSTEM_FFTW=1 USE_SYSTEM_GMP=1 \
USE_SYSTEM_ARPACK=1 USE_SYSTEM_MPFR=1 USE_SYSTEM_SUITESPARSE=1 \
- USE_SYSTEM_GRISU=1 USE_SYSTEM_OPENSPECFUN=1 USE_SYSTEM_OPENLIBM=1 \
+ USE_SYSTEM_GRISU=1 USE_SYSTEM_OPENSPECFUN=1 USE_SYSTEM_PATCHELF=1 \
USE_LLVM_SHLIB=1 USE_SYSTEM_LLVM=1 LLVM_VER=$(LLVM_VER) \
LLVM_CONFIG=/usr/bin/llvm-config-$(LLVM_VER) VERBOSE=1 \
- LIBBLAS=-lopenblas LIBBLASNAME=libopenblas \
- LIBLAPACK=-lopenblas LIBLAPACKNAME=libopenblas \
MULTIARCH_INSTALL=1 sysconfdir=/etc prefix=/usr DESTDIR=debian/tmp/
ifeq ($(DEB_HOST_ARCH),amd64)
-COMMON_FLAGS += MARCH=x86-64
+COMMON_FLAGS += MARCH=x86-64 USE_SYSTEM_OPENLIBM=1
else ifeq ($(DEB_HOST_ARCH),i386)
-COMMON_FLAGS += MARCH=pentium4
+COMMON_FLAGS += MARCH=pentium4 USE_SYSTEM_OPENLIBM=1
else
-$(error Unsupported arch $(DEB_HOST_ARCH))
+COMMON_FLAGS += USE_SYSTEM_LIBM=1
+export DEB_BUILD_OPTIONS += nocheck
+endif
+
+ifeq ($(DEB_HOST_ARCH),ppc64el)
+COMMON_FLAGS += LIBBLAS=-lblas LIBBLASNAME=libblas \
+ LIBLAPACK=-llapack LIBLAPACKNAME=liblapack
+else
+COMMON_FLAGS += LIBBLAS=-lopenblas LIBBLASNAME=libopenblas \
+ LIBLAPACK=-lopenblas LIBLAPACKNAME=libopenblas
endif
%:
More information about the Pkg-julia-devel
mailing list