From c4d03e21b69f262017dc3e4278d4f26a0cd7c268 Mon Sep 17 00:00:00 2001 From: iamwacko Date: Wed, 26 Apr 2023 21:20:10 -0700 Subject: [PATCH 01/31] feat: initial 32 bit support --- .github/workflows/ci.yml | 72 +++++++++++++++++++++++++++++++++++ appimage/assets/runtime-i686 | Bin 0 -> 184368 bytes appimage/src/lib.rs | 4 ++ xbuild/src/devices/adb.rs | 2 +- xbuild/src/lib.rs | 20 +++++++--- 5 files changed, 92 insertions(+), 6 deletions(-) create mode 100644 appimage/assets/runtime-i686 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7651701f..d17184c1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,6 +32,76 @@ jobs: name: ${{ matrix.host }}-x path: bin/x${{ matrix.host == 'windows-latest' && '.exe' || '' }} + # Github doesn't have runners for anything but 64 bit + build-32bit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: hcrj/setup-rust-action@v1 + with: + target: "i686-unknown-linux-gnu" + - run: cargo install --path xbuild --root . --target i686-unknown-linux-gnu + - uses: actions/upload-artifact@v3 + with: + name: i686-x + path: bin/x + + # TODO: rewrite below to be more pleasant + build-template-32bit: + strategy: + fail-fast: false + matrix: + opt: + - debug + - release + target: + - platform: linux + arch: x86 + - platform: linux + arch: x64 + - platform: macos + arch: x64 + - platform: windows + arch: x64 + - platform: android + arch: arm64 + - platform: ios + arch: arm64 + + runs-on: ubuntu-latest + needs: build + steps: + - name: install rust + uses: hecrf/setup-rust-actions@v1 + with: + rust-version: stable + + - name: install x + uses: actions/download-artifact@v3 + with: + name: i686-x + + - run: chmod +x ./x + + - name: set dpkg architecture + run: dpkg --add-architecture i386 && sudo apt-get update + + - name: install java + uses: actions/setup-java@v2 + with: + distribution: temurin + java-version: 11 + + - name: install dependencies + run: sudo apt-get install llvm:i386 libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 + + - name: create project + run: ./x new template + + - name: + run: ../x build --platform ${{ matrix.target.platform }} --arch ${{ matrix.target.arch }} --${{ matrix.opt }} + working-directory: template + build-template: strategy: fail-fast: false @@ -44,6 +114,8 @@ jobs: - debug - release target: + - platform: linux + arch: x86 - platform: linux arch: x64 - platform: macos diff --git a/appimage/assets/runtime-i686 b/appimage/assets/runtime-i686 new file mode 100644 index 0000000000000000000000000000000000000000..df6382a87a8aba5b457cd9075f929258ce940f1e GIT binary patch literal 184368 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 Arch::Arm64, //"armeabi-v7a" => Arch::Arm, "x86_64" => Arch::X64, - //"x86" => Arch::X86, + "x86" => Arch::X86, abi => anyhow::bail!("unrecognized abi {}", abi), }; Ok(arch) diff --git a/xbuild/src/lib.rs b/xbuild/src/lib.rs index fd522bf2..b76299ec 100644 --- a/xbuild/src/lib.rs +++ b/xbuild/src/lib.rs @@ -95,7 +95,7 @@ pub enum Arch { //Arm, Arm64, X64, - //X86, + X86, } impl Arch { @@ -104,6 +104,8 @@ impl Arch { Ok(Arch::X64) } else if cfg!(target_arch = "aarch64") { Ok(Arch::Arm64) + } else if cfg!(target_arch = "x86") { + Ok(Arch::X86) } else { anyhow::bail!("unsupported host"); } @@ -116,7 +118,7 @@ impl std::fmt::Display for Arch { //Self::Arm => write!(f, "arm"), Self::Arm64 => write!(f, "arm64"), Self::X64 => write!(f, "x64"), - //Self::X86 => write!(f, "x86"), + Self::X86 => write!(f, "x86"), } } } @@ -129,7 +131,7 @@ impl std::str::FromStr for Arch { //"arm" => Self::Arm, "arm64" => Self::Arm64, "x64" => Self::X64, - //"x86" => Self::X86, + "x86" => Self::X86, _ => anyhow::bail!("unsupported arch {}", arch), }) } @@ -283,6 +285,7 @@ impl CompileTarget { match self.arch() { Arch::Arm64 => apk::Target::Arm64V8a, Arch::X64 => apk::Target::X86_64, + Arch::X86 => apk::Target::X86, } } @@ -292,7 +295,7 @@ impl CompileTarget { match self.arch() { Arch::Arm64 => "aarch64-linux-android", //Arch::Arm => "arm-linux-androideabi", - //Arch::X86 => "i686-linux-android", + Arch::X86 => "i686-linux-android", Arch::X64 => "x86_64-linux-android", } } @@ -307,6 +310,7 @@ impl CompileTarget { (Arch::X64, Platform::Linux) => "x86_64-unknown-linux-gnu", (Arch::X64, Platform::Macos) => "x86_64-apple-darwin", (Arch::X64, Platform::Windows) => "x86_64-pc-windows-msvc", + (Arch::X86, Platform::Linux) => "i686-unknown-linux-gnu", (arch, platform) => anyhow::bail!( "unsupported arch/platform combination {} {}", arch, @@ -316,7 +320,13 @@ impl CompileTarget { } pub fn is_host(self) -> Result { - Ok(self.platform() == Platform::host()? && self.arch() == Arch::host()?) + // 32 bit binaries can run on 64 bit hardware, of particular use for testing + // This way 32 bit xbuild will produce 32 bit binaries, unless commanded otherwise + if cfg!(target_arch = "x86") { + return Ok(false); + } else { + return Ok(self.platform() == Platform::host()? && self.arch() == Arch::host()?); + }; } } From fabe787197df614352b343af54be76688ec2fa87 Mon Sep 17 00:00:00 2001 From: iamwacko Date: Thu, 27 Apr 2023 07:40:37 -0700 Subject: [PATCH 02/31] chore: cleaned up ci.yml --- .github/workflows/ci.yml | 84 ++++++++++++---------------------------- 1 file changed, 24 insertions(+), 60 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d17184c1..530256ba 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,62 +46,6 @@ jobs: name: i686-x path: bin/x - # TODO: rewrite below to be more pleasant - build-template-32bit: - strategy: - fail-fast: false - matrix: - opt: - - debug - - release - target: - - platform: linux - arch: x86 - - platform: linux - arch: x64 - - platform: macos - arch: x64 - - platform: windows - arch: x64 - - platform: android - arch: arm64 - - platform: ios - arch: arm64 - - runs-on: ubuntu-latest - needs: build - steps: - - name: install rust - uses: hecrf/setup-rust-actions@v1 - with: - rust-version: stable - - - name: install x - uses: actions/download-artifact@v3 - with: - name: i686-x - - - run: chmod +x ./x - - - name: set dpkg architecture - run: dpkg --add-architecture i386 && sudo apt-get update - - - name: install java - uses: actions/setup-java@v2 - with: - distribution: temurin - java-version: 11 - - - name: install dependencies - run: sudo apt-get install llvm:i386 libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 - - - name: create project - run: ./x new template - - - name: - run: ../x build --platform ${{ matrix.target.platform }} --arch ${{ matrix.target.arch }} --${{ matrix.opt }} - working-directory: template - build-template: strategy: fail-fast: false @@ -110,6 +54,9 @@ jobs: - ubuntu-latest - macos-latest - windows-latest + host-arch: + - x86 + - x64 opt: - debug - release @@ -128,7 +75,7 @@ jobs: arch: arm64 runs-on: ${{ matrix.host }} - needs: build + needs: build build-32bit steps: - name: install rust uses: hecrj/setup-rust-action@v1 @@ -136,16 +83,28 @@ jobs: rust-version: stable - name: install x + if: ${{ matrix.host-arch == 'x64'}} uses: actions/download-artifact@v3 with: name: ${{ matrix.host }}-x + + - name: install x i686 + if: ${{ matrix.host-arch == 'x86'}} + uses: actions/download-artifact@v3 + with: + name: i686-x + - run: chmod +x ./x if: ${{ matrix.host == 'ubuntu-latest' || matrix.host == 'macos-latest' }} - name: install llvm ubuntu - if: ${{ matrix.host == 'ubuntu-latest' }} + if: ${{ matrix.host == 'ubuntu-latest' && matrix.host-arch == 'x64'}} run: sudo apt-get update && sudo apt-get install llvm + - name: install llvm x86 + if: ${{ matrix.host == 'ubuntu-latest' && matrix.host-arch == 'x86'}} + run: dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install llvm:i386 + - name: install llvm macos if: ${{ matrix.host == 'macos-latest' }} run: | @@ -159,9 +118,12 @@ jobs: java-version: 11 - name: install linux dependencies - if: ${{ matrix.host == 'ubuntu-latest' }} + if: ${{ matrix.host == 'ubuntu-latest' && matrix.arch-host == 'x64'}} run: sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev libgtk-3-dev squashfs-tools + - name: install dependencies for i686 + if: ${{ matrix.host == 'ubuntu-latest' && matrix.arch-host == 'x86'}} + - name: create project run: ./x new template @@ -170,7 +132,9 @@ jobs: # windows doesn't support posix symlinks so can't cross compile to macos/ios - name: build project if: > - !(matrix.host == 'macos-latest' && matrix.target.platform == 'linux' || + !(matrix.host == 'macos-latest' && matrix.arch-host == 'x86' || + matrix.host == 'windows-latest' && matrix.arch-host == 'x86' || + matrix.host == 'macos-latest' && matrix.target.platform == 'linux' || matrix.host == 'windows-latest' && contains(fromJson('["linux", "macos", "ios"]'), matrix.target.platform)) run: ../x build --platform ${{ matrix.target.platform }} --arch ${{ matrix.target.arch }} --${{ matrix.opt }} working-directory: template From c9ebfcc4d8a677aec5b56b11423bbc83ab888d3f Mon Sep 17 00:00:00 2001 From: s e Date: Thu, 27 Apr 2023 09:40:05 -0700 Subject: [PATCH 03/31] fix: typos in ci.yml This should fix the broken CI --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 530256ba..84a51a30 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -75,7 +75,7 @@ jobs: arch: arm64 runs-on: ${{ matrix.host }} - needs: build build-32bit + needs: [build, build-32bit] steps: - name: install rust uses: hecrj/setup-rust-action@v1 @@ -123,6 +123,7 @@ jobs: - name: install dependencies for i686 if: ${{ matrix.host == 'ubuntu-latest' && matrix.arch-host == 'x86'}} + run: sudo apt-get install libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 - name: create project run: ./x new template From fb93a17eed21a183194c5c7d86f219c2d12a3b42 Mon Sep 17 00:00:00 2001 From: s e Date: Thu, 27 Apr 2023 12:25:17 -0700 Subject: [PATCH 04/31] fix: should be the last typo I really hope it is. I also opened a PR against my own master, as suggested. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 84a51a30..26aafd4a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,7 +37,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: hcrj/setup-rust-action@v1 + - uses: hecrj/setup-rust-action@v1 with: target: "i686-unknown-linux-gnu" - run: cargo install --path xbuild --root . --target i686-unknown-linux-gnu From 1d73daecc5ec631e20733cfdd999260d137e12a3 Mon Sep 17 00:00:00 2001 From: s e Date: Thu, 27 Apr 2023 12:30:31 -0700 Subject: [PATCH 05/31] fix: target to targets --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 26aafd4a..45493f88 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,7 +39,7 @@ jobs: - uses: actions/checkout@v3 - uses: hecrj/setup-rust-action@v1 with: - target: "i686-unknown-linux-gnu" + targets: "i686-unknown-linux-gnu" - run: cargo install --path xbuild --root . --target i686-unknown-linux-gnu - uses: actions/upload-artifact@v3 with: From 6e60de5f309e9f42d204b2236715992b1ede77df Mon Sep 17 00:00:00 2001 From: s e Date: Thu, 27 Apr 2023 12:39:00 -0700 Subject: [PATCH 06/31] chore: install gcc-multilib --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 45493f88..fb21787f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,6 +40,8 @@ jobs: - uses: hecrj/setup-rust-action@v1 with: targets: "i686-unknown-linux-gnu" + - name: multilib + run: sudo apt-get update && sudo apt-get install gcc-multilib - run: cargo install --path xbuild --root . --target i686-unknown-linux-gnu - uses: actions/upload-artifact@v3 with: From e51dc78d45bca85acaa23c6e41394bc80da42426 Mon Sep 17 00:00:00 2001 From: s e Date: Thu, 27 Apr 2023 12:47:26 -0700 Subject: [PATCH 07/31] chore: install openssl I wish I could test GitHub actions locally. I'm really feeling the "it worked on my machine" right now. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fb21787f..7fa0e3ac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,7 +41,7 @@ jobs: with: targets: "i686-unknown-linux-gnu" - name: multilib - run: sudo apt-get update && sudo apt-get install gcc-multilib + run: dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install gcc-multilib libssl-dev:i386 - run: cargo install --path xbuild --root . --target i686-unknown-linux-gnu - uses: actions/upload-artifact@v3 with: From 11a9d126e4af635b9d34ea9efb0f9ca63fc27847 Mon Sep 17 00:00:00 2001 From: s e Date: Thu, 27 Apr 2023 12:48:44 -0700 Subject: [PATCH 08/31] fix: add sudo where needed --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7fa0e3ac..49e95c07 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,7 +41,7 @@ jobs: with: targets: "i686-unknown-linux-gnu" - name: multilib - run: dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install gcc-multilib libssl-dev:i386 + run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install gcc-multilib libssl-dev:i386 - run: cargo install --path xbuild --root . --target i686-unknown-linux-gnu - uses: actions/upload-artifact@v3 with: @@ -105,7 +105,7 @@ jobs: - name: install llvm x86 if: ${{ matrix.host == 'ubuntu-latest' && matrix.host-arch == 'x86'}} - run: dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install llvm:i386 + run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install llvm:i386 - name: install llvm macos if: ${{ matrix.host == 'macos-latest' }} From cd3d3bfc435dbd6b7ac20b00fe2e3c895dfef912 Mon Sep 17 00:00:00 2001 From: s e Date: Thu, 27 Apr 2023 13:01:00 -0700 Subject: [PATCH 09/31] fix: more openssl fixes --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 49e95c07..6bffd093 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,6 +27,9 @@ jobs: - uses: actions/checkout@v3 - uses: hecrj/setup-rust-action@v1 - run: cargo install --path xbuild --root . + env: + OPENSSL_LIB_DIR: /usr/lib/i386-linux-gnu/ + OPENSSL_INCLUDE_DIR: /usr/include/openssl/ - uses: actions/upload-artifact@v3 with: name: ${{ matrix.host }}-x From 43e5c9a098350cf41a559385958ce63202ce11ec Mon Sep 17 00:00:00 2001 From: s e Date: Thu, 27 Apr 2023 13:01:25 -0700 Subject: [PATCH 10/31] fix: satisfy lints by removing uneeded returns --- xbuild/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xbuild/src/lib.rs b/xbuild/src/lib.rs index b76299ec..d360c3fe 100644 --- a/xbuild/src/lib.rs +++ b/xbuild/src/lib.rs @@ -323,9 +323,9 @@ impl CompileTarget { // 32 bit binaries can run on 64 bit hardware, of particular use for testing // This way 32 bit xbuild will produce 32 bit binaries, unless commanded otherwise if cfg!(target_arch = "x86") { - return Ok(false); + Ok(false) } else { - return Ok(self.platform() == Platform::host()? && self.arch() == Arch::host()?); + Ok(self.platform() == Platform::host()? && self.arch() == Arch::host()?) }; } } From a696e0b666d5b5daf733d277eecae6f8c8a31ac7 Mon Sep 17 00:00:00 2001 From: s e Date: Thu, 27 Apr 2023 13:29:37 -0700 Subject: [PATCH 11/31] fix: typo --- xbuild/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xbuild/src/lib.rs b/xbuild/src/lib.rs index d360c3fe..5ff1846a 100644 --- a/xbuild/src/lib.rs +++ b/xbuild/src/lib.rs @@ -326,7 +326,7 @@ impl CompileTarget { Ok(false) } else { Ok(self.platform() == Platform::host()? && self.arch() == Arch::host()?) - }; + } } } From 31c0e68437d64442837b26c9087753af9ccdb50a Mon Sep 17 00:00:00 2001 From: s e Date: Thu, 27 Apr 2023 13:31:22 -0700 Subject: [PATCH 12/31] fix: even more typos in ci.yml --- .github/workflows/ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6bffd093..05c4769d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,9 +27,6 @@ jobs: - uses: actions/checkout@v3 - uses: hecrj/setup-rust-action@v1 - run: cargo install --path xbuild --root . - env: - OPENSSL_LIB_DIR: /usr/lib/i386-linux-gnu/ - OPENSSL_INCLUDE_DIR: /usr/include/openssl/ - uses: actions/upload-artifact@v3 with: name: ${{ matrix.host }}-x @@ -46,6 +43,10 @@ jobs: - name: multilib run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install gcc-multilib libssl-dev:i386 - run: cargo install --path xbuild --root . --target i686-unknown-linux-gnu + env: + OPENSSL_LIB_DIR: /usr/lib/i386-linux-gnu/ + OPENSSL_INCLUDE_DIR: /usr/include/openssl/ + - uses: actions/upload-artifact@v3 with: name: i686-x From 9e663622d3b73dcf6e07bd9686f71b52ea53d64c Mon Sep 17 00:00:00 2001 From: s e Date: Thu, 27 Apr 2023 14:47:37 -0700 Subject: [PATCH 13/31] fix: don't need different llvm --- .github/workflows/ci.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 05c4769d..04b86a14 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -104,13 +104,9 @@ jobs: if: ${{ matrix.host == 'ubuntu-latest' || matrix.host == 'macos-latest' }} - name: install llvm ubuntu - if: ${{ matrix.host == 'ubuntu-latest' && matrix.host-arch == 'x64'}} + if: ${{ matrix.host == 'ubuntu-latest'}} run: sudo apt-get update && sudo apt-get install llvm - - name: install llvm x86 - if: ${{ matrix.host == 'ubuntu-latest' && matrix.host-arch == 'x86'}} - run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install llvm:i386 - - name: install llvm macos if: ${{ matrix.host == 'macos-latest' }} run: | @@ -129,7 +125,7 @@ jobs: - name: install dependencies for i686 if: ${{ matrix.host == 'ubuntu-latest' && matrix.arch-host == 'x86'}} - run: sudo apt-get install libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 + run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 - name: create project run: ./x new template From b292f3332e67987b4f89d9301a186c6ed13bd5e7 Mon Sep 17 00:00:00 2001 From: s e Date: Thu, 27 Apr 2023 18:46:13 -0700 Subject: [PATCH 14/31] fix: libssl for 32 bit --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 04b86a14..e1039cf0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -125,7 +125,7 @@ jobs: - name: install dependencies for i686 if: ${{ matrix.host == 'ubuntu-latest' && matrix.arch-host == 'x86'}} - run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 + run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 libssl-dev:i386 - name: create project run: ./x new template From b7bd57bbbf4f0fc2b2ae368663d632c299802d10 Mon Sep 17 00:00:00 2001 From: s e Date: Thu, 27 Apr 2023 19:22:17 -0700 Subject: [PATCH 15/31] fix: more ssl stuff --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e1039cf0..c691403d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -125,7 +125,7 @@ jobs: - name: install dependencies for i686 if: ${{ matrix.host == 'ubuntu-latest' && matrix.arch-host == 'x86'}} - run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 libssl-dev:i386 + run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 libssl3:i386 - name: create project run: ./x new template From f5613b98080f7baa1b1ac0567ad2b2290460a0f0 Mon Sep 17 00:00:00 2001 From: s e Date: Fri, 28 Apr 2023 18:03:40 -0700 Subject: [PATCH 16/31] fix: more ssl stuff openssl is very annoying. Any chance we could change it to rustls? --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c691403d..04985155 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -124,7 +124,7 @@ jobs: run: sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev libgtk-3-dev squashfs-tools - name: install dependencies for i686 - if: ${{ matrix.host == 'ubuntu-latest' && matrix.arch-host == 'x86'}} + if: ${{ matrix.host == 'ubuntu-latest' && matrix.target.arch == 'x86'}} run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 libssl3:i386 - name: create project From 58f2ad7f8a9f13bb1f9d459dbcde2edaf97ae4de Mon Sep 17 00:00:00 2001 From: s e Date: Fri, 28 Apr 2023 18:29:28 -0700 Subject: [PATCH 17/31] fix: more ssl --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 04985155..439e1dfa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -120,11 +120,11 @@ jobs: java-version: 11 - name: install linux dependencies - if: ${{ matrix.host == 'ubuntu-latest' && matrix.arch-host == 'x64'}} + if: ${{ matrix.host == 'ubuntu-latest'}} run: sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev libgtk-3-dev squashfs-tools - name: install dependencies for i686 - if: ${{ matrix.host == 'ubuntu-latest' && matrix.target.arch == 'x86'}} + if: ${{ matrix.host == 'ubuntu-latest'}} run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 libssl3:i386 - name: create project From 1eeb1da024b8e7d8c1bc6be1fd7a3cd449f7ab9e Mon Sep 17 00:00:00 2001 From: s e Date: Fri, 28 Apr 2023 19:10:00 -0700 Subject: [PATCH 18/31] fix: install i686 at the right time --- .github/workflows/ci.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 439e1dfa..172be04c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -84,9 +84,17 @@ jobs: needs: [build, build-32bit] steps: - name: install rust + if: ${{ matrix.target.arch == 'x64'}} uses: hecrj/setup-rust-action@v1 with: rust-version: stable + + - name: install rust i686 + if: ${{ matrix.target.arch == 'x86' }} + uses: hecrj/setup-rust-action@v1 + with: + rust-version: stable + targets: "i686-unknown-linux-gnu" - name: install x if: ${{ matrix.host-arch == 'x64'}} From 844708a86bf4cec0b181b99d0b48346d4beb2764 Mon Sep 17 00:00:00 2001 From: s e Date: Fri, 28 Apr 2023 20:21:31 -0700 Subject: [PATCH 19/31] chore: make sure right software is running on the right hosts --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 172be04c..66e7ceac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -136,6 +136,7 @@ jobs: run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 libssl3:i386 - name: create project + if: ${{ !((matrix.host == 'macos-latest' || matrix.host == 'windows-latest' )&& matrix.host.arch == 'x86')}} run: ./x new template # only linux can target linux as it is not clear what that even is exactly From 92ef8b7bc6f90a3b830d80db1a394ecc2c637bbd Mon Sep 17 00:00:00 2001 From: s e Date: Fri, 28 Apr 2023 21:29:37 -0700 Subject: [PATCH 20/31] fix: pkg config weirdness --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 66e7ceac..ab4f6930 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -138,6 +138,10 @@ jobs: - name: create project if: ${{ !((matrix.host == 'macos-latest' || matrix.host == 'windows-latest' )&& matrix.host.arch == 'x86')}} run: ./x new template + + - name: setup pkg-config + if: ${{ matrix.target.arch == 'x86' && matrix.host == 'ubuntu-latest'}} + run: export PKG_CONFIG_PATH= && export PKG_CONFIG_LIBDIR=/usr/lib/i386-linux-gnu/usr/lib/pkgconfig:/usr/lib/i386-linux-gnu/usr/share/pkgconfig && export PKG_CONFIG_SYSROOT_DIR=/usr/lib/i386-linux-gnu # only linux can target linux as it is not clear what that even is exactly # glibc/musl gtk/qt x11/wayland From 167077aab8ef58876b20fda621920a1c7ccee705 Mon Sep 17 00:00:00 2001 From: s e Date: Fri, 28 Apr 2023 22:14:25 -0700 Subject: [PATCH 21/31] fix: gcc-multilib --- .github/workflows/ci.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ab4f6930..6dd9605e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -133,16 +133,12 @@ jobs: - name: install dependencies for i686 if: ${{ matrix.host == 'ubuntu-latest'}} - run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 libssl3:i386 + run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 libssl3:i386 gcc-multilib - name: create project if: ${{ !((matrix.host == 'macos-latest' || matrix.host == 'windows-latest' )&& matrix.host.arch == 'x86')}} run: ./x new template - - name: setup pkg-config - if: ${{ matrix.target.arch == 'x86' && matrix.host == 'ubuntu-latest'}} - run: export PKG_CONFIG_PATH= && export PKG_CONFIG_LIBDIR=/usr/lib/i386-linux-gnu/usr/lib/pkgconfig:/usr/lib/i386-linux-gnu/usr/share/pkgconfig && export PKG_CONFIG_SYSROOT_DIR=/usr/lib/i386-linux-gnu - # only linux can target linux as it is not clear what that even is exactly # glibc/musl gtk/qt x11/wayland # windows doesn't support posix symlinks so can't cross compile to macos/ios From 10402ee78dd64a813002590f7724692c1fd11767 Mon Sep 17 00:00:00 2001 From: s e Date: Fri, 28 Apr 2023 22:43:12 -0700 Subject: [PATCH 22/31] fix: libglib install --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6dd9605e..d46172ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -133,7 +133,7 @@ jobs: - name: install dependencies for i686 if: ${{ matrix.host == 'ubuntu-latest'}} - run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 libssl3:i386 gcc-multilib + run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 libssl3:i386 gcc-multilib libglib2.0-0:i386 - name: create project if: ${{ !((matrix.host == 'macos-latest' || matrix.host == 'windows-latest' )&& matrix.host.arch == 'x86')}} From 193a008d3ef12bb3fde7157594e0c49d7054b48f Mon Sep 17 00:00:00 2001 From: s e Date: Sat, 29 Apr 2023 11:59:50 -0700 Subject: [PATCH 23/31] fix: this should fix the rest of the problems --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d46172ae..46700b05 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -144,7 +144,8 @@ jobs: # windows doesn't support posix symlinks so can't cross compile to macos/ios - name: build project if: > - !(matrix.host == 'macos-latest' && matrix.arch-host == 'x86' || + !(matrix.host-arch == 'x64' && matrix.target.arch == 'x86' || + matrix.host == 'macos-latest' && matrix.arch-host == 'x86' || matrix.host == 'windows-latest' && matrix.arch-host == 'x86' || matrix.host == 'macos-latest' && matrix.target.platform == 'linux' || matrix.host == 'windows-latest' && contains(fromJson('["linux", "macos", "ios"]'), matrix.target.platform)) From 2e18d0e3d13d1949296eb23f9204a6055ebd431b Mon Sep 17 00:00:00 2001 From: s e Date: Sun, 30 Apr 2023 14:19:57 -0700 Subject: [PATCH 24/31] fix: set PKG_CONFIG_SYSROOT_DIR --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 46700b05..28e9bdf9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -151,3 +151,5 @@ jobs: matrix.host == 'windows-latest' && contains(fromJson('["linux", "macos", "ios"]'), matrix.target.platform)) run: ../x build --platform ${{ matrix.target.platform }} --arch ${{ matrix.target.arch }} --${{ matrix.opt }} working-directory: template + env: + PKG_CONFIG_SYSROOT_DIR: "/" From 1d52b2264e00d1cd5fdde265467487f5037b8202 Mon Sep 17 00:00:00 2001 From: s e Date: Sun, 30 Apr 2023 15:02:11 -0700 Subject: [PATCH 25/31] fix: typo --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 28e9bdf9..0812a5d1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -136,7 +136,7 @@ jobs: run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 libssl3:i386 gcc-multilib libglib2.0-0:i386 - name: create project - if: ${{ !((matrix.host == 'macos-latest' || matrix.host == 'windows-latest' )&& matrix.host.arch == 'x86')}} + if: ${{ !((matrix.host == 'macos-latest' || matrix.host == 'windows-latest' ) && matrix.host-arch == 'x86')}} run: ./x new template # only linux can target linux as it is not clear what that even is exactly From 4523168c0b02974c0d635b8690eb427575ea74e2 Mon Sep 17 00:00:00 2001 From: s e Date: Sun, 30 Apr 2023 18:32:40 -0700 Subject: [PATCH 26/31] fix: stop building when it isn't supposed to --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0812a5d1..73f10058 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -145,8 +145,8 @@ jobs: - name: build project if: > !(matrix.host-arch == 'x64' && matrix.target.arch == 'x86' || - matrix.host == 'macos-latest' && matrix.arch-host == 'x86' || - matrix.host == 'windows-latest' && matrix.arch-host == 'x86' || + (matrix.host == 'macos-latest' && matrix.arch-host == 'x86') || + (matrix.host == 'windows-latest' && matrix.arch-host == 'x86') || matrix.host == 'macos-latest' && matrix.target.platform == 'linux' || matrix.host == 'windows-latest' && contains(fromJson('["linux", "macos", "ios"]'), matrix.target.platform)) run: ../x build --platform ${{ matrix.target.platform }} --arch ${{ matrix.target.arch }} --${{ matrix.opt }} From 8261002304ff3140c6bafb30a44e3786a3d102f0 Mon Sep 17 00:00:00 2001 From: s e Date: Sun, 30 Apr 2023 22:21:16 -0700 Subject: [PATCH 27/31] fix: stop running on macos-latest --- .github/workflows/ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 73f10058..51f85425 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -144,11 +144,11 @@ jobs: # windows doesn't support posix symlinks so can't cross compile to macos/ios - name: build project if: > - !(matrix.host-arch == 'x64' && matrix.target.arch == 'x86' || - (matrix.host == 'macos-latest' && matrix.arch-host == 'x86') || - (matrix.host == 'windows-latest' && matrix.arch-host == 'x86') || - matrix.host == 'macos-latest' && matrix.target.platform == 'linux' || - matrix.host == 'windows-latest' && contains(fromJson('["linux", "macos", "ios"]'), matrix.target.platform)) + !(matrix.host-arch == 'x64' && matrix.target.arch == 'x86') || + !(matrix.host == 'macos-latest' && matrix.arch-host == 'x86') || + !(matrix.host == 'windows-latest' && matrix.arch-host == 'x86') || + !(matrix.host == 'macos-latest' && matrix.target.platform == 'linux') || + !(matrix.host == 'windows-latest' && contains(fromJson('["linux", "macos", "ios"]'), matrix.target.platform) run: ../x build --platform ${{ matrix.target.platform }} --arch ${{ matrix.target.arch }} --${{ matrix.opt }} working-directory: template env: From 00461f890dd75c5298812800bbf95303d7c0cdd0 Mon Sep 17 00:00:00 2001 From: s e Date: Sun, 30 Apr 2023 22:23:34 -0700 Subject: [PATCH 28/31] fix: make ci.yml valid --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 51f85425..7f86bb85 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -144,11 +144,11 @@ jobs: # windows doesn't support posix symlinks so can't cross compile to macos/ios - name: build project if: > - !(matrix.host-arch == 'x64' && matrix.target.arch == 'x86') || + (!(matrix.host-arch == 'x64' && matrix.target.arch == 'x86') || !(matrix.host == 'macos-latest' && matrix.arch-host == 'x86') || !(matrix.host == 'windows-latest' && matrix.arch-host == 'x86') || !(matrix.host == 'macos-latest' && matrix.target.platform == 'linux') || - !(matrix.host == 'windows-latest' && contains(fromJson('["linux", "macos", "ios"]'), matrix.target.platform) + !(matrix.host == 'windows-latest' && contains(fromJson('["linux", "macos", "ios"]'), matrix.target.platform)) run: ../x build --platform ${{ matrix.target.platform }} --arch ${{ matrix.target.arch }} --${{ matrix.opt }} working-directory: template env: From 77a6f346b61f0ad5be3fb8ef1542881bc41364e6 Mon Sep 17 00:00:00 2001 From: s e Date: Sun, 30 Apr 2023 23:27:32 -0700 Subject: [PATCH 29/31] fix: make ci.yml run --- .github/workflows/ci.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7f86bb85..8e14962a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -144,11 +144,14 @@ jobs: # windows doesn't support posix symlinks so can't cross compile to macos/ios - name: build project if: > - (!(matrix.host-arch == 'x64' && matrix.target.arch == 'x86') || - !(matrix.host == 'macos-latest' && matrix.arch-host == 'x86') || - !(matrix.host == 'windows-latest' && matrix.arch-host == 'x86') || - !(matrix.host == 'macos-latest' && matrix.target.platform == 'linux') || - !(matrix.host == 'windows-latest' && contains(fromJson('["linux", "macos", "ios"]'), matrix.target.platform)) + ${{ + !(matrix.host-arch == 'x64' && matrix.target.arch == 'x86' || + matrix.host == 'macos-latest' && matrix.arch-host == 'x86' || + matrix.host == 'windows-latest' && matrix.arch-host == 'x86' || + matrix.host == 'macos-latest' && matrix.target.platform == 'linux' || + matrix.host == 'windows-latest' && contains(fromJson('["linux", "macos", "ios"]'), matrix.target.platform) + ) + }} run: ../x build --platform ${{ matrix.target.platform }} --arch ${{ matrix.target.arch }} --${{ matrix.opt }} working-directory: template env: From b9b4bb5a9725dcbd664ebf412bfd0b88b5651838 Mon Sep 17 00:00:00 2001 From: s e Date: Mon, 1 May 2023 00:01:48 -0700 Subject: [PATCH 30/31] fix: typo --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e14962a..ed2bbcb1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -146,8 +146,8 @@ jobs: if: > ${{ !(matrix.host-arch == 'x64' && matrix.target.arch == 'x86' || - matrix.host == 'macos-latest' && matrix.arch-host == 'x86' || - matrix.host == 'windows-latest' && matrix.arch-host == 'x86' || + matrix.host == 'macos-latest' && matrix.host-arch == 'x86' || + matrix.host == 'windows-latest' && matrix.host-arch == 'x86' || matrix.host == 'macos-latest' && matrix.target.platform == 'linux' || matrix.host == 'windows-latest' && contains(fromJson('["linux", "macos", "ios"]'), matrix.target.platform) ) From 2d4cad1272117cad44c77113773821ed306b5374 Mon Sep 17 00:00:00 2001 From: Marijn Suijten Date: Sun, 22 Dec 2024 12:55:37 +0100 Subject: [PATCH 31/31] Formatting from code review --- .github/workflows/ci.yml | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ed2bbcb1..1a8ac030 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -84,26 +84,18 @@ jobs: needs: [build, build-32bit] steps: - name: install rust - if: ${{ matrix.target.arch == 'x64'}} uses: hecrj/setup-rust-action@v1 with: rust-version: stable - - - name: install rust i686 - if: ${{ matrix.target.arch == 'x86' }} - uses: hecrj/setup-rust-action@v1 - with: - rust-version: stable - targets: "i686-unknown-linux-gnu" - name: install x - if: ${{ matrix.host-arch == 'x64'}} + if: ${{ matrix.host-arch == 'x64' }} uses: actions/download-artifact@v3 with: name: ${{ matrix.host }}-x - name: install x i686 - if: ${{ matrix.host-arch == 'x86'}} + if: ${{ matrix.host-arch == 'x86' }} uses: actions/download-artifact@v3 with: name: i686-x @@ -112,7 +104,7 @@ jobs: if: ${{ matrix.host == 'ubuntu-latest' || matrix.host == 'macos-latest' }} - name: install llvm ubuntu - if: ${{ matrix.host == 'ubuntu-latest'}} + if: ${{ matrix.host == 'ubuntu-latest' }} run: sudo apt-get update && sudo apt-get install llvm - name: install llvm macos @@ -128,15 +120,15 @@ jobs: java-version: 11 - name: install linux dependencies - if: ${{ matrix.host == 'ubuntu-latest'}} + if: ${{ matrix.host == 'ubuntu-latest' }} run: sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev libgtk-3-dev squashfs-tools - name: install dependencies for i686 - if: ${{ matrix.host == 'ubuntu-latest'}} + if: ${{ matrix.host == 'ubuntu-latest' }} run: sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install libwebkit2gtk-4.0-dev:i386 libgtk-3-dev:i386 squashfs-tools:i386 libssl3:i386 gcc-multilib libglib2.0-0:i386 - name: create project - if: ${{ !((matrix.host == 'macos-latest' || matrix.host == 'windows-latest' ) && matrix.host-arch == 'x86')}} + if: ${{ !((matrix.host == 'macos-latest' || matrix.host == 'windows-latest') && matrix.host-arch == 'x86') }} run: ./x new template # only linux can target linux as it is not clear what that even is exactly