summaryrefslogtreecommitdiff
path: root/community/sage-mathematics/PKGBUILD
blob: aa3a6c96b8ce67f4ecca01f37c4b1309a585c378 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# Maintainer: Thomas Dziedzic < gostrc at gmail >
# Contributor: Osman Ugus <ugus11@yahoo.com>
# Contributor: Stefan Husmann <stefan-husmann@t-online.de>
# Special thanks to Nareto for moving the compile from the .install to the PKGBUILD

pkgname=sage-mathematics
pkgver=4.7.2
pkgrel=1
pkgdesc='SAGE: Open Source Mathematics Software, a viable free alternative to Magma, Maple, Mathematica, and Matlab.'
url='http://www.sagemath.org'
arch=('i686' 'x86_64' 'mips64el')
license=('GPL')
#depends=('readline')
depends=('ppl')
makedepends=('gcc-fortran' 'gcc-libs' 'desktop-file-utils' 'imagemagick' 'texlive-core')
optdepends=('imagemagick: some plotting functionality benefits from it'
            'texlive-core: some plotting functionality benefits from it, also to use SageTeX'
            'sage-mathematics-spkgs: original packages used to build additional packages')
options=('!makeflags')
install="${pkgname}.install"
source=("http://sage.math.washington.edu/home/release/sage-${pkgver}/sage-${pkgver}.tar"
        'SAGE-notebook.desktop')
md5sums=('b3073997e6c7ec00a269f84ff2e54973'
         'dc391f12b7d17dd37326343ec0e99bbd')

build() {
  cd sage-${pkgver}

  # modularization of sage, sort of :)
  # fixes the following error:
  # bash: symbol lookup error: bash: undefined symbol: rl_filename_rewrite_hook
  # remove this hack when sage uses a readline 6.1 or greater, or when sage uses its own internal bash
  # this is for people who have custom kernels (sage works this around by checking uname -r)
  #mkdir -p spkg/installed
  #touch spkg/installed/readline-6.1
  mkdir -p spkg/installed
  touch spkg/installed/ppl-0.11.2

  # fix "missing sage.all error" during build
  unset CFLAGS
  unset CXXFLAGS

  # fix build errors
  unset LDFLAGS

  # enable multiple threads while building, is this really needed? check if uses MAKEFLAGS
  export SAGE_BUILD_THREADS=$(lscpu | awk '/^CPU\(s\):/ { print $2 }')
  export MAKE="make -j${SAGE_BUILD_THREADS}"

  # use archlinux's fortran rather then the one that ships with sage to compile sage's fortran
  export SAGE_FORTRAN='/usr/bin/gfortran'
  export SAGE_FORTRAN_LIB='/usr/lib/libgfortran.so'

  # disable building with debugging support
  export SAGE_DEBUG='no'

  # enable fat binaries (disables processor specific optimizations)
  # comment out if you're only building it for yourself
  export SAGE_FAT_BINARY='yes'

  # can't write to root in a clean chroot
  export DOT_SAGE='/build/src/'

  # only build sage, no documents
  #make build
  make
}

<< COMMENT
check() {
  cd sage-${pkgver}

  # uncomment if we want to run all the tests (warning: very long)
  #make ptestlong
}
COMMENT

package() {
  cd sage-${pkgver}

  # cp because make install is experimental and will corrupt the install
  install -d ${pkgdir}/opt/sage
  cp -r * ${pkgdir}/opt/sage

  # move SageTeX files to more appropriate directory
  install -d ${pkgdir}/usr/share
  mv ${pkgdir}/opt/sage/local/share/texmf \
    ${pkgdir}/usr/share

  desktop-file-install ${srcdir}/SAGE-notebook.desktop \
    --dir ${pkgdir}/usr/share/applications 

  # create link to main binary
  install -d ${pkgdir}/usr/bin
  ln -s /opt/sage/sage ${pkgdir}/usr/bin/sage

  # remove build logs
  rm -f ${pkgdir}/opt/sage/install.log
  rm -rf ${pkgdir}/opt/sage/spkg/logs

  # remove source packages, since they are rarely needed, they are 300mb in size (compressed)
  # no need to package them together, put into sage-mathematics-spkgs
  rm -f ${pkgdir}/opt/sage/spkg/base/*spkg
  rm -f ${pkgdir}/opt/sage/spkg/standard/*spkg
}