summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: e5fbd3f2a9cc42997bb8b74bbc29ddb6f011e729 (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
# Maintainer: Ľubomir 'The_K' Kučera <lubomir-kucera-jr-at-gmail-dot-com>
# Contributor: Robert Schwarz <mail@rschwarz.net>
# Contributor: Johannes Schlatow <johannes.schlatow@googlemail.com>
# Contributor: Stephan Friedrichs <deduktionstheorem@googlemail.com>

pkgbase='scipoptsuite'
pkgname=("${pkgbase}" "${pkgbase}-docs")
pkgver='4.0.0'
pkgrel=3
pkgdesc="Toolbox for generating and solving optimization problems."
arch=('i686' 'x86_64')
url='http://scip.zib.de'
license=('LGPL3' 'custom:ZIB Academic License')
replaces=('ziboptsuite')
_depends=('zlib' 'gmp' 'readline')
makedepends=('chrpath' 'doxygen' 'graphviz' "${_depends[@]}")
_provides=('scip=4.0.0' 'soplex=3.0.0' 'zimpl=3.3.4' 'gcg=2.1.2' 'ug=0.8.3')
source=("http://scip.zib.de/download/release/${pkgbase}-${pkgver}.tgz")
sha256sums=('087535760eae3d633e2515d942a9b22e1f16332c022be8d093372bdc68e8a661')

# Extract directory names from the $provides array.
_scip="${_provides[0]//=/-}"
_soplex="${_provides[1]//=/-}"
_zimpl="${_provides[2]//=/-}"
_gcg="${_provides[3]//=/-}"
_ug="${_provides[4]//=/-}"

prepare() {
    cd "${srcdir}/${pkgbase}-${pkgver}"

    # Unpack and remove archives, otherwise patching wouldn't be possible
    for _pkg in "${_provides[@]}"; do
        _archive="${_pkg//=/-}.tgz"

        tar xzf "${_archive}"

        rm "${_archive}"
    done

    # Fix ZIMPL linking
    sed -i 's/LDFLAGS		+=	-static//g' ${_zimpl}/make/make.linux.*
}

build() {
    cd "${srcdir}/${pkgbase}-${pkgver}"

    make SHARED=true scipoptlib
    make
    make BLISS=false gcg
    make ug

    cd "${srcdir}/${pkgbase}-${pkgver}/${_scip}"
    make doc -j

    cd "${srcdir}/${pkgbase}-${pkgver}/${_soplex}"
    make doc -j

    cd "${srcdir}/${pkgbase}-${pkgver}/${_gcg}"
    make doc -j

    # Some files have permission 640.
    # @FIXME: Future versions might not require this line.
    chmod -R a+r "${srcdir}/${pkgbase}-${pkgver}"
}

check() {
    cd "${srcdir}/${pkgbase}-${pkgver}"

    make test
}

_package() {
    depends=("${_depends[@]}")
    provides=("${_provides[@]}")

    # install everything manually (the install targets are still broken)
    cd "${srcdir}/${pkgbase}-${pkgver}"

    # A local RPATH is set, get rid of it.
    chrpath --delete ${_scip}/bin/scip
    chrpath --delete ${_soplex}/bin/soplex
    chrpath --delete ${_gcg}/bin/gcg
    chrpath --delete ${_ug}/bin/fscip

    #
    # Binaries
    #
    install -D -m755 ${_soplex}/bin/soplex "${pkgdir}/usr/bin/soplex"
    install -D -m755 ${_scip}/bin/scip "${pkgdir}/usr/bin/scip"
    install -D -m755 ${_zimpl}/bin/zimpl "${pkgdir}/usr/bin/zimpl"
    install -D -m755 ${_gcg}/bin/gcg "${pkgdir}/usr/bin/gcg"
    install -D -m755 ${_ug}/bin/fscip "${pkgdir}/usr/bin/fscip"

    #
    # Includes
    #
    mkdir -p "${pkgdir}/usr/include/"{blockmemshell,lpi,nlpi,objscip,scip,soplex,zimpl}
    cp ${_scip}/src/blockmemshell/*.h "${pkgdir}/usr/include/blockmemshell"
    cp ${_scip}/src/lpi/*.h "${pkgdir}/usr/include/lpi"
    cp ${_scip}/src/nlpi/*.h "${pkgdir}/usr/include/nlpi"
    cp ${_scip}/src/objscip/*.h "${pkgdir}/usr/include/objscip"
    cp ${_scip}/src/scip/*.h "${pkgdir}/usr/include/scip"
    cp ${_soplex}/src/*.h "${pkgdir}/usr/include/soplex"
    cp ${_zimpl}/src/*.h "${pkgdir}/usr/include/zimpl"

    #
    # Libraries
    #
    mkdir -p "${pkgdir}/usr/lib/"
    cp -d ${_scip}/lib/shared/libscip*.so "${pkgdir}/usr/lib/"
    cp -d ${_soplex}/lib/libsoplex*.so "${pkgdir}/usr/lib/"
    cp -d ${_zimpl}/lib/libzimpl*.a "${pkgdir}/usr/lib/"
    cp -d lib/libscipopt*.so "${pkgdir}/usr/lib/"

    # Repair "missing links"
    # @FIXME: I hope this is not necessary in future versions!
    cd "${pkgdir}/usr/lib"
    ln -s -T libzimpl-*.a libzimpl.a
    cd "${srcdir}/${pkgbase}-${pkgver}"

    #
    # License
    #
    install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}

_package-docs() {
    cd "${srcdir}/${pkgbase}-${pkgver}"

    #
    # Documentation
    #
    mkdir -p "${pkgdir}/usr/share/doc/${pkgname}/"{scip,soplex,zimpl,gcg,ug}
    cp -r ${_scip}/{CHANGELOG,release-notes,doc/html} "${pkgdir}/usr/share/doc/${pkgname}/scip/"
    cp -r ${_soplex}/{CHANGELOG,doc/html} "${pkgdir}/usr/share/doc/${pkgname}/soplex/"
    install -m644 ${_soplex}/src/example.cpp "${pkgdir}/usr/share/doc/${pkgname}/soplex/"
    cp -r ${_zimpl}/{CHANGELOG,README,doc,example} "${pkgdir}/usr/share/doc/${pkgname}/zimpl/"
    cp -r ${_gcg}/{CHANGELOG,doc/html} "${pkgdir}/usr/share/doc/${pkgname}/gcg/"
    cp -r ${_ug}/README "${pkgdir}/usr/share/doc/${pkgname}/ug/"

    #
    # License
    #
    install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}

for _pkg in ${pkgname[@]}; do
    eval "package_${_pkg}() {
        $(declare -f "_package${_pkg#${pkgbase}}")
        _package${_pkg#${pkgbase}}
    }"
done