summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 4213e5781935490ae22272bf09ea37a7ff4062a0 (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
# Maintainer of this PKBGUILD file: Martino Pilia <martino.pilia@gmail.com>
pkgname=salome-meca-bin
pkgver=2018
pkgrel=1
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=()
optdepends=()
provides=('salome-meca')
source=("https://www.code-aster.org/FICHIERS/salome_meca-2018-LGPL-2.tgz")
md5sums=('9f1b0c7b30fab902e75199a37eac5c34')

build() {
	cd "${srcdir}"

	msg2 "Extracting installer..."

	# remove previous build folder if present, otherwise the installer will fail
	rm -rf ${srcdir}/salome_meca || :

	# self-extract
	./salome_meca-2018-LGPL-2.run &> /dev/null <<-EOF
	${srcdir}/salome_meca
	EOF

	cd "${srcdir}/salome_meca/V${pkgver}/" 

	# impose the right path for the setup script
	sed -i \
		"107iSALOMEDIR=${srcdir}/salome_meca/V${pkgver}/" \
		create_appli.sh

	# use the bundled version of python
	export PATH="${srcdir}/salome_meca/V${pkgver}/prerequisites/Python-2710/bin/":$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/V${pkgver}/prerequisites/debianForSalome/lib/libstdc++.so.6" \
		"${srcdir}/salome_meca/V${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 &> /dev/null <<-EOF
	${srcdir}/salome_meca/appli_V${pkgver}
	EOF

	# ensure that the extraction did not fail
	if [ ! -e "${srcdir}/salome_meca/appli_V${pkgver}/salome" ]; then
		error "Extraction of the application failed, please check '${srcdir}/salome_meca/appli_V${pkgver}/appli_V${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/V${pkgver}," \
		${srcdir}/salome_meca/V${pkgver}/.salome_meca_V${pkgver}.desktop \
		> ${srcdir}/salome_meca.desktop

	msg2 "Fixing references..."

	# fix references to srcdir
	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'
	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;' \;
}

package() {
	cd ${srcdir}

	# create launcher script
	# use the bundled libraries and Python version 
	_path='PATH=/opt/salome_meca/V2018/prerequisites/Python-2710/bin/:$PATH'
	_ld_path="LD_LIBRARY_PATH=\$(find /opt/salome_meca/V2018/ -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_V${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_V${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"
}