[Git][debian-gis-team/josm][master] Replace bash.patch with josm-launch.patch with more improvements.

Bas Couwenberg (@sebastic) gitlab at salsa.debian.org
Sat Jul 9 10:56:16 BST 2022



Bas Couwenberg pushed to branch master at Debian GIS Project / josm


Commits:
8252d184 by Bas Couwenberg at 2022-07-09T11:55:52+02:00
Replace bash.patch with josm-launch.patch with more improvements.

- - - - -


4 changed files:

- debian/changelog
- − debian/patches/bash.patch
- + debian/patches/josm-launcher.patch
- debian/patches/series


Changes:

=====================================
debian/changelog
=====================================
@@ -1,3 +1,9 @@
+josm (0.0.svn18513+dfsg-2) UNRELEASED; urgency=medium
+
+  * Replace bash.patch with josm-launch.patch with more improvements.
+
+ -- Bas Couwenberg <sebastic at debian.org>  Sat, 09 Jul 2022 11:55:21 +0200
+
 josm (0.0.svn18513+dfsg-1) unstable; urgency=medium
 
   * New hotfix tested snapshot.


=====================================
debian/patches/bash.patch deleted
=====================================
@@ -1,13 +0,0 @@
-Description: Fix bash path.
-Author: Bas Couwenberg <sebastic at debian.org>
-Bug: https://josm.openstreetmap.de/ticket/22088
-Forwarded: https://josm.openstreetmap.de/ticket/22193
-
---- a/native/linux/tested/usr/bin/josm
-+++ b/native/linux/tested/usr/bin/josm
-@@ -1,4 +1,4 @@
--#!/usr/bin/env bash
-+#!/bin/bash
- # Simple wrapper script used to start JOSM in Debian
- set -e
- 


