Skip to content

Commit

Permalink
Allow CI building on arm64 hardware
Browse files Browse the repository at this point in the history
  • Loading branch information
John Kleinschmidt committed Mar 8, 2018
1 parent 569b87f commit 134d3f9
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 2 deletions.
63 changes: 63 additions & 0 deletions Dockerfile.arm64v8
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
FROM arm64v8/ubuntu:16.04

RUN groupadd --gid 1000 builduser \
&& useradd --uid 1000 --gid builduser --shell /bin/bash --create-home builduser

RUN groupadd --gid 114 jenkins \
&& useradd --uid 110 --gid jenkins --shell /bin/bash --create-home jenkins

# Set up TEMP directory
ENV TEMP=/tmp
RUN chmod a+rwx /tmp

RUN apt-get update && apt-get install -y\
bison \
build-essential \
clang \
curl \
gperf \
git \
libasound2 \
libasound2-dev \
libcap-dev \
libcups2-dev \
libdbus-1-dev \
libgconf-2-4 \
libgconf2-dev \
libgnome-keyring-dev \
libgtk2.0-0 \
libgtk2.0-dev \
libgtk-3-0 \
libgtk-3-dev \
libnotify-dev \
libnss3 \
libnss3-dev \
libx11-xcb-dev \
libxss1 \
libxtst-dev \
libxtst6 \
lsb-release \
locales \
ninja \
python-setuptools \
python-pip \
python-dbusmock \
wget \
xvfb

# Install node.js
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get update && apt-get install -y nodejs

# Install crcmod
RUN pip install -U crcmod

ADD tools/xvfb-init.sh /etc/init.d/xvfb
RUN chmod a+x /etc/init.d/xvfb

# Install ninja in /usr/local
RUN cd /usr/local && git clone https://github.com/martine/ninja.git -b v1.5.3
RUN cd /usr/local/ninja && ./configure.py --bootstrap

USER builduser
WORKDIR /home/builduser
35 changes: 35 additions & 0 deletions Jenkinsfile.arm64
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
pipeline {
agent {
docker {
image 'electronbuilds/arm64v8:0.0.1'
args '--privileged'
}
}
environment {
TARGET_ARCH='arm64'
DISPLAY=':99.0'
}
stages {
stage('Bootstrap') {
steps {
sh 'script/bootstrap.py -v --dev --target_arch=$TARGET_ARCH'
}
}
stage('Build') {
steps {
sh 'script/build.py -c D --ninja-path /usr/local/ninja/ninja'
}
}
stage('Test') {
steps {
sh '/etc/init.d/xvfb start'
sh 'script/test.py --ci'
}
}
}
post {
always {
cleanWs()
}
}
}
8 changes: 7 additions & 1 deletion script/update-clang.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ STAMP_FILE="${LLVM_DIR}/../llvm-build/cr_build_revision"
LLVM_REPO_URL=${LLVM_URL:-https://llvm.org/svn/llvm-project}

CDS_URL=https://commondatastorage.googleapis.com/chromium-browser-clang
S3_URL=https://s3.amazonaws.com/gh-contractor-zcbenz/clang


# Die if any command dies, error on undefined variable expansions.
Expand All @@ -49,7 +50,12 @@ CDS_FILE="clang-${PACKAGE_VERSION}.tgz"
CDS_OUT_DIR=$(mktemp -d -t clang_download.XXXXXX)
CDS_OUTPUT="${CDS_OUT_DIR}/${CDS_FILE}"
if [ "${OS}" = "Linux" ]; then
CDS_FULL_URL="${CDS_URL}/Linux_x64/${CDS_FILE}"
ARCH="$(uname -m)"
if [ "${ARCH}" = "aarch64" ]; then
CDS_FULL_URL="${S3_URL}/arm64/${CDS_FILE}"
else
CDS_FULL_URL="${CDS_URL}/Linux_x64/${CDS_FILE}"
fi
elif [ "${OS}" = "Darwin" ]; then
CDS_FULL_URL="${CDS_URL}/Mac/${CDS_FILE}"
fi
Expand Down
3 changes: 2 additions & 1 deletion spec/modules-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ describe('modules support', () => {
// https://github.com/electron/electron/issues/11274
xdescribe('ffi', () => {
before(function () {
if (!nativeModulesEnabled || process.platform === 'win32') {
if (!nativeModulesEnabled || process.platform === 'win32' ||
process.arch === 'arm64') {
this.skip()
}
})
Expand Down

0 comments on commit 134d3f9

Please sign in to comment.