mirror of
https://https.git.savannah.gnu.org/git/gettext.git
synced 2026-01-26 07:37:57 +00:00
* build-aux/jar-cf: Unset CDPATH. Run 'git log' from $top_srcdir, not from the current directory.
116 lines
3.5 KiB
Bash
Executable File
116 lines
3.5 KiB
Bash
Executable File
#!/bin/sh
|
|
# Creating a Java archive (.jar).
|
|
|
|
# Copyright (C) 2024-2026 Free Software Foundation, Inc.
|
|
#
|
|
# This file 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 file 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 <https://www.gnu.org/licenses/>.
|
|
|
|
# Written by Bruno Haible <bruno@clisp.org>, 2024.
|
|
|
|
# func_usage
|
|
# outputs to stdout the --help usage message.
|
|
func_usage ()
|
|
{
|
|
echo "\
|
|
Usage: jar-cf [OPTION]... JAR_PROGRAM TOP_SRCDIR DESTINATION.jar ELEMENT...
|
|
|
|
Invokes the JAR_PROGRAM, to create DESTINATION.jar with the ELEMENTs as
|
|
contents.
|
|
|
|
Options:
|
|
--help print this help and exit
|
|
--version print version information and exit
|
|
|
|
Send patches and bug reports to <bug-gettext@gnu.org>."
|
|
}
|
|
|
|
# func_version
|
|
# outputs to stdout the --version message.
|
|
func_version ()
|
|
{
|
|
echo "jar-cf (GNU gettext)"
|
|
echo "Copyright (C) 2026 Free Software Foundation, Inc.
|
|
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
|
|
This is free software: you are free to change and redistribute it.
|
|
There is NO WARRANTY, to the extent permitted by law."
|
|
echo
|
|
printf 'Written by %s.\n' "Bruno Haible"
|
|
}
|
|
|
|
# func_fatal_error message
|
|
# outputs to stderr a fatal error message, and terminates the program.
|
|
func_fatal_error ()
|
|
{
|
|
echo "jar-cf: *** $1" 1>&2
|
|
echo "jar-cf: *** Stop." 1>&2
|
|
exit 1
|
|
}
|
|
|
|
# Outputs a command and runs it.
|
|
func_verbose ()
|
|
{
|
|
# Make it easy to copy&paste the printed command into a shell in most cases,
|
|
# by escaping '\\', '"', and '$'. This is not perfect, just good enough.
|
|
echo "$@" | sed -e 's/\([\\"$]\)/\\\1/g'
|
|
"$@"
|
|
}
|
|
|
|
# Command-line option processing.
|
|
while test $# -gt 0; do
|
|
case "$1" in
|
|
--help | --hel | --he | --h )
|
|
func_usage
|
|
exit 0 ;;
|
|
--version | --versio | --versi | --vers | --ver | --ve | --v )
|
|
func_version
|
|
exit 0 ;;
|
|
-- ) # Stop option processing
|
|
shift; break ;;
|
|
-* )
|
|
func_fatal_error "unrecognized option: $1"
|
|
;;
|
|
* )
|
|
break ;;
|
|
esac
|
|
done
|
|
|
|
if test $# -lt 2; then
|
|
func_fatal_error "too few arguments"
|
|
fi
|
|
|
|
jar_program="$1"
|
|
top_srcdir="$2"
|
|
shift
|
|
shift
|
|
|
|
# Unset CDPATH. Otherwise, output from 'cd dir' can surprise callers.
|
|
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
|
|
|
|
if $jar_program --help 2>&1 | grep '\--date=' >/dev/null; then
|
|
# The JAR_PROGRAM supports the --date option. Its effect is to set the given
|
|
# date as time stamp on all the ELEMENTs and also the META-INF/MANIFEST.MF.
|
|
# Use it, for reproducibility (cf. <https://reproducible-builds.org/>).
|
|
if test -d "$top_srcdir/.git"; then
|
|
# We are in a git checkout. Use the date of the latest commit.
|
|
date=`cd "$top_srcdir" && git log -n 1 --date=iso --format=fuller | sed -n -e 's/^CommitDate: //p' | sed -e 's/ /T/' -e 's/ \(...\)\(..\)$/\1:\2/'`
|
|
else
|
|
# We are building from a tarball.
|
|
# Use the date of the first entry of the ChangeLog file.
|
|
date=`sed -n -e 's/^\([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\).*/\1/p' -e 1q "$top_srcdir/ChangeLog"`'T00:00:00+00:00'
|
|
fi
|
|
func_verbose $jar_program --date="$date" -c -f "$@"
|
|
else
|
|
func_verbose $jar_program cf "$@"
|
|
fi
|