|
3 | 3 |
|
4 | 4 | # Install binary and runfiles from bazel build |
5 | 5 |
|
6 | | -TARFILE=$(cd $BUILD_WORKSPACE_DIRECTORY; bazelisk info bazel-bin)/packaging/openroad.tar |
| 6 | +BAZEL_BIN=$(cd "$BUILD_WORKSPACE_DIRECTORY"; bazel info bazel-bin) |
| 7 | +TARFILE="$BAZEL_BIN/packaging/openroad.tar" |
7 | 8 |
|
8 | | -DEST_DIR=${1:-${BUILD_WORKSPACE_DIRECTORY}/../install/OpenROAD/bin} |
| 9 | +# The desktop entry is built into bazel-bin only for GUI builds |
| 10 | +# --//:platform=gui |
| 11 | +DESKTOP_SRC="$BAZEL_BIN/src/gui/openroad.desktop" |
| 12 | +ICON_SRC="$BUILD_WORKSPACE_DIRECTORY/src/gui/resources/icon.png" |
9 | 13 |
|
10 | | -mkdir -p "$DEST_DIR" |
11 | | -cp -f "$TARFILE" "$DEST_DIR" |
12 | | -cd "$DEST_DIR" |
13 | | -tar -xf openroad.tar |
14 | | -rm -f openroad.tar |
| 14 | +INSTALL_DESKTOP=0 |
| 15 | +if [ "${OPENROAD_INSTALL_GUI:-0}" = "1" ]; then |
| 16 | + INSTALL_DESKTOP=1 |
| 17 | +fi |
| 18 | + |
| 19 | +DEST_DIR=${1:-${BUILD_WORKSPACE_DIRECTORY}/../install/OpenROAD} |
| 20 | + |
| 21 | +mkdir -p "$DEST_DIR/bin" |
| 22 | + |
| 23 | +# Remove previous OpenROAD install artifacts. |
| 24 | +rm -f "$DEST_DIR/bin/openroad" |
| 25 | +rm -f "$DEST_DIR/bin/openroad.repo_mapping" |
| 26 | +rm -f "$DEST_DIR/bin/openroad.runfiles_manifest" |
| 27 | +rm -rf "$DEST_DIR/bin/openroad.runfiles" |
| 28 | + |
| 29 | +tar -xf "$TARFILE" -C "$DEST_DIR/bin" |
15 | 30 |
|
16 | 31 | # Remove useless files from pkg_tar from bazel |
17 | | -if [ -e openroad.repo_mapping ]; then |
18 | | - chmod u+w openroad.repo_mapping |
19 | | - rm -rf openroad.repo_mapping |
| 32 | +if [ -e "$DEST_DIR/bin/openroad.repo_mapping" ]; then |
| 33 | + chmod u+w "$DEST_DIR/bin/openroad.repo_mapping" |
| 34 | + rm -rf "$DEST_DIR/bin/openroad.repo_mapping" |
20 | 35 | fi |
21 | 36 |
|
22 | | -echo "OpenROAD binary installed to $(realpath "$DEST_DIR")" |
| 37 | +ABS_DEST="$(realpath "$DEST_DIR")" |
| 38 | +echo "OpenROAD binary installed to $ABS_DEST" |
| 39 | + |
| 40 | +# Remove any previously installed desktop entry and icon before (re)installing, |
| 41 | +# mirroring the binary artifact cleanup above. This runs unconditionally so a |
| 42 | +# prior GUI install is cleaned up even when the current install is not a GUI |
| 43 | +# build, avoiding a stale launcher/icon left pointing at an old prefix. |
| 44 | +APPS_DIR="${HOME}/.local/share/applications" |
| 45 | +rm -f "$ABS_DEST/share/openroad/gui/icon.png" |
| 46 | +rm -f "$APPS_DIR/openroad.desktop" |
| 47 | + |
| 48 | +# Install the desktop entry (menu launcher + icon) if Bazel built it, i.e. |
| 49 | +# this is a GUI build. |
| 50 | +if [ "$INSTALL_DESKTOP" = "1" ] && [ -f "$DESKTOP_SRC" ]; then |
| 51 | + GUI_SHARE="$ABS_DEST/share/openroad/gui" |
| 52 | + mkdir -p "$GUI_SHARE" |
| 53 | + cp -f "$ICON_SRC" "$GUI_SHARE/icon.png" |
| 54 | + |
| 55 | + mkdir -p "$APPS_DIR" |
| 56 | + cp -f "$DESKTOP_SRC" "$APPS_DIR/openroad.desktop" |
| 57 | + # Fill in the install prefix for the icon, and point Exec at the absolute |
| 58 | + # binary so the launcher works without openroad being on PATH. |
| 59 | + sed -i \ |
| 60 | + -e "s|@OPENROAD_PREFIX@|$ABS_DEST|g" \ |
| 61 | + -e "s|^Exec=openroad |Exec=$ABS_DEST/bin/openroad |" \ |
| 62 | + "$APPS_DIR/openroad.desktop" |
| 63 | + if command -v update-desktop-database >/dev/null 2>&1; then |
| 64 | + update-desktop-database "$APPS_DIR" >/dev/null 2>&1 || true |
| 65 | + fi |
| 66 | + echo "OpenROAD desktop entry installed to $APPS_DIR/openroad.desktop" |
| 67 | +fi |
0 commit comments