Admin/lib/Tools/component_setup
author wenzelm
Fri, 26 Apr 2024 13:25:44 +0200
changeset 80150 96f60533ec1d
parent 77566 2a99fcb283ee
permissions -rwxr-xr-x
update Windows test machines;
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
## usage
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
PRG=$(basename "$0")
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    10
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    11
function usage()
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    12
{
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    13
  echo
75308
6ed34e2e04dd proper usage;
wenzelm
parents: 74039
diff changeset
    14
  echo "Usage: isabelle $PRG COMPONENT_DIR"
73906
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    15
  echo
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    16
  echo "  Build component for Isabelle/Java setup tool."
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    17
  echo
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    18
  exit 1
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
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    21
function fail()
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    22
{
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    23
  echo "$1" >&2
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    24
  exit 2
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    25
}
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    26
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    27
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    28
## process command line
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    29
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    30
[ "$#" -ge 1 ] && { COMPONENT_DIR="$1"; shift; }
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    31
[ "$#" -ne 0 -o -z "$COMPONENT_DIR" ] && usage
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    32
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
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    35
## main
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
[ -d "$COMPONENT_DIR" ] && fail "Directory already exists: \"$COMPONENT_DIR\""
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
74030
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    40
# etc/settings
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    41
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    42
mkdir -p "$COMPONENT_DIR/etc"
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    43
cat > "$COMPONENT_DIR/etc/settings" <<EOF
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    44
# -*- shell-script -*- :mode=shellscript:
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    45
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    46
ISABELLE_SETUP_JAR="\$COMPONENT/lib/isabelle_setup.jar"
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    47
classpath "\$ISABELLE_SETUP_JAR"
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    48
EOF
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    49
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    50
73906
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"
74039
8c213672f6f3 clarified component setup: exclude jar from active component, but use sources from template within ISABELLE_HOME (relevant for "isabelle scala_project -L");
wenzelm
parents: 74031
diff changeset
    54
mkdir -p "$TARGET_DIR/isabelle/setup"
73906
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")
74030
39e05601faeb more accurate scala_project, based on build.props of components;
wenzelm
parents: 73963
diff changeset
    57
74039
8c213672f6f3 clarified component setup: exclude jar from active component, but use sources from template within ISABELLE_HOME (relevant for "isabelle scala_project -L");
wenzelm
parents: 74031
diff changeset
    58
SOURCES="$(perl -e 'while (<>) { if (m/(\S+\.java)/)  { print "$1 "; } }' "$ISABELLE_HOME/src/Tools/Setup/etc/build.props")"
8c213672f6f3 clarified component setup: exclude jar from active component, but use sources from template within ISABELLE_HOME (relevant for "isabelle scala_project -L");
wenzelm
parents: 74031
diff changeset
    59
for SRC in $SOURCES
73906
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    60
do
74039
8c213672f6f3 clarified component setup: exclude jar from active component, but use sources from template within ISABELLE_HOME (relevant for "isabelle scala_project -L");
wenzelm
parents: 74031
diff changeset
    61
  ARGS["${#ARGS[@]}"]="$(platform_path "$ISABELLE_HOME/src/Tools/Setup/$SRC")"
73906
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    62
done
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    63
73953
0b5e6851c722 clarified javac options;
wenzelm
parents: 73944
diff changeset
    64
isabelle_jdk javac $ISABELLE_JAVAC_OPTIONS -d "$TARGET_DIR" \
0b5e6851c722 clarified javac options;
wenzelm
parents: 73944
diff changeset
    65
  -classpath "$(platform_path "$ISABELLE_CLASSPATH")" "${ARGS[@]}" || \
73906
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    66
  fail "Failed to compile sources"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    67
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    68
isabelle_jdk jar -c -f "$(platform_path "$TARGET_DIR/isabelle_setup.jar")" \
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    69
  -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
    70
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    71
rm -rf "$TARGET_DIR/isabelle"
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    72
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
# README
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    75
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    76
cat > "$COMPONENT_DIR/README" <<EOF
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    77
Isabelle setup in pure Java, see also \$ISABELLE_HOME/src/Tools/Setup/.
f627ffab387b support for Isabelle setup in pure Java;
wenzelm
parents:
diff changeset
    78
EOF