This file is indexed.

/usr/bin/mh_linkjar is in maven-repo-helper 1.9.2.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
#!/bin/bash --

# Copyright 2009 Ludovic Claude.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -e

. /usr/share/maven-repo-helper/mh_lib.sh

syntax()
{
   echo -e "Usage: mh_linkjar [option]... [pom] [dest_jar] [link]..."
   echo -e "Create symlinks for a jar installed by other means. The symlinks created"
   echo -e "include links to the jar in /usr/share/maven-repo, at the correct"
   echo -e "location for Maven."
   echo -e "It can also create additional links to the jar, usually located in"
   echo -e "/usr/share/java."
   echo -e ""
   echo -e "Where"
   echo -e "\t[pom] is the location of the POM associated with the jar to install."
   echo -e "\t  GroupId, artifactId and version will be extracted from this file."
   echo -e "\t[dest_jar] is the path of the installed jar, usually located in the"
   echo -e "\t  usr/share/java folder."
   echo -e "\t[link] is an additional link to the jar to install, usually there should"
   echo -e "\t  be a link to usr/share/java/\$jar.jar and"
   echo -e "\t  usr/share/java/\$jar-\$version.jar to comply with the Java packaging"
   echo -e "\t  guidelines. Note that there is no need to specify those particular"
   echo -e "\t  links if the --java-lib option is used."
   echo -e "Options:"
   echo -e "\t-h --help: show this text"
   echo -e "\t-V --version: show the version"
   echo -e "\t-p<package> --package=<package>: name of the Debian package which"
   echo -e "\t  will contain this jar file"
   echo -e "\t-e<version>, --set-version=<version>: set the version for the jar,"
   echo -e "\t  do not use the version declared in the POM file."
   echo -e "\t-r<rules> --rules=<rules>: path to the file containing the"
   echo -e "\t  rules to apply when cleaning the POM."
   echo -e "\t  Optional, the default location is debian/maven.rules"
   echo -e "\t  Maven rules are used here to extract the groupId, artifactId"
   echo -e "\t  and version from the POM file."
   echo -e "\t-l --java-lib: Optional, if given it will install the jar into"
   echo -e "\t  /usr/share/java to comply with the Debian Java specification."
   echo -e "\t  The jar will be installed as /usr/share/java/\$name-\$version.jar and"
   echo -e "\t  a versionless link /usr/share/java/\$name.jar will point to it, as"
   echo -e "\t  well as the links installed in /usr/share/maven-repo"
   echo -e "\t-n<name> --usj-name=<name>: Optional, the name to use when installing the"
   echo -e "\t  library in /usr/share/java when --java-lib is used."
   echo -e "\t  Defaults to the artifact id found in the POM."
   echo -e "\t-j<version> --usj-version=<version>: Optional, the version to use when"
   echo -e "\t  installing the library in /usr/share/java when --java-lib is used."
   echo -e "\t  Defaults to the version found in the POM."
   echo -e "\t-s --no-usj-versionless: Optional, don't install the versionless link"
   echo -e "\t  in /usr/share/java."
   echo -e "\t  This flag is used only when the -l or --java-lib option is given."
   echo -e "\t-c<classifier> --classifier=<classifier>: Optional, the classifier for"
   echo -e "\t  the jar. Empty by default."
   echo -e "\t-v --verbose: show more information while running"
   echo -e "\t-n --no-act: don't actually do anything, just print the results"
   echo -e "\t--skip-clean-pom: don't clean the pom, assume that a previous action ran"
   echo -e "\t  mh_cleanpom with the correct options. mh_cleanpom is run only to extract"
   echo -e "\t  the groupId, artifactId and version of the jar"
   exit 1
}

ARGS="p package e set-version r rules l java-lib n usj-name j usj-version s no-usj-versionless c classifier v verbose n no-act skip-clean-pom no-parent has-package-version keep-elements ignore-pom" parseargs "$@"

if [ "$ARGC" -lt "2" ]; then
   syntax
fi

SETVERSION=$(getarg e set-version)
RULES=$(getarg r rules)
PACKAGE=$(getarg p package)
PACKAGE=${PACKAGE:?"Package parameter (-p) is mandatory"}
JAVALIB=$(getarg l java-lib)
USJ_JAR_NAME=$(getarg n usj-name)
USJ_JAR_VERSION=$(getarg j usj-version)
NO_USJ_VERSIONLESS=$(getarg s no-usj-versionless)
CLASSIFIER=$(getarg c classifier)
VERBOSE=$(getarg v verbose)
NOACT=$(getarg n no-act)
SKIP_CLEAN_POM=$(getarg skip-clean-pom)
POM="${ARGV[0]}"
JAR="${ARGV[1]}"

