Selaa lähdekoodia

32 bit builds (#32)

* Support 32-bit Linux builds

* Update README and correct scripts

* Use npm run instead of npx
Peter Squicciarini 6 vuotta sitten
vanhempi
sitoutus
ae47b31091
6 muutettua tiedostoa jossa 74 lisäystä ja 27 poistoa
  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:
   include:
     - os: linux
     - os: linux
       sudo: required
       sudo: required
+    - os: linux
+      sudo: required
+      env: BUILDARCH=ia32
     - os: osx
     - os: osx
 
 
 language: node_js
 language: node_js
@@ -28,6 +31,8 @@ deploy:
   file:
   file:
     - ./*.zip
     - ./*.zip
     - ./*.tar.gz
     - ./*.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/deb/amd64/deb/*.deb
     - vscode/.build/linux/rpm/x86_64/*.rpm
     - vscode/.build/linux/rpm/x86_64/*.rpm
   on:
   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
 ## <a id="supported-os"></a>Supported OS
 - [x] OSX x64 (zipped app file)
 - [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:
   - 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
 ## <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)
 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
 if [[ "$SHOULD_BUILD" == "yes" ]]; then
   cd vscode
   cd vscode
+
+  if [[ "$BUILDARCH" == "ia32" ]]; then
+    export npm_config_arch=ia32
+  fi
+
   yarn
   yarn
   mv product.json product.json.bak
   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.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
   cat product.json
   export NODE_ENV=production
   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
     # microsoft adds their apt repo to sources
     # unless the app name is code-oss
     # unless the app name is code-oss
     # as we are renaming the application to vscodium
     # as we are renaming the application to vscodium
     # we need to edit a line in the post install template
     # we need to edit a line in the post install template
     sed -i "s/code-oss/vscodium/" resources/linux/debian/postinst.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
   fi
 
 
   cd ..
   cd ..

+ 37 - 18
check_tags.sh

@@ -14,37 +14,56 @@ if [ "$GITHUB_TOKEN" != "" ]; then
         echo "Building on Mac because we have no ZIP"
         echo "Building on Mac because we have no ZIP"
         export SHOULD_BUILD="yes"
         export SHOULD_BUILD="yes"
       fi
       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
     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"
         export SHOULD_BUILD="yes"
       fi
       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"
         export SHOULD_BUILD="yes"
       fi
       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"
         export SHOULD_BUILD="yes"
       fi
       fi
       if [[ "$SHOULD_BUILD" != "yes" ]]; then
       if [[ "$SHOULD_BUILD" != "yes" ]]; then
-        echo "Already have all the Linux builds"
+        echo "Already have all the Linux x64 builds"
       fi
       fi
     fi
     fi
   else
   else
     echo "Release assets do not exist at all, continuing build"
     echo "Release assets do not exist at all, continuing build"
     export SHOULD_BUILD="yes"
     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
 fi
 fi
 
 

+ 3 - 0
create_zip.sh

@@ -4,6 +4,9 @@ if [[ "$SHOULD_BUILD" == "yes" ]]; then
   if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
   if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
     cd VSCode-darwin
     cd VSCode-darwin
     zip -r ../VSCode-darwin-${LATEST_MS_TAG}.zip ./*
     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
   else
     cd VSCode-linux-x64
     cd VSCode-linux-x64
     tar czf ../VSCode-linux-x64-${LATEST_MS_TAG}.tar.gz .
     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
 else
   sudo apt-get update
   sudo apt-get update
   sudo apt-get install libx11-dev libxkbfile-dev libsecret-1-dev fakeroot rpm
   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
 fi