Parcourir la source

32 bit builds (#32)

* Support 32-bit Linux builds

* Update README and correct scripts

* Use npm run instead of npx
Peter Squicciarini il y a 6 ans
Parent
commit
ae47b31091
6 fichiers modifiés avec 74 ajouts et 27 suppressions
  1. 5 0
      .travis.yml
  2. 4 3
      README.md
  3. 19 6
      build.sh
  4. 37 18
      check_tags.sh
  5. 3 0
      create_zip.sh
  6. 6 0
      install_deps.sh

+ 5 - 0
.travis.yml

@@ -2,6 +2,9 @@ matrix:
   include:
     - os: linux
       sudo: required
+    - os: linux
+      sudo: required
+      env: BUILDARCH=ia32
     - os: osx
 
 language: node_js
@@ -28,6 +31,8 @@ deploy:
   file:
     - ./*.zip
     - ./*.tar.gz
+    - vscode/.build/linux/deb/i386/deb/*.deb
+    - vscode/.build/linux/rpm/i386/*.rpm
     - vscode/.build/linux/deb/amd64/deb/*.deb
     - vscode/.build/linux/rpm/x86_64/*.rpm
   on:

+ 4 - 3
README.md

@@ -49,11 +49,12 @@ Microsoft's build process does download additional files. This was brought up in
 
 ## <a id="supported-os"></a>Supported OS
 - [x] OSX x64 (zipped app file)
-- [x] Linux x64 (`.deb`, `.rpm`, and `.tar.gz` files) 
-- [ ] Windows x64
+- [x] Linux x64 (`.deb`, `.rpm`, and `.tar.gz` files)
+- [x] Linux x86 (`.deb`, `.rpm`, and `.tar.gz` files)
+- [ ] Windows
   - The plan is to build the Windows executable with [AppVeyor](https://appveyor.com). PRs are welcome :blue_heart:
   
-32-bit x86 and ARM architectures are not currently supported. If you know of a way to do this with Travis or any other free CI/CD platform please put in an issue or a PR.
+The ARM architecture is not currently supported. If you know of a way to do this with Travis or any other free CI/CD platform please put in an issue or a PR.
 
 ## <a id="extensions-marketplace"></a>Extensions + Marketplace
 Until something more open comes around, we use the Microsoft Marketplace/Extensions in the `product.json` file. Those links are licensed under MIT as per [the comments on this issue.](https://github.com/Microsoft/vscode/issues/31168#issuecomment-317319063)

+ 19 - 6
build.sh

@@ -2,23 +2,36 @@
 
 if [[ "$SHOULD_BUILD" == "yes" ]]; then
   cd vscode
+
+  if [[ "$BUILDARCH" == "ia32" ]]; then
+    export npm_config_arch=ia32
+  fi
+
   yarn
   mv product.json product.json.bak
   cat product.json.bak | jq 'setpath(["extensionsGallery"]; {"serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery", "cacheUrl": "https://vscode.blob.core.windows.net/gallery/index", "itemUrl": "https://marketplace.visualstudio.com/items"}) | setpath(["nameShort"]; "VSCodium") | setpath(["nameLong"]; "VSCodium") | setpath(["applicationName"]; "vscodium") | setpath(["win32MutexName"]; "vscodium") | setpath(["win32DirName"]; "VSCodium") | setpath(["win32NameVersion"]; "VSCodium") | setpath(["win32RegValueName"]; "VSCodium") | setpath(["win32AppUserModelId"]; "Microsoft.VSCodium") | setpath(["win32ShellNameShort"]; "V&SCodium") | setpath(["urlProtocol"]; "vscodium")' > product.json
   cat product.json
   export NODE_ENV=production
 
-  if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
-    npx gulp vscode-darwin-min
-  else
+  if [[ "$TRAVIS_OS_NAME" != "osx" ]]; then
     # microsoft adds their apt repo to sources
     # unless the app name is code-oss
     # as we are renaming the application to vscodium
     # we need to edit a line in the post install template
     sed -i "s/code-oss/vscodium/" resources/linux/debian/postinst.template
-    npx gulp vscode-linux-x64-min
-    npx gulp vscode-linux-x64-build-deb
-    npx gulp vscode-linux-x64-build-rpm
+  fi
+
+  if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
+    npm run gulp vscode-darwin-min
+  elif [[ "$BUILDARCH" == "ia32" ]]; then
+    npm run gulp vscode-linux-ia32-min
+    npm run gulp vscode-linux-ia32-build-deb
+    npm run gulp vscode-linux-ia32-build-rpm
+    unset npm_config_arch
+  else
+    npm run gulp vscode-linux-x64-min
+    npm run gulp vscode-linux-x64-build-deb
+    npm run gulp vscode-linux-x64-build-rpm
   fi
 
   cd ..

+ 37 - 18
check_tags.sh

@@ -14,37 +14,56 @@ if [ "$GITHUB_TOKEN" != "" ]; then
         echo "Building on Mac because we have no ZIP"
         export SHOULD_BUILD="yes"
       fi
+    elif [[ $BUILDARCH == "ia32" ]]; then
+      HAVE_IA32_RPM=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["i386.rpm"])')
+      HAVE_IA32_DEB=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["i386.deb"])')
+      HAVE_IA32_TAR=$(echo $VSCODIUM_ASSETS | jq --arg suffix "ia32-$LATEST_MS_TAG.tar.gz" 'map(.name) | contains([$suffix])')
+      if [[ "$HAVE_IA32_RPM" != "true" ]]; then
+        echo "Building on Linux ia32 because we have no RPM"
+        export SHOULD_BUILD="yes"
+      fi
+      if [[ "$HAVE_IA32_DEB" != "true" ]]; then
+        echo "Building on Linux ia32 because we have no DEB"
+        export SHOULD_BUILD="yes"
+      fi
+      if [[ "$HAVE_IA32_TAR" != "true" ]]; then
+        echo "Building on Linux ia32 because we have no TAR"
+        export SHOULD_BUILD="yes"
+      fi
+      if [[ "$SHOULD_BUILD" != "yes" ]]; then
+        echo "Already have all the Linux ia32 builds"
+      fi
     else
-      HAVE_RPM=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["rpm"])')
-      HAVE_DEB=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["deb"])')
-      HAVE_TAR=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["tar.gz"])')
-      if [[ "$HAVE_RPM" != "true" ]]; then
-        echo "Building on Linux because we have no RPM"
+      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"])')
+      HAVE_64_TAR=$(echo $VSCODIUM_ASSETS | jq --arg suffix "x64-$LATEST_MS_TAG.tar.gz" 'map(.name) | contains([$suffix])')
+      if [[ "$HAVE_64_RPM" != "true" ]]; then
+        echo "Building on Linux x64 because we have no RPM"
         export SHOULD_BUILD="yes"
       fi
-      if [[ "$HAVE_DEB" != "true" ]]; then
-        echo "Building on Linux because we have no DEB"
+      if [[ "$HAVE_64_DEB" != "true" ]]; then
+        echo "Building on Linux x64 because we have no DEB"
         export SHOULD_BUILD="yes"
       fi
-      if [[ "$HAVE_TAR" != "true" ]]; then
-        echo "Building on Linux because we have no TAR"
+      if [[ "$HAVE_64_TAR" != "true" ]]; then
+        echo "Building on Linux x64 because we have no TAR"
         export SHOULD_BUILD="yes"
       fi
       if [[ "$SHOULD_BUILD" != "yes" ]]; then
-        echo "Already have all the Linux builds"
+        echo "Already have all the Linux x64 builds"
       fi
     fi
   else
     echo "Release assets do not exist at all, continuing build"
     export SHOULD_BUILD="yes"
-    if git rev-parse $LATEST_MS_TAG >/dev/null 2>&1
-    then
-      export TRAVIS_TAG=$LATEST_MS_TAG
-    else
-      git config --local user.name "Travis CI"
-      git config --local user.email "builds@travis-ci.com"
-      git tag $LATEST_MS_TAG
-    fi
+  fi
+  if git rev-parse $LATEST_MS_TAG >/dev/null 2>&1
+  then
+    export TRAVIS_TAG=$LATEST_MS_TAG
+  else
+    git config --local user.name "Travis CI"
+    git config --local user.email "builds@travis-ci.com"
+    git tag $LATEST_MS_TAG
   fi
 fi
 

+ 3 - 0
create_zip.sh

@@ -4,6 +4,9 @@ if [[ "$SHOULD_BUILD" == "yes" ]]; then
   if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
     cd VSCode-darwin
     zip -r ../VSCode-darwin-${LATEST_MS_TAG}.zip ./*
+  elif [[ "$BUILDARCH" == "ia32" ]]; then
+    cd VSCode-linux-ia32
+    tar czf ../VSCode-linux-ia32-${LATEST_MS_TAG}.tar.gz .
   else
     cd VSCode-linux-x64
     tar czf ../VSCode-linux-x64-${LATEST_MS_TAG}.tar.gz .

+ 6 - 0
install_deps.sh

@@ -7,4 +7,10 @@ if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
 else
   sudo apt-get update
   sudo apt-get install libx11-dev libxkbfile-dev libsecret-1-dev fakeroot rpm
+  if [[ "$BUILDARCH" == "ia32" ]]; then
+    sudo dpkg --add-architecture i386
+    sudo apt-get update
+    sudo apt-get install libc6-dev-i386 gcc-multilib g++-multilib
+    sudo apt-get install libx11-dev:i386 libxkbfile-dev:i386
+  fi
 fi