diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ca0cd543..de03ed1e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -64,7 +64,7 @@ jobs: env: ARCH: ${{matrix.arch}} - - name: Build native deps + - name: Fix cross build run: | rm -rf app/node_modules/cpu-features rm -rf app/node_modules/ssh2/crypto/build @@ -199,8 +199,6 @@ jobs: mv dist/*.rpm artifact-rpm/ || true mkdir artifact-pacman mv dist/*.pacman artifact-pacman/ || true - mkdir artifact-snap - mv dist/*.snap artifact-snap/ || true mkdir artifact-tar.gz mv dist/*.tar.gz artifact-tar.gz/ || true mkdir artifact-web @@ -209,31 +207,25 @@ jobs: - uses: actions/upload-artifact@master name: Upload DEB with: - name: Linux DEB + name: Linux DEB (x86_64) path: artifact-deb - uses: actions/upload-artifact@master name: Upload RPM with: - name: Linux RPM + name: Linux RPM (x86_64) path: artifact-rpm - uses: actions/upload-artifact@master name: Upload Pacman Package with: - name: Linux Pacman + name: Linux Pacman (x86_64) path: artifact-pacman - - uses: actions/upload-artifact@master - name: Upload Snap - with: - name: Linux Snap - path: artifact-snap - - uses: actions/upload-artifact@master name: Upload Linux tarball with: - name: Linux tarball + name: Linux tarball (x86_64) path: artifact-tar.gz - uses: actions/upload-artifact@master @@ -242,9 +234,15 @@ jobs: name: Web tarball path: artifact-web + Windows-Build: runs-on: windows-2022 needs: Lint + strategy: + matrix: + include: + - arch: x86_64 + - arch: arm64 steps: - name: Checkout @@ -270,6 +268,8 @@ jobs: node scripts/build-native.js yarn run build node scripts/prepackage-plugins.js + env: + ARCH: ${{matrix.arch}} - name: Build and sign packages run: node scripts/build-windows.js @@ -283,6 +283,8 @@ jobs: - name: Build packages without signing run: node scripts/build-windows.js if: "!(github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))" + env: + ARCH: ${{matrix.arch}} - name: Upload symbols run: | @@ -296,18 +298,18 @@ jobs: - name: Package artifacts run: | mkdir artifact-setup - mv dist/*-setup.exe artifact-setup/ + mv dist/*-setup-*.exe artifact-setup/ mkdir artifact-portable - mv dist/*-portable.zip artifact-portable/ + mv dist/*-portable-*.zip artifact-portable/ - uses: actions/upload-artifact@master name: Upload installer with: - name: Windows installer + name: Windows installer (${{matrix.arch}}) path: artifact-setup - uses: actions/upload-artifact@master name: Upload portable build with: - name: Windows portable build + name: Windows portable build (${{matrix.arch}}) path: artifact-portable diff --git a/HACKING.md b/HACKING.md index 844ff1bb..065ad94f 100644 --- a/HACKING.md +++ b/HACKING.md @@ -14,6 +14,8 @@ yarn ./scripts/build-native.js ``` +**Note: For compiling for Linux armv7l, you need to downgrade electron to 17.0.0 in package.json present in root directory of tabby source** + ``` # Linux (Debian/Ubuntu here as an example) sudo apt install libfontconfig-dev libsecret-1-dev libarchive-tools libnss3 libatk1.0-0 libatk-bridge2.0-0 libgdk-pixbuf2.0-0 libgtk-3-0 libgbm1 cmake diff --git a/electron-builder.yml b/electron-builder.yml index e0b1af12..512ce8c6 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -39,11 +39,11 @@ publish: win: icon: "./build/windows/icon.ico" - artifactName: tabby-${version}-portable.${ext} + artifactName: tabby-${version}-portable-${env.ARCH}.${ext} rfc3161TimeStampServer: http://timestamp.sectigo.com nsis: oneClick: false - artifactName: tabby-${version}-setup.${ext} + artifactName: tabby-${version}-setup-${env.ARCH}.${ext} installerIcon: "./build/windows/icon.ico" allowToChangeInstallationDirectory: true shortcutName: Tabby Terminal @@ -68,7 +68,7 @@ mac: linux: category: "Utility;TerminalEmulator;System" icon: "./build/icons" - artifactName: tabby-${version}-linux.${ext} + artifactName: tabby-${version}-linux-${env.ARCH}.${ext} executableArgs: - "--no-sandbox" desktop: diff --git a/scripts/build-linux.js b/scripts/build-linux.js index 6d1f92d6..f8d91d6d 100755 --- a/scripts/build-linux.js +++ b/scripts/build-linux.js @@ -4,9 +4,13 @@ const vars = require('./vars') const isTag = (process.env.GITHUB_REF || '').startsWith('refs/tags/') +process.env.ARCH = process.env.ARCH || process.arch === 'arm' ? 'armv7l' : process.arch + builder({ dir: true, linux: ['deb', 'tar.gz', 'rpm', 'pacman'], + armv7l: process.env.ARCH === 'armv7l', + arm64: process.env.ARCH === 'arm64', config: { extraMetadata: { version: vars.version, diff --git a/scripts/build-native.js b/scripts/build-native.js index 8fb295b6..9685efa1 100755 --- a/scripts/build-native.js +++ b/scripts/build-native.js @@ -3,12 +3,14 @@ const rebuild = require('electron-rebuild').default const path = require('path') const vars = require('./vars') +process.env.ARCH = process.env.ARCH || process.arch === 'arm' ? 'armv7l' : process.arch + let lifecycles = [] for (let dir of ['app', 'tabby-core', 'tabby-local', 'tabby-ssh', 'tabby-terminal']) { const build = rebuild({ buildPath: path.resolve(__dirname, '../' + dir), electronVersion: vars.electronVersion, - arch: process.env.ARCH ?? process.arch, + arch: process.env.ARCH, force: true, }) build.catch(e => { diff --git a/scripts/build-windows.js b/scripts/build-windows.js index 998bfd9d..74e2d99e 100755 --- a/scripts/build-windows.js +++ b/scripts/build-windows.js @@ -5,9 +5,12 @@ const vars = require('./vars') const isTag = (process.env.GITHUB_REF || process.env.BUILD_SOURCEBRANCH || '').startsWith('refs/tags/') const isCI = !!process.env.GITHUB_REF +process.env.ARCH = process.env.ARCH || process.arch + builder({ dir: true, win: ['nsis', 'zip'], + arm64: process.env.ARCH === 'arm64', config: { extraMetadata: { version: vars.version,