summaryrefslogtreecommitdiff
path: root/community/sage-mathematics/PKGBUILD
blob: a4fd5c450da8abda31bf290b52f052259ad20989 (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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# $Id: PKGBUILD 105329 2014-02-05 06:14:45Z arcanis $
# Maintainer: Evgeniy Alekseev <arcanis.arch at gmail dot com>
# Contributor: Daniel Wallace <danielwallace at gtmanfred dot com>
# Contributor: Antonio Rojas <nqn1976 at gmail dot com>
# Contributor: Thomas Dziedzic <gostrc at gmail dot com>
# Contributor: Osman Ugus <ugus11 at yahoo dot com>
# Contributor: Stefan Husmann <stefan-husmann at t-online dot de>
# Special thanks to Nareto for moving the compile from the .install to the PKGBUILD

pkgname=sage-mathematics
pkgver=6.1
pkgrel=3
pkgdesc="Open Source Mathematics Software, free alternative to Magma, Maple, Mathematica, and Matlab"
arch=('i686' 'x86_64')
url="http://www.sagemath.org"
license=('GPL')
#depends=('desktop-file-utils' 'java-environment=7' 'libjpeg-turbo' 'libtiff' 'libxmu' 'sqlite' 'xz')
depends=('freetype2>=2.3.5')
makedepends=('gcc-fortran' 'gendesk' 'desktop-file-utils')
optdepends=('imagemagick: some plotting functionality benefits from it'
            'texlive-core: some plotting functionality benefits from it, also to use SageTeX'
            'openssh: to use the notebook in secure mode'
            'ffmpeg: to show animations'
            'cairo: R plots')
source=("http://sage.math.washington.edu/home/release/sage-${pkgver}/sage-${pkgver}.tar"
        "sage.service")
install="${pkgname}.install"
md5sums=('75130374fcdb9395955db81f1ed28422'
         '985da1c1d1dcdc3ea9aa73035cb7996b')

prepare() {
  # create *.desktop file
  gendesk -f -n \
          --pkgname="sage-notebook" \
          --pkgdesc="Sage notebook" \
          --name="Sage" \
          --exec="/opt/sage/sage -notebook" \
          --terminal=true \
          --categories="Science;Math" \
          --custom="X-DCOP-ServiceType=
X-KDE-SubstituteUID=false
X-KDE-Username="
  
  # create DOT_SAGE directory
  if [[ -d ${srcdir}/build ]]; then
    rm -rf "${srcdir}/build"
  fi
  mkdir "${srcdir}/build"
  
  # according to FS#34769
  rm -rf freetype-*
  sed -i -e 's/FREETYPE/#FREETYPE/' "${srcdir}/sage-${pkgver}/build/install"
}

build() {
  cd "sage-${pkgver}"
  
  # fix "missing sage.all error" during build
  unset CFLAGS
  unset CXXFLAGS
  # fix build errors
  unset LDFLAGS
  
  export MAKE="make -j$(nproc)"
  
  # use archlinux's fortran rather then the one that ships with sage to compile sage's fortran
  export FC=/usr/bin/gfortran
  
  # 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="${srcdir}/build"
  
  # singular is broken
  export CPP='/usr/bin/cpp'
  
  # only build sage, no documents
  #make build
  make
}

<< COMMENT
check() {
  cd "sage-${pkgver}"
  
  make test
  
  # uncomment if we want to run all the tests (warning: very long)
  #make ptestlong
}
COMMENT

package() {
  cd "${srcdir}/sage-${pkgver}/"
  # remove build logs
  rm -f *.log
  rm -rf "${srcdir}/sage-${pkgver}/"{logs,upstream}
  # do NOT remove build directory!
  
  # cp because make install is experimental and will corrupt the install
  install -dm755 "${pkgdir}/opt/sage"
  cp -r * "${pkgdir}/opt/sage/"
  
  # move SageTeX files to more appropriate directory
  install -dm755 "${pkgdir}/usr/share"
  mv "${pkgdir}/opt/sage/local/share/texmf" "${pkgdir}/usr/share"
  
  # according to FS#37090
  # install scripts
  install -dm755 "${pkgdir}/usr/bin"
  ./sage -c "install_scripts('${pkgdir}/usr/bin', ignore_existing=True)"
  # rename scripts to avoid conflicts
  for ITEM in $(ls "${pkgdir}/usr/bin"); do
    mv "${pkgdir}/usr/bin/${ITEM}" "${pkgdir}/usr/bin/sage-${ITEM}"
  done
  ln -s "/opt/sage/sage" "${pkgdir}/usr/bin/sage"
  
  # install a systemd user unit
  install -Dm644 "${srcdir}/sage.service" "${pkgdir}/usr/lib/systemd/user/sage.service"
  # install *.desktop and icon files
  install -Dm644 "${srcdir}/sage-notebook.desktop" \
                 "${pkgdir}/usr/share/applications/sage-notebook.desktop"
  install -Dm644 "${pkgdir}/opt/sage/local/lib/python2.7/site-packages/sagenb-0.10.7.2-py2.7.egg/sagenb/data/sage/images/icon128x128.png" \
                 "${pkgdir}/usr/share/pixmaps/sage-notebook.png"
}

# vim :set ts=2 sw=2 et: