Skip to content

Commit

Permalink
Add macOS build for native-image and component
Browse files Browse the repository at this point in the history
Also, rename component and deploy to GitHub releases on tags
  • Loading branch information
fniephaus committed Nov 8, 2019
1 parent b003351 commit a24e117
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 32 deletions.
48 changes: 33 additions & 15 deletions .travis.yml
Expand Up @@ -17,9 +17,11 @@ aliases:
JVMCI_VERSION="jvmci-19.2-b02"
JDK8_UPDATE_VERSION="222"
JDK_TAR=${TRAVIS_BUILD_DIR}/../jdk.tar.gz
curl -sSL --retry 3 -o ${JDK_TAR} https://github.com/graalvm/openjdk8-jvmci-builder/releases/download/${JVMCI_VERSION}/openjdk-8u${JDK8_UPDATE_VERSION}-${JVMCI_VERSION}-linux-amd64.tar.gz
OS_NAME=$(uname -s | tr '[:upper:]' '[:lower:]')
JAVA_HOME_SUFFIX="" && [[ "${OS_NAME}" = "darwin" ]] && JAVA_HOME_SUFFIX="/Contents/Home"
curl -sSL --retry 3 -o ${JDK_TAR} https://github.com/graalvm/openjdk8-jvmci-builder/releases/download/${JVMCI_VERSION}/openjdk-8u${JDK8_UPDATE_VERSION}-${JVMCI_VERSION}-${OS_NAME}-amd64.tar.gz
tar -C ${TRAVIS_BUILD_DIR}/.. -xzf ${JDK_TAR}
export JAVA_HOME=${TRAVIS_BUILD_DIR}/../openjdk1.8.0_${JDK8_UPDATE_VERSION}-${JVMCI_VERSION}
export JAVA_HOME=${TRAVIS_BUILD_DIR}/../openjdk1.8.0_${JDK8_UPDATE_VERSION}-${JVMCI_VERSION}${JAVA_HOME_SUFFIX}
- &use-graalvm
|
GRAAL_VM_VERSION=19.2.1
Expand Down Expand Up @@ -70,6 +72,26 @@ aliases:
- &jdk11-test-setup # set up oraclejdk11 and download image
jdk: oraclejdk11
before_script: scripts/download-test-image.sh
- &build-native-image-and-component
env: NATIVE_IMAGE_AND_COMPONENT=true
language: c
install: *use-openjdk8-jvmci
before_script: scripts/download-test-image.sh
script:
- mx squeak-svm
- bin/graalsqueak-svm --version:graalvm
- "bin/graalsqueak-svm --code \"String streamContents: [:s | SystemReporter new reportVM: s] limitedTo: 10000\" images/test-64bit.image"
- bin/graalsqueak-svm --code "1 tinyBenchmarks" images/test-64bit.image
- scripts/make_component.sh
deploy:
provider: releases
api_key:
secure: $GITHUB_TOKEN
file_glob: true
file: graalsqueak-installable*.jar
skip_cleanup: true
on:
tags: true

before_install: *clone-mx

Expand All @@ -78,9 +100,7 @@ script: mx gate ${MX_OPTS} --strict-mode --tags ${GATE}
jobs:
include:
- env: JDK="openjdk8" GATE="style,fullbuild"
script:
- mx gate --strict-mode --tags ${GATE}
- scripts/make_component.sh
script: mx gate --strict-mode --tags ${GATE}
install:
- *use-openjdk8-jvmci
- *install-pylint
Expand All @@ -91,17 +111,15 @@ jobs:
<<: *openjdk8-jvmci-test-setup
- env: JDK="graalvm" GATE="build,test"
<<: *graalvm-test-setup
- env: SUBSTRATE_VM=true
before_script: scripts/download-test-image.sh
script:
- "mx squeak-svm"
- "bin/graalsqueak-svm --version:graalvm"
- "bin/graalsqueak-svm --code \"String streamContents: [:s | SystemReporter new reportVM: s] limitedTo: 10000\" images/test-64bit.image"
- "bin/graalsqueak-svm --code \"1 tinyBenchmarks\" images/test-64bit.image"
language: c
addons:
- addons:
apt:
packages:
- libsdl2-dev
install: *use-openjdk8-jvmci
<<: *build-native-image-and-component
- os: osx
osx_image: xcode11.2 # Use macOS Mojave
before_install:
- *clone-mx
- HOMEBREW_NO_AUTO_UPDATE=1 brew install sdl2
<<: *build-native-image-and-component
fast_finish: true
33 changes: 16 additions & 17 deletions scripts/make_component.sh
Expand Up @@ -9,6 +9,18 @@ set -e

