diff --git a/packages/dgsh/build.sh b/packages/dgsh/build.sh new file mode 100644 index 00000000000000..fd2853b4f78740 --- /dev/null +++ b/packages/dgsh/build.sh @@ -0,0 +1,22 @@ +TERMUX_PKG_HOMEPAGE=https://www.spinellis.gr/sw/dgsh/ +TERMUX_PKG_DESCRIPTION="The directed graph shell" +TERMUX_PKG_LICENSE="Apache-2.0" +TERMUX_PKG_MAINTAINER="@termux" +TERMUX_PKG_VERSION=1.0.0 +TERMUX_PKG_SRCURL=https://github.com/dspinellis/dgsh/archive/refs/tags/v${TERMUX_PKG_VERSION}.tar.gz +TERMUX_PKG_SHA256=22a7f2794e1287a46b03ce38c27a1d9349d1c66535c30e065c8783626555c76c +TERMUX_PKG_BUILD_DEPENDS="check" +TERMUX_PKG_BUILD_IN_SRC=true + +termux_step_pre_configure() { + TERMUX_PKG_SRCDIR=$TERMUX_PKG_SRCDIR/core-tools + TERMUX_PKG_BUILDDIR=$TERMUX_PKG_SRCDIR + cd $TERMUX_PKG_BUILDDIR + + sed -i -e 's/#.*$//g' src/dgsh-elf.s + cp $TERMUX_PKG_BUILDER_DIR/s_cpow.c src/ + + touch ../.config + mkdir -p m4 + autoreconf -fi +} diff --git a/packages/dgsh/core-tools-src-dgsh-tee.c.patch b/packages/dgsh/core-tools-src-dgsh-tee.c.patch new file mode 100644 index 00000000000000..561611a8cd3716 --- /dev/null +++ b/packages/dgsh/core-tools-src-dgsh-tee.c.patch @@ -0,0 +1,11 @@ +--- a/core-tools/src/dgsh-tee.c ++++ b/core-tools/src/dgsh-tee.c +@@ -439,7 +439,7 @@ + #ifdef FALLOC_FL_PUNCH_HOLE + static bool warned = false; + +- if (fallocate(tmp_fd, FALLOC_FL_PUNCH_HOLE, pool * buffer_size, buffer_size) < 0 && ++ if (fallocate(bp->page_file_fd, FALLOC_FL_PUNCH_HOLE, pool * buffer_size, buffer_size) < 0 && + !warned) { + warn("Failed to free temporary buffer space"); + warned = true; diff --git a/packages/dgsh/core-tools-src-dgsh-w.c.patch b/packages/dgsh/core-tools-src-dgsh-w.c.patch new file mode 100644 index 00000000000000..e27d03a922289e --- /dev/null +++ b/packages/dgsh/core-tools-src-dgsh-w.c.patch @@ -0,0 +1,11 @@ +--- a/core-tools/src/dgsh-w.c ++++ b/core-tools/src/dgsh-w.c +@@ -10,6 +10,8 @@ + #include "dgsh.h" + #include "dgsh-debug.h" + ++#include "s_cpow.c" ++ + void + read_number(int fd, long double *x, long double complex *xc) + { diff --git a/packages/dgsh/s_cpow.c b/packages/dgsh/s_cpow.c new file mode 100644 index 00000000000000..fefb2d3294ec95 --- /dev/null +++ b/packages/dgsh/s_cpow.c @@ -0,0 +1,82 @@ +/*- + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* cpow + * + * Complex power function + * + * + * + * SYNOPSIS: + * + * double complex cpow(); + * double complex a, z, w; + * + * w = cpow (a, z); + * + * + * + * DESCRIPTION: + * + * Raises complex A to the complex Zth power. + * Definition is per AMS55 # 4.2.8, + * analytically equivalent to cpow(a,z) = cexp(z clog(a)). + * + * ACCURACY: + * + * Relative error: + * arithmetic domain # trials peak rms + * IEEE -10,+10 30000 9.4e-15 1.5e-15 + * + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#if defined __ANDROID__ && __ANDROID_API__ < 26 + +#pragma GCC visibility push(hidden) + +double complex +cpow(double complex a, double complex z) +{ + double complex w; + double x, y, r, theta, absa, arga; + + x = creal (z); + y = cimag (z); + absa = cabs (a); + if (absa == 0.0) { + return (CMPLX(0.0, 0.0)); + } + arga = carg (a); + r = pow (absa, x); + theta = x * arga; + if (y != 0.0) { + r = r * exp (-y * arga); + theta = theta + y * log (absa); + } + w = CMPLX(r * cos (theta), r * sin (theta)); + return (w); +} + +#pragma GCC visibility pop + +#endif