[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