readonly LANGUAGE_ID="smalltalk"
readonly GRAALVM_VERSION="19.2.1"
readonly OS_NAME=$(uname -s | tr '[:upper:]' '[:lower:]')
case "${OS_NAME}" in
"darwin")
OS_NAME_FOR_GU=macos
;;
*)
OS_NAME_FOR_GU="${OS_NAME}"
;;
esac
readonly OS_NAME_FOR_GU
readonly OS_ARCH_FOR_GU="amd64"
readonly GIT_DESCRIPTION=$(git describe --tags)

readonly BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
readonly COMPONENT_DIR="component_temp_dir"
Expand All @@ -18,7 +30,7 @@ readonly LANGUAGE_PATH="${COMPONENT_DIR}/jre/languages/${LANGUAGE_ID}"
readonly LIB_GRAALVM_PATH="${COMPONENT_DIR}/jre/lib/graalvm"
readonly MANIFEST="${COMPONENT_DIR}/META-INF/MANIFEST.MF"
readonly RELEASE_FILE="${LANGUAGE_PATH}/release"
readonly TARGET_JAR="${GRAALSQUEAK_DIR}/graalsqueak-component.jar"
readonly TARGET_JAR="${GRAALSQUEAK_DIR}/graalsqueak-installable-${OS_NAME}-${OS_ARCH_FOR_GU}-${GIT_DESCRIPTION}-for-GraalVM-${GRAALVM_VERSION}.jar"
readonly TEMPLATE_LAUNCHER="template.graalsqueak.sh"
readonly TEMPLATE_WIN_LAUNCHER="template.graalsqueak.cmd"

Expand Down Expand Up @@ -50,29 +62,16 @@ touch "${MANIFEST}"
echo "Bundle-Name: GraalSqueak" >> "${MANIFEST}"
echo "Bundle-Symbolic-Name: de.hpi.swa.graal.squeak" >> "${MANIFEST}"
echo "Bundle-Version: ${GRAALVM_VERSION}" >> "${MANIFEST}"
echo "Bundle-RequireCapability: org.graalvm; filter:=\"(&(graalvm_version=${GRAALVM_VERSION})(os_arch=amd64))\"" >> "${MANIFEST}"
echo "Bundle-RequireCapability: org.graalvm; filter:=\"(&(graalvm_version=${GRAALVM_VERSION})(os_name=${OS_NAME_FOR_GU})(os_arch=${OS_ARCH_FOR_GU}))\"" >> "${MANIFEST}"
echo "x-GraalVM-Polyglot-Part: True" >> "${MANIFEST}"

case $(uname -s) in
"Linux")
OS_NAME=linux
;;
"Darwin")
OS_NAME=macos
;;
*)
OS_NAME=undefined
;;
esac
readonly OS_NAME
readonly OS_ARCH="$(uname -m)"
readonly GIT_HASH="$(git rev-parse HEAD)"
readonly GIT_BRANCH_NAME="$(git rev-parse --abbrev-ref HEAD)"
readonly GIT_COMMITTER_NAME="$(git config user.name)"
readonly GIT_COMMITTER_EMAIL="$(git config user.email)"

echo "OS_NAME=${OS_NAME}" > "${RELEASE_FILE}"
echo "OS_ARCH=${OS_ARCH}" >> "${RELEASE_FILE}"
echo "OS_NAME=${OS_NAME_FOR_GU}" > "${RELEASE_FILE}"
echo "OS_ARCH=${OS_ARCH_FOR_GU}" >> "${RELEASE_FILE}"
echo "SOURCE=\"${GIT_BRANCH_NAME}:${GIT_HASH}\"" >> "${RELEASE_FILE}"
echo "COMMIT_INFO={\"${GIT_BRANCH_NAME}\": {\"commit.committer\": \"${GIT_COMMITTER_NAME} <${GIT_COMMITTER_EMAIL}>\", \"commit.rev\": \"${GIT_HASH}\"}}" >> "${RELEASE_FILE}"
echo "GRAALVM_VERSION=${GRAALVM_VERSION}" >> "${RELEASE_FILE}"
Expand Down

0 comments on commit a24e117

Please sign in to comment.