diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 083725289..a79b517cd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -50,3 +50,23 @@ build-x86_64: <<: *build_job variables: TERMUX_ARCH: x86_64 + +## Submit build packages to repository. +#upload-packages: +# stage: deploy +# only: +# - android-7@xeffyr/termux-packages +# - master@xeffyr/termux-packages +# script: +# - MODIFIED_PACKAGES=$(./scripts/get-modified-packages.sh) +# - | +# if [ -n "$MODIFIED_PACKAGES" ]; then +# ./scripts/package_uploader.sh --path ./termux-packages/debs $MODIFIED_PACKAGES +# else +# exit 0 +# fi +# retry: +# max: 2 +# when: +# - runner_system_failure +# - unknown_failure diff --git a/packages/abduco/build.sh b/packages/abduco/build.sh index b3227f187..ab7c01c96 100644 --- a/packages/abduco/build.sh +++ b/packages/abduco/build.sh @@ -2,10 +2,11 @@ TERMUX_PKG_HOMEPAGE=http://www.brain-dump.org/projects/abduco/ TERMUX_PKG_DESCRIPTION="Clean and simple terminal session manager" TERMUX_PKG_LICENSE="ISC" TERMUX_PKG_VERSION=0.6 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SRCURL=http://www.brain-dump.org/projects/abduco/abduco-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=c90909e13fa95770b5afc3b59f311b3d3d2fdfae23f9569fa4f96a3e192a35f4 TERMUX_PKG_BUILD_IN_SRC=yes -TERMUX_PKG_DEPENDS="libutil,dvtm" +TERMUX_PKG_DEPENDS="dvtm" termux_step_pre_configure() { CFLAGS+=" $CPPFLAGS" diff --git a/packages/apt/cmndline-no-strchrnul.patch b/packages/apt/cmndline-no-strchrnul.patch deleted file mode 100644 index 55a08727f..000000000 --- a/packages/apt/cmndline-no-strchrnul.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff -u -r ../apt-0.9.16.1/apt-pkg/contrib/cmndline.cc ./apt-pkg/contrib/cmndline.cc ---- ../apt-0.9.16.1/apt-pkg/contrib/cmndline.cc 2014-03-15 17:23:45.000000000 +0100 -+++ ./apt-pkg/contrib/cmndline.cc 2014-03-25 01:10:30.764711007 +0100 -@@ -27,6 +27,14 @@ - /*}}}*/ - using namespace std; - -+#if defined(__ANDROID__) -+static char* strchrnul(char const* s, int c) -+{ -+ char const* result = strchr(s, c); -+ return const_cast((result == NULL) ? (s + strlen(s)) : result); -+} -+#endif -+ - // CommandLine::CommandLine - Constructor /*{{{*/ - // --------------------------------------------------------------------- - /* */ diff --git a/packages/apt/debsrcrecords.patch b/packages/apt/debsrcrecords.patch deleted file mode 100644 index bedcbc096..000000000 --- a/packages/apt/debsrcrecords.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff -u -r ../apt-0.9.16.1/apt-pkg/deb/debsrcrecords.cc ./apt-pkg/deb/debsrcrecords.cc ---- ../apt-0.9.16.1/apt-pkg/deb/debsrcrecords.cc 2014-03-15 17:23:45.000000000 +0100 -+++ ./apt-pkg/deb/debsrcrecords.cc 2014-03-25 01:23:30.652689687 +0100 -@@ -26,6 +26,14 @@ - #include - #include - /*}}}*/ -+#if defined(__ANDROID__) -+static char* strchrnul(char const* s, int c) -+{ -+ char const* result = strchr(s, c); -+ return const_cast((result == NULL) ? (s + strlen(s)) : result); -+} -+#endif -+ - - using std::max; - using std::string; diff --git a/disabled-packages/blogc/build.sh b/packages/blogc/build.sh similarity index 71% rename from disabled-packages/blogc/build.sh rename to packages/blogc/build.sh index eef0381e7..0aedd0594 100644 --- a/disabled-packages/blogc/build.sh +++ b/packages/blogc/build.sh @@ -1,10 +1,6 @@ -# Disabled due to source download failing. - -# using a snapshot tarball because blogc-0.13.0 is not ready for release yet -# (documentation updates pending), but it is already useful and stable enough - TERMUX_PKG_HOMEPAGE=https://blogc.rgm.io/ TERMUX_PKG_DESCRIPTION="A blog compiler" +TERMUX_PKG_LICENSE="BSD 3-Clause" TERMUX_PKG_VERSION=0.12.0.123.acf1 TERMUX_PKG_REVISION=1 TERMUX_PKG_MAINTAINER="Rafael Martins @rafaelmartins" diff --git a/disabled-packages/blogc/termux-prefix.patch b/packages/blogc/termux-prefix.patch similarity index 100% rename from disabled-packages/blogc/termux-prefix.patch rename to packages/blogc/termux-prefix.patch diff --git a/packages/busybox/include-platform.h.patch b/packages/busybox/include-platform.h.patch new file mode 100644 index 000000000..c44f20025 --- /dev/null +++ b/packages/busybox/include-platform.h.patch @@ -0,0 +1,14 @@ +diff -uNr busybox-1.29.3/include/platform.h busybox-1.29.3.mod/include/platform.h +--- busybox-1.29.3/include/platform.h 2018-07-02 14:23:06.000000000 +0300 ++++ busybox-1.29.3.mod/include/platform.h 2019-02-08 16:01:14.437858554 +0200 +@@ -579,10 +579,6 @@ + extern char *strcasestr(const char *s, const char *pattern) FAST_FUNC; + #endif + +-#ifndef HAVE_STRCHRNUL +-extern char *strchrnul(const char *s, int c) FAST_FUNC; +-#endif +- + #ifndef HAVE_STRSEP + extern char *strsep(char **stringp, const char *delim) FAST_FUNC; + #endif diff --git a/packages/busybox/libbb-platform.c.patch b/packages/busybox/libbb-platform.c.patch new file mode 100644 index 000000000..efd0b722f --- /dev/null +++ b/packages/busybox/libbb-platform.c.patch @@ -0,0 +1,19 @@ +diff -uNr busybox-1.29.3/libbb/platform.c busybox-1.29.3.mod/libbb/platform.c +--- busybox-1.29.3/libbb/platform.c 2018-07-02 14:23:06.000000000 +0300 ++++ busybox-1.29.3.mod/libbb/platform.c 2019-02-08 16:10:54.101961593 +0200 +@@ -8,15 +8,6 @@ + */ + #include "libbb.h" + +-#ifndef HAVE_STRCHRNUL +-char* FAST_FUNC strchrnul(const char *s, int c) +-{ +- while (*s != '\0' && *s != c) +- s++; +- return (char*)s; +-} +-#endif +- + #ifndef HAVE_USLEEP + int FAST_FUNC usleep(unsigned usec) + { diff --git a/packages/cgdb/build.sh b/packages/cgdb/build.sh index d12ec313b..d94a31d2f 100644 --- a/packages/cgdb/build.sh +++ b/packages/cgdb/build.sh @@ -1,9 +1,9 @@ TERMUX_PKG_HOMEPAGE=https://cgdb.github.io/ TERMUX_PKG_DESCRIPTION="A lightweight curses (terminal-based) interface to the GNU Debugger (GDB)" TERMUX_PKG_LICENSE="GPL-2.0" -TERMUX_PKG_DEPENDS="ncurses,readline,gdb,libutil" +TERMUX_PKG_DEPENDS="ncurses, readline, gdb" TERMUX_PKG_VERSION=0.7.0 -TERMUX_PKG_REVISION=5 +TERMUX_PKG_REVISION=6 TERMUX_PKG_SRCURL=https://cgdb.me/files/cgdb-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=bf7a9264668db3f9342591b08b2cc3bbb08e235ba2372877b4650b70c6fb5423 TERMUX_PKG_BUILD_IN_SRC="yes" diff --git a/packages/dropbear/build.sh b/packages/dropbear/build.sh index 0d7618a9c..13ed6e214 100644 --- a/packages/dropbear/build.sh +++ b/packages/dropbear/build.sh @@ -2,10 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://matt.ucc.asn.au/dropbear/dropbear.html TERMUX_PKG_DESCRIPTION="Small SSH server and client" TERMUX_PKG_LICENSE="BSD" TERMUX_PKG_VERSION=2018.76 -TERMUX_PKG_REVISION=5 +TERMUX_PKG_REVISION=6 TERMUX_PKG_SRCURL=https://matt.ucc.asn.au/dropbear/releases/dropbear-${TERMUX_PKG_VERSION}.tar.bz2 TERMUX_PKG_SHA256=f2fb9167eca8cf93456a5fc1d4faf709902a3ab70dd44e352f3acbc3ffdaea65 -TERMUX_PKG_DEPENDS="libutil,termux-auth" +TERMUX_PKG_DEPENDS="termux-auth" TERMUX_PKG_CONFLICTS="openssh" TERMUX_PKG_BUILD_IN_SRC="yes" diff --git a/packages/dvtm/build.sh b/packages/dvtm/build.sh index bca018eff..4364fc6a2 100644 --- a/packages/dvtm/build.sh +++ b/packages/dvtm/build.sh @@ -2,11 +2,11 @@ TERMUX_PKG_HOMEPAGE=https://github.com/martanne/dvtm TERMUX_PKG_DESCRIPTION="Terminal tiling window manager" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_VERSION=0.15 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SRCURL=https://github.com/martanne/dvtm/archive/v${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=496eada13d8abaa8d772279746f78b0c6fed11b560599490f3e70ebc21197bf0 TERMUX_PKG_BUILD_IN_SRC=yes -TERMUX_PKG_DEPENDS="libutil, ncurses" +TERMUX_PKG_DEPENDS="ncurses" termux_step_pre_configure() { CFLAGS+=" $CPPFLAGS" diff --git a/packages/ecj4.6/build.sh b/packages/ecj4.6/build.sh deleted file mode 100644 index c547e9526..000000000 --- a/packages/ecj4.6/build.sh +++ /dev/null @@ -1,75 +0,0 @@ -TERMUX_PKG_HOMEPAGE=http://www.eclipse.org/jdt/core/ -TERMUX_PKG_DESCRIPTION="Eclipse Compiler for Java, for android 5 and 6" -TERMUX_PKG_LICENSE="EPL-2.0" -TERMUX_PKG_VERSION=4.6.2 -local _date=201611241400 -TERMUX_PKG_REVISION=1 -TERMUX_PKG_SHA256=9953dc2be829732e1b939106a71de018f660891220dbca559a5c7bff84883e51 -TERMUX_PKG_SRCURL=http://archive.eclipse.org/eclipse/downloads/drops${TERMUX_PKG_VERSION:0:1}/R-$TERMUX_PKG_VERSION-$_date/ecj-$TERMUX_PKG_VERSION.jar -TERMUX_PKG_PLATFORM_INDEPENDENT=true -TERMUX_PKG_CONFLICTS="ecj" - -termux_step_extract_package() { - mkdir $TERMUX_PKG_SRCDIR -} - -termux_step_make() { - local RAW_JAR=$TERMUX_PKG_CACHEDIR/ecj-${TERMUX_PKG_VERSION}.jar - termux_download $TERMUX_PKG_SRCURL \ - $RAW_JAR \ - $TERMUX_PKG_SHA256 - - mkdir -p $TERMUX_PREFIX/share/{dex,java} - $TERMUX_D8 \ - --classpath $ANDROID_HOME/platforms/android-$TERMUX_PKG_API_LEVEL/android.jar \ - --release \ - --min-api 21 \ - --output $TERMUX_PKG_TMPDIR \ - $RAW_JAR - - # Package classes.dex into jar: - cd $TERMUX_PKG_TMPDIR - jar cf ecj.jar classes.dex - # Add needed properties file to jar file: - jar xf $RAW_JAR org/eclipse/jdt/internal/compiler/batch/messages.properties - jar uf ecj.jar org/eclipse/jdt/internal/compiler/batch/messages.properties - jar xf $RAW_JAR org/eclipse/jdt/internal/compiler/problem/messages.properties - jar uf ecj.jar org/eclipse/jdt/internal/compiler/problem/messages.properties - jar xf $RAW_JAR org/eclipse/jdt/internal/compiler/messages.properties - jar uf ecj.jar org/eclipse/jdt/internal/compiler/messages.properties - jar xf $RAW_JAR org/eclipse/jdt/internal/compiler/parser/readableNames.props - jar uf ecj.jar org/eclipse/jdt/internal/compiler/parser/readableNames.props - for i in $(seq 1 24); do - jar xf $RAW_JAR org/eclipse/jdt/internal/compiler/parser/parser$i.rsc - jar uf ecj.jar org/eclipse/jdt/internal/compiler/parser/parser$i.rsc - done - # Move into place: - mv ecj.jar $TERMUX_PREFIX/share/dex/ecj.jar - - rm -rf android-jar - mkdir android-jar - cd android-jar - - # We need the android classes for JDT to compile against. - cp $ANDROID_HOME/platforms/android-28/android.jar . - unzip -q android.jar - rm -Rf android.jar resources.arsc res assets - jar cfM android.jar . - - cp $TERMUX_PKG_TMPDIR/android-jar/android.jar $TERMUX_PREFIX/share/java/android.jar - - # Bundle in an android.jar from an older API also, for those who want to - # build apps that run on older Android versions. - rm -Rf ./* - cp $ANDROID_HOME/platforms/android-21/android.jar android.jar - unzip -q android.jar - rm -Rf android.jar resources.arsc res assets - jar cfM android-21.jar . - cp $TERMUX_PKG_TMPDIR/android-jar/android-21.jar $TERMUX_PREFIX/share/java/ - - rm -Rf $TERMUX_PREFIX/bin/javac - install $TERMUX_PKG_BUILDER_DIR/ecj $TERMUX_PREFIX/bin/ecj - perl -p -i -e "s%\@TERMUX_PREFIX\@%${TERMUX_PREFIX}%g" $TERMUX_PREFIX/bin/ecj - install $TERMUX_PKG_BUILDER_DIR/ecj-21 $TERMUX_PREFIX/bin/ecj-21 - perl -p -i -e "s%\@TERMUX_PREFIX\@%${TERMUX_PREFIX}%g" $TERMUX_PREFIX/bin/ecj-21 -} diff --git a/packages/ecj4.6/ecj b/packages/ecj4.6/ecj deleted file mode 100755 index c0144acce..000000000 --- a/packages/ecj4.6/ecj +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -# -proc:none to disable annotation processing. -# -7 for java 1.7 compatibility. -dalvikvm -Xmx256m \ - -cp @TERMUX_PREFIX@/share/dex/ecj.jar \ - org.eclipse.jdt.internal.compiler.batch.Main \ - -proc:none \ - -7 \ - -cp @TERMUX_PREFIX@/share/java/android.jar \ - "$@" diff --git a/packages/ecj4.6/ecj-21 b/packages/ecj4.6/ecj-21 deleted file mode 100755 index c28bbdb26..000000000 --- a/packages/ecj4.6/ecj-21 +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -# -proc:none to disable annotation processing. -# -7 for java 1.7 compatibility. -dalvikvm -Xmx256m \ - -cp @TERMUX_PREFIX@/share/dex/ecj.jar \ - org.eclipse.jdt.internal.compiler.batch.Main \ - -proc:none \ - -7 \ - -cp @TERMUX_PREFIX@/share/java/android-21.jar \ - "$@" diff --git a/packages/erlang/build.sh b/packages/erlang/build.sh index 7c8aac874..22fe19faf 100644 --- a/packages/erlang/build.sh +++ b/packages/erlang/build.sh @@ -2,9 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://www.erlang.org/ TERMUX_PKG_DESCRIPTION="General-purpose concurrent functional programming language" TERMUX_PKG_LICENSE="Apache-2.0" TERMUX_PKG_VERSION=21.2.5 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=3ff578ab020a714be25d6787b81938df016db375692d4126a28f1303e6e9c165 TERMUX_PKG_SRCURL=https://github.com/erlang/otp/archive/OTP-$TERMUX_PKG_VERSION.tar.gz -TERMUX_PKG_DEPENDS="openssl, ncurses, libutil" +TERMUX_PKG_DEPENDS="openssl, ncurses" TERMUX_PKG_HOSTBUILD="yes" TERMUX_PKG_BUILD_IN_SRC="yes" TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--without-javac --with-ssl=${TERMUX_PREFIX} --with-termcap" diff --git a/packages/expect/build.sh b/packages/expect/build.sh index de49d9aad..561c1d4f1 100644 --- a/packages/expect/build.sh +++ b/packages/expect/build.sh @@ -2,9 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://core.tcl.tk/expect/index TERMUX_PKG_DESCRIPTION="Tool for automating interactive terminal applications" TERMUX_PKG_LICENSE="Public Domain" TERMUX_PKG_VERSION=5.45.4 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=49a7da83b0bdd9f46d04a04deec19c7767bb9a323e40c4781f89caf760b92c34 TERMUX_PKG_SRCURL=http://downloads.sourceforge.net/project/expect/Expect/${TERMUX_PKG_VERSION}/expect${TERMUX_PKG_VERSION}.tar.gz -TERMUX_PKG_DEPENDS="libutil, tcl" +TERMUX_PKG_DEPENDS="tcl" termux_step_pre_configure() { autoconf diff --git a/packages/fossil/build.sh b/packages/fossil/build.sh index 09a27f6b0..121282d62 100644 --- a/packages/fossil/build.sh +++ b/packages/fossil/build.sh @@ -1,9 +1,9 @@ TERMUX_PKG_HOMEPAGE=https://www.fossil-scm.org TERMUX_PKG_DESCRIPTION="DSCM with built-in wiki, http interface and server, tickets database" TERMUX_PKG_LICENSE="BSD 2-Clause" -TERMUX_PKG_API_LEVEL=23 TERMUX_PKG_MAINTAINER="Vishal Biswas @vishalbiswas" TERMUX_PKG_VERSION=2.8 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=6a32bec73de26ff5cc8bbb0b7b45360f4e4145931fd215ed91414ed190b3715d TERMUX_PKG_SRCURL=https://www.fossil-scm.org/index.html/uv/fossil-src-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="libsqlite, openssl" diff --git a/packages/gst-plugins-base/build.sh b/packages/gst-plugins-base/build.sh index b993a6d2a..bb5f5083c 100644 --- a/packages/gst-plugins-base/build.sh +++ b/packages/gst-plugins-base/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://gstreamer.freedesktop.org/ TERMUX_PKG_DESCRIPTION="GStreamer base plug-ins" TERMUX_PKG_LICENSE="LGPL-2.0" TERMUX_PKG_VERSION=1.14.4 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=ca6139490e48863e7706d870ff4e8ac9f417b56f3b9e4b3ce490c13b09a77461 TERMUX_PKG_SRCURL=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_DEPENDS="gstreamer, libjpeg-turbo, libopus, libpng, libvorbis" @@ -10,34 +11,3 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" --disable-examples --disable-pango " - -termux_step_post_make_install() { - for BINARY in gst-play-1.0 gst-discoverer-1.0 gst-device-monitor-1.0 - do - echo $BINARY - local LIBEXEC_BINARY=$TERMUX_PREFIX/libexec/$BINARY - local BIN_BINARY=$TERMUX_PREFIX/bin/$BINARY - local LIB_PATH=/system/lib - local VENDOR_LIB_PATH=/system/vendor/lib - if [ ! "$TERMUX_ARCH_BITS" == "32" ] - then - LIB_PATH+=64 - VENDOR_LIB_PATH+=64 - fi - - mv $BIN_BINARY $LIBEXEC_BINARY - local FFMPEG_LIBS="" lib - for lib in avcodec avfilter avformat avutil postproc swresample swscale; do - if [ -n "$FFMPEG_LIBS" ]; then FFMPEG_LIBS+=":"; fi - FFMPEG_LIBS+="$TERMUX_PREFIX/lib/lib${lib}.so" - done - - cat << EOF > $BIN_BINARY -#!/bin/sh -export LD_PRELOAD=$FFMPEG_LIBS -# Avoid linker errors due to libOpenSLES.so: -LD_LIBRARY_PATH=$LIB_PATH:$VENDOR_LIB_PATH:$TERMUX_PREFIX/lib exec $LIBEXEC_BINARY "\$@" -EOF - chmod +x $BIN_BINARY - done -} diff --git a/packages/gstreamer/build.sh b/packages/gstreamer/build.sh index 9854af999..c48b0f94b 100644 --- a/packages/gstreamer/build.sh +++ b/packages/gstreamer/build.sh @@ -2,6 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://gstreamer.freedesktop.org/ TERMUX_PKG_DESCRIPTION="Open source multimedia framework" TERMUX_PKG_LICENSE="LGPL-2.0" TERMUX_PKG_VERSION=1.14.4 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=f94f6696c5f05a3b3a9183e39c5f5c0b779f75a04c0efa497e7920afa985ffc7 TERMUX_PKG_SRCURL=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_DEPENDS="glib" @@ -16,27 +17,3 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" GLIB_GENMARSHAL=/usr/bin/glib-genmarshal GLIB_MKENUMS=/usr/bin/glib-mkenums " - -termux_step_post_make_install() { - for BINARY in gst-inspect-1.0 gst-stats-1.0 gst-typefind-1.0 gst-launch-1.0 - do - echo $BINARY - local LIBEXEC_BINARY=$TERMUX_PREFIX/libexec/$BINARY - local BIN_BINARY=$TERMUX_PREFIX/bin/$BINARY - local LIB_PATH=/system/lib - if [ ! "$TERMUX_ARCH_BITS" == "32" ] - then - LIB_PATH+=64 - fi - - mv $BIN_BINARY $LIBEXEC_BINARY - - cat << EOF > $BIN_BINARY -#!/bin/sh - -# Avoid linker errors due to libOpenSLES.so: -LD_LIBRARY_PATH=/system/lib64/:$TERMUX_PREFIX/lib exec $LIBEXEC_BINARY "\$@" -EOF - chmod +x $BIN_BINARY - done -} diff --git a/packages/hashdeep/build.sh b/packages/hashdeep/build.sh index f85ddd7bf..96e01889a 100644 --- a/packages/hashdeep/build.sh +++ b/packages/hashdeep/build.sh @@ -2,13 +2,9 @@ TERMUX_PKG_HOMEPAGE=http://md5deep.sourceforge.net/ TERMUX_PKG_DESCRIPTION="Programs to compute hashsums of arbitrary number of files recursively" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=4.4 -TERMUX_PKG_REVISION=3 +TERMUX_PKG_REVISION=4 TERMUX_PKG_SRCURL=https://github.com/jessek/hashdeep/archive/v$TERMUX_PKG_VERSION.tar.gz TERMUX_PKG_SHA256=ad78d42142f9a74fe8ec0c61bc78d6588a528cbb9aede9440f50b6ff477f3a7f -if [ "$TERMUX_ARCH_BITS" = 32 ]; then - # hashdeep requires 64-bit off_t. - TERMUX_PKG_API_LEVEL=24 -fi termux_step_pre_configure() { sh bootstrap.sh diff --git a/packages/imagemagick/build.sh b/packages/imagemagick/build.sh index 5da454947..d719c7adb 100644 --- a/packages/imagemagick/build.sh +++ b/packages/imagemagick/build.sh @@ -15,7 +15,6 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" --with-lzma --disable-openmp ac_cv_func_ftime=no -ac_cv_header_complex_h=no " TERMUX_PKG_RM_AFTER_INSTALL=" bin/Magick-config diff --git a/packages/inetutils/build.sh b/packages/inetutils/build.sh index e0c1d4302..952c416c4 100644 --- a/packages/inetutils/build.sh +++ b/packages/inetutils/build.sh @@ -2,10 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/inetutils/ TERMUX_PKG_DESCRIPTION="Collection of common network programs" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=1.9.4 -TERMUX_PKG_REVISION=6 +TERMUX_PKG_REVISION=7 TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/inetutils/inetutils-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_SHA256=849d96f136effdef69548a940e3e0ec0624fc0c81265296987986a0dd36ded37 -TERMUX_PKG_DEPENDS="readline, libutil" +TERMUX_PKG_DEPENDS="readline" # These are old cruft / not suited for android # (we --disable-traceroute as it requires root # in favour of tracepath, which sets up traceroute diff --git a/packages/joe/build.sh b/packages/joe/build.sh index 794b0a2b1..da176cf0f 100644 --- a/packages/joe/build.sh +++ b/packages/joe/build.sh @@ -1,9 +1,10 @@ TERMUX_PKG_HOMEPAGE=http://joe-editor.sourceforge.net TERMUX_PKG_DESCRIPTION="Wordstar like text editor" TERMUX_PKG_LICENSE="GPL-2.0" -TERMUX_PKG_DEPENDS="ncurses, libutil" +TERMUX_PKG_DEPENDS="ncurses" TERMUX_PKG_CONFLICTS="jupp" TERMUX_PKG_VERSION=4.6 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=495a0a61f26404070fe8a719d80406dc7f337623788e445b92a9f6de512ab9de TERMUX_PKG_SRCURL=https://sourceforge.net/projects/joe-editor/files/JOE%20sources/joe-${TERMUX_PKG_VERSION}/joe-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--disable-termcap" diff --git a/packages/jupp/build.sh b/packages/jupp/build.sh index a1c6656a7..61a9d84b6 100644 --- a/packages/jupp/build.sh +++ b/packages/jupp/build.sh @@ -2,9 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://www.mirbsd.org/jupp.htm TERMUX_PKG_DESCRIPTION="User friendly full screen text editor" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_MAINTAINER="Dominik George @Natureshadow" -TERMUX_PKG_DEPENDS="ncurses, libutil" +TERMUX_PKG_DEPENDS="ncurses" TERMUX_PKG_CONFLICTS="joe" TERMUX_PKG_VERSION=3.1jupp38 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=c5cbe3f97683f6e513f611a60531feefb9b877f8cea4c6e9087b48631f69ed40 TERMUX_PKG_SRCURL=http://www.mirbsd.org/MirOS/dist/jupp/joe-${TERMUX_PKG_VERSION}.tgz TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" diff --git a/packages/krb5/build.sh b/packages/krb5/build.sh index fd0ad7150..c99df8076 100644 --- a/packages/krb5/build.sh +++ b/packages/krb5/build.sh @@ -2,10 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://web.mit.edu/kerberos TERMUX_PKG_DESCRIPTION="The Kerberos network authentication system" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_VERSION=1.16.2 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=9f721e1fe593c219174740c71de514c7228a97d23eb7be7597b2ae14e487f027 TERMUX_PKG_SRCURL=https://fossies.org/linux/misc/krb5-$TERMUX_PKG_VERSION.tar.gz -TERMUX_PKG_DEPENDS="libandroid-support, libandroid-glob, readline, openssl, libutil, libdb" +TERMUX_PKG_DEPENDS="libandroid-support, libandroid-glob, readline, openssl, libdb" TERMUX_PKG_MAINTAINER="Vishal Biswas @vishalbiswas" TERMUX_PKG_CONFFILES="etc/krb5.conf var/krb5kdc/kdc.conf" TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--with-readline diff --git a/packages/lftp/build.sh b/packages/lftp/build.sh index a3ef73778..88162a1db 100644 --- a/packages/lftp/build.sh +++ b/packages/lftp/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://lftp.tech/ TERMUX_PKG_DESCRIPTION="FTP/HTTP client and file transfer program" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=4.8.4 -TERMUX_PKG_REVISION=3 +TERMUX_PKG_REVISION=4 TERMUX_PKG_SHA256=4ebc271e9e5cea84a683375a0f7e91086e5dac90c5d51bb3f169f75386107a62 TERMUX_PKG_SRCURL=https://lftp.tech/ftp/lftp-${TERMUX_PKG_VERSION}.tar.xz # (1) Android has dn_expand, but lftp assumes that dn_skipname then exists, which it does not on android. @@ -13,7 +13,7 @@ ac_cv_func_dn_expand=no --with-expat=$TERMUX_PREFIX --with-readline=$TERMUX_PREFIX " -TERMUX_PKG_DEPENDS="libexpat, openssl, readline, libutil, libidn2" +TERMUX_PKG_DEPENDS="libexpat, openssl, readline, libidn2" TERMUX_PKG_BUILD_DEPENDS="ncurses-dev" termux_step_pre_configure() { diff --git a/packages/libelf/config.h.in.patch b/packages/libelf/config.h.in.patch deleted file mode 100644 index f9cc61f9e..000000000 --- a/packages/libelf/config.h.in.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff -u -r ../elfutils-0.168/config.h.in ./config.h.in ---- ../elfutils-0.168/config.h.in 2016-12-28 10:33:20.000000000 +0100 -+++ ./config.h.in 2017-07-09 23:32:21.305290105 +0200 -@@ -1,4 +1,7 @@ - /* config.h.in. Generated from configure.ac by autoheader. */ -+#include /* for basename(3) */ -+#include /* for fputc_unlocked(3) */ -+#define DL_CALL_FCT(f, args) ((*(f)) args) - - /* Building with -fsanitize=undefined or not */ - #undef CHECK_UNDEFINED -@@ -117,4 +120,14 @@ - /* Define for large files, on AIX-style hosts. */ - #undef _LARGE_FILES - -+#ifdef __ANDROID__ -+# ifndef ANDROID_MEMPCPY -+# define ANDROID_MEMPCPY 1 -+static __inline__ void* mempcpy(void* dest, void const* src, size_t n) -+{ -+ return memcpy(dest, src, n) + n; -+} -+# endif -+#endif -+ - #include diff --git a/packages/libutil/build.sh b/packages/libutil/build.sh deleted file mode 100644 index 79e0ffad6..000000000 --- a/packages/libutil/build.sh +++ /dev/null @@ -1,11 +0,0 @@ -TERMUX_PKG_HOMEPAGE=https://refspecs.linuxbase.org/LSB_2.1.0/LSB-generic/LSB-generic/libutil.html -TERMUX_PKG_DESCRIPTION="Library with terminal functions" -TERMUX_PKG_LICENSE="NCSA" # same as ndk-sysroot -TERMUX_PKG_VERSION=0.4 -TERMUX_PKG_BUILD_IN_SRC=yes - -termux_step_make_install() { - CPPFLAGS+=" -std=c11 -Wall -Werror" - $CC $CPPFLAGS $CFLAGS -c -fPIC $TERMUX_PKG_BUILDER_DIR/pty.c -o pty.o - $CC -shared -fPIC $LDFLAGS -o $TERMUX_PREFIX/lib/libutil.so pty.o -} diff --git a/packages/libutil/pty.c b/packages/libutil/pty.c deleted file mode 100644 index 435e75e91..000000000 --- a/packages/libutil/pty.c +++ /dev/null @@ -1,68 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - - -int openpty(int* amaster, int* aslave, char* name, const struct termios* termp, const struct winsize* winp) -{ - char buf[512]; - - int master = open("/dev/ptmx", O_RDWR); - if (master == -1) return -1; - if (grantpt(master) || unlockpt(master) || ptsname_r(master, buf, sizeof buf)) goto fail; - - int slave = open(buf, O_RDWR | O_NOCTTY); - if (slave == -1) goto fail; - - /* XXX Should we ignore errors here? */ - if (termp) tcsetattr(slave, TCSAFLUSH, termp); - if (winp) ioctl(slave, TIOCSWINSZ, winp); - - *amaster = master; - *aslave = slave; - if (name != NULL) strcpy(name, buf); - return 0; - -fail: - close(master); - return -1; -} - - -int login_tty(int fd) -{ - setsid(); - if (ioctl(fd, TIOCSCTTY, NULL) == -1) return -1; - dup2(fd, 0); - dup2(fd, 1); - dup2(fd, 2); - if (fd > 2) close(fd); - return 0; -} - - -int forkpty(int* amaster, char* name, const struct termios* termp, const struct winsize* winp) -{ - int master, slave; - if (openpty(&master, &slave, name, termp, winp) == -1) { - return -1; - } - - int pid; - switch (pid = fork()) { - case -1: - return -1; - case 0: - close(master); - if (login_tty(slave)) _exit(1); - return 0; - default: - *amaster = master; - close (slave); - return pid; - } -} diff --git a/packages/luarocks/build.sh b/packages/luarocks/build.sh index 655bf8cef..255bcb076 100644 --- a/packages/luarocks/build.sh +++ b/packages/luarocks/build.sh @@ -1,14 +1,14 @@ TERMUX_PKG_HOMEPAGE=https://luarocks.org/ TERMUX_PKG_DESCRIPTION="Deployment and management system for Lua modules" TERMUX_PKG_LICENSE="BSD" -TERMUX_PKG_VERSION=2.4.4 -TERMUX_PKG_REVISION=1 -TERMUX_PKG_SHA256=3938df33de33752ff2c526e604410af3dceb4b7ff06a770bc4a240de80a1f934 +TERMUX_PKG_VERSION=3.0.4 TERMUX_PKG_SRCURL=https://luarocks.org/releases/luarocks-${TERMUX_PKG_VERSION}.tar.gz +TERMUX_PKG_SHA256=1236a307ca5c556c4fed9fdbd35a7e0e80ccf063024becc8c3bf212f37ff0edf TERMUX_PKG_DEPENDS="curl, lua" TERMUX_PKG_BUILD_DEPENDS="liblua-dev" TERMUX_PKG_BUILD_IN_SRC=yes TERMUX_PKG_PLATFORM_INDEPENDENT=yes +TERMUX_PKG_EXTRA_MAKE_ARGS="LUA=/usr/bin/lua" termux_step_configure() { ./configure --prefix=$TERMUX_PREFIX \ diff --git a/packages/luarocks/configure.patch b/packages/luarocks/configure.patch index 990fdeaed..bae7895d1 100644 --- a/packages/luarocks/configure.patch +++ b/packages/luarocks/configure.patch @@ -1,30 +1,40 @@ -diff -u -r ../luarocks-2.4.3/configure ./configure ---- ../luarocks-2.4.3/configure 2017-09-13 01:46:14.000000000 +0200 -+++ ./configure 2017-10-14 23:43:39.753730578 +0200 -@@ -305,26 +305,6 @@ +--- ./configure.orig 2019-03-10 15:10:39.226464224 +0100 ++++ ./configure 2019-03-10 15:13:22.879796367 +0100 +@@ -377,37 +377,6 @@ } - fi + done -if [ "$lua_interp_found" != "yes" ] -then -- [ "$LUA_VERSION_SET" ] && { interp="Lua $LUA_VERSION" ;} || { interp="Lua" ;} -- [ "$LUA_DIR_SET" -o "$LUA_BINDIR_SET" ] && { where="$LUA_BINDIR" ;} || { where="\$PATH" ;} -- echo "$interp interpreter not found in $where" -- die "You may want to use the flags --with-lua, --with-lua-bin and/or --lua-suffix. See --help." +- if [ "$LUA_VERSION_SET" ] +- then +- interp="Lua $LUA_VERSION" +- else +- interp="Lua" +- fi +- if [ "$LUA_DIR_SET" ] || [ "$LUA_BINDIR_SET" ] +- then +- where="$LUA_BINDIR" +- else +- where="\$PATH" +- fi +- echo "$(RED $interp interpreter not found) in $where" +- echo "You may want to use the flags $(BOLD --with-lua), $(BOLD --with-lua-bin) and/or $(BOLD --lua-version)" +- die "Run $(BOLD ./configure --help) for details." -fi - -if [ "$LUA_VERSION_SET" = "yes" ] -then -- echo_n "Checking if $LUA_BINDIR/lua$LUA_SUFFIX is Lua version $LUA_VERSION... " -- if detect_lua_version "$LUA_BINDIR/lua$LUA_SUFFIX" +- echo_n "Checking if $LUA_BINDIR/$LUA_INTERPRETER is Lua version $LUA_VERSION... " +- if detect_lua_version "$LUA_BINDIR/$LUA_INTERPRETER" - then - echo "yes" - else - echo "no" -- die "You may want to use the flags --with-lua, --with-lua-bin and/or --lua-suffix. See --help." +- die "You may want to use the flags --with-lua, --with-lua-bin and/or --lua-version. See --help." - fi -fi - - if [ "$LUA_INCDIR_SET" != "yes" ] - then - LUA_INCDIR="$LUA_DIR/include" + # ---------------------------------------- + # Additional checks + # ---------------------------------------- diff --git a/packages/luarocks/lua.lua.patch b/packages/luarocks/lua.lua.patch index a6fc30b47..a725d1958 100644 --- a/packages/luarocks/lua.lua.patch +++ b/packages/luarocks/lua.lua.patch @@ -1,12 +1,11 @@ -diff -u -r ../luarocks-2.4.0/src/luarocks/fs/lua.lua ./src/luarocks/fs/lua.lua ---- ../luarocks-2.4.0/src/luarocks/fs/lua.lua 2016-09-08 14:39:09.000000000 -0400 -+++ ./src/luarocks/fs/lua.lua 2016-09-26 09:13:06.062435573 -0400 -@@ -781,7 +781,7 @@ - assert(type(name) == "string") - name = dir.normalize(name) +--- ./src/luarocks/fs/lua.lua.orig 2019-03-10 15:14:28.333129223 +0100 ++++ ./src/luarocks/fs/lua.lua 2019-03-10 15:32:29.349788026 +0100 +@@ -961,7 +961,7 @@ + assert(type(name_pattern) == "string") + name_pattern = dir.normalize(name_pattern) -- return posix.mkdtemp((os.getenv("TMPDIR") or "/tmp") .. "/luarocks_" .. name:gsub(dir.separator, "_") .. "-XXXXXX") -+ return posix.mkdtemp((os.getenv("TMPDIR") or "@TERMUX_PREFIX@/tmp") .. "/luarocks_" .. name:gsub(dir.separator, "_") .. "-XXXXXX") +- return posix.mkdtemp((os.getenv("TMPDIR") or "/tmp") .. "/luarocks_" .. name_pattern:gsub("/", "_") .. "-XXXXXX") ++ return posix.mkdtemp((os.getenv("TMPDIR") or "@TERMUX_PREFIX@/tmp") .. "/luarocks_" .. name_pattern:gsub("/", "_") .. "-XXXXXX") end - end + end -- if posix.mkdtemp diff --git a/packages/luarocks/src-luarocks-cfg.lua.patch b/packages/luarocks/src-luarocks-cfg.lua.patch deleted file mode 100644 index 5dc991942..000000000 --- a/packages/luarocks/src-luarocks-cfg.lua.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- ../cfg.lua.orig 2018-05-25 06:56:17.183526289 +0000 -+++ ./src/luarocks/cfg.lua 2018-05-25 06:57:25.695490218 +0000 -@@ -517,10 +517,10 @@ - defaults.lib_extension = "so" - defaults.external_lib_extension = "so" - defaults.obj_extension = "o" -- defaults.external_deps_dirs = { "/usr/local", "/usr" } -- defaults.variables.LUA_BINDIR = site_config.LUA_BINDIR or "/usr/local/bin" -- defaults.variables.LUA_INCDIR = site_config.LUA_INCDIR or "/usr/local/include" -- defaults.variables.LUA_LIBDIR = site_config.LUA_LIBDIR or "/usr/local/lib" -+ defaults.external_deps_dirs = { "@TERMUX_PREFIX@/local", "@TERMUX_PREFIX@" } -+ defaults.variables.LUA_BINDIR = site_config.LUA_BINDIR or "@TERMUX_PREFIX@/local/bin" -+ defaults.variables.LUA_INCDIR = site_config.LUA_INCDIR or "@TERMUX_PREFIX@/local/include" -+ defaults.variables.LUA_LIBDIR = site_config.LUA_LIBDIR or "@TERMUX_PREFIX@/local/lib" - defaults.variables.CFLAGS = "-O2" - defaults.cmake_generator = "Unix Makefiles" - defaults.variables.CC = "gcc" diff --git a/packages/luarocks/src-luarocks-core-cfg.lua.patch b/packages/luarocks/src-luarocks-core-cfg.lua.patch new file mode 100644 index 000000000..0892b5087 --- /dev/null +++ b/packages/luarocks/src-luarocks-core-cfg.lua.patch @@ -0,0 +1,11 @@ +--- ./src/luarocks/core/cfg.lua~ 2018-10-30 18:31:40.000000000 +0100 ++++ ./src/luarocks/core/cfg.lua 2019-03-10 16:33:24.676428404 +0100 +@@ -358,7 +358,7 @@ + defaults.static_lib_extension = "a" + defaults.external_lib_extension = "so" + defaults.obj_extension = "o" +- defaults.external_deps_dirs = { "/usr/local", "/usr", "/" } ++ defaults.external_deps_dirs = { "@TERMUX_PREFIX@/local", "@TERMUX_PREFIX@" } + defaults.variables.CFLAGS = "-O2" + defaults.cmake_generator = "Unix Makefiles" + defaults.variables.CC = "gcc" diff --git a/packages/luarocks/unix-tools.lua.patch b/packages/luarocks/unix-tools.lua.patch index 3b5a9e05d..0f10788b9 100644 --- a/packages/luarocks/unix-tools.lua.patch +++ b/packages/luarocks/unix-tools.lua.patch @@ -1,12 +1,11 @@ -diff -u -r ../luarocks-2.4.0/src/luarocks/fs/unix/tools.lua ./src/luarocks/fs/unix/tools.lua ---- ../luarocks-2.4.0/src/luarocks/fs/unix/tools.lua 2016-09-08 14:39:09.000000000 -0400 -+++ ./src/luarocks/fs/unix/tools.lua 2016-09-26 09:19:08.200979160 -0400 -@@ -224,7 +224,7 @@ - assert(type(name) == "string") - name = dir.normalize(name) +--- ./src/luarocks/fs/unix/tools.lua.orig 2019-03-10 16:35:27.583094191 +0100 ++++ ./src/luarocks/fs/unix/tools.lua 2019-03-10 16:36:17.913093843 +0100 +@@ -300,7 +300,7 @@ + assert(type(name_pattern) == "string") + name_pattern = dir.normalize(name_pattern) -- local template = (os.getenv("TMPDIR") or "/tmp") .. "/luarocks_" .. name:gsub(dir.separator, "_") .. "-XXXXXX" -+ local template = (os.getenv("TMPDIR") or "@TERMUX_PREFIX@/tmp") .. "/luarocks_" .. name:gsub(dir.separator, "_") .. "-XXXXXX" +- local template = (os.getenv("TMPDIR") or "/tmp") .. "/luarocks_" .. name_pattern:gsub("/", "_") .. "-XXXXXX" ++ local template = (os.getenv("TMPDIR") or "@TERMUX_PREFIX@/tmp") .. "/luarocks_" .. name_pattern:gsub("/", "_") .. "-XXXXXX" local pipe = io.popen(vars.MKTEMP.." -d "..fs.Q(template)) local dirname = pipe:read("*l") pipe:close() diff --git a/packages/mosh/build.sh b/packages/mosh/build.sh index 3c7cc75c5..67f65e5af 100644 --- a/packages/mosh/build.sh +++ b/packages/mosh/build.sh @@ -2,10 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://mosh.org TERMUX_PKG_DESCRIPTION="Mobile shell that supports roaming and intelligent local echo" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=1.3.2 -TERMUX_PKG_REVISION=10 +TERMUX_PKG_REVISION=12 TERMUX_PKG_SHA256=da600573dfa827d88ce114e0fed30210689381bbdcff543c931e4d6a2e851216 TERMUX_PKG_SRCURL=https://github.com/mobile-shell/mosh/releases/download/mosh-${TERMUX_PKG_VERSION}/mosh-${TERMUX_PKG_VERSION}.tar.gz -TERMUX_PKG_DEPENDS="libandroid-support, libprotobuf, ncurses, openssl, openssh, libutil" +TERMUX_PKG_DEPENDS="libandroid-support, libprotobuf, ncurses, openssl, openssh" termux_step_pre_configure() { export PROTOC=$TERMUX_TOPDIR/libprotobuf/host-build/src/protoc @@ -17,7 +17,6 @@ termux_step_post_make_install() { mv mosh mosh.pl $CXX $CXXFLAGS $LDFLAGS \ -isystem $TERMUX_PREFIX/include \ - -lutil \ -DPACKAGE_VERSION=\"$TERMUX_PKG_VERSION\" \ -std=c++11 -Wall -Wextra -Werror \ $TERMUX_PKG_BUILDER_DIR/mosh.cc -o mosh diff --git a/packages/mpv/build.sh b/packages/mpv/build.sh index 70a5bad62..ac38baade 100644 --- a/packages/mpv/build.sh +++ b/packages/mpv/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://mpv.io/ TERMUX_PKG_DESCRIPTION="Command-line media player" TERMUX_PKG_LICENSE="GPL-3.0" TERMUX_PKG_VERSION=0.29.1 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=f9f9d461d1990f9728660b4ccb0e8cb5dce29ccaa6af567bec481b79291ca623 TERMUX_PKG_SRCURL=https://github.com/mpv-player/mpv/archive/v${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="ffmpeg, openal-soft, libandroid-support, libandroid-glob, libpulseaudio" @@ -36,33 +36,4 @@ termux_step_make_install() { # Use opensles audio out be default: mkdir -p $TERMUX_PREFIX/etc/mpv cp $TERMUX_PKG_BUILDER_DIR/mpv.conf $TERMUX_PREFIX/etc/mpv/mpv.conf - - # Try to work around OpenSL ES library clashes: - # Linking against libOpenSLES causes indirect linkage against - # libskia.so, which links against the platform libjpeg.so and - # libpng.so, which are not compatible with the Termux ones. - # - # On Android N also liblzma seems to conflict. - mkdir -p $TERMUX_PREFIX/libexec - mv $TERMUX_PREFIX/bin/mpv $TERMUX_PREFIX/libexec - - local SYSTEM_LIBFOLDER=lib64 - if [ $TERMUX_ARCH_BITS = 32 ]; then SYSTEM_LIBFOLDER=lib; fi - - echo "#!/bin/sh" > $TERMUX_PREFIX/bin/mpv - - # Work around issues on devices having ffmpeg libraries - # in a system vendor dir, reported by live_the_dream on #termux: - local FFMPEG_LIBS="" lib - for lib in avcodec avfilter avformat avutil postproc swresample swscale; do - if [ -n "$FFMPEG_LIBS" ]; then FFMPEG_LIBS+=":"; fi - FFMPEG_LIBS+="$TERMUX_PREFIX/lib/lib${lib}.so" - done - echo "export LD_PRELOAD=$FFMPEG_LIBS" >> $TERMUX_PREFIX/bin/mpv - - # /system/vendor/lib(64) needed for libqc-opt.so on - # a xperia z5 c, reported by BrainDamage on #termux: - echo "LD_LIBRARY_PATH=/system/$SYSTEM_LIBFOLDER:/system/vendor/$SYSTEM_LIBFOLDER:$TERMUX_PREFIX/lib exec $TERMUX_PREFIX/libexec/mpv \"\$@\"" >> $TERMUX_PREFIX/bin/mpv - - chmod +x $TERMUX_PREFIX/bin/mpv } diff --git a/packages/msmtp/build.sh b/packages/msmtp/build.sh index 52030e326..5c4b92c35 100644 --- a/packages/msmtp/build.sh +++ b/packages/msmtp/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://marlam.de/msmtp/ TERMUX_PKG_DESCRIPTION="Lightweight SMTP client" TERMUX_PKG_LICENSE="GPL-3.0" -TERMUX_PKG_API_LEVEL=23 TERMUX_PKG_VERSION=1.8.3 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=3cb2eefd33d048f0f82de100ef39a494e44fd1485e376ead31f733d2f36b92b4 TERMUX_PKG_SRCURL=https://marlam.de/msmtp/releases/msmtp-$TERMUX_PKG_VERSION.tar.xz TERMUX_PKG_DEPENDS="openssl, libidn2" diff --git a/packages/neovim/build.sh b/packages/neovim/build.sh index 1b7c3d674..3abbd0465 100644 --- a/packages/neovim/build.sh +++ b/packages/neovim/build.sh @@ -2,10 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://neovim.io/ TERMUX_PKG_DESCRIPTION="Ambitious Vim-fork focused on extensibility and agility (nvim)" TERMUX_PKG_LICENSE="Apache-2.0" TERMUX_PKG_VERSION=0.3.4 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=a641108bdebfaf319844ed46b1bf35d6f7c30ef5aeadeb29ba06e19c3274bc0e TERMUX_PKG_SRCURL=https://github.com/neovim/neovim/archive/v${TERMUX_PKG_VERSION}.tar.gz -TERMUX_PKG_DEPENDS="libuv, libmsgpack, libandroid-support, libvterm, libtermkey, libutil, liblua, libunibilium" +TERMUX_PKG_DEPENDS="libuv, libmsgpack, libandroid-support, libvterm, libtermkey, liblua, libunibilium" TERMUX_PKG_HOSTBUILD=true TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" -DENABLE_JEMALLOC=OFF diff --git a/packages/newsboat/build.sh b/packages/newsboat/build.sh index bcf8022c5..6fbc21e22 100644 --- a/packages/newsboat/build.sh +++ b/packages/newsboat/build.sh @@ -1,9 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://newsboat.org/ TERMUX_PKG_DESCRIPTION="RSS/Atom feed reader for the text console" TERMUX_PKG_LICENSE="MIT" -TERMUX_PKG_API_LEVEL=24 TERMUX_PKG_VERSION=2.14.1 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SHA256=4bd0d3b1901a3fc7e0ef73b800587c28181a57b175c36b547dbd84636330df66 TERMUX_PKG_SRCURL=https://newsboat.org/releases/${TERMUX_PKG_VERSION}/newsboat-${TERMUX_PKG_VERSION}.tar.xz TERMUX_PKG_DEPENDS="libandroid-support, libandroid-glob, json-c, libsqlite, libcurl, libxml2, stfl, ncurses, openssl" diff --git a/packages/openssh/build.sh b/packages/openssh/build.sh index 6c113966c..492871ed2 100644 --- a/packages/openssh/build.sh +++ b/packages/openssh/build.sh @@ -2,10 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://www.openssh.com/ TERMUX_PKG_DESCRIPTION="Secure shell for logging into a remote machine" TERMUX_PKG_LICENSE="BSD" TERMUX_PKG_VERSION=7.9p1 -TERMUX_PKG_REVISION=5 +TERMUX_PKG_REVISION=6 TERMUX_PKG_SHA256=6b4b3ba2253d84ed3771c8050728d597c91cfce898713beb7b64a305b6f11aad TERMUX_PKG_SRCURL=https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${TERMUX_PKG_VERSION}.tar.gz -TERMUX_PKG_DEPENDS="libandroid-support, ldns, openssl, libedit, libutil, termux-auth, krb5" +TERMUX_PKG_DEPENDS="libandroid-support, ldns, openssl, libedit, termux-auth, krb5" TERMUX_PKG_CONFLICTS="dropbear" # --disable-strip to prevent host "install" command to use "-s", which won't work for target binaries: TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" diff --git a/packages/play-audio/build.sh b/packages/play-audio/build.sh index 7a49bf3a6..a991679c5 100644 --- a/packages/play-audio/build.sh +++ b/packages/play-audio/build.sh @@ -1,23 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://github.com/termux/play-audio -TERMUX_PKG_DESCRIPTION="Simple commandline audio player for Android" +TERMUX_PKG_DESCRIPTION="Simple command line audio player for Android" TERMUX_PKG_LICENSE="Apache-2.0" TERMUX_PKG_VERSION=0.5 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SHA256=e114123c4b337cddb1d4aa6c3287574d8c81b2dc4b3abc07ce21616fa14f9e82 TERMUX_PKG_SRCURL=https://github.com/termux/play-audio/archive/v${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_BUILD_IN_SRC=yes - -termux_step_post_make_install() { - local LIBEXEC_BINARY=$TERMUX_PREFIX/libexec/play-audio - local BIN_BINARY=$TERMUX_PREFIX/bin/play-audio - mv $BIN_BINARY $LIBEXEC_BINARY - - cat << EOF > $BIN_BINARY -#!/bin/sh - -# Avoid linker errors due to libOpenSLES.so: -LD_PRELOAD=$TERMUX_PREFIX/lib/libc++_shared.so LD_LIBRARY_PATH= exec $LIBEXEC_BINARY "\$@" -EOF - - chmod +x $BIN_BINARY -} diff --git a/packages/python/build.sh b/packages/python/build.sh index 5fb7c5e67..c5b3c64b7 100644 --- a/packages/python/build.sh +++ b/packages/python/build.sh @@ -1,12 +1,12 @@ TERMUX_PKG_HOMEPAGE=https://python.org/ TERMUX_PKG_DESCRIPTION="Python 3 programming language intended to enable clear programs" TERMUX_PKG_LICENSE="PythonPL" -TERMUX_PKG_DEPENDS="libandroid-support, ncurses, readline, libffi, openssl, libutil, libbz2, libsqlite, gdbm, ncurses-ui-libs, libcrypt, liblzma" +TERMUX_PKG_DEPENDS="libandroid-support, ncurses, readline, libffi, openssl, libbz2, libsqlite, gdbm, ncurses-ui-libs, libcrypt, liblzma" # Python.h includes crypt.h: TERMUX_PKG_DEVPACKAGE_DEPENDS="libcrypt-dev" _MAJOR_VERSION=3.7 TERMUX_PKG_VERSION=${_MAJOR_VERSION}.2 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SHA256=d83fe8ce51b1bb48bbcf0550fd265b9a75cdfdfa93f916f9e700aef8444bf1bb TERMUX_PKG_SRCURL=https://www.python.org/ftp/python/${TERMUX_PKG_VERSION}/Python-${TERMUX_PKG_VERSION}.tar.xz diff --git a/packages/python2/build.sh b/packages/python2/build.sh index b08b92948..d67185551 100644 --- a/packages/python2/build.sh +++ b/packages/python2/build.sh @@ -5,13 +5,14 @@ TERMUX_PKG_LICENSE="PythonPL" # openssl for ensurepip. # libbz2 for the bz2 module. # ncurses-ui-libs for the curses.panel module. -TERMUX_PKG_DEPENDS="libandroid-support, ncurses, readline, libffi, openssl, libutil, libbz2, libsqlite, gdbm, ncurses-ui-libs, libcrypt" +TERMUX_PKG_DEPENDS="libandroid-support, ncurses, readline, libffi, openssl, libbz2, libsqlite, gdbm, ncurses-ui-libs, libcrypt" # Python.h includes crypt.h: TERMUX_PKG_DEVPACKAGE_DEPENDS="libcrypt-dev" TERMUX_PKG_HOSTBUILD=true _MAJOR_VERSION=2.7 TERMUX_PKG_VERSION=${_MAJOR_VERSION}.16 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=f222ef602647eecb6853681156d32de4450a2c39f4de93bd5b20235f2e660ed7 TERMUX_PKG_SRCURL=https://www.python.org/ftp/python/${TERMUX_PKG_VERSION}/Python-${TERMUX_PKG_VERSION}.tar.xz diff --git a/packages/ruby/build.sh b/packages/ruby/build.sh index 243f3493c..459c38a8d 100644 --- a/packages/ruby/build.sh +++ b/packages/ruby/build.sh @@ -3,11 +3,11 @@ TERMUX_PKG_DESCRIPTION="Dynamic programming language with a focus on simplicity TERMUX_PKG_LICENSE="BSD 2-Clause" _MAJOR_VERSION=2.6 TERMUX_PKG_VERSION=${_MAJOR_VERSION}.1 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SHA256=47b629808e9fd44ce1f760cdf3ed14875fc9b19d4f334e82e2cf25cb2898f2f2 TERMUX_PKG_SRCURL=https://cache.ruby-lang.org/pub/ruby/${_MAJOR_VERSION}/ruby-${TERMUX_PKG_VERSION}.tar.xz # libbffi is used by the fiddle extension module: -TERMUX_PKG_DEPENDS="libandroid-support, libffi, libgmp, readline, openssl, libutil, libyaml" +TERMUX_PKG_DEPENDS="libandroid-support, libffi, libgmp, readline, openssl, libyaml" # Needed to fix compilation on android: TERMUX_PKG_EXTRA_CONFIGURE_ARGS="ac_cv_func_setgroups=no ac_cv_func_setresuid=no ac_cv_func_setreuid=no --enable-rubygems" # The gdbm module seems to be very little used: diff --git a/packages/screen/build.sh b/packages/screen/build.sh index e13ba2c0c..848993dd5 100644 --- a/packages/screen/build.sh +++ b/packages/screen/build.sh @@ -2,10 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/screen/ TERMUX_PKG_DESCRIPTION="Terminal multiplexer with VT100/ANSI terminal emulation" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=4.6.2 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=1b6922520e6a0ce5e28768d620b0f640a6631397f95ccb043b70b91bb503fa3a TERMUX_PKG_SRCURL=https://mirrors.kernel.org/gnu/screen/screen-${TERMUX_PKG_VERSION}.tar.gz -TERMUX_PKG_DEPENDS="ncurses, libcrypt, libutil" +TERMUX_PKG_DEPENDS="ncurses, libcrypt" TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" --disable-socket-dir --enable-colors256 diff --git a/packages/socat/build.sh b/packages/socat/build.sh index 4799ed7ce..6379e939c 100644 --- a/packages/socat/build.sh +++ b/packages/socat/build.sh @@ -1,9 +1,9 @@ TERMUX_PKG_HOMEPAGE=http://www.dest-unreach.org/socat/ TERMUX_PKG_DESCRIPTION="Relay for bidirectional data transfer between two independent data channels" TERMUX_PKG_LICENSE="GPL-2.0" -TERMUX_PKG_DEPENDS="openssl, readline, libutil" +TERMUX_PKG_DEPENDS="openssl, readline" TERMUX_PKG_VERSION=1.7.3.2 -TERMUX_PKG_REVISION=3 +TERMUX_PKG_REVISION=4 TERMUX_PKG_SRCURL=http://www.dest-unreach.org/socat/download/socat-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=ce3efc17e3e544876ebce7cd6c85b3c279fda057b2857fcaaf67b9ab8bdaf034 TERMUX_PKG_EXTRA_CONFIGURE_ARGS="ac_header_resolv_h=no ac_cv_c_compiler_gnu=yes ac_compiler_gnu=yes" # sc_cv_sys_crdly_shift=9 sc_cv_sys_csize_shift=4 sc_cv_sys_tabdly_shift=11" diff --git a/packages/stunnel/build.sh b/packages/stunnel/build.sh index cc90f2ff1..810201b5f 100644 --- a/packages/stunnel/build.sh +++ b/packages/stunnel/build.sh @@ -2,9 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://www.stunnel.org/ TERMUX_PKG_DESCRIPTION="Socket wrapper which can provide TLS support to ordinary applications" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=5.50 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=951d92502908b852a297bd9308568f7c36598670b84286d3e05d4a3a550c0149 TERMUX_PKG_SRCURL=https://www.stunnel.org/downloads/stunnel-${TERMUX_PKG_VERSION}.tar.gz -TERMUX_PKG_DEPENDS="openssl, libutil" +TERMUX_PKG_DEPENDS="openssl" TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--disable-shared --with-ssl=$TERMUX_PREFIX --disable-fips" TERMUX_PKG_RM_AFTER_INSTALL="bin/stunnel3 share/man/man8/stunnel.*.8" diff --git a/packages/tar/mkfifoat.patch b/packages/tar/mkfifoat.patch deleted file mode 100644 index e824dfadf..000000000 --- a/packages/tar/mkfifoat.patch +++ /dev/null @@ -1,30 +0,0 @@ -mkfifoat() is available in Android only after API 23. We can't use tar's -implementation of mkfifioat() since it will use tar's implementation of -mknodat(). This will cause infinite recursion in file gnu/at-func.c and -segfault. - -Snippet of backtrace: -.... -#9 0x000000555559819c in mknodat (fd=-100, file=0x7fb7c90050 "sda", mode=25008, dev=2048) at /home/builder/.termux-build/tar/src/gnu/at-func.c:75 -#10 0x000000555559819c in mknodat (fd=-100, file=0x7fb7c90050 "sda", mode=25008, dev=2048) at /home/builder/.termux-build/tar/src/gnu/at-func.c:75 -#11 0x000000555559819c in mknodat (fd=-100, file=0x7fb7c90050 "sda", mode=25008, dev=2048) at /home/builder/.termux-build/tar/src/gnu/at-func.c:75 -#12 0x000000555559819c in mknodat (fd=-100, file=0x7fb7c90050 "sda", mode=25008, dev=2048) at /home/builder/.termux-build/tar/src/gnu/at-func.c:75 -#13 0x000000555556a9d4 in extract_node (file_name=0x7fb7c90050 "sda", typeflag=52) at /home/builder/.termux-build/tar/src/src/extract.c:1447 -#14 0x0000005555568f38 in extract_archive () at /home/builder/.termux-build/tar/src/src/extract.c:1709 -.... - -diff -uNr tar-1.30/src/extract.c tar-1.30.mod/src/extract.c ---- tar-1.30/src/extract.c 2017-12-16 23:23:12.000000000 +0200 -+++ tar-1.30.mod/src/extract.c 2017-12-25 14:31:31.541886176 +0200 -@@ -42,6 +42,11 @@ - # define fchown(fd, uid, gid) (errno = ENOSYS, -1) - #endif - -+static int -+mkfifoat(int fd, const char* path, mode_t mode) { -+ return mknodat(fd, path, (mode & ~S_IFMT) | S_IFIFO, 0); -+} -+ - /* Return true if an error number ERR means the system call is - supported in this case. */ - static bool diff --git a/packages/tintin++/build.sh b/packages/tintin++/build.sh index 046c80655..75110c363 100644 --- a/packages/tintin++/build.sh +++ b/packages/tintin++/build.sh @@ -2,10 +2,11 @@ TERMUX_PKG_HOMEPAGE=http://tintin.sourceforge.net TERMUX_PKG_DESCRIPTION="Classic text-based MUD client" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=2.01.7 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=fb7c8970855aa57f23bff7859ced0a63f0644f220037d2deb083d6ee2f41760c TERMUX_PKG_SRCURL=https://downloads.sourceforge.net/project/tintin/TinTin%2B%2B%20Source%20Code/${TERMUX_PKG_VERSION:0:4}/tintin-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_EXTRA_CONFIGURE_ARGS="ac_cv_file__dev_ptmx=no" -TERMUX_PKG_DEPENDS="pcre, libgnutls, libutil" +TERMUX_PKG_DEPENDS="pcre, libgnutls" TERMUX_PKG_BUILD_IN_SRC=yes termux_step_post_extract_package() { diff --git a/packages/tmate/build.sh b/packages/tmate/build.sh index b1362bae2..ed446dbd1 100644 --- a/packages/tmate/build.sh +++ b/packages/tmate/build.sh @@ -2,10 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://tmate.io TERMUX_PKG_DESCRIPTION="Terminal multiplexer with instant terminal sharing" TERMUX_PKG_LICENSE="BSD" TERMUX_PKG_VERSION=2.2.1 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SRCURL=https://github.com/tmate-io/tmate/archive/${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=d9c2ac59f42e65aac5f500f0548ea8056fd79c9c5285e5af324d833e2a84c305 -TERMUX_PKG_DEPENDS="libandroid-support, libevent, libmsgpack, libssh, libutil, ncurses" +TERMUX_PKG_DEPENDS="libandroid-support, libevent, libmsgpack, libssh, ncurses" termux_step_pre_configure() { CFLAGS+=" -DIOV_MAX=1024" diff --git a/packages/tmux/build.sh b/packages/tmux/build.sh index 3e68fc01d..4a60e7687 100644 --- a/packages/tmux/build.sh +++ b/packages/tmux/build.sh @@ -2,9 +2,9 @@ TERMUX_PKG_HOMEPAGE=https://tmux.github.io/ TERMUX_PKG_DESCRIPTION="Terminal multiplexer" TERMUX_PKG_LICENSE="BSD" # Link against libandroid-support for wcwidth(), see https://github.com/termux/termux-packages/issues/224 -TERMUX_PKG_DEPENDS="ncurses, libevent, libutil, libandroid-support, libandroid-glob" +TERMUX_PKG_DEPENDS="ncurses, libevent, libandroid-support, libandroid-glob" TERMUX_PKG_VERSION=2.8 -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=3 TERMUX_PKG_SHA256=7f6bf335634fafecff878d78de389562ea7f73a7367f268b66d37ea13617a2ba TERMUX_PKG_SRCURL=https://github.com/tmux/tmux/releases/download/${TERMUX_PKG_VERSION}/tmux-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_BUILD_IN_SRC=yes diff --git a/packages/ttyd/build.sh b/packages/ttyd/build.sh index 5d83e3878..1afcb6e3a 100644 --- a/packages/ttyd/build.sh +++ b/packages/ttyd/build.sh @@ -2,9 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://tsl0922.github.io/ttyd/ TERMUX_PKG_DESCRIPTION="Command-line tool for sharing terminal over the web" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_VERSION=1.4.2 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=ff1a66b418df6cd741868a8ea84f69cd63f15e52e3fa117641ec57d3c37a1315 TERMUX_PKG_SRCURL=https://github.com/tsl0922/ttyd/archive/$TERMUX_PKG_VERSION.tar.gz -TERMUX_PKG_DEPENDS="json-c, libwebsockets, libutil" +TERMUX_PKG_DEPENDS="json-c, libwebsockets" TERMUX_PKG_EXTRA_CONFIGURE_ARGS="-DCMAKE_XXD=$TERMUX_PKG_TMPDIR/xxd" termux_step_pre_configure() { diff --git a/packages/util-linux/build.sh b/packages/util-linux/build.sh index 524ebd640..89065c392 100644 --- a/packages/util-linux/build.sh +++ b/packages/util-linux/build.sh @@ -2,10 +2,10 @@ TERMUX_PKG_HOMEPAGE=https://en.wikipedia.org/wiki/Util-linux TERMUX_PKG_DESCRIPTION="Miscellaneous system utilities" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_VERSION=2.33.1 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=c14bd9f3b6e1792b90db87696e87ec643f9d63efa0a424f092a5a6b2f2dbef21 TERMUX_PKG_SRCURL=https://www.kernel.org/pub/linux/utils/util-linux/v${TERMUX_PKG_VERSION:0:4}/util-linux-${TERMUX_PKG_VERSION}.tar.xz -TERMUX_PKG_DEPENDS="ncurses, libutil, libcrypt" +TERMUX_PKG_DEPENDS="ncurses, libcrypt" TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" ac_cv_func_setns=yes ac_cv_func_unshare=yes diff --git a/packages/vifm/build.sh b/packages/vifm/build.sh index 3aa4277b0..c53946696 100644 --- a/packages/vifm/build.sh +++ b/packages/vifm/build.sh @@ -1,8 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://vifm.info/ TERMUX_PKG_DESCRIPTION="File manager with vi like keybindings" TERMUX_PKG_LICENSE="GPL-2.0" -TERMUX_PKG_API_LEVEL=24 TERMUX_PKG_VERSION=0.10 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SHA256=e5681c9e560e23d9deeec3b5b12e0ccad82612d9592c00407f3dd75cf5066548 TERMUX_PKG_SRCURL=https://github.com/vifm/vifm/archive/v${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_DEPENDS="ncurses, file" diff --git a/scripts/build/termux_step_extract_into_massagedir.sh b/scripts/build/termux_step_extract_into_massagedir.sh index 9ad1c8c09..fdbbb1a95 100644 --- a/scripts/build/termux_step_extract_into_massagedir.sh +++ b/scripts/build/termux_step_extract_into_massagedir.sh @@ -5,6 +5,7 @@ termux_step_extract_into_massagedir() { cd $TERMUX_PREFIX tar -N "$TERMUX_BUILD_TS_FILE" \ --exclude='lib/libc++_shared.so' --exclude='lib/libstdc++.so' \ + --exclude='lib/libutil.so' \ -czf "$TARBALL_ORIG" . # Extract tar in order to massage it diff --git a/scripts/build/termux_step_setup_toolchain.sh b/scripts/build/termux_step_setup_toolchain.sh index 4ca48dcf4..c7166e975 100644 --- a/scripts/build/termux_step_setup_toolchain.sh +++ b/scripts/build/termux_step_setup_toolchain.sh @@ -24,9 +24,8 @@ termux_step_setup_toolchain() { export READELF=$TERMUX_HOST_PLATFORM-readelf export STRIP=$TERMUX_HOST_PLATFORM-strip - # Android 7 started to support DT_RUNPATH (but not DT_RPATH), so we may want - # LDFLAGS+="-Wl,-rpath=$TERMUX_PREFIX/lib -Wl,--enable-new-dtags" - # and no longer remove DT_RUNPATH in termux-elf-cleaner. + # Android 7 started to support DT_RUNPATH (but not DT_RPATH). + LDFLAGS+=" -Wl,-rpath=$TERMUX_PREFIX/lib -Wl,--enable-new-dtags" if [ "$TERMUX_ARCH" = "arm" ]; then # https://developer.android.com/ndk/guides/standalone_toolchain.html#abi_compatibility: @@ -156,6 +155,13 @@ termux_step_setup_toolchain() { mv $_TERMUX_TOOLCHAIN_TMPDIR $TERMUX_STANDALONE_TOOLCHAIN fi + # On Android 7, libutil functionality is provided by libc. + # But many programs still may search for libutil. + if [ ! -f $TERMUX_PREFIX/lib/libutil.so ]; then + mkdir -p "$TERMUX_PREFIX/lib" + echo 'INPUT(-lc)' > $TERMUX_PREFIX/lib/libutil.so + fi + local _STL_LIBFILE_NAME=libc++_shared.so if [ ! -f $TERMUX_PREFIX/lib/libstdc++.so ]; then # Setup libc++_shared.so in $PREFIX/lib and libstdc++.so as a link to it, diff --git a/scripts/build/termux_step_setup_variables.sh b/scripts/build/termux_step_setup_variables.sh index fd1dc6cfd..ac836aadd 100644 --- a/scripts/build/termux_step_setup_variables.sh +++ b/scripts/build/termux_step_setup_variables.sh @@ -7,7 +7,7 @@ termux_step_setup_variables() { : "${TERMUX_PREFIX:="/data/data/com.termux/files/usr"}" : "${TERMUX_ANDROID_HOME:="/data/data/com.termux/files/home"}" : "${TERMUX_DEBUG:=""}" - : "${TERMUX_PKG_API_LEVEL:="21"}" + : "${TERMUX_PKG_API_LEVEL:="24"}" : "${TERMUX_NO_CLEAN:="false"}" : "${TERMUX_QUIET_BUILD:="false"}" : "${TERMUX_DEBDIR:="${TERMUX_SCRIPTDIR}/debs"}" @@ -18,7 +18,7 @@ termux_step_setup_variables() { : "${TERMUX_PACKAGES_DIRECTORIES:="packages"}" if [ -z ${TERMUX_REPO_URL+x} ]; then - TERMUX_REPO_URL=(https://termux.net) + TERMUX_REPO_URL=(https://dl.bintray.com/termux/termux-packages-24) # TERMUX_REPO_URL=(https://termux.net https://grimler.se https://dl.bintray.com/xeffyr/unstable-packages) fi if [ -z ${TERMUX_REPO_DISTRIBUTION+x} ]; then diff --git a/scripts/package_uploader.sh b/scripts/package_uploader.sh new file mode 100755 index 000000000..28cb3d598 --- /dev/null +++ b/scripts/package_uploader.sh @@ -0,0 +1,522 @@ +#!/bin/bash +## +## Package uploader for Bintray. +## +## Leonid Plyushch (C) 2019 +## +## This program is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see . +## + +set -e + +TERMUX_PACKAGES_BASEDIR=$(realpath "$(dirname "$0")/../") +if [ ! -d "$TERMUX_PACKAGES_BASEDIR/packages" ]; then + echo "[!] Cannot find directory 'packages'." >&2 + exit 1 +fi + +# In this variable a package metadata will be stored. +declare -gA PACKAGE_METADATA + +# Initialize default configuration. +DEBFILES_DIR_PATH="$TERMUX_PACKAGES_BASEDIR/debs" +PACKAGE_DELETE_MODE=false +KEEP_OLD_VERSION=false + +# Bintray-specific configuration. +BINTRAY_REPO_NAME="termux-packages-24" +BINTRAY_REPO_GITHUB="termux/termux-packages" +BINTRAY_REPO_DISTRIBUTION="stable" +BINTRAY_REPO_COMPONENT="main" + +# Bintray credentials that should be set as external environment +# variables by user. +: "${BINTRAY_USERNAME:=""}" +: "${BINTRAY_API_KEY:=""}" +: "${BINTRAY_GPG_SUBJECT:=""}" +: "${BINTRAY_GPG_PASSPHRASE:=""}" + +# If BINTRAY_GPG_SUBJECT is not specified, then signing will be +# done with gpg key of subject '$BINTRAY_USERNAME'. +if [ -z "$BINTRAY_GPG_SUBJECT" ]; then + BINTRAY_GPG_SUBJECT="$BINTRAY_USERNAME" +fi + +# Packages are built and uploaded for Termux organisation. +BINTRAY_SUBJECT="termux" + +################################################################### + +json_metadata_dump() { + local pkg_licenses + + SAVEIFS=$IFS; IFS=","; + for license in ${PACKAGE_METADATA['LICENSES']}; do + pkg_licenses+="\"$(echo "${license}" | sed -r 's/^\s*(\S+(\s+\S+)*)\s*$/\1/')\"," + done + pkg_licenses=${pkg_licenses%%,}; IFS=$SAVEIFS; + +cat << EOF +{ + "name": "${PACKAGE_METADATA['NAME']}", + "desc": "${PACKAGE_METADATA['DESCRIPTION']}", + "version": "${PACKAGE_METADATA['VERSION_FULL']}", + "licenses": [${pkg_licenses}], + "vcs_url": "https://github.com/${BINTRAY_REPO_GITHUB}", + "website_url": "${PACKAGE_METADATA['WEBSITE_URL']}", + "issue_tracker_url": "https://github.com/${BINTRAY_REPO_GITHUB}/issues", + "github_repo": "${BINTRAY_REPO_GITHUB}", + "public_download_numbers": "true", + "public_stats": "false" +} +EOF +} + +delete_package() { + local package_name=$1 + local curl_response + local http_status_code + local api_response_message + + echo -n "[@] Deleting published package '$package_name' from remote... " >&2 + curl_response=$( + curl \ + --silent \ + --user "${BINTRAY_USERNAME}:${BINTRAY_API_KEY}" \ + --request DELETE \ + --write-out "|%{http_code}" \ + "https://api.bintray.com/packages/${BINTRAY_SUBJECT}/${BINTRAY_REPO_NAME}/${package_name}" + ) + + http_status_code=$(echo "$curl_response" | cut -d'|' -f2) + api_response_message=$(echo "$curl_response" | cut -d'|' -f1 | jq -r .message) + + case "$http_status_code" in + 200) + echo "done" >&2 + ;; + 404) + echo "no-need" >&2 + ;; + *) + echo "failure" >&2 + echo "[!] $api_response_message" >&2 + exit 1 + ;; + esac +} + +upload_package() { + local package_name=$1 + local http_status_code + local api_response_message + declare -A debfiles_catalog + + for arch in all aarch64 arm i686 x86_64; do + # Regular package. + debfiles_catalog["${package_name}_${PACKAGE_METADATA['VERSION_FULL']}_${arch}.deb"]=${arch} + + # Development package. + debfiles_catalog["${package_name}-dev_${PACKAGE_METADATA['VERSION_FULL']}_${arch}.deb"]=${arch} + + # Discover subpackages. + for file in $(find "$TERMUX_PACKAGES_BASEDIR/packages/$package_name/" -maxdepth 1 -type f -iname \*.subpackage.sh | sort); do + file=$(basename "$file") + debfiles_catalog["${file%%.subpackage.sh}_${PACKAGE_METADATA['VERSION_FULL']}_${arch}.deb"]=${arch} + done + + unset debfiles + done + + # Filter out nonexistent files. + for item in "${!debfiles_catalog[@]}"; do + if [ ! -f "$DEBFILES_DIR_PATH/$item" ]; then + unset debfiles_catalog["$item"] + fi + done + + # Verify that our catalog is not empty. + if [ ${#debfiles_catalog[@]} -eq 0 ]; then + echo "[!] No *.deb files to upload." >&2 + exit 1 + fi + + if ! $KEEP_OLD_VERSION; then + # Delete entry for package (with all related debfiles). + delete_package "$package_name" + fi + + # Create new entry for package. + echo -n "[@] Creating entry for version '${PACKAGE_METADATA['VERSION_FULL']}' of package '$package_name'... " >&2 + curl_response=$( + curl \ + --silent \ + --user "${BINTRAY_USERNAME}:${BINTRAY_API_KEY}" \ + --request POST \ + --header "Content-Type: application/json" \ + --data "$(json_metadata_dump)" \ + --write-out "|%{http_code}" \ + "https://api.bintray.com/packages/${BINTRAY_SUBJECT}/${BINTRAY_REPO_NAME}" + ) + + http_status_code=$(echo "$curl_response" | cut -d'|' -f2) + api_response_message=$(echo "$curl_response" | cut -d'|' -f1 | jq -r .message) + + case "$http_status_code" in + 201) + echo "done" >&2 + ;; + 409) + echo "no-need" >&2 + ;; + *) + echo "failure" >&2 + echo "[!] $api_response_message" >&2 + exit 1 + ;; + esac + + for item in "${!debfiles_catalog[@]}"; do + local package_arch=${debfiles_catalog[$item]} + + echo -n "[*] Uploading '$item'... " >&2 + curl_response=$( + curl \ + --silent \ + --user "${BINTRAY_USERNAME}:${BINTRAY_API_KEY}" \ + --request PUT \ + --header "X-Bintray-Debian-Distribution: $BINTRAY_REPO_DISTRIBUTION" \ + --header "X-Bintray-Debian-Component: $BINTRAY_REPO_COMPONENT" \ + --header "X-Bintray-Debian-Architecture: $package_arch" \ + --header "X-Bintray-Package: ${package_name}" \ + --header "X-Bintray-Version: ${PACKAGE_METADATA['VERSION_FULL']}" \ + --upload-file "$DEBFILES_DIR_PATH/$item" \ + --write-out "|%{http_code}" \ + "https://api.bintray.com/content/${BINTRAY_SUBJECT}/${BINTRAY_REPO_NAME}/${package_arch}/${item}" + ) + + http_status_code=$(echo "$curl_response" | cut -d'|' -f2) + api_response_message=$(echo "$curl_response" | cut -d'|' -f1 | jq -r .message) + + case "$http_status_code" in + 201) + echo "done" >&2 + ;; + 409) + echo "unchanged" >&2 + ;; + *) + echo "failure" >&2 + echo "[!] $api_response_message" >&2 + exit 1 + ;; + esac + done + + # Publishing package only after uploading all it's files. This will prevent + # spawning multiple metadata-generation jobs and will allow to sign metadata + # with maintainer's key. + echo -n "[@] Publishing package '$package_name'... " >&2 + curl_response=$( + curl \ + --silent \ + --user "${BINTRAY_USERNAME}:${BINTRAY_API_KEY}" \ + --request POST \ + --header "Content-Type: application/json" \ + --data "{\"subject\":\"${BINTRAY_GPG_SUBJECT}\",\"passphrase\":\"$BINTRAY_GPG_PASSPHRASE\"}" \ + --write-out "|%{http_code}" \ + "https://api.bintray.com/content/${BINTRAY_SUBJECT}/${BINTRAY_REPO_NAME}/${package_name}/${PACKAGE_METADATA['VERSION_FULL']}/publish" + ) + + http_status_code=$(echo "$curl_response" | cut -d'|' -f2) + api_response_message=$(echo "$curl_response" | cut -d'|' -f1 | jq -r .message) + + case "$http_status_code" in + 200) + echo "done" >&2 + ;; + *) + echo "failure" >&2 + echo "[!] $api_response_message" >&2 + exit 1 + ;; + esac +} + +extract_variable_from_buildsh() { + local extracted_value + local variable_name + variable_name=$1 + + extracted_value=$( + set -o noglob + + # When sourcing external code, do not expose variables + # with sensitive information. + unset BINTRAY_API_KEY + unset BINTRAY_GPG_PASSPHRASE + unset BINTRAY_GPG_SUBJECT + unset BINTRAY_SUBJECT + unset BINTRAY_USERNAME + + [ -e "$TERMUX_PACKAGES_BASEDIR/scripts/properties.sh" ] && . "$TERMUX_PACKAGES_BASEDIR/scripts/properties.sh" + . "$TERMUX_PACKAGES_BASEDIR/packages/$package_name/build.sh" + echo "${!variable_name}" + set +o noglob + ) + + echo "$extracted_value" +} + +process_packages() { + local package_name + local buildsh_path + + for package_name in "$@"; do + buildsh_path="$TERMUX_PACKAGES_BASEDIR/packages/$package_name/build.sh" + + if [ -f "$buildsh_path" ]; then + PACKAGE_METADATA["NAME"]="$package_name" + + PACKAGE_METADATA["LICENSES"]=$(extract_variable_from_buildsh "TERMUX_PKG_LICENSE" "$buildsh_path") + if [ -z "${PACKAGE_METADATA['LICENSES']}" ]; then + echo "[!] Mandatory field 'TERMUX_PKG_LICENSE' of package '$package_name' is empty." >&2 + exit 1 + fi + + PACKAGE_METADATA["DESCRIPTION"]=$(extract_variable_from_buildsh "TERMUX_PKG_DESCRIPTION" "$buildsh_path") + if [ -z "${PACKAGE_METADATA['DESCRIPTION']}" ]; then + echo "[!] Mandatory field 'TERMUX_PKG_DESCRIPTION' of package '$package_name' is empty." >&2 + exit 1 + fi + + PACKAGE_METADATA["WEBSITE_URL"]=$(extract_variable_from_buildsh "TERMUX_PKG_HOMEPAGE" "$buildsh_path") + if [ -z "${PACKAGE_METADATA['WEBSITE_URL']}" ]; then + echo "[!] Mandatory field 'TERMUX_PKG_HOMEPAGE' of package '$package_name' is empty." >&2 + exit 1 + fi + + PACKAGE_METADATA["VERSION"]=$(extract_variable_from_buildsh "TERMUX_PKG_VERSION" "$buildsh_path") + if [ -z "${PACKAGE_METADATA['VERSION']}" ]; then + echo "[!] Mandatory field 'TERMUX_PKG_VERSION' of package '$package_name' is empty." >&2 + exit 1 + fi + + PACKAGE_METADATA["REVISION"]=$(extract_variable_from_buildsh "TERMUX_PKG_REVISION" "$buildsh_path") + if [ -n "${PACKAGE_METADATA['REVISION']}" ]; then + PACKAGE_METADATA["VERSION_FULL"]="${PACKAGE_METADATA['VERSION']}-${PACKAGE_METADATA['REVISION']}" + else + if [ "${PACKAGE_METADATA['VERSION']}" != "${PACKAGE_METADATA['VERSION']/-/}" ]; then + PACKAGE_METADATA["VERSION_FULL"]="${PACKAGE_METADATA['VERSION']}-0" + else + PACKAGE_METADATA["VERSION_FULL"]="${PACKAGE_METADATA['VERSION']}" + fi + fi + else + echo "[!] Cannot find 'build.sh' for package '$package_name'." >&2 + exit 1 + fi + + if $PACKAGE_DELETE_MODE; then + delete_package "$package_name" + else + upload_package "$package_name" + fi + done + + # In deletion mode we need to do metadata recalculation separately + # to ensure that it will be signed with maintainer's key. + if $PACKAGE_DELETE_MODE; then + local curl_response + local http_status_code + local api_response_message + + echo -n "[@] Requesting metadata recalculation... " >&2 + curl_response=$( + curl \ + --silent \ + --user "${BINTRAY_USERNAME}:${BINTRAY_API_KEY}" \ + --request POST \ + --header "Content-Type: application/json" \ + --data "{\"subject\":\"${BINTRAY_GPG_SUBJECT}\",\"passphrase\":\"$BINTRAY_GPG_PASSPHRASE\"}" \ + --write-out "|%{http_code}" \ + "https://api.bintray.com/calc_metadata/${BINTRAY_SUBJECT}/${BINTRAY_REPO_NAME}/" + ) + + http_status_code=$(echo "$curl_response" | cut -d'|' -f2) + api_response_message=$(echo "$curl_response" | cut -d'|' -f1 | jq -r .message) + + case "$http_status_code" in + 202) + echo "done" >&2 + ;; + *) + echo "failure" >&2 + echo "[!] $api_response_message" >&2 + ;; + esac + fi +} + +show_usage() { + { + echo + echo "Usage: package_uploader.sh [OPTIONS] [package name] ..." + echo + echo "A command line client for Bintray designed for managing" + echo "Termux *.deb packages." + echo + echo "==========================================================" + echo + echo "Primarily indended to be used by Gitlab CI for automatic" + echo "package uploads but it can be used for manual uploads too." + echo + echo "By default, this script will create a new version entries" + echo "for specified packages and upload *.deb files for each of" + echo "created entries." + echo + echo "Note that if version entry already exists, it will be" + echo "deleted with all associated *.deb files to prevent file" + echo "name collisions and wasting of available space." + echo + echo "If such behaviour is unwanted, use option '-k' which will" + echo "not touch available versions." + echo + echo "Before using this script, check that you have all" + echo "necessary credentials for accessing repository." + echo + echo "Credentials are specified via environment variables:" + echo + echo " BINTRAY_USERNAME - User name." + echo " BINTRAY_API_KEY - User's API key." + echo " BINTRAY_GPG_SUBJECT - Owner of GPG key." + echo " BINTRAY_GPG_PASSPHRASE - GPG key passphrase." + echo + echo "==========================================================" + echo + echo "Options:" + echo + echo " -d, --delete Completely delete the selected" + echo " packages from the repository instead" + echo " of uploading." + echo + echo " -h, --help Print this help." + echo + echo " -k, --keep-old Prevent deletion of previous versions" + echo " when submitting package. Useful when" + echo " doing uploads within same package" + echo " versions or just to make downgrading" + echo " possible." + echo + echo " -p, --path [path] Specify a directory containing *.deb" + echo " files ready for uploading." + echo " Default is './debs'." + echo + echo "==========================================================" + } >&2 +} + +################################################################### + +while getopts ":-:hdkp:" opt; do + case "$opt" in + -) + case "$OPTARG" in + delete) + PACKAGE_DELETE_MODE=true + ;; + help) + show_usage + exit 0 + ;; + path) + DEBFILES_DIR_PATH="${!OPTIND}" + OPTIND=$((OPTIND + 1)) + + if [ -z "$DEBFILES_DIR_PATH" ]; then + echo "[!] Option '--${OPTARG}' requires argument." >&2 + show_usage + exit 1 + fi + + if [ ! -d "$DEBFILES_DIR_PATH" ]; then + echo "[!] Directory '$DEBFILES_DIR_PATH' is not exist." >&2 + show_usage + exit 1 + fi + ;; + keep-old) + KEEP_OLD_VERSION=true + ;; + *) + echo "[!] Invalid option '$OPTARG'." >&2 + show_usage + exit 1 + ;; + esac + ;; + d) + PACKAGE_DELETE_MODE=true + ;; + h) + show_usage + exit 0 + ;; + k) + KEEP_OLD_VERSION=true + ;; + p) + DEBFILES_DIR_PATH="${OPTARG}" + if [ ! -d "$DEBFILES_DIR_PATH" ]; then + echo "[!] Directory '$DEBFILES_DIR_PATH' is not exist." >&2 + show_usage + exit 1 + fi + ;; + *) + echo "[!] Invalid option '-${OPTARG}'." >&2 + show_usage + exit 1 + ;; + esac +done +shift $((OPTIND - 1)) + +if [ $# -gt 0 ]; then + # These variables should never be changed. + readonly DEBFILES_DIR_PATH + readonly PACKAGE_DELETE_MODE + readonly TERMUX_PACKAGES_BASEDIR + + # Without Bintray credentials this script is useless. + if [ -z "$BINTRAY_USERNAME" ]; then + echo "[!] Variable 'BINTRAY_USERNAME' is not set." >&2 + exit 1 + fi + if [ -z "$BINTRAY_API_KEY" ]; then + echo "[!] Variable 'BINTRAY_API_KEY' is not set." >&2 + exit 1 + fi + if [ -z "$BINTRAY_GPG_SUBJECT" ]; then + echo "[!] Variable 'BINTRAY_GPG_SUBJECT' is not set." >&2 + exit 1 + fi + + process_packages "$@" + exit 0 +else + echo "[!] No packages specified." >&2 + show_usage + exit 1 +fi