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 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242
|
#! /bin/bash -e
shopt -s nullglob
### global variables
# version of this package
version="@VERSION@"
working_dir="$( pwd )"
program_name="$( basename "$0" )"
program_dir="$( cd "$( dirname "$( type -p "$0" )" )" ; pwd )"
lib_dir="/usr/share/java-package"
[ "$J2SE_PACKAGE_LIBDIR" ] && lib_dir="$J2SE_PACKAGE_LIBDIR"
# If a default has been set for either of the
# environment variables, use it; otherwise,
# default to the name and email used by the
# Debian Java Maintainers project.
if [ -z "$J2SE_PACKAGE_FULL_NAME" ]; then
maintainer_name="Debian Java Maintainers"
else
maintainer_name="$J2SE_PACKAGE_FULL_NAME"
fi
if [ -z "$J2SE_PACKAGE_EMAIL" ]; then
maintainer_email="pkg-java-maintainers@lists.alioth.debian.org"
else
maintainer_email="$J2SE_PACKAGE_EMAIL"
fi
genchanges=""
### check for run in fakeroot
# are we running as fakeroot
if ! dh_testroot >/dev/null 2>&1; then
if [ -n "$FAKEROOTKEY" ]; then
echo "Internal error, fakeroot seems to fail faking root" >&2
exit 1
fi
exec fakeroot "$0" "$@"
fi
# check whether I'm real root, and bail out if so... ugly, but needed
if touch /lib/.test 2>/dev/null; then
rm -f /lib/.test
echo "You are real root -- unfortunately, some Java distributions have" >&2
echo "install scripts that directly manipulate /etc, and may cause some" >&2
echo "inconsistencies on your system. Instead, you should become a" >&2
echo "non-root user and run:" >&2
echo >&2
echo "fakeroot make-jpkg $@" >&2
echo >&2
echo "which will allow no damage to be done to your system files and" >&2
echo "still permit the Java distribution to successfully extract." >&2
echo >&2
echo "Aborting." >&2
exit 1
fi
### Parse options
print_usage() {
cat << EOF
Usage: $program_name [OPTION]... FILE
$program_name builds a Debian package from the given Java binary distribution FILE
Supported java binary distributions currently include:
* Oracle (http://www.oracle.com/technetwork/java/javase/downloads) :
- The J2SE Development Kit (JDK), version 6 (update >= 10), 7
- The J2SE Runtime Environment (JRE), version 6 (update >= 10), 7
- The J2SE API Javadoc, version 6 (update >= 10), 7
(Choose tar.gz archives or self-extracting archives, do _not_ choose the RPM!)
The following options are recognized:
--full-name NAME full name used in the maintainer field of the package
--email EMAIL email address used in the maintainer field of the package
--changes create a .changes file
--revision add debian revision
--help display this help and exit
--version output version information and exit
EOF
}
unrecognized_option() {
cat >&2 << EOF
$program_name: unrecognized option \`$1'
Try \`$program_name --help' for more information.
EOF
exit 1
}
missing_argument() {
cat >&2 << EOF
$program_name: missing argument for option \`$1'
Try \`$program_name --help' for more information.
EOF
exit 1
}
# options
while [[ $# -gt 0 && "x$1" == x--* ]]; do
if [[ "x$1" == x--version ]]; then
echo "make-jpkg $version"
exit 0
elif [[ "x$1" == x--help ]]; then
print_usage
exit 0
elif [[ "x$1" == x--full-name ]]; then
[ $# -le 1 ] && missing_argument "$1"
shift
maintainer_name="$1"
elif [[ "x$1" == x--email ]]; then
[ $# -le 1 ] && missing_argument "$1"
shift
maintainer_email="$1"
elif [[ "x$1" == x--revision ]]; then
[ $# -le 1 ] && missing_argument "$1"
shift
revision="-${1}"
elif [[ "x$1" == x--changes ]]; then
genchanges="true"
else
unrecognized_option "$1"
fi
shift
done
# last argument
if [[ $# -ne 1 ]]; then
cat >&2 << EOF
$program_name: missing pathname
Try \`$program_name --help' for more information.
EOF
exit 1
fi
archive="$1"
if [[ ! -e "$archive" ]]; then
echo "Error: The file \"$archive\" does not exist."
exit 1
elif [[ ! -r "$archive" ]]; then
echo "Error: The file \"$archive\" is not readable."
exit 1
fi
archive_name="$( basename "$archive" )"
archive_dir="$( cd "$( dirname "$archive" )" ; pwd )"
archive_path="$archive_dir/$archive_name"
# error handling
success=
failed=
tmp=
# function is called when script terminates
on_exit() {
lastcmd="$_"
if [[ -z "$success" && -z "$failed" ]]; then
cat >&2 << EOF
Aborted ($lastcmd).
EOF
fi
# remove temporary directory
if [ -n "$tmp" -a -d "$tmp" ]; then
echo -n "Removing temporary directory: "
rm -rf "$tmp"
echo "done"
fi
}
trap on_exit EXIT
# print error message and terminate
error_exit() {
cat >&2 << EOF
Aborted.
EOF
failed=true
exit 1
}
# The environment variable tmp points to a secure temporary directory.
# There should be enough free disk space.
echo -n "Creating temporary directory: "
tmp="$( mktemp -d -t "$program_name.XXXXXXXXXX" )"
echo "$tmp"
debian_dir="$tmp/debian"
install -d -m 755 "$debian_dir"
install_dir="$tmp/install"
install -d -m 755 "$install_dir"
# load and execute plugins
echo -n "Loading plugins:"
files=($lib_dir/*.sh)
for file in "${files[@]}"; do
echo -n " $file"
source "$file"
done
echo
# get architecture information
get_architecture
jvm_base="/usr/lib/jvm/"
javadoc_base="/usr/share/doc/"
j2se_found=
for var in ${!j2se_detect_*}; do
eval "\$$var"
if [[ "$j2se_found" == "true" ]]; then
break;
fi
done
echo
if [[ -z "$j2se_found" ]]; then
echo "No matching plugin was found."
fi
### exit
success=true
exit 0
|