diff --git a/.github/workflows/repo-update.yml b/.github/workflows/repo-update.yml index 66afd22795..673e0ba3b3 100644 --- a/.github/workflows/repo-update.yml +++ b/.github/workflows/repo-update.yml @@ -105,7 +105,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Clone repository - run: git clone https://github.com/termux-pacman/termux-packages.git termux-packages-pacman + run: git clone -b "${{ github.head_ref || github.ref_name }}" https://github.com/termux-pacman/termux-packages.git termux-packages-pacman - name: Get RESULT.* files uses: actions/download-artifact@v4.1.7 with: @@ -129,7 +129,8 @@ jobs: continue fi fi - if ! grep -q '^'${BUILD_SOURCE}'$' ../REBUILD-LIST-BUILD && [ $(($(expr $(expr $(date +%s) - $(git log -n 1 --date=format:'%s' --format=%cd -- $(dirname ${BUILD_SOURCE}))) / 3600) > 8)) = 1 ]; then + if ! grep -q "^${BUILD_SOURCE}$" ../REBUILD-LIST-BUILD && \ + [ $(($(expr $(expr $(date +%s) - $(git log -n 1 --date=format:'%s' --format=%cd -- $(dirname ${BUILD_SOURCE}))) / 3600) > 8)) = 1 ]; then echo "${BUILD_SOURCE}" >> ../REBUILD-LIST-BUILD fi done @@ -153,6 +154,7 @@ jobs: fi curl --header "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -s -X GET -G \ "https://api.github.com/repos/${{ github.repository }}/issues" -o ../LIST-ISSUES + cat ../LIST-ISSUES } # Edit @@ -168,10 +170,10 @@ jobs: list_files=" " for i in $(git status -s packages root-packages x11-packages | awk '{print $2}'); do dir_sp=(${i//// }) - if ! grep -q " ${dir_sp[0]}/${dir_sp[1]} " <<< "$list_files"; then + if ! grep -q " ${dir_sp[0]}/${dir_sp[1]} " <<< "$list_files" && ! grep -q "^${dir_sp[1]}$" ./pkgignore; then list_files+="${dir_sp[0]}/${dir_sp[1]} " source_build="${dir_sp[0]}/${dir_sp[1]}/build.sh" - if grep -q '^'${source_build}'$' ../REBUILD-LIST-BUILD; then + if grep -q "^${source_build}$" ../REBUILD-LIST-BUILD; then sed -i "/^${source_build////'\/'}$/d" ../REBUILD-LIST-BUILD fi fi @@ -224,7 +226,7 @@ jobs: git remote set-url origin "https://termux-pacman-bot:${{ secrets.TOKEN }}@github.com/termux-pacman/termux-packages.git" commit "Update system repo" git add . - git reset packages root-packages x11-packages README.md SECURITY.md repo.json + git reset packages root-packages x11-packages README.md SECURITY.md repo.json pkgignore { git commit -m "Update repo" if [ "${GITHUB_EVENT}" != "pull_request" ]; then diff --git a/.gitignore b/.gitignore index c77fc94371..108df79eeb 100644 --- a/.gitignore +++ b/.gitignore @@ -21,9 +21,3 @@ scripts/.vagrant/ /packages/*/cache /root-packages/*/cache /x11-packages/*/cache - -# Packages not supported for pacman -/packages/root-repo/ -/packages/x11-repo/ -/packages/tur-repo/ -/packages/glibc-repo/ diff --git a/packages/glibc-repo/build.sh b/packages/glibc-repo/build.sh new file mode 100644 index 0000000000..6ac61d7369 --- /dev/null +++ b/packages/glibc-repo/build.sh @@ -0,0 +1,26 @@ +TERMUX_PKG_HOMEPAGE=https://github.com/termux/glibc-packages +TERMUX_PKG_DESCRIPTION="A package repository containing glibc-based programs and libraries" +TERMUX_PKG_LICENSE="Apache-2.0" +TERMUX_PKG_MAINTAINER="@termux-pacman" +TERMUX_PKG_VERSION=1.0 +TERMUX_PKG_AUTO_UPDATE=false +TERMUX_PKG_SKIP_SRC_EXTRACT=true +TERMUX_PKG_PLATFORM_INDEPENDENT=true + +termux_step_make_install() { + mkdir -p $TERMUX_PREFIX/etc/apt/sources.list.d + { + echo "# The glibc termux repository, with cloudflare cache" + echo "deb https://packages-cf.termux.dev/apt/termux-glibc/ glibc stable" + echo "# The glibc termux repository, without cloudflare cache" + echo "# deb https://packages.termux.dev/apt/termux-glibc/ glibc stable" + } > $TERMUX_PREFIX/etc/apt/sources.list.d/glibc.list +} + +termux_step_create_debscripts() { + [ "$TERMUX_PACKAGE_FORMAT" = "pacman" ] && return 0 + echo "#!$TERMUX_PREFIX/bin/sh" > postinst + echo "echo Downloading updated package list ..." >> postinst + echo "apt update" >> postinst + echo "exit 0" >> postinst +} diff --git a/packages/openjdk-17/build.sh b/packages/openjdk-17/build.sh index 3d601290d3..38695e5768 100644 --- a/packages/openjdk-17/build.sh +++ b/packages/openjdk-17/build.sh @@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="Java development kit and runtime" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_MAINTAINER="@termux" TERMUX_PKG_VERSION="17.0.15" -TERMUX_PKG_REVISION=2 +TERMUX_PKG_REVISION=1 TERMUX_PKG_SRCURL=https://github.com/openjdk/jdk17u/archive/refs/tags/jdk-${TERMUX_PKG_VERSION}-ga.tar.gz TERMUX_PKG_SHA256=ae623441d95d0563690f85edad765a12fc89bbb89ed1877ec5cf677a5ae4fbd7 TERMUX_PKG_AUTO_UPDATE=true @@ -55,7 +55,7 @@ termux_step_pre_configure() { termux_step_configure() { local jdk_ldflags="-L${TERMUX_PREFIX}/lib \ - -Wl,-rpath=$TERMUX_PREFIX/lib/jvm/java-17-openjdk/lib \ + -Wl,-rpath=$TERMUX_PREFIX/lib/jvm/java-21-openjdk/lib \ -Wl,-rpath=${TERMUX_PREFIX}/lib -Wl,--enable-new-dtags" bash ./configure \ --disable-precompiled-headers \ @@ -122,102 +122,21 @@ termux_step_post_make_install() { for manpage in *.1; do gzip "$manpage" done - - # Make sure that our alternatives file is up to date. - binaries="$(find $TERMUX_PREFIX/lib/jvm/java-17-openjdk/bin -executable -type f | xargs -I{} basename "{}" | xargs echo)" - manpages="$(find $TERMUX_PREFIX/lib/jvm/java-17-openjdk/man/man1 -name "*.1.gz" | xargs -I{} basename "{}" | xargs echo)" - - local failure=false - for binary in $binaries; do - grep -q "lib/jvm/java-17-openjdk/bin/${binary}$" "$TERMUX_PKG_BUILDER_DIR"/openjdk-17.alternatives || { - echo "ERROR: Missing entry for binary: $binary in openjdk-17.alternatives" - failure=true - } - done - for manpage in $manpages; do - grep -q "lib/jvm/java-17-openjdk/man/man1/${manpage}$" "$TERMUX_PKG_BUILDER_DIR"/openjdk-17.alternatives || { - echo "ERROR: Missing entry for manpage: $manpage in openjdk-17.alternatives" - failure=true - } - done - if [[ "$failure" = true ]]; then - termux_error_exit "ERROR: openjdk-17.alternatives is not up to date, please update it." - fi } termux_step_create_debscripts() { - # For older versions of openjdk-17 and openjdk-21, we used to provide different alternatives for each binary and manpage. - # This script removes those alternatives if the user is upgrading from an older version. - # - # Using slaves for all binaries and manpages makes it much easier to switch between different versions of openjdk. - local old_alternatives=( - java-profile - jar - jarsigner - java - javac - javadoc - javap - jcmd - jconsole - jdb - jdeprscan - jdeps - jfr - jhsdb - jimage - jinfo - jlink - jmap - jmod - jpackage - jps - jrunscript - jshell - jstack - jstat - jstatd - jwebserver - keytool - rmiregistry - serialver - jar.1.gz - jarsigner.1.gz - java.1.gz - javac.1.gz - javadoc.1.gz - javap.1.gz - jcmd.1.gz - jconsole.1.gz - jdb.1.gz - jdeprscan.1.gz - jdeps.1.gz - jfr.1.gz - jhsdb.1.gz - jinfo.1.gz - jlink.1.gz - jmap.1.gz - jmod.1.gz - jpackage.1.gz - jps.1.gz - jrunscript.1.gz - jshell.1.gz - jstack.1.gz - jstat.1.gz - jstatd.1.gz - jwebserver.1.gz - keytool.1.gz - rmiregistry.1.gz - serialver.1.gz - ) - echo 'if [ "$#" = "3" ] && dpkg --compare-versions "$2" le "17.0.15-1"; then' > ./preinst - echo ' echo "Removing older alternatives for openjdk-21 and openjdk-17"' >> ./preinst - echo ' echo "This may take a while if mandoc package is installed, please wait..."' >> ./preinst - echo ' echo "Newer versions of openjdk-21 and openjdk-17 change how alternatives are handled."' >> ./preinst - echo ' echo "Instead of having different alternatives for each manpage and binary, now you can switch java versions much easily using \"update-alternatives --config java\""' >> ./preinst - echo ' echo "This should switch all java binaries, manpages, and bash profile for java in a single command instead of switching everything manually"' >> ./preinst - for alternative in "${old_alternatives[@]}"; do - echo " update-alternatives --remove-all ${alternative} || :" >> ./preinst + binaries="$(find $TERMUX_PREFIX/lib/jvm/java-17-openjdk/bin -executable -type f | xargs -I{} basename "{}" | xargs echo)" + manpages="$(find $TERMUX_PREFIX/lib/jvm/java-17-openjdk/man/man1 -name "*.1.gz" | xargs -I{} basename "{}" | xargs echo)" + + for hook in postinst prerm; do + sed -e "s|@TERMUX_PREFIX@|${TERMUX_PREFIX}|g" \ + -e "s|@binaries@|${binaries}|g" \ + -e "s|@manpages@|${manpages}|g" \ + "$TERMUX_PKG_BUILDER_DIR/hooks/$TERMUX_PACKAGE_FORMAT/$hook.in" > $hook + chmod 700 $hook done - echo 'fi' >> ./preinst + + if [ "$TERMUX_PACKAGE_FORMAT" = "pacman" ]; then + echo "post_install" > postupg + fi } diff --git a/packages/openjdk-17/hooks/debian/postinst.in b/packages/openjdk-17/hooks/debian/postinst.in new file mode 100644 index 0000000000..c0f6ccf6d2 --- /dev/null +++ b/packages/openjdk-17/hooks/debian/postinst.in @@ -0,0 +1,18 @@ +#!@TERMUX_PREFIX@/bin/sh + +if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ]; then + if [ -x "@TERMUX_PREFIX@/bin/update-alternatives" ]; then + update-alternatives --install @TERMUX_PREFIX@/etc/profile.d/java.sh java-profile @TERMUX_PREFIX@/lib/jvm/java-17-openjdk/etc/profile.d/java.sh 40 + for tool in @binaries@; do + update-alternatives --install \ + @TERMUX_PREFIX@/bin/$tool $tool \ + @TERMUX_PREFIX@/lib/jvm/java-17-openjdk/bin/$tool 40 + done + + for manpage in @manpages@; do + update-alternatives --install \ + @TERMUX_PREFIX@/share/man/man1/$manpage $manpage \ + @TERMUX_PREFIX@/lib/jvm/java-17-openjdk/man/man1/$manpage 60 + done + fi +fi diff --git a/packages/openjdk-17/hooks/debian/prerm.in b/packages/openjdk-17/hooks/debian/prerm.in new file mode 100644 index 0000000000..81cb0fd30d --- /dev/null +++ b/packages/openjdk-17/hooks/debian/prerm.in @@ -0,0 +1,14 @@ +#!@TERMUX_PREFIX@/bin/sh + +if [ "$1" != "upgrade" ]; then + if [ -x "@TERMUX_PREFIX@/bin/update-alternatives" ]; then + update-alternatives --remove java-profile @TERMUX_PREFIX@/lib/jvm/java-17-openjdk/etc/profile.d/java.sh + for tool in @binaries@; do + update-alternatives --remove $tool @TERMUX_PREFIX@/lib/jvm/java-17-openjdk/bin/$tool + done + + for manpage in @manpages@; do + update-alternatives --remove $manpage @TERMUX_PREFIX@/lib/jvm/java-17-openjdk/man/man1/$manpage + done + fi +fi diff --git a/packages/openjdk-17/hooks/pacman/postinst.in b/packages/openjdk-17/hooks/pacman/postinst.in new file mode 100644 index 0000000000..fd29901cc9 --- /dev/null +++ b/packages/openjdk-17/hooks/pacman/postinst.in @@ -0,0 +1,25 @@ +#!@TERMUX_PREFIX@/bin/sh + +if [ -f @TERMUX_PREFIX@/etc/profile.d/java.sh ]; then + raelpath=$(readlink @TERMUX_PREFIX@/etc/profile.d/java.sh) + sp_raelpath=(${raelpath//// }) + if [ "${sp_raelpath[-4]}" != "java-17-openjdk" ]; then + echo "==> Attention, the commands will be reconfigured to openjdk-17. If you want to stay on \"${sp_raelpath[-4]}\" then reinstall the package" + fi +fi + +echo "==> Setting up the openjdk-17 package..." + +for i in @binaries@; do + ln -sfr "@TERMUX_PREFIX@/lib/jvm/java-17-openjdk/bin/${i}" "@TERMUX_PREFIX@/bin/${i}" +done + +mkdir -p @TERMUX_PREFIX@/share/man/man1 +for i in @manpages@; do + ln -sfr "@TERMUX_PREFIX@/lib/jvm/java-17-openjdk/man/man1/${i}" "@TERMUX_PREFIX@/share/man/man1/${i}" +done + +mkdir -p @TERMUX_PREFIX@/etc/profile.d +ln -sfr @TERMUX_PREFIX@/lib/jvm/java-17-openjdk/etc/profile.d/java.sh @TERMUX_PREFIX@/etc/profile.d/java.sh + +echo "==> Done" diff --git a/packages/openjdk-17/hooks/pacman/prerm.in b/packages/openjdk-17/hooks/pacman/prerm.in new file mode 100644 index 0000000000..d8c26bf36a --- /dev/null +++ b/packages/openjdk-17/hooks/pacman/prerm.in @@ -0,0 +1,19 @@ +#!@TERMUX_PREFIX@/bin/sh + +if [ -f @TERMUX_PREFIX@/etc/profile.d/java.sh ]; then + raelpath=$(readlink @TERMUX_PREFIX@/etc/profile.d/java.sh) + sp_raelpath=(${raelpath//// }) + if [ "${sp_raelpath[-4]}" != "java-17-openjdk" ]; then + return + fi +fi + +for i in @binaries@; do + rm "@TERMUX_PREFIX@/bin/${i}" +done + +for i in @manpages@; do + rm "@TERMUX_PREFIX@/share/man/man1/${i}" +done + +rm @TERMUX_PREFIX@/etc/profile.d/java.sh diff --git a/packages/openjdk-17/openjdk-17.alternatives b/packages/openjdk-17/openjdk-17.alternatives deleted file mode 100644 index 330b94f3d3..0000000000 --- a/packages/openjdk-17/openjdk-17.alternatives +++ /dev/null @@ -1,62 +0,0 @@ -Name: java -Link: bin/java -Alternative: lib/jvm/java-17-openjdk/bin/java -Dependents: - etc/profile.d/java.sh java-profile lib/jvm/java-17-openjdk/etc/profile.d/java.sh - bin/jar jar lib/jvm/java-17-openjdk/bin/jar - bin/jarsigner jarsigner lib/jvm/java-17-openjdk/bin/jarsigner - bin/javac javac lib/jvm/java-17-openjdk/bin/javac - bin/javadoc javadoc lib/jvm/java-17-openjdk/bin/javadoc - bin/javap javap lib/jvm/java-17-openjdk/bin/javap - bin/jcmd jcmd lib/jvm/java-17-openjdk/bin/jcmd - bin/jconsole jconsole lib/jvm/java-17-openjdk/bin/jconsole - bin/jdb jdb lib/jvm/java-17-openjdk/bin/jdb - bin/jdeprscan jdeprscan lib/jvm/java-17-openjdk/bin/jdeprscan - bin/jdeps jdeps lib/jvm/java-17-openjdk/bin/jdeps - bin/jfr jfr lib/jvm/java-17-openjdk/bin/jfr - bin/jhsdb jhsdb lib/jvm/java-17-openjdk/bin/jhsdb - bin/jimage jimage lib/jvm/java-17-openjdk/bin/jimage - bin/jinfo jinfo lib/jvm/java-17-openjdk/bin/jinfo - bin/jlink jlink lib/jvm/java-17-openjdk/bin/jlink - bin/jmap jmap lib/jvm/java-17-openjdk/bin/jmap - bin/jmod jmod lib/jvm/java-17-openjdk/bin/jmod - bin/jpackage jpackage lib/jvm/java-17-openjdk/bin/jpackage - bin/jps jps lib/jvm/java-17-openjdk/bin/jps - bin/jrunscript jrunscript lib/jvm/java-17-openjdk/bin/jrunscript - bin/jshell jshell lib/jvm/java-17-openjdk/bin/jshell - bin/jstack jstack lib/jvm/java-17-openjdk/bin/jstack - bin/jstat jstat lib/jvm/java-17-openjdk/bin/jstat - bin/jstatd jstatd lib/jvm/java-17-openjdk/bin/jstatd - bin/keytool keytool lib/jvm/java-17-openjdk/bin/keytool - bin/rmiregistry rmiregistry lib/jvm/java-17-openjdk/bin/rmiregistry - bin/serialver serialver lib/jvm/java-17-openjdk/bin/serialver - share/man/man1/jar.1.gz jar.1.gz lib/jvm/java-17-openjdk/man/man1/jar.1.gz - share/man/man1/jarsigner.1.gz jarsigner.1.gz lib/jvm/java-17-openjdk/man/man1/jarsigner.1.gz - share/man/man1/java.1.gz java.1.gz lib/jvm/java-17-openjdk/man/man1/java.1.gz - share/man/man1/javac.1.gz javac.1.gz lib/jvm/java-17-openjdk/man/man1/javac.1.gz - share/man/man1/javadoc.1.gz javadoc.1.gz lib/jvm/java-17-openjdk/man/man1/javadoc.1.gz - share/man/man1/javap.1.gz javap.1.gz lib/jvm/java-17-openjdk/man/man1/javap.1.gz - share/man/man1/jcmd.1.gz jcmd.1.gz lib/jvm/java-17-openjdk/man/man1/jcmd.1.gz - share/man/man1/jconsole.1.gz jconsole.1.gz lib/jvm/java-17-openjdk/man/man1/jconsole.1.gz - share/man/man1/jdb.1.gz jdb.1.gz lib/jvm/java-17-openjdk/man/man1/jdb.1.gz - share/man/man1/jdeprscan.1.gz jdeprscan.1.gz lib/jvm/java-17-openjdk/man/man1/jdeprscan.1.gz - share/man/man1/jdeps.1.gz jdeps.1.gz lib/jvm/java-17-openjdk/man/man1/jdeps.1.gz - share/man/man1/jfr.1.gz jfr.1.gz lib/jvm/java-17-openjdk/man/man1/jfr.1.gz - share/man/man1/jhsdb.1.gz jhsdb.1.gz lib/jvm/java-17-openjdk/man/man1/jhsdb.1.gz - share/man/man1/jinfo.1.gz jinfo.1.gz lib/jvm/java-17-openjdk/man/man1/jinfo.1.gz - share/man/man1/jlink.1.gz jlink.1.gz lib/jvm/java-17-openjdk/man/man1/jlink.1.gz - share/man/man1/jmap.1.gz jmap.1.gz lib/jvm/java-17-openjdk/man/man1/jmap.1.gz - share/man/man1/jmod.1.gz jmod.1.gz lib/jvm/java-17-openjdk/man/man1/jmod.1.gz - share/man/man1/jpackage.1.gz jpackage.1.gz lib/jvm/java-17-openjdk/man/man1/jpackage.1.gz - share/man/man1/jps.1.gz jps.1.gz lib/jvm/java-17-openjdk/man/man1/jps.1.gz - share/man/man1/jrunscript.1.gz jrunscript.1.gz lib/jvm/java-17-openjdk/man/man1/jrunscript.1.gz - share/man/man1/jshell.1.gz jshell.1.gz lib/jvm/java-17-openjdk/man/man1/jshell.1.gz - share/man/man1/jstack.1.gz jstack.1.gz lib/jvm/java-17-openjdk/man/man1/jstack.1.gz - share/man/man1/jstat.1.gz jstat.1.gz lib/jvm/java-17-openjdk/man/man1/jstat.1.gz - share/man/man1/jstatd.1.gz jstatd.1.gz lib/jvm/java-17-openjdk/man/man1/jstatd.1.gz - share/man/man1/keytool.1.gz keytool.1.gz lib/jvm/java-17-openjdk/man/man1/keytool.1.gz - share/man/man1/rmiregistry.1.gz rmiregistry.1.gz lib/jvm/java-17-openjdk/man/man1/rmiregistry.1.gz - share/man/man1/serialver.1.gz serialver.1.gz lib/jvm/java-17-openjdk/man/man1/serialver.1.gz -Priority: 40 - -# vim: ft=raml diff --git a/packages/openjdk-21/build.sh b/packages/openjdk-21/build.sh index f5eaa3f997..55f62c867e 100644 --- a/packages/openjdk-21/build.sh +++ b/packages/openjdk-21/build.sh @@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="Java development kit and runtime" TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_MAINTAINER="@termux" TERMUX_PKG_VERSION="21.0.7" -TERMUX_PKG_REVISION=3 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SRCURL=https://github.com/openjdk/jdk21u/archive/refs/tags/jdk-${TERMUX_PKG_VERSION}-ga.tar.gz TERMUX_PKG_SHA256=d8637e7d6fece0757b7fada49d32d0b3334a15a110445acef8cfea64b4672ca2 TERMUX_PKG_AUTO_UPDATE=true @@ -124,99 +124,21 @@ termux_step_post_make_install() { for manpage in *.1; do gzip "$manpage" done - - # Make sure that our alternatives file is up to date. - binaries="$(find $TERMUX_PREFIX/lib/jvm/java-21-openjdk/bin -executable -type f | xargs -I{} basename "{}" | xargs echo)" - manpages="$(find $TERMUX_PREFIX/lib/jvm/java-21-openjdk/man/man1 -name "*.1.gz" | xargs -I{} basename "{}" | xargs echo)" - - local failure=false - for binary in $binaries; do - grep -q "lib/jvm/java-21-openjdk/bin/${binary}$" "$TERMUX_PKG_BUILDER_DIR"/openjdk-21.alternatives || { - echo "ERROR: Missing entry for binary: $binary in openjdk-21.alternatives" - failure=true - } - done - for manpage in $manpages; do - grep -q "lib/jvm/java-21-openjdk/man/man1/${manpage}$" "$TERMUX_PKG_BUILDER_DIR"/openjdk-21.alternatives || { - echo "ERROR: Missing entry for manpage: $manpage in openjdk-21.alternatives" - failure=true - } - done - if [[ "$failure" = true ]]; then - termux_error_exit "ERROR: openjdk-21.alternatives is not up to date, please update it." - fi } termux_step_create_debscripts() { - local old_alternatives=( - java-profile - jar - jarsigner - java - javac - javadoc - javap - jcmd - jconsole - jdb - jdeprscan - jdeps - jfr - jhsdb - jimage - jinfo - jlink - jmap - jmod - jpackage - jps - jrunscript - jshell - jstack - jstat - jstatd - jwebserver - keytool - rmiregistry - serialver - jar.1.gz - jarsigner.1.gz - java.1.gz - javac.1.gz - javadoc.1.gz - javap.1.gz - jcmd.1.gz - jconsole.1.gz - jdb.1.gz - jdeprscan.1.gz - jdeps.1.gz - jfr.1.gz - jhsdb.1.gz - jinfo.1.gz - jlink.1.gz - jmap.1.gz - jmod.1.gz - jpackage.1.gz - jps.1.gz - jrunscript.1.gz - jshell.1.gz - jstack.1.gz - jstat.1.gz - jstatd.1.gz - jwebserver.1.gz - keytool.1.gz - rmiregistry.1.gz - serialver.1.gz - ) - # For older versions - echo 'if [ "$#" = "3" ] && dpkg --compare-versions "$2" le "21.0.7-2"; then' > ./preinst - echo ' echo "Removing older alternatives for openjdk-21 and openjdk-17"' >> ./preinst - echo ' echo "This may take a while if mandoc package is installed, please wait..."' >> ./preinst - echo ' echo "Newer versions of openjdk-21 and openjdk-17 change how alternatives are handled."' >> ./preinst - echo ' echo "Instead of having different alternatives for each manpage and binary, now you can switch java versions much easily using \"update-alternatives --config java\""' >> ./preinst - echo ' echo "This should switch all java binaries, manpages, and bash profile for java in a single command instead of switching everything manually"' >> ./preinst - for alternative in "${old_alternatives[@]}"; do - echo " update-alternatives --remove-all ${alternative} || :" >> ./preinst + binaries="$(find $TERMUX_PREFIX/lib/jvm/java-21-openjdk/bin -executable -type f | xargs -I{} basename "{}" | xargs echo)" + manpages="$(find $TERMUX_PREFIX/lib/jvm/java-21-openjdk/man/man1 -name "*.1.gz" | xargs -I{} basename "{}" | xargs echo)" + + for hook in postinst prerm; do + sed -e "s|@TERMUX_PREFIX@|${TERMUX_PREFIX}|g" \ + -e "s|@binaries@|${binaries}|g" \ + -e "s|@manpages@|${manpages}|g" \ + "$TERMUX_PKG_BUILDER_DIR/hooks/$TERMUX_PACKAGE_FORMAT/$hook.in" > $hook + chmod 700 $hook done - echo 'fi' >> ./preinst + + if [ "$TERMUX_PACKAGE_FORMAT" = "pacman" ]; then + echo "post_install" > postupg + fi } diff --git a/packages/openjdk-21/hooks/debian/postinst.in b/packages/openjdk-21/hooks/debian/postinst.in new file mode 100644 index 0000000000..9cf223a8a0 --- /dev/null +++ b/packages/openjdk-21/hooks/debian/postinst.in @@ -0,0 +1,18 @@ +#!@TERMUX_PREFIX@/bin/sh + +if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ]; then + if [ -x "@TERMUX_PREFIX@/bin/update-alternatives" ]; then + update-alternatives --install @TERMUX_PREFIX@/etc/profile.d/java.sh java-profile @TERMUX_PREFIX@/lib/jvm/java-21-openjdk/etc/profile.d/java.sh 40 + for tool in @binaries@; do + update-alternatives --install \ + @TERMUX_PREFIX@/bin/$tool $tool \ + @TERMUX_PREFIX@/lib/jvm/java-21-openjdk/bin/$tool 40 + done + + for manpage in @manpages@; do + update-alternatives --install \ + @TERMUX_PREFIX@/share/man/man1/$manpage $manpage \ + @TERMUX_PREFIX@/lib/jvm/java-21-openjdk/man/man1/$manpage 60 + done + fi +fi diff --git a/packages/openjdk-21/hooks/debian/prerm.in b/packages/openjdk-21/hooks/debian/prerm.in new file mode 100644 index 0000000000..ed83e31b72 --- /dev/null +++ b/packages/openjdk-21/hooks/debian/prerm.in @@ -0,0 +1,14 @@ +#!@TERMUX_PREFIX@/bin/sh + +if [ "$1" != "upgrade" ]; then + if [ -x "@TERMUX_PREFIX@/bin/update-alternatives" ]; then + update-alternatives --remove java-profile @TERMUX_PREFIX@/lib/jvm/java-21-openjdk/etc/profile.d/java.sh + for tool in @binaries@; do + update-alternatives --remove $tool @TERMUX_PREFIX@/lib/jvm/java-21-openjdk/bin/$tool + done + + for manpage in @manpages@; do + update-alternatives --remove $manpage @TERMUX_PREFIX@/lib/jvm/java-21-openjdk/man/man1/$manpage + done + fi +fi diff --git a/packages/openjdk-21/hooks/pacman/postinst.in b/packages/openjdk-21/hooks/pacman/postinst.in new file mode 100644 index 0000000000..1d8b9077e1 --- /dev/null +++ b/packages/openjdk-21/hooks/pacman/postinst.in @@ -0,0 +1,25 @@ +#!@TERMUX_PREFIX@/bin/sh + +if [ -f @TERMUX_PREFIX@/etc/profile.d/java.sh ]; then + raelpath=$(readlink @TERMUX_PREFIX@/etc/profile.d/java.sh) + sp_raelpath=(${raelpath//// }) + if [ "${sp_raelpath[-4]}" != "java-21-openjdk" ]; then + echo "==> Attention, the commands will be reconfigured to openjdk-21. If you want to stay on \"${sp_raelpath[-4]}\" then reinstall the package" + fi +fi + +echo "==> Setting up the openjdk-21 package..." + +for i in @binaries@; do + ln -sfr "@TERMUX_PREFIX@/lib/jvm/java-21-openjdk/bin/${i}" "@TERMUX_PREFIX@/bin/${i}" +done + +mkdir -p @TERMUX_PREFIX@/share/man/man1 +for i in @manpages@; do + ln -sfr "@TERMUX_PREFIX@/lib/jvm/java-21-openjdk/man/man1/${i}" "@TERMUX_PREFIX@/share/man/man1/${i}" +done + +mkdir -p @TERMUX_PREFIX@/etc/profile.d +ln -sfr @TERMUX_PREFIX@/lib/jvm/java-21-openjdk/etc/profile.d/java.sh @TERMUX_PREFIX@/etc/profile.d/java.sh + +echo "==> Done" diff --git a/packages/openjdk-21/hooks/pacman/prerm.in b/packages/openjdk-21/hooks/pacman/prerm.in new file mode 100644 index 0000000000..d406729159 --- /dev/null +++ b/packages/openjdk-21/hooks/pacman/prerm.in @@ -0,0 +1,19 @@ +#!@TERMUX_PREFIX@/bin/sh + +if [ -f @TERMUX_PREFIX@/etc/profile.d/java.sh ]; then + raelpath=$(readlink @TERMUX_PREFIX@/etc/profile.d/java.sh) + sp_raelpath=(${raelpath//// }) + if [ "${sp_raelpath[-4]}" != "java-21-openjdk" ]; then + return + fi +fi + +for i in @binaries@; do + rm "@TERMUX_PREFIX@/bin/${i}" +done + +for i in @manpages@; do + rm "@TERMUX_PREFIX@/share/man/man1/${i}" +done + +rm @TERMUX_PREFIX@/etc/profile.d/java.sh diff --git a/packages/openjdk-21/openjdk-21.alternatives b/packages/openjdk-21/openjdk-21.alternatives deleted file mode 100644 index 6c91d8e30a..0000000000 --- a/packages/openjdk-21/openjdk-21.alternatives +++ /dev/null @@ -1,64 +0,0 @@ -Name: java -Link: bin/java -Alternative: lib/jvm/java-21-openjdk/bin/java -Dependents: - etc/profile.d/java.sh java-profile lib/jvm/java-21-openjdk/etc/profile.d/java.sh - bin/jar jar lib/jvm/java-21-openjdk/bin/jar - bin/jarsigner jarsigner lib/jvm/java-21-openjdk/bin/jarsigner - bin/javac javac lib/jvm/java-21-openjdk/bin/javac - bin/javadoc javadoc lib/jvm/java-21-openjdk/bin/javadoc - bin/javap javap lib/jvm/java-21-openjdk/bin/javap - bin/jcmd jcmd lib/jvm/java-21-openjdk/bin/jcmd - bin/jconsole jconsole lib/jvm/java-21-openjdk/bin/jconsole - bin/jdb jdb lib/jvm/java-21-openjdk/bin/jdb - bin/jdeprscan jdeprscan lib/jvm/java-21-openjdk/bin/jdeprscan - bin/jdeps jdeps lib/jvm/java-21-openjdk/bin/jdeps - bin/jfr jfr lib/jvm/java-21-openjdk/bin/jfr - bin/jhsdb jhsdb lib/jvm/java-21-openjdk/bin/jhsdb - bin/jimage jimage lib/jvm/java-21-openjdk/bin/jimage - bin/jinfo jinfo lib/jvm/java-21-openjdk/bin/jinfo - bin/jlink jlink lib/jvm/java-21-openjdk/bin/jlink - bin/jmap jmap lib/jvm/java-21-openjdk/bin/jmap - bin/jmod jmod lib/jvm/java-21-openjdk/bin/jmod - bin/jpackage jpackage lib/jvm/java-21-openjdk/bin/jpackage - bin/jps jps lib/jvm/java-21-openjdk/bin/jps - bin/jrunscript jrunscript lib/jvm/java-21-openjdk/bin/jrunscript - bin/jshell jshell lib/jvm/java-21-openjdk/bin/jshell - bin/jstack jstack lib/jvm/java-21-openjdk/bin/jstack - bin/jstat jstat lib/jvm/java-21-openjdk/bin/jstat - bin/jstatd jstatd lib/jvm/java-21-openjdk/bin/jstatd - bin/jwebserver jwebserver lib/jvm/java-21-openjdk/bin/jwebserver - bin/keytool keytool lib/jvm/java-21-openjdk/bin/keytool - bin/rmiregistry rmiregistry lib/jvm/java-21-openjdk/bin/rmiregistry - bin/serialver serialver lib/jvm/java-21-openjdk/bin/serialver - share/man/man1/jar.1.gz jar.1.gz lib/jvm/java-21-openjdk/man/man1/jar.1.gz - share/man/man1/jarsigner.1.gz jarsigner.1.gz lib/jvm/java-21-openjdk/man/man1/jarsigner.1.gz - share/man/man1/java.1.gz java.1.gz lib/jvm/java-21-openjdk/man/man1/java.1.gz - share/man/man1/javac.1.gz javac.1.gz lib/jvm/java-21-openjdk/man/man1/javac.1.gz - share/man/man1/javadoc.1.gz javadoc.1.gz lib/jvm/java-21-openjdk/man/man1/javadoc.1.gz - share/man/man1/javap.1.gz javap.1.gz lib/jvm/java-21-openjdk/man/man1/javap.1.gz - share/man/man1/jcmd.1.gz jcmd.1.gz lib/jvm/java-21-openjdk/man/man1/jcmd.1.gz - share/man/man1/jconsole.1.gz jconsole.1.gz lib/jvm/java-21-openjdk/man/man1/jconsole.1.gz - share/man/man1/jdb.1.gz jdb.1.gz lib/jvm/java-21-openjdk/man/man1/jdb.1.gz - share/man/man1/jdeprscan.1.gz jdeprscan.1.gz lib/jvm/java-21-openjdk/man/man1/jdeprscan.1.gz - share/man/man1/jdeps.1.gz jdeps.1.gz lib/jvm/java-21-openjdk/man/man1/jdeps.1.gz - share/man/man1/jfr.1.gz jfr.1.gz lib/jvm/java-21-openjdk/man/man1/jfr.1.gz - share/man/man1/jhsdb.1.gz jhsdb.1.gz lib/jvm/java-21-openjdk/man/man1/jhsdb.1.gz - share/man/man1/jinfo.1.gz jinfo.1.gz lib/jvm/java-21-openjdk/man/man1/jinfo.1.gz - share/man/man1/jlink.1.gz jlink.1.gz lib/jvm/java-21-openjdk/man/man1/jlink.1.gz - share/man/man1/jmap.1.gz jmap.1.gz lib/jvm/java-21-openjdk/man/man1/jmap.1.gz - share/man/man1/jmod.1.gz jmod.1.gz lib/jvm/java-21-openjdk/man/man1/jmod.1.gz - share/man/man1/jpackage.1.gz jpackage.1.gz lib/jvm/java-21-openjdk/man/man1/jpackage.1.gz - share/man/man1/jps.1.gz jps.1.gz lib/jvm/java-21-openjdk/man/man1/jps.1.gz - share/man/man1/jrunscript.1.gz jrunscript.1.gz lib/jvm/java-21-openjdk/man/man1/jrunscript.1.gz - share/man/man1/jshell.1.gz jshell.1.gz lib/jvm/java-21-openjdk/man/man1/jshell.1.gz - share/man/man1/jstack.1.gz jstack.1.gz lib/jvm/java-21-openjdk/man/man1/jstack.1.gz - share/man/man1/jstat.1.gz jstat.1.gz lib/jvm/java-21-openjdk/man/man1/jstat.1.gz - share/man/man1/jstatd.1.gz jstatd.1.gz lib/jvm/java-21-openjdk/man/man1/jstatd.1.gz - share/man/man1/jwebserver.1.gz jwebserver.1.gz lib/jvm/java-21-openjdk/man/man1/jwebserver.1.gz - share/man/man1/keytool.1.gz keytool.1.gz lib/jvm/java-21-openjdk/man/man1/keytool.1.gz - share/man/man1/rmiregistry.1.gz rmiregistry.1.gz lib/jvm/java-21-openjdk/man/man1/rmiregistry.1.gz - share/man/man1/serialver.1.gz serialver.1.gz lib/jvm/java-21-openjdk/man/man1/serialver.1.gz -Priority: 60 # default - -# vim: ft=raml diff --git a/packages/root-repo/build.sh b/packages/root-repo/build.sh new file mode 100644 index 0000000000..214ffa8d98 --- /dev/null +++ b/packages/root-repo/build.sh @@ -0,0 +1,34 @@ +TERMUX_PKG_HOMEPAGE=https://github.com/termux/termux-root-packages +TERMUX_PKG_DESCRIPTION="Package repository containing programs for rooted devices" +TERMUX_PKG_LICENSE="Apache-2.0" +TERMUX_PKG_MAINTAINER="Henrik Grimler @Grimler91" +TERMUX_PKG_VERSION=2.4 +TERMUX_PKG_REVISION=2 +TERMUX_PKG_AUTO_UPDATE=false +TERMUX_PKG_DEPENDS="termux-keyring" +TERMUX_PKG_SKIP_SRC_EXTRACT=true +TERMUX_PKG_PLATFORM_INDEPENDENT=true + +termux_step_make_install() { + mkdir -p $TERMUX_PREFIX/etc/apt/sources.list.d + { + echo "# The root termux repository, with cloudflare cache" + echo "deb https://packages-cf.termux.dev/apt/termux-root/ root stable" + echo "# The root termux repository, without cloudflare cache" + echo "# deb https://packages.termux.dev/apt/termux-root/ root stable" + } > $TERMUX_PREFIX/etc/apt/sources.list.d/root.list +} + +termux_step_create_debscripts() { + [ "$TERMUX_PACKAGE_FORMAT" = "pacman" ] && return 0 + cat <<- EOF > ./postinst + #!$TERMUX_PREFIX/bin/sh + echo "Downloading updated package list ..." + if [ -d "$TERMUX_PREFIX/etc/termux/chosen_mirrors" ] || [ -f "$TERMUX_PREFIX/etc/termux/chosen_mirrors" ]; then + pkg --check-mirror update + else + apt update + fi + exit 0 + EOF +} diff --git a/packages/tur-repo/build.sh b/packages/tur-repo/build.sh new file mode 100644 index 0000000000..5211b81c21 --- /dev/null +++ b/packages/tur-repo/build.sh @@ -0,0 +1,24 @@ +TERMUX_PKG_HOMEPAGE=https://github.com/termux-user-repository/tur +TERMUX_PKG_DESCRIPTION="A single and trusted place for all unofficial/less popular termux packages" +TERMUX_PKG_LICENSE="Apache-2.0" +TERMUX_PKG_MAINTAINER="@termux-user-repository" +TERMUX_PKG_VERSION=1.0.1 +TERMUX_PKG_AUTO_UPDATE=false +TERMUX_PKG_SKIP_SRC_EXTRACT=true +TERMUX_PKG_PLATFORM_INDEPENDENT=true + +termux_step_make_install() { + mkdir -p $TERMUX_PREFIX/etc/apt/sources.list.d + echo "deb https://tur.kcubeterm.com tur-packages tur tur-on-device tur-continuous" > $TERMUX_PREFIX/etc/apt/sources.list.d/tur.list + ## tur gpg key + mkdir -p $TERMUX_PREFIX/etc/apt/trusted.gpg.d + install -Dm600 $TERMUX_PKG_BUILDER_DIR/tur.gpg $TERMUX_PREFIX/etc/apt/trusted.gpg.d/ +} + +termux_step_create_debscripts() { + [ "$TERMUX_PACKAGE_FORMAT" = "pacman" ] && return 0 + echo "#!$TERMUX_PREFIX/bin/sh" > postinst + echo "echo Downloading updated package list ..." >> postinst + echo "apt update" >> postinst + echo "exit 0" >> postinst +} diff --git a/packages/tur-repo/tur.gpg b/packages/tur-repo/tur.gpg new file mode 100644 index 0000000000..dfc18a805e Binary files /dev/null and b/packages/tur-repo/tur.gpg differ diff --git a/packages/x11-repo/build.sh b/packages/x11-repo/build.sh new file mode 100644 index 0000000000..5e6ad887b9 --- /dev/null +++ b/packages/x11-repo/build.sh @@ -0,0 +1,34 @@ +TERMUX_PKG_HOMEPAGE=https://github.com/termux/x11-packages +TERMUX_PKG_DESCRIPTION="Package repository containing X11 programs and libraries" +TERMUX_PKG_LICENSE="Apache-2.0" +TERMUX_PKG_MAINTAINER="@termux" +TERMUX_PKG_VERSION=8.4 +TERMUX_PKG_REVISION=1 +TERMUX_PKG_AUTO_UPDATE=false +TERMUX_PKG_DEPENDS="termux-keyring" +TERMUX_PKG_SKIP_SRC_EXTRACT=true +TERMUX_PKG_PLATFORM_INDEPENDENT=true + +termux_step_make_install() { + mkdir -p $TERMUX_PREFIX/etc/apt/sources.list.d + { + echo "# The x11 termux repository, with cloudflare cache" + echo "deb https://packages-cf.termux.dev/apt/termux-x11/ x11 main" + echo "# The x11 termux repository, without cloudflare cache" + echo "# deb https://packages.termux.dev/apt/termux-x11/ x11 main" + } > $TERMUX_PREFIX/etc/apt/sources.list.d/x11.list +} + +termux_step_create_debscripts() { + [ "$TERMUX_PACKAGE_FORMAT" = "pacman" ] && return 0 + cat <<- EOF > ./postinst + #!$TERMUX_PREFIX/bin/sh + echo "Downloading updated package list ..." + if [ -d "$TERMUX_PREFIX/etc/termux/chosen_mirrors" ] || [ -f "$TERMUX_PREFIX/etc/termux/chosen_mirrors" ]; then + pkg --check-mirror update + else + apt update + fi + exit 0 + EOF +} diff --git a/pkgignore b/pkgignore new file mode 100644 index 0000000000..f882734078 --- /dev/null +++ b/pkgignore @@ -0,0 +1,6 @@ +openjdk-17 +openjdk-21 +root-repo +x11-repo +tur-repo +glibc-repo