=====================================
debian/patches/josm-launcher.patch
=====================================
@@ -0,0 +1,238 @@
+Description: Improve josm launchers.
+ * Use `/bin/bash` instead of `/usr/bin/env bash`
+   usrmerge systems have both `/bin/bash` and `/usr/bin/bash`,
+   non-usrmerge systems only have `/bin/bash`.
+ * Set `ALTERNATIVE_JDK` only if `/etc/alternatives/java` exists.
+   While not only Debian based distributions use the alternatives system,
+   not all distributions do.
+ * Use 4 spaces for indentation consistently.
+   Some indentation used tabs, others 2 spaces.
+ * Simplify `java_version` function.
+   Use `java --version` to get output on `STDOUT` instead of `-version`
+   output on `STDERR`.
+ * Don't use `command -v` to test whether `dpkg` is available.
+   The command may be an alias which results in output like:
+   ```
+   dpkg is aliased to `donalds-porn-kink-game'
+   ```
+ * Fix issues reported by `shellcheck`.
+   SC2086 is disabled for `$JAVA_OPTS` because that only works unquoted.
+Author: Bas Couwenberg <sebastic at debian.org>
+Bug: https://josm.openstreetmap.de/ticket/22193
+
+--- a/native/linux/latest/usr/bin/josm-latest
++++ b/native/linux/latest/usr/bin/josm-latest
+@@ -1,10 +1,12 @@
+-#!/usr/bin/env bash
++#!/bin/bash
+ # Simple wrapper script used to start JOSM in Debian
+ set -e
+ 
+ # First, the alternative (if known to work) or users preference as defined by $JAVA_HOME. Next, use OpenJDK.
+ # Override to a specific one using $JAVACMD
+-ALTERNATIVE_JDK=$(readlink -n -f /etc/alternatives/java || true)
++if [ -e "/etc/alternatives/java" ]; then
++    ALTERNATIVE_JDK=$(readlink -n -f /etc/alternatives/java)
++fi
+ 
+ if [ -v JAVA_HOME ]; then
+     JAVA_CMDS="$JAVA_HOME/bin/java"
+@@ -13,47 +15,49 @@ else
+ fi
+ 
+ dpkg_java() {
+-  # Let's get the current architecture -- needed for multiarchified Java
+-  ARCH=$(dpkg --print-architecture 2> /dev/null || true)
+-  # If OpenJDK is only available headless, do not try it
+-	if dpkg --get-selections "openjdk-*-jre" | grep install$ > /dev/null \
+-	|| dpkg --get-selections "openjdk-*-jre:$ARCH" | grep install$ > /dev/null ; then
+-		# LTS versions in decreased order
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-17-openjdk/bin/java /usr/lib/jvm/java-17-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-11-openjdk/bin/java /usr/lib/jvm/java-11-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-8-openjdk/bin/java /usr/lib/jvm/java-8-openjdk-$ARCH/bin/java"
+-		# Released versions in decreased order
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-18-openjdk/bin/java /usr/lib/jvm/java-18-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-16-openjdk/bin/java /usr/lib/jvm/java-16-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-15-openjdk/bin/java /usr/lib/jvm/java-15-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-14-openjdk/bin/java /usr/lib/jvm/java-14-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-13-openjdk/bin/java /usr/lib/jvm/java-13-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-12-openjdk/bin/java /usr/lib/jvm/java-12-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-10-openjdk/bin/java /usr/lib/jvm/java-10-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-9-openjdk/bin/java /usr/lib/jvm/java-9-openjdk-$ARCH/bin/java"
+-		# Development version(s)
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-19-openjdk/bin/java /usr/lib/jvm/java-19-openjdk-$ARCH/bin/java"
+-	fi
++    # Let's get the current architecture -- needed for multiarchified Java
++    ARCH=$(dpkg --print-architecture 2> /dev/null || true)
++    # If OpenJDK is only available headless, do not try it
++    if dpkg --get-selections "openjdk-*-jre" | grep install$ > /dev/null \
++    || dpkg --get-selections "openjdk-*-jre:$ARCH" | grep install$ > /dev/null ; then
++        # LTS versions in decreased order
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-17-openjdk/bin/java /usr/lib/jvm/java-17-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-11-openjdk/bin/java /usr/lib/jvm/java-11-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-8-openjdk/bin/java /usr/lib/jvm/java-8-openjdk-$ARCH/bin/java"
++        # Released versions in decreased order
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-18-openjdk/bin/java /usr/lib/jvm/java-18-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-16-openjdk/bin/java /usr/lib/jvm/java-16-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-15-openjdk/bin/java /usr/lib/jvm/java-15-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-14-openjdk/bin/java /usr/lib/jvm/java-14-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-13-openjdk/bin/java /usr/lib/jvm/java-13-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-12-openjdk/bin/java /usr/lib/jvm/java-12-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-10-openjdk/bin/java /usr/lib/jvm/java-10-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-9-openjdk/bin/java /usr/lib/jvm/java-9-openjdk-$ARCH/bin/java"
++        # Development version(s)
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-19-openjdk/bin/java /usr/lib/jvm/java-19-openjdk-$ARCH/bin/java"
++    fi
+ }
+ 
+ java_version() {
+-  ${1} -version 2>&1 | head -n1 | awk '{print $3}' | awk -F'.' '{gsub(/"/, ""); print $1}' | cat
++    ${1} --version | head -n1 | awk '{print $2}' | awk -F'.' '{print $1}'
+ }
+ 
+-if [ -x "$(command -v dpkg)" ]; then
+-	dpkg_java
++if dpkg --version > /dev/null 2>&1; then
++    dpkg_java
+ fi
++
+ # Undetermined version
+ JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/default-java/bin/java /usr/bin/java"
+ JOSM_VERSION="josm-latest"
+ 
+ if [ -f "/etc/default/${JOSM_VERSION}" ]; then
++    # shellcheck source=/etc/default/josm-latest
+     . "/etc/default/${JOSM_VERSION}"
+ fi
+ 
+ JAVA_OPTS="-Djosm.restart=true -Djosm.dir.name=JOSM-latest -Djava.net.useSystemProxies=true $JAVA_OPTS"
+ 
+-if [ -z "${JAVACMD}" ]; then
++if [ -z "${JAVACMD}" ] && [ -n "${ALTERNATIVE_JDK}" ]; then
+     for jcmd in $JAVA_CMDS; do
+         if [ "z$ALTERNATIVE_JDK" = "z$(readlink -n -f "$jcmd")" ] && [ -z "${JAVACMD}" ] && [ -x "$jcmd" ]; then
+             JAVACMD="$jcmd"
+@@ -73,7 +77,7 @@ fi
+ 
+ if [ "$JAVACMD" ]; then
+     echo "Using $JAVACMD to execute ${JOSM_VERSION}." || true
+-    JAVA_VERSION=$(java_version ${JAVACMD})
++    JAVA_VERSION=$(java_version "${JAVACMD}")
+     JAVAFX_HOME="${JAVAFX_HOME:-/usr/share/openjfx/lib}"
+     JOSM_PATH="${JOSM_PATH:-/usr/share/${JOSM_VERSION}/${JOSM_VERSION}.jar}"
+     if [[ "${JAVA_VERSION}" -ge 11 ]]; then
+@@ -86,6 +90,7 @@ if [ "$JAVACMD" ]; then
+     fi
+     set +e
+     while true; do
++        # shellcheck disable=SC2086
+         $JAVACMD $JAVA_OPTS -jar "${JOSM_PATH}" "$@"
+         if [ "z$?" != "z9" ]; then
+             break
+--- a/native/linux/tested/usr/bin/josm
++++ b/native/linux/tested/usr/bin/josm
+@@ -1,10 +1,12 @@
+-#!/usr/bin/env bash
++#!/bin/bash
+ # Simple wrapper script used to start JOSM in Debian
+ set -e
+ 
+ # First, the alternative (if known to work) or users preference as defined by $JAVA_HOME. Next, use OpenJDK.
+ # Override to a specific one using $JAVACMD
+-ALTERNATIVE_JDK=$(readlink -n -f /etc/alternatives/java || true)
++if [ -e "/etc/alternatives/java" ]; then
++    ALTERNATIVE_JDK=$(readlink -n -f /etc/alternatives/java)
++fi
+ 
+ if [ -v JAVA_HOME ]; then
+     JAVA_CMDS="$JAVA_HOME/bin/java"
+@@ -13,46 +15,48 @@ else
+ fi
+ 
+ dpkg_java() {
+-  # Let's get the current architecture -- needed for multiarchified Java
+-  ARCH=$(dpkg --print-architecture 2> /dev/null || true)
+-  # If OpenJDK is only available headless, do not try it
+-	if dpkg --get-selections "openjdk-*-jre" | grep install$ > /dev/null \
+-	|| dpkg --get-selections "openjdk-*-jre:$ARCH" | grep install$ > /dev/null ; then
+-		# LTS versions in decreased order
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-17-openjdk/bin/java /usr/lib/jvm/java-17-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-11-openjdk/bin/java /usr/lib/jvm/java-11-openjdk-$ARCH/bin/java"
+-		# Released versions in decreased order
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-18-openjdk/bin/java /usr/lib/jvm/java-18-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-16-openjdk/bin/java /usr/lib/jvm/java-16-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-15-openjdk/bin/java /usr/lib/jvm/java-15-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-14-openjdk/bin/java /usr/lib/jvm/java-14-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-13-openjdk/bin/java /usr/lib/jvm/java-13-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-12-openjdk/bin/java /usr/lib/jvm/java-12-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-10-openjdk/bin/java /usr/lib/jvm/java-10-openjdk-$ARCH/bin/java"
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-9-openjdk/bin/java /usr/lib/jvm/java-9-openjdk-$ARCH/bin/java"
+-		# Development version(s)
+-		JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-19-openjdk/bin/java /usr/lib/jvm/java-19-openjdk-$ARCH/bin/java"
+-	fi
++    # Let's get the current architecture -- needed for multiarchified Java
++    ARCH=$(dpkg --print-architecture 2> /dev/null || true)
++    # If OpenJDK is only available headless, do not try it
++    if dpkg --get-selections "openjdk-*-jre" | grep install$ > /dev/null \
++    || dpkg --get-selections "openjdk-*-jre:$ARCH" | grep install$ > /dev/null ; then
++        # LTS versions in decreased order
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-17-openjdk/bin/java /usr/lib/jvm/java-17-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-11-openjdk/bin/java /usr/lib/jvm/java-11-openjdk-$ARCH/bin/java"
++        # Released versions in decreased order
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-18-openjdk/bin/java /usr/lib/jvm/java-18-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-16-openjdk/bin/java /usr/lib/jvm/java-16-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-15-openjdk/bin/java /usr/lib/jvm/java-15-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-14-openjdk/bin/java /usr/lib/jvm/java-14-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-13-openjdk/bin/java /usr/lib/jvm/java-13-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-12-openjdk/bin/java /usr/lib/jvm/java-12-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-10-openjdk/bin/java /usr/lib/jvm/java-10-openjdk-$ARCH/bin/java"
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-9-openjdk/bin/java /usr/lib/jvm/java-9-openjdk-$ARCH/bin/java"
++        # Development version(s)
++        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-19-openjdk/bin/java /usr/lib/jvm/java-19-openjdk-$ARCH/bin/java"
++    fi
+ }
+ 
+ java_version() {
+-  ${1} -version 2>&1 | head -n1 | awk '{print $3}' | awk -F'.' '{gsub(/"/, ""); print $1}' | cat
++    ${1} --version | head -n1 | awk '{print $2}' | awk -F'.' '{print $1}'
+ }
+ 
+-if [ -x "$(command -v dpkg)" ]; then
+-	dpkg_java
++if dpkg --version > /dev/null 2>&1; then
++    dpkg_java
+ fi
++
+ # Undetermined version
+ JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/default-java/bin/java /usr/bin/java"
+ JOSM_VERSION="josm"
+ 
+ if [ -f "/etc/default/${JOSM_VERSION}" ]; then
++    # shellcheck source=/etc/default/josm
+     . "/etc/default/${JOSM_VERSION}"
+ fi
+ 
+ JAVA_OPTS="-Djosm.restart=true -Djava.net.useSystemProxies=true $JAVA_OPTS"
+ 
+-if [ -z "${JAVACMD}" ]; then
++if [ -z "${JAVACMD}" ] && [ -n "${ALTERNATIVE_JDK}" ]; then
+     for jcmd in $JAVA_CMDS; do
+         if [ "z$ALTERNATIVE_JDK" = "z$(readlink -n -f "$jcmd")" ] && [ -z "${JAVACMD}" ] && [ -x "$jcmd" ]; then
+             JAVACMD="$jcmd"
+@@ -72,7 +76,7 @@ fi
+ 
+ if [ "$JAVACMD" ]; then
+     echo "Using $JAVACMD to execute ${JOSM_VERSION}." || true
+-    JAVA_VERSION=$(java_version ${JAVACMD})
++    JAVA_VERSION=$(java_version "${JAVACMD}")
+     JAVAFX_HOME="${JAVAFX_HOME:-/usr/share/openjfx/lib}"
+     JOSM_PATH="${JOSM_PATH:-/usr/share/${JOSM_VERSION}/${JOSM_VERSION}.jar}"
+     if [[ "${JAVA_VERSION}" -ge 11 ]]; then
+@@ -85,6 +89,7 @@ if [ "$JAVACMD" ]; then
+     fi
+     set +e
+     while true; do
++        # shellcheck disable=SC2086
+         $JAVACMD $JAVA_OPTS -jar "${JOSM_PATH}" "$@"
+         if [ "z$?" != "z9" ]; then
+             break


=====================================
debian/patches/series
=====================================
@@ -5,4 +5,4 @@
 07-use_system_fonts.patch
 08-use_noto_font.patch
 09-no-java-8.patch
-bash.patch
+josm-launcher.patch



View it on GitLab: https://salsa.debian.org/debian-gis-team/josm/-/commit/8252d18408efba5acafcdee557a26c5fc35b11b4

-- 
View it on GitLab: https://salsa.debian.org/debian-gis-team/josm/-/commit/8252d18408efba5acafcdee557a26c5fc35b11b4
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20220709/fab29355/attachment-0001.htm>


More information about the Pkg-grass-devel mailing list