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
|
# Maintainer of this PKBGUILD file: Martino Pilia <martino.pilia@gmail.com>
pkgname=salome-meca-bin
pkgver=2019.0.3
pkgrel=2
pkgdesc='Integration of the Code_Aster solver in the Salome platform'
arch=('x86_64')
url='https://www.code-aster.org/spip.php?article303'
license=('LGPL')
depends=('coreutils' 'openblas')
makedepends=(
'python2'
'tcl'
'tk'
)
optdepends=()
provides=('salome-meca')
source=("https://www.code-aster.org/FICHIERS/salome_meca-2019.0.3-1-universal.tgz")
sha1sums=('4ea7be35819a53a201d48d189ef1c4d4f6d47e32')
prepare() {
cd "${srcdir}"
msg2 "Extracting installer..."
# remove previous build folder if present, otherwise the installer will fail
[ ! -d "${srcdir}/salome_meca" ] || rm -rf "${srcdir}/salome_meca"
# self-extract
./salome_meca-2019.0.3-1-universal.run &> /dev/null <<-EOF
${srcdir}/salome_meca
EOF
# do not set configuration variables with gconftool-2 during package creation
sed -i '5,10d' "${srcdir}/salome_meca/V${pkgver}_universal/salome_prerequisites_root.sh"
}
package() {
local _pkgver="V${pkgver}_universal"
cd "${srcdir}/salome_meca/${_pkgver}/"
# impose the right path for the setup script
sed -i \
-e "107iSALOMEDIR=${srcdir}/salome_meca/${_pkgver}/" \
-e 's,\bpython\b,python2,g'\
create_appli.sh
# use the bundled version of python
export PATH="${srcdir}/salome_meca/${_pkgver}/prerequisites/Python-365/bin/":$PATH
export LD_LIBRARY_PATH="${srcdir}/salome_meca/${_pkgver}/prerequisites/Python-365/lib/":$LD_LIBRARY_PATH
# Try to use the system libstdc++.so.6
# (hoping this does not break anything else, for the moment it seems not...)
mv "${srcdir}/salome_meca/${_pkgver}/prerequisites/debianForSalome/lib/libstdc++.so.6" \
"${srcdir}/salome_meca/${_pkgver}/prerequisites/debianForSalome/lib/libstdc++.so.6.bak"
msg2 "Building virtual application..."
# create virtual application
# -D to not automatically create a (wrong) desktop and menu entry
./create_appli.sh -D -q -a "${srcdir}/salome_meca/appli_${_pkgver}"
# ensure that the extraction did not fail
if [ ! -e "${srcdir}/salome_meca/appli_${_pkgver}/salome" ]; then
error "Extraction of the application failed, please check '${srcdir}/salome_meca/appli_${_pkgver}/appli_${_pkgver}.log' for relevant error messages."
exit 1
fi
# create .desktop file from template
sed -e "s,APPLIDIR/salome,/usr/bin/salome_meca," \
-e "s,SALOMEDIR,/opt/salome_meca/${_pkgver}," \
"${srcdir}/salome_meca/${_pkgver}/.salome_meca_${_pkgver}.desktop" \
> "${srcdir}/salome_meca.desktop"
msg2 "Fixing references..."
# fix references to srcdir
# shellcheck disable=2013
for f in $(grep -RI "${srcdir}" "${srcdir}" | cut -d: -f1); do
sed -i "s,${srcdir},/opt,g" "$f"
done
msg2 "Fixing symlinks..."
# fix symlinks pointing to srcdir
# https://stackoverflow.com/questions/31020219/how-change-symlink-path-for-many-files
_oldpath="${srcdir}"
_newpath='/opt'
# shellcheck disable=2156
find "${srcdir}/salome_meca" -type l -execdir bash -c 'p="$(readlink "{}")"; if [ "${p:0:1}" != "/" ]; then p="$(echo "$(pwd)/$p" | sed -e "s|/\./|/|g" -e ":a" -e "s|/[^/]*/\.\./|/|" -e "t a")"; fi; if [ "${p:0:'${#_oldpath}'}" == "'"$_oldpath"'" ]; then ln -snf "'"$_newpath"'${p:'${#_oldpath}'}" "{}"; fi;' \;
cd "${srcdir}"
# create launcher script
# use the bundled libraries and Python version
# shellcheck disable=2016
_path='PATH=/opt/salome_meca/'"${_pkgver}"'/prerequisites/Python-365/bin/:$PATH'
_ld_path="LD_LIBRARY_PATH=\$(find /opt/salome_meca/${_pkgver}/ -type d -name lib | tr '\\n' ':' | sed 's/:$//'):\$LD_LIBRARY_PATH"
mkdir -p "${pkgdir}/usr/bin"
cat > "${pkgdir}/usr/bin/salome_meca" <<-EOF
#!/usr/bin/env bash
$_path $_ld_path /opt/salome_meca/appli_${_pkgver}/salome "\$@"
EOF
chmod +x "${pkgdir}/usr/bin/salome_meca"
# install bash completions
mkdir -p "$pkgdir/usr/share/bash-completion/completions"
install -D -m644 \
"${srcdir}/salome_meca/appli_${_pkgver}/.salome-completion.sh" \
"${pkgdir}/usr/share/bash-completion/completions/salome"
# install application
mkdir "${pkgdir}/opt"
mv "${srcdir}/salome_meca" "${pkgdir}/opt/salome_meca"
# install .desktop file
mkdir -p "${pkgdir}/usr/share/applications"
install -D -m644 \
"${srcdir}/salome_meca.desktop" \
"${pkgdir}/usr/share/applications/salome_meca.desktop"
# remove unnecessary installation script with refs to $srcdir
# to avoid namcap warning
rm "${pkgdir}/opt/salome_meca/${_pkgver}/modules/KERNEL_V9_3_0/bin/salome/virtual_salome.pyc"
}
|