1
0
mirror of https://github.com/termux/termux-packages synced 2024-06-17 22:37:10 +00:00
termux-packages/packages/maxima/build.sh
agnostic-apollo f743005751 fix(build-package.sh): Localize and do not use variables defined in termux_step_host_build in other functions
The `termux_step_host_build` runs only the first time package is built for its specific version, based on `TERMUX_HOSTBUILD_MARKER` in `termux_step_handle_hostbuild`. If `build-package.sh` is run twice, then second time, variables defined in `termux_step_host_build` won't be set in later functions since its not called, like `_PREFIX_FOR_BUILD` in `aapt/build.sh` would be unset inside `termux_step_pre_configure`, resulting in unbound variable error.

Even `termux_step_pre_configure` may not always run, depending on `$TERMUX_CONTINUE_BUILD`, so build scripts should not share variables between functions and redefine them again where necessary.

Also `_PREFIX_FOR_BUILD` should use a standard path `$TERMUX_PKG_HOSTBUILD_DIR/prefix` and not others like `$TERMUX_PKG_HOSTBUILD_DIR/_prefix`. Some build scripts use `$TERMUX_PKG_HOSTBUILD_DIR/src` for other stuff, so best use `prefix` sub directory.
2022-07-28 15:27:20 +05:00

85 lines
2.5 KiB
Bash

TERMUX_PKG_HOMEPAGE="https://maxima.sourceforge.io/"
TERMUX_PKG_DESCRIPTION="A Computer Algebra System"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_MAINTAINER="Marlin Sööse <marlin.soose@laro.se>"
TERMUX_PKG_VERSION=()
TERMUX_PKG_VERSION+=(5.46.0)
TERMUX_PKG_VERSION+=(21.2.1) # ECL version
TERMUX_PKG_SRCURL=(https://downloads.sourceforge.net/sourceforge/maxima/Maxima-source/$TERMUX_PKG_VERSION-source/maxima-$TERMUX_PKG_VERSION.tar.gz
https://common-lisp.net/project/ecl/static/files/release/ecl-${TERMUX_PKG_VERSION[1]}.tgz)
TERMUX_PKG_SHA256=(7390f06b48da65c9033e8b2f629b978b90056454a54022db7de70e2225aa8b07
b15a75dcf84b8f62e68720ccab1393f9611c078fcd3afdd639a1086cad010900)
TERMUX_PKG_DEPENDS="ecl"
TERMUX_PKG_BUILD_IN_SRC="true"
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--enable-ecl"
TERMUX_PKG_HOSTBUILD=true
termux_step_post_get_source() {
mv ecl-${TERMUX_PKG_VERSION[1]} ecl
}
termux_step_host_build() {
local _PREFIX_FOR_BUILD=$TERMUX_PKG_HOSTBUILD_DIR/prefix
mkdir -p $_PREFIX_FOR_BUILD
mkdir ecl
pushd ecl
local ecl_srcdir=$TERMUX_PKG_SRCDIR/ecl/src
autoreconf -fi $ecl_srcdir/gmp
$ecl_srcdir/configure ABI=${TERMUX_ARCH_BITS} \
CFLAGS=-m${TERMUX_ARCH_BITS} LDFLAGS=-m${TERMUX_ARCH_BITS} \
--prefix=$_PREFIX_FOR_BUILD --srcdir=$ecl_srcdir --disable-c99complex
make -j $TERMUX_MAKE_PROCESSES
make install
popd
PATH=$_PREFIX_FOR_BUILD/bin:$PATH
mkdir maxima
pushd maxima
find $TERMUX_PKG_SRCDIR -mindepth 1 -maxdepth 1 ! -name ecl -exec cp -a \{\} ./ \;
./configure --prefix=$_PREFIX_FOR_BUILD $TERMUX_PKG_EXTRA_CONFIGURE_ARGS
make -j $TERMUX_MAKE_PROCESSES
popd
}
termux_step_pre_configure() {
_NEED_DUMMY_LIBPTHREAD_A=
_LIBPTHREAD_A=$TERMUX_PREFIX/lib/libpthread.a
if [ ! -e $_LIBPTHREAD_A ]; then
_NEED_DUMMY_LIBPTHREAD_A=true
echo '!<arch>' > $_LIBPTHREAD_A
fi
}
termux_step_make() {
local _PREFIX_FOR_BUILD=$TERMUX_PKG_HOSTBUILD_DIR/prefix
cat > $_PREFIX_FOR_BUILD/bin/gcc <<-EOF
#!/bin/sh
exec \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS "\$@" -Wno-unused-command-line-argument
EOF
chmod 0700 $_PREFIX_FOR_BUILD/bin/gcc
local loop_max=1000
local f
local i=0
while [ ! -e src/binary-ecl/maxima ]; do
make -C src
for f in $(find src/binary-ecl -type f -name '*.fas'); do
cp $TERMUX_PKG_HOSTBUILD_DIR/maxima/$f $f
done
i=$(( $i + 1 ))
if [ $i -gt $loop_max ]; then
return 1
fi
done
make
rm -f $_PREFIX_FOR_BUILD/bin/gcc
}
termux_step_post_make_install() {
if [ $_NEED_DUMMY_LIBPTHREAD_A ]; then
rm -f $_LIBPTHREAD_A
fi
}