DH_OPTS="${VERBOSE:+-v} ${NOACT:+-n}"
CLEAN_ARGS="--package=${PACKAGE} ${SETVERSION:+--set-version=$SETVERSION} ${RULES:+--rules=$RULES}"

mkdir -p debian/.mh 2> /dev/null

if [ -z "$SKIP_CLEAN_POM" ]; then
    if [[ ! -z "$VERBOSE" || "$DH_VERBOSE" = "1" ]]; then
        echo -e "\tmh_cleanpom $DH_OPTS $CLEAN_ARGS $POM debian/.mh/pom.xml debian/.mh/pom.properties"
    fi

    mh_cleanpom $DH_OPTS $CLEAN_ARGS $POM debian/.mh/pom.xml debian/.mh/pom.properties
fi

source debian/.mh/pom.properties

groupPath=$(echo $groupId | tr . / )
if [ -z "$CLASSIFIER" ]; then
    # Use the classifier from the POM
    CLASSIFIER=$classifier
fi

VERSIONED_JAR_NAME="${artifactId}-${version}.jar"
if [ ! -z "$CLASSIFIER" ]; then
    VERSIONED_JAR_NAME="${artifactId}-${version}-${CLASSIFIER}.jar"
fi

DEBIAN_JAR_NAME="${artifactId}-${debianVersion}.jar"
if [ ! -z "$CLASSIFIER" ]; then
	DEBIAN_JAR_NAME="${artifactId}-${debianVersion}-${CLASSIFIER}.jar"
fi

MVN_VERSIONED_DIR=usr/share/maven-repo/${groupPath}/${artifactId}/${version}
MVN_DEBIAN_DIR=usr/share/maven-repo/${groupPath}/${artifactId}/${debianVersion}

if [ -n "$JAVALIB" ]; then
    USJ_JAR_NAME=$(getarg n usj-name)
    USJ_JAR_NAME=${USJ_JAR_NAME:-$artifactId}
    USJ_JAR_VERSION=${USJ_JAR_VERSION:-$version}
	USJ_VERSIONED_JAR_NAME=${USJ_JAR_NAME}-${USJ_JAR_VERSION}.jar
    USJ_JAR_NAME=${USJ_JAR_NAME}.jar
fi

link_jar ()
{
	local srcDir=$1
	local srcJar=$2
	local destDir=$3
	local destJar=$4

	if [[ ("$srcDir" == "$destDir") && ("$srcJar" == "$destJar") ]]; then
		return
	fi

	if [[ ! -z "$VERBOSE" || "$DH_VERBOSE" = "1" ]]; then
		echo -e "\tdh_link $DH_OPTS -p${PACKAGE} ${srcDir}${srcJar} ${destDir}/${destJar}"
	fi
    dh_link $DH_OPTS -p${PACKAGE} ${srcDir}/${srcJar} ${destDir}/${destJar}
}

TARGET_DIR=$(dirname $JAR)
TARGET_JAR=$(basename $JAR)

# Install the link to the jar into the Maven repository
link_jar "$TARGET_DIR" "$TARGET_JAR" "$MVN_VERSIONED_DIR" "$VERSIONED_JAR_NAME"

if [[ "${version}" != "${debianVersion}" ]]; then
	link_jar "$TARGET_DIR" "$TARGET_JAR" "$MVN_DEBIAN_DIR" "$DEBIAN_JAR_NAME"
fi

# Create the additional links supplied on the argument list
for (( i=2; i < $ARGC; i++ )); do
    LINK_JAR="${ARGV[i]}"
	link_jar "$TARGET_DIR" "$TARGET_JAR" "$(dirname $LINK_JAR)" "$(basename $LINK_JAR)"
done

# Install the link to the jar in /usr/share/java
if [ -n "$JAVALIB" ]; then

	link_jar "$TARGET_DIR" "$TARGET_JAR" "usr/share/java" "$USJ_VERSIONED_JAR_NAME"

	if [[ -z "$NO_USJ_VERSIONLESS" ]]; then
		link_jar "$TARGET_DIR" "$TARGET_JAR" "usr/share/java" "$USJ_JAR_NAME"
	fi
fi