summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 34e439d6eda90482484557537562bf5f3a2cec6a (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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
# Maintainer: Antonio Rojas <arojas@archlinux.org>
# Contributor: Evgeniy Alekseev <arcanis.arch at gmail dot com>
# Contributor: Daniel Wallace <danielwallace at gtmanfred 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>

pkgname=sagemath-git
pkgver=10.5.rc0.r0.g39ebbe45ca5
pkgrel=1
pkgdesc='Open Source Mathematics Software, free alternative to Magma, Maple, Mathematica, and Matlab'
arch=(x86_64)
url='http://www.sagemath.org'
license=(GPL)
depends=(brial
         cblas
         cliquer
         ecl
         eclib
         fflas-ffpack
         flint
         gap
         gcc-libs
         gd
         gfan
         giac
         givaro
         glibc
         glpk
         gmp
         gmp-ecm
         gsl
         iml
         ipython
         lcalc
         libbraiding
         libhomfly
         libmpc
         linbox
         lrcalc
         m4ri
         m4rie
         maxima-fas
         mpfi
         mpfr
         nauty
         ntl
         palp
         pari
         pari-galdata
         pari-seadata-small
         planarity
         python
         python-conway-polynomials
         python-cvxopt
         python-cysignals
         python-cypari2
         python-docutils
         python-fpylll
         python-ipywidgets
         python-matplotlib
         python-memory-allocator
         python-mpmath
         python-networkx
         python-numpy
         python-pexpect
         python-pillow
         python-pplpy
         python-primecountpy
         python-pygments
         python-pyparsing
         python-requests
         python-rpy2
         python-scipy
         python-sphinx
         python-sympy
         python-traitlets
         rankwidth
         sage-data-combinatorial_designs
         sage-data-elliptic_curves
         sage-data-graphs
         sage-data-polytopes_db
         singular
         symmetrica
         sympow
         tachyon
         threejs-sage)
optdepends=('benzene: for generating fusenes and benzenoids'
            'blas-openblas: faster linear algebra'
            'bliss: bliss backend for graph theory'
            'buckygen: for generating fullerene graphs'
            'coin-or-csdp: for computing Lovász theta-function of graphs'
            'coxeter: Coxeter groups implementation'
            'cryptominisat: SAT solver'
            'cython: to compile cython code'
            'dot2tex: for displaying some diagrams'
            'ffmpeg: to export animations to video'
            'fricas: FriCAS interface'
            'imagemagick: to show animations'
            'jmol: alternative 3D plot engine'
            'jupyter-jsmol: alternative 3D plot engine in the Jupyter notebook'
            'lrs: Algorithms for linear reverse search used in game theory and for computing volume of polytopes'
            'latte-integrale: integral point count in polyhedra'
            'msolve: polynomial system solving via msolve'
            'plantri: for generating some classes of graphs'
            'python-cvxpy: interface for several convex optimization backends'
            'python-database-cubic-hecke: cubic Hecke algebras'
            'python-database-knotinfo: interface to the KnotInfo and LinkInfo databases'
            'python-igraph: igraph backend for graph theory'
            'python-jupymake: polymake backend for polyhedral computations'
            'python-matroid-database: matroids database'
            'python-phitigra: graph editor'
            'python-pkgconfig: to compile cython code'
            'python-pycosat: picosat SAT solver'
            'python-pynormaliz: Normaliz backend for polyhedral computations'
            'python-pyscipopt: SCIP mixed integer linear programming backend'
            'rubiks: Rubiks cube algorithms'
            'sage-data-cunningham_tables: list of prime numbers in the Cunningham table'
            'sage-notebook-exporter: convert flask notebooks to Jupyter'
            'sagemath-doc: HTML documentation'
            'shared_meataxe: faster matrix arithmetic over finite fields'
            'sirocco: for computing the fundamental group of the complement of a plane curve'
            'topcom: to compute triangulations of point configurations')
makedepends=(bliss
             boost
             coxeter
             cython
             git
             mcqd
             python-jinja
             python-pkgconfig
             python-setuptools
             shared_meataxe
             sirocco
             treedec)
conflicts=(sagemath)
provides=(sagemath)
source=(git+https://github.com/sagemath/sage#branch=develop
        latte-count.patch
        pari-2.17.patch
        eclib-20241112.patch)
sha256sums=('SKIP'
            'f1dd7fea298f38be0f03f46ed4bc9281267f03ec3eee2582edb385ca4cb5db09'
            '69766672b6d836e013a4c9885594e8219ceefc3350255ed1f528ff4847a813ec'
            '702ef91be4049f7f533fae9d6799837114aacdee677f2d4889e4c7c415b5bd28')
_pkgs=(standard
       bliss
       coxeter3
       mcqd
       meataxe
       sirocco
       tdlib)

pkgver() {
  cd sage
  git describe --long --tags | sed -r 's/([^-]*-g)/r\1/;s/-/./g'
}

prepare(){
  cd sage

# use correct latte-count binary name
  patch -p1 -i ../latte-count.patch
# Fix build with pari 2.17
  patch -p1 -i ../pari-2.17.patch
# Fix build with eclib 20241112
  patch -p1 -i ../eclib-20241112.patch

  ./bootstrap
}

build() {
  export SAGE_NUM_THREADS=$(($(nproc)/2))
  export PYTHONPATH="$PWD"/sage/src

  for _pkg in ${_pkgs[@]}; do
    cd "$srcdir"/sage/pkgs/sagemath-$_pkg
    python setup.py build
  done
}

package() {
  for _pkg in ${_pkgs[@]}; do
    cd "$srcdir"/sage/pkgs/sagemath-$_pkg
    python setup.py install --root="$pkgdir" --optimize=1
  done

# fix symlinks to assets
  _pythonpath=`python -c "from sysconfig import get_path; print(get_path('platlib'))"`
  for _i in $(ls "$srcdir"/sage/src/sage/ext_data/notebook-ipython); do
    rm "$pkgdir"/usr/share/jupyter/kernels/sagemath/$_i
    ln -s $_pythonpath/sage/ext_data/notebook-ipython/$_i "$pkgdir"/usr/share/jupyter/kernels/sagemath/
  done

# adjust threejs version
  rm "$pkgdir"$_pythonpath/sage/ext_data/threejs/threejs-version.txt
  ln -s /usr/share/threejs-sage/version "$pkgdir"$_pythonpath/sage/ext_data/threejs/threejs-version.txt
}