浏览代码

Add armhf support

Dima Krasner 5 年之前
父节点
当前提交
08d8ad26ab
共有 6 个文件被更改,包括 44 次插入15 次删除
  1. 4 0
      .travis.yml
  2. 1 0
      README.md
  3. 1 1
      build.sh
  4. 14 0
      check_tags.sh
  5. 3 6
      create_zip.sh
  6. 21 8
      install_deps.sh

+ 4 - 0
.travis.yml

@@ -8,6 +8,10 @@ matrix:
       sudo: required
       env: BUILDARCH=arm64
       dist: trusty
+    - os: linux
+      sudo: required
+      env: BUILDARCH=arm
+      dist: trusty
     - os: osx
 
 language: node_js

+ 1 - 0
README.md

@@ -104,6 +104,7 @@ The builds are run every day, but exit early if there isn't a new release from M
 - [x] Linux x64 (`deb`, `rpm`, `AppImage`, `tar.gz`)
 - [x] Linux x86 (`deb`, `rpm`, `tar.gz`) ([up to v1.35.1](https://code.visualstudio.com/updates/v1_36#_linux-32bit-support-ends))
 - [x] Linux arm64 (`deb`, `tar.gz`)
+- [x] Linux armhf (`deb`, `tar.gz`)
 - [x] Windows x64
 - [x] Windows x86
   

+ 1 - 1
build.sh

@@ -99,7 +99,7 @@ if [[ "$SHOULD_BUILD" == "yes" ]]; then
     yarn gulp vscode-reh-web-linux-${BUILDARCH}-min-ci
 
     yarn gulp "vscode-linux-${BUILDARCH}-build-deb"
-    if [[ "$BUILDARCH" != "arm64" ]]; then
+    if [[ "$BUILDARCH" == "x64" ]]; then
       yarn gulp "vscode-linux-${BUILDARCH}-build-rpm"
     fi
     . ../create_appimage.sh

+ 14 - 0
check_tags.sh

@@ -34,6 +34,20 @@ if [ "$GITHUB_TOKEN" != "" ]; then
       if [[ "$SHOULD_BUILD" != "yes" ]]; then
         echo "Already have all the Linux arm64 builds"
       fi
+    elif [[ $BUILDARCH == "arm" ]]; then
+      HAVE_ARM_DEB=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["armhf.deb"])')
+      HAVE_ARM_TAR=$(echo $VSCODIUM_ASSETS | jq --arg suffix "armhf-$LATEST_MS_TAG.tar.gz" 'map(.name) | contains([$suffix])')
+      if [[ "$HAVE_ARM_DEB" != "true" ]]; then
+        echo "Building on Linux arm because we have no DEB"
+        export SHOULD_BUILD="yes"
+      fi
+      if [[ "$HAVE_ARM_TAR" != "true" ]]; then
+        echo "Building on Linux arm because we have no TAR"
+        export SHOULD_BUILD="yes"
+      fi
+      if [[ "$SHOULD_BUILD" != "yes" ]]; then
+        echo "Already have all the Linux arm builds"
+      fi
     else
       HAVE_64_RPM=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["x86_64.rpm"])')
       HAVE_64_DEB=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["amd64.deb"])')

+ 3 - 6
create_zip.sh

@@ -4,13 +4,10 @@ if [[ "$SHOULD_BUILD" == "yes" ]]; then
   if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
     cd VSCode-darwin
     zip -r -X -y ../VSCodium-darwin-${LATEST_MS_TAG}.zip ./*.app
-  elif [[ "$BUILDARCH" == "arm64" ]]; then
-    cd VSCode-linux-arm64
-    tar czf ../VSCodium-linux-arm64-${LATEST_MS_TAG}.tar.gz .
   else
-    cd VSCode-linux-x64
-    tar czf ../VSCodium-linux-x64-${LATEST_MS_TAG}.tar.gz .
+    cd VSCode-linux-${BUILDARCH}
+    tar czf ../VSCodium-linux-${BUILDARCH}-${LATEST_MS_TAG}.tar.gz .
   fi
 
   cd ..
-fi
+fi

+ 21 - 8
install_deps.sh

@@ -6,22 +6,35 @@ if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
 else
   sudo apt-get update
   sudo apt-get install -y fakeroot jq
-  if [[ $BUILDARCH == "arm64" ]]; then
+  triplet=
+  case $BUILDARCH in
+  arm)
+    arch=armhf
+    triplet=arm-linux-gnueabihf
+    ;;
+
+  arm64)
+    arch=arm64
+    triplet=aarch64-linux-gnu
+    ;;
+  esac
+
+  if [[ -n "$triplet" ]]; then
     sed 's/^deb /deb [arch=amd64] '/g -i /etc/apt/sources.list
-    echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty main" | sudo tee -a /etc/apt/sources.list.d/arm64.list >/dev/null
-    sudo dpkg --add-architecture arm64
+    echo "deb [arch=$arch] http://ports.ubuntu.com/ubuntu-ports/ trusty main" | sudo tee -a /etc/apt/sources.list.d/$arch.list >/dev/null
+    sudo dpkg --add-architecture $arch
     sudo apt-get update
-    sudo apt-get install libc6-dev-arm64-cross gcc-aarch64-linux-gnu g++-aarch64-linux-gnu `apt-cache search x11proto | grep ^x11proto | cut -f 1 -d ' '` xz-utils pkg-config
+    sudo apt-get install libc6-dev-$arch-cross gcc-$triplet g++-$triplet `apt-cache search x11proto | grep ^x11proto | cut -f 1 -d ' '` xz-utils pkg-config
     mkdir -p dl
     cd dl
-    apt-get download libx11-dev:arm64 libx11-6:arm64 libxkbfile-dev:arm64 libxkbfile1:arm64 libxau-dev:arm64 libxdmcp-dev:arm64 libxcb1-dev:arm64 libsecret-1-dev:arm64 libsecret-1-0:arm64 libpthread-stubs0-dev:arm64 libglib2.0-dev:arm64 libglib2.0-0:arm64 libffi-dev:arm64 libffi6:arm64 zlib1g:arm64 libpcre3-dev:arm64 libpcre3:arm64
+    apt-get download libx11-dev:$arch libx11-6:$arch libxkbfile-dev:$arch libxkbfile1:$arch libxau-dev:$arch libxdmcp-dev:$arch libxcb1-dev:$arch libsecret-1-dev:$arch libsecret-1-0:$arch libpthread-stubs0-dev:$arch libglib2.0-dev:$arch libglib2.0-0:$arch libffi-dev:$arch libffi6:$arch zlib1g:$arch libpcre3-dev:$arch libpcre3:$arch
     for i in *.deb; do ar x $i; sudo tar -C / -xf data.tar.*; rm -f data.tar.*; done
     cd ..
-    export CC=/usr/bin/aarch64-linux-gnu-gcc
-    export CXX=/usr/bin/aarch64-linux-gnu-g++
+    export CC=/usr/bin/$triplet-gcc
+    export CXX=/usr/bin/$triplet-g++
     export CC_host=/usr/bin/gcc
     export CXX_host=/usr/bin/g++
-    export PKG_CONFIG_LIBDIR=/usr/lib/aarch64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
+    export PKG_CONFIG_LIBDIR=/usr/lib/$triplet/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
   else
     sudo apt-get install libx11-dev libxkbfile-dev libsecret-1-dev rpm
   fi