Admin/lib/Tools/build_setup
author wenzelm
Sun, 11 Jul 2021 16:57:30 +0200
changeset 73963 59b6f0462086
parent 73953 0b5e6851c722
child 74030 39e05601faeb
permissions -rwxr-xr-x
clarified modules; clarified messages; clarified return code;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
73906
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
     1
#!/usr/bin/env bash
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
     2
#
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
     3
# Author: Makarius
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
     4
#
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
     5
# DESCRIPTION: build component for Isabelle/Java setup tool
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
     6
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
     7
## sources
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
     8
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
     9
declare -a SOURCES=(
73944
3cee9d20308e clarified modules;
wenzelm
parents: 73930
diff changeset
    10
  "Build.java"
73906
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    11
  "Environment.java"
73963
59b6f0462086 clarified modules;
wenzelm
parents: 73953
diff changeset
    12
  "Exn.java"
59b6f0462086 clarified modules;
wenzelm
parents: 73953
diff changeset
    13
  "Library.java"
73906
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    14
  "Setup.java"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    15
)
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    16
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    17
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    18
## usage
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    19
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    20
PRG=$(basename "$0")
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    21
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    22
function usage()
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    23
{
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    24
  echo
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    25
  echo "Usage: isabelle $PRG [OPTIONS] COMPONENT_DIR"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    26
  echo
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    27
  echo "  Build component for Isabelle/Java setup tool."
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    28
  echo
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    29
  exit 1
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    30
}
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    31
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    32
function fail()
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    33
{
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    34
  echo "$1" >&2
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    35
  exit 2
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    36
}
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    37
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    38
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    39
## process command line
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    40
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    41
[ "$#" -ge 1 ] && { COMPONENT_DIR="$1"; shift; }
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    42
[ "$#" -ne 0 -o -z "$COMPONENT_DIR" ] && usage
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    43
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    44
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    45
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    46
## main
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    47
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    48
[ -d "$COMPONENT_DIR" ] && fail "Directory already exists: \"$COMPONENT_DIR\""
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    49
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    50
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    51
# build jar
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    52
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    53
TARGET_DIR="$COMPONENT_DIR/lib"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    54
mkdir -p "$TARGET_DIR/isabelle/setup"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    55
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    56
declare -a ARGS=("-Xlint:unchecked")
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    57
for SRC in "${SOURCES[@]}"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    58
do
73912
ac1639349ecf clarified directories;
wenzelm
parents: 73906
diff changeset
    59
  ARGS["${#ARGS[@]}"]="$(platform_path "$ISABELLE_HOME/src/Tools/Setup/isabelle/setup/$SRC")"
73906
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    60
done
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    61
73953
0b5e6851c722 clarified javac options;
wenzelm
parents: 73944
diff changeset
    62
isabelle_jdk javac $ISABELLE_JAVAC_OPTIONS -d "$TARGET_DIR" \
0b5e6851c722 clarified javac options;
wenzelm
parents: 73944
diff changeset
    63
  -classpath "$(platform_path "$ISABELLE_CLASSPATH")" "${ARGS[@]}" || \
73906
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    64
  fail "Failed to compile sources"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    65
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    66
isabelle_jdk jar -c -f "$(platform_path "$TARGET_DIR/isabelle_setup.jar")" \
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    67
  -e "isabelle.setup.Setup" -C "$TARGET_DIR" isabelle || fail "Failed to produce jar"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    68
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    69
rm -rf "$TARGET_DIR/isabelle"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    70
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    71
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    72
# etc/settings
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    73
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    74
mkdir -p "$COMPONENT_DIR/etc"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    75
cat > "$COMPONENT_DIR/etc/settings" <<EOF
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    76
# -*- shell-script -*- :mode=shellscript:
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    77
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    78
ISABELLE_SETUP_JAR="\$COMPONENT/lib/isabelle_setup.jar"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    79
classpath "\$ISABELLE_SETUP_JAR"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    80
EOF
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    81
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    82
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    83
# README
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    84
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    85
cat > "$COMPONENT_DIR/README" <<EOF
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    86
Isabelle setup in pure Java, see also \$ISABELLE_HOME/src/Tools/Setup/.
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    87
EOF