diff --git a/.travis.yml b/.travis.yml index 912a4c4ad..c392b0390 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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 @@ -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 @@ -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 @@ -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 diff --git a/scripts/make_component.sh b/scripts/make_component.sh index 502bf1929..8ac5c787f 100755 --- a/scripts/make_component.sh +++ b/scripts/make_component.sh @@ -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" @@ -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" @@ -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}"