From 54d2c34fb25888de313a1414a29ea70c3a1fd183 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Wed, 27 Mar 2024 03:42:15 +0530 Subject: [PATCH 01/17] Add Cargo Packager support --- Cargo.lock | 38 ++++++++++++++++++++++++++++++++ Cargo.toml | 17 ++++++++++++++ resources/icons/icon.ico | Bin 0 -> 25423 bytes resources/icons/icon256x256.png | Bin 0 -> 33215 bytes src/app.rs | 9 ++++++++ src/main.rs | 2 +- src/resources.rs | 9 ++++++++ tests/general.rs | 2 +- 8 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 resources/icons/icon.ico create mode 100644 resources/icons/icon256x256.png diff --git a/Cargo.lock b/Cargo.lock index bb1dc81..6fdbd2b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -572,6 +572,27 @@ dependencies = [ "webxr-api", ] +[[package]] +name = "cargo-packager-resource-resolver" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13797f4d2ac4fb5a3b5b39380c0338c3a39de0d6ff7eb832129346f6ce7c9750" +dependencies = [ + "cargo-packager-utils", + "heck", + "log", + "thiserror", +] + +[[package]] +name = "cargo-packager-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d435b1a5799cfee502f151f857a0b415a04d3834562d83fea2bb8c6e33bfc167" +dependencies = [ + "ctor", +] + [[package]] name = "cc" version = "1.0.90" @@ -1046,6 +1067,16 @@ dependencies = [ "quote", ] +[[package]] +name = "ctor" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad291aa74992b9b7a7e88c38acbbf6ad7e107f1d90ee8775b7bc1fc3394f485c" +dependencies = [ + "quote", + "syn 2.0.52", +] + [[package]] name = "cursor-icon" version = "1.1.0" @@ -2000,6 +2031,12 @@ dependencies = [ "http", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "hermit-abi" version = "0.3.9" @@ -5517,6 +5554,7 @@ name = "verso" version = "0.0.1" dependencies = [ "block", + "cargo-packager-resource-resolver", "cfg_aliases", "cocoa 0.25.0", "core-graphics 0.23.1", diff --git a/Cargo.toml b/Cargo.toml index 3902a37..242bd68 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,21 @@ targets = [ "x86_64-apple-darwin", ] +[package.metadata.packager] +name = "verso" +product-name = "verso" +identifier = "com.crabnebula.verso" +version = "0.0.1" +before-each-package-command = "cargo build --release" +resources = [ + "resources", + "demo.html" +] +icons=[ + "resources/icons/icon256x256.png", + "resources/icons/icon.ico" +] + [features] default = [] @@ -37,6 +52,8 @@ crossbeam-channel = "0.5" getopts = "0.2.17" surfman = { version = "0.9", features = ["chains", "sm-angle", "sm-angle-default", "sm-x11", "sm-raw-window-handle"] } winit = { version = "0.29", features = ["rwh_05"] } +# Cargo Packager +cargo-packager-resource-resolver = { version = "0.1", features = ["auto-detect-format"] } [target."cfg(any(target_os = \"ios\", target_os = \"macos\"))".dependencies] block = "0.1" diff --git a/resources/icons/icon.ico b/resources/icons/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c340dfb6e44a1e7ff596d2799c1acee155adadcf GIT binary patch literal 25423 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 literal 0 HcmV?d00001 diff --git a/resources/icons/icon256x256.png b/resources/icons/icon256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..d1df8c6e74607f06a108ac1e1e97df402c4d90a5 GIT binary patch literal 33215 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 z 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 dbARn`++1IPzv|+|zks7ql;vN^)yP PathBuf { + // For production builds, use Resourse Resolver + #[cfg(not(debug_assertions))] + return resources_dir(current_format().unwrap()) + .unwrap() + .join("resources"); + // Try ./resources relative to the directory containing the // canonicalised executable path, then each of its ancestors. let mut path = env::current_exe().unwrap().canonicalize().unwrap(); diff --git a/tests/general.rs b/tests/general.rs index 647fa15..ef0c744 100644 --- a/tests/general.rs +++ b/tests/general.rs @@ -1,5 +1,5 @@ -use winit::event_loop::EventLoopWindowTarget; use verso::verso_test; +use winit::event_loop::EventLoopWindowTarget; fn smoke(_elwt: &EventLoopWindowTarget<()>) {} fn other_smoke(_elwt: &EventLoopWindowTarget<()>) {} From 6413b7c7d675aa7b9130019b6fe6be0a8f0ba467 Mon Sep 17 00:00:00 2001 From: Naman Garg <155433377+naman-crabnebula@users.noreply.github.com> Date: Thu, 28 Mar 2024 02:35:19 +0530 Subject: [PATCH 02/17] Update identifier --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 242bd68..3aff514 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ targets = [ [package.metadata.packager] name = "verso" product-name = "verso" -identifier = "com.crabnebula.verso" +identifier = "com.eu-browser.verso" version = "0.0.1" before-each-package-command = "cargo build --release" resources = [ From ee2ec4e37e076e200a78d2e649b36818d52c4ed4 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Wed, 10 Apr 2024 16:25:27 +0530 Subject: [PATCH 03/17] Fix the Verso Git url --- Cargo.toml | 2 +- src/lib.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 0c5f254..f43ad35 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" license = "Apache-2.0 OR MIT" description = "A web browser" readme = "README.md" -repository = "https://github.com/wusyong/verso" +repository = "https://github.com/european-browser/verso" documentation = "https://docs.rs/verso" categories = ["Web programming"] diff --git a/src/lib.rs b/src/lib.rs index c46109f..34fcb0f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,6 @@ //! Verso Web Browser //! -//! This is the documentation of Verso's types and items. See [Github page](https://github.com/wusyong/Verso) for more general introduction. +//! This is the documentation of Verso's types and items. See [Github page](https://github.com/european-browser/verso) for more general introduction. #![deny(missing_docs)] From 5de7051c873cca46cf6649740240f6ac56e433b3 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Wed, 10 Apr 2024 19:56:01 +0530 Subject: [PATCH 04/17] Add packager feature --- Cargo.toml | 7 ++++--- src/app.rs | 4 ++-- src/resources.rs | 9 ++++++--- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index f43ad35..b41572f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ name = "verso" product-name = "verso" identifier = "com.eu-browser.verso" version = "0.0.1" -before-each-package-command = "cargo build --release" +before-each-package-command = "cargo build --release --features \"packager\"" resources = [ "resources", "demo.html" @@ -36,7 +36,8 @@ icons=[ [features] default = [] - +# Exclusively for cargo packager command. +packager = ["dep:cargo-packager-resource-resolver"] [build-dependencies] cfg_aliases = "0.1" @@ -53,7 +54,7 @@ getopts = "0.2.17" surfman = { version = "0.9", features = ["chains", "sm-angle", "sm-angle-default", "sm-x11", "sm-raw-window-handle"] } winit = { version = "0.29", features = ["rwh_05"] } # Cargo Packager -cargo-packager-resource-resolver = { version = "0.1", features = ["auto-detect-format"] } +cargo-packager-resource-resolver = { version = "0.1", features = ["auto-detect-format"], optional = true } [target."cfg(any(target_os = \"ios\", target_os = \"macos\"))".dependencies] block = "0.1" diff --git a/src/app.rs b/src/app.rs index ca8a01f..74b4cc1 100644 --- a/src/app.rs +++ b/src/app.rs @@ -17,7 +17,7 @@ use winit::{ use crate::{prefs, resources, webview::WebView}; -#[cfg(not(debug_assertions))] +#[cfg(feature = "packager")] use cargo_packager_resource_resolver::{current_format, resources_dir}; /// Status of webview. @@ -63,7 +63,7 @@ impl Verso { let demo_path = std::env::current_dir().unwrap().join("demo.html"); // For production builds, use Resourse Resolver for demo file - #[cfg(not(debug_assertions))] + #[cfg(feature = "packager")] let demo_path = resources_dir(current_format().unwrap()) .unwrap() .join("demo.html"); diff --git a/src/resources.rs b/src/resources.rs index d1b56ee..fd2684d 100644 --- a/src/resources.rs +++ b/src/resources.rs @@ -4,7 +4,7 @@ use servo::embedder_traits::resources::{self, Resource, ResourceReaderMethods}; struct ResourceReader(PathBuf); -#[cfg(not(debug_assertions))] +#[cfg(feature = "packager")] use cargo_packager_resource_resolver::{current_format, resources_dir}; /// Initialize resource files. We currently read from `resources` directory only. @@ -28,13 +28,16 @@ impl ResourceReaderMethods for ResourceReader { } } +#[cfg(feature = "packager")] fn resources_dir_path() -> PathBuf { - // For production builds, use Resourse Resolver - #[cfg(not(debug_assertions))] + // For Cargo Packager builds, use Resourse Resolver return resources_dir(current_format().unwrap()) .unwrap() .join("resources"); +} +#[cfg(not(feature = "packager"))] +fn resources_dir_path() -> PathBuf { // Try ./resources relative to the directory containing the // canonicalised executable path, then each of its ancestors. let mut path = env::current_exe().unwrap().canonicalize().unwrap(); From f360d8b236bd6a675b08060dd14452410aba89ea Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Fri, 12 Apr 2024 02:00:19 +0530 Subject: [PATCH 05/17] Init Deploy workflow --- .github/workflows/publish_nightly.yml | 151 ++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 .github/workflows/publish_nightly.yml diff --git a/.github/workflows/publish_nightly.yml b/.github/workflows/publish_nightly.yml new file mode 100644 index 0000000..f5b1622 --- /dev/null +++ b/.github/workflows/publish_nightly.yml @@ -0,0 +1,151 @@ +name: Continuous Deployment + +on: + schedule: + - cron: "0 0 * * *" + +jobs: + + draft: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: create draft release + uses: crabnebula-dev/cloud-release@v0.1.0 + with: + command: release draft ${{ env.CN_APP_SLUG }} --framework packager + api-key: ${{ secrets.CN_API_KEY }} + + build-linux: + name: Build [linux] + needs: draft + runs-on: ubuntu-latest # We may want this to be older for wider libc compatibility + steps: + - name: Checkout the repository + uses: actions/checkout@v4 + + - name: Install Rust stable + uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + toolchain: stable + cache: true + + - name: Set env + run: echo "LIBCLANG_PATH=/usr/lib/llvm-14/lib" >> $GITHUB_ENV + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt install build-essential python3-pip ccache clang cmake curl \ + g++ git gperf libdbus-1-dev libfreetype6-dev libgl1-mesa-dri \ + libgles2-mesa-dev libglib2.0-dev libgstreamer-plugins-base1.0-dev \ + gstreamer1.0-plugins-good libgstreamer-plugins-good1.0-dev \ + gstreamer1.0-plugins-bad libgstreamer-plugins-bad1.0-dev \ + gstreamer1.0-plugins-ugly gstreamer1.0-plugins-base \ + libgstreamer-plugins-base1.0-dev gstreamer1.0-libav \ + libgstrtspserver-1.0-dev gstreamer1.0-tools libges-1.0-dev \ + libharfbuzz-dev liblzma-dev libunwind-dev libunwind-dev libvulkan1 \ + libx11-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev \ + libxmu-dev libxmu6 libegl1-mesa-dev llvm-dev m4 xorg-dev + + - name: Install Cargo Packager + run: cargo install cargo-packager --locked + + - name: Build packager app + run: cargo packager --release + + - name: Move assets to workdir + run: | + mv target/release/* . + + - name: upload assets + uses: crabnebula-dev/cloud-release@v0.1.0 + with: + command: release upload ${{ env.CN_APP_SLUG }} --framework packager + api-key: ${{ secrets.CN_API_KEY }} + + + build-windows: + name: Build [windows] + needs: draft + runs-on: windows-latest + steps: + - name: Checkout the repository + uses: actions/checkout@v4 + + - name: Install Rust stable + uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + toolchain: stable + cache: true + + - name: Install scroop + uses: MinoruSekine/setup-scoop@v3 + + - name: Install dependencies + run: scoop install git python llvm cmake curl + + - name: Install Cargo Packager + run: cargo install cargo-packager --locked + + - name: Build packager app + run: cargo packager --release + + - name: Move assets to workdir + run: | + mv target/release/* . + + - name: upload assets + uses: crabnebula-dev/cloud-release@v0.1.0 + with: + command: release upload ${{ env.CN_APP_SLUG }} --framework packager + api-key: ${{ secrets.CN_API_KEY }} + + build-macos: + name: Build [macos] + needs: draft + runs-on: macos-latest + steps: + - name: Checkout the repository + uses: actions/checkout@v4 + + - name: Install Rust stable + uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + toolchain: stable + cache: true + + - name: Install dependencies + run: brew install cmake pkg-config + + - name: Install Cargo Packager + run: cargo install cargo-packager --locked + + - name: Build packager app + run: cargo packager --release + + - name: Move assets to workdir + run: | + mv target/release/* . + + - name: upload assets + uses: crabnebula-dev/cloud-release@v0.1.0 + with: + command: release upload ${{ env.CN_APP_SLUG }} --framework packager + api-key: ${{ secrets.CN_API_KEY }} + + publish: + needs: [build-linux, build-windows, build-macos] + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: publish release + uses: crabnebula-dev/cloud-release@v0.1.0 + with: + command: release publish ${{ env.CN_APP_SLUG }} --framework packager + api-key: ${{ secrets.CN_API_KEY }} From a0e0dcdf742dd872fa015d05c63e05a3c51a8813 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Fri, 12 Apr 2024 02:10:50 +0530 Subject: [PATCH 06/17] Update workflow --- .github/workflows/publish_nightly.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/publish_nightly.yml b/.github/workflows/publish_nightly.yml index f5b1622..0eed902 100644 --- a/.github/workflows/publish_nightly.yml +++ b/.github/workflows/publish_nightly.yml @@ -1,6 +1,8 @@ name: Continuous Deployment on: + push: + - "*" schedule: - cron: "0 0 * * *" From bb07d1dc8163a0e652cd6761e56c2ebb5572cacd Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Fri, 12 Apr 2024 02:12:45 +0530 Subject: [PATCH 07/17] Fix workflow --- .github/workflows/publish_nightly.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish_nightly.yml b/.github/workflows/publish_nightly.yml index 0eed902..3899b1b 100644 --- a/.github/workflows/publish_nightly.yml +++ b/.github/workflows/publish_nightly.yml @@ -2,7 +2,8 @@ name: Continuous Deployment on: push: - - "*" + branches: + - "*" schedule: - cron: "0 0 * * *" From 8a2fe0f65223a95d734a7bbc50ddd0f77cb2824d Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Fri, 12 Apr 2024 02:16:09 +0530 Subject: [PATCH 08/17] Add hardcoded version --- .github/workflows/publish_nightly.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/publish_nightly.yml b/.github/workflows/publish_nightly.yml index 3899b1b..32bbef8 100644 --- a/.github/workflows/publish_nightly.yml +++ b/.github/workflows/publish_nightly.yml @@ -18,7 +18,7 @@ jobs: - name: create draft release uses: crabnebula-dev/cloud-release@v0.1.0 with: - command: release draft ${{ env.CN_APP_SLUG }} --framework packager + command: release draft ${{ env.CN_APP_SLUG }} 0.0.1 --framework packager api-key: ${{ secrets.CN_API_KEY }} build-linux: @@ -66,7 +66,7 @@ jobs: - name: upload assets uses: crabnebula-dev/cloud-release@v0.1.0 with: - command: release upload ${{ env.CN_APP_SLUG }} --framework packager + command: release upload ${{ env.CN_APP_SLUG }} 0.0.1 --framework packager api-key: ${{ secrets.CN_API_KEY }} @@ -103,7 +103,7 @@ jobs: - name: upload assets uses: crabnebula-dev/cloud-release@v0.1.0 with: - command: release upload ${{ env.CN_APP_SLUG }} --framework packager + command: release upload ${{ env.CN_APP_SLUG }} 0.0.1 --framework packager api-key: ${{ secrets.CN_API_KEY }} build-macos: @@ -136,7 +136,7 @@ jobs: - name: upload assets uses: crabnebula-dev/cloud-release@v0.1.0 with: - command: release upload ${{ env.CN_APP_SLUG }} --framework packager + command: release upload ${{ env.CN_APP_SLUG }} 0.0.1 --framework packager api-key: ${{ secrets.CN_API_KEY }} publish: @@ -150,5 +150,5 @@ jobs: - name: publish release uses: crabnebula-dev/cloud-release@v0.1.0 with: - command: release publish ${{ env.CN_APP_SLUG }} --framework packager + command: release publish ${{ env.CN_APP_SLUG }} 0.0.1 --framework packager api-key: ${{ secrets.CN_API_KEY }} From 52b989c0b4304af242ad6ce8319fae1ca10589c0 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Fri, 12 Apr 2024 02:28:47 +0530 Subject: [PATCH 09/17] Add environment secret --- .github/workflows/publish_nightly.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish_nightly.yml b/.github/workflows/publish_nightly.yml index 32bbef8..7ee5f2e 100644 --- a/.github/workflows/publish_nightly.yml +++ b/.github/workflows/publish_nightly.yml @@ -11,7 +11,7 @@ jobs: draft: runs-on: ubuntu-latest - + environment: "Init Workflow" steps: - uses: actions/checkout@v4 @@ -25,6 +25,7 @@ jobs: name: Build [linux] needs: draft runs-on: ubuntu-latest # We may want this to be older for wider libc compatibility + environment: "Init Workflow" steps: - name: Checkout the repository uses: actions/checkout@v4 @@ -74,6 +75,7 @@ jobs: name: Build [windows] needs: draft runs-on: windows-latest + environment: "Init Workflow" steps: - name: Checkout the repository uses: actions/checkout@v4 @@ -110,6 +112,7 @@ jobs: name: Build [macos] needs: draft runs-on: macos-latest + environment: "Init Workflow" steps: - name: Checkout the repository uses: actions/checkout@v4 @@ -143,7 +146,7 @@ jobs: needs: [build-linux, build-windows, build-macos] runs-on: ubuntu-latest - + environment: "Init Workflow" steps: - uses: actions/checkout@v4 From a5c41d02f80331859d545e5a39628eba42809838 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Fri, 12 Apr 2024 02:32:32 +0530 Subject: [PATCH 10/17] Hardcode app-slug for now --- .github/workflows/publish_nightly.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/publish_nightly.yml b/.github/workflows/publish_nightly.yml index 7ee5f2e..7638f12 100644 --- a/.github/workflows/publish_nightly.yml +++ b/.github/workflows/publish_nightly.yml @@ -18,7 +18,7 @@ jobs: - name: create draft release uses: crabnebula-dev/cloud-release@v0.1.0 with: - command: release draft ${{ env.CN_APP_SLUG }} 0.0.1 --framework packager + command: release draft test-verso 0.0.1 --framework packager api-key: ${{ secrets.CN_API_KEY }} build-linux: @@ -67,7 +67,7 @@ jobs: - name: upload assets uses: crabnebula-dev/cloud-release@v0.1.0 with: - command: release upload ${{ env.CN_APP_SLUG }} 0.0.1 --framework packager + command: release upload test-verso 0.0.1 --framework packager api-key: ${{ secrets.CN_API_KEY }} @@ -105,7 +105,7 @@ jobs: - name: upload assets uses: crabnebula-dev/cloud-release@v0.1.0 with: - command: release upload ${{ env.CN_APP_SLUG }} 0.0.1 --framework packager + command: release upload test-verso 0.0.1 --framework packager api-key: ${{ secrets.CN_API_KEY }} build-macos: @@ -139,7 +139,7 @@ jobs: - name: upload assets uses: crabnebula-dev/cloud-release@v0.1.0 with: - command: release upload ${{ env.CN_APP_SLUG }} 0.0.1 --framework packager + command: release upload test-verso 0.0.1 --framework packager api-key: ${{ secrets.CN_API_KEY }} publish: @@ -153,5 +153,5 @@ jobs: - name: publish release uses: crabnebula-dev/cloud-release@v0.1.0 with: - command: release publish ${{ env.CN_APP_SLUG }} 0.0.1 --framework packager + command: release publish test-verso 0.0.1 --framework packager api-key: ${{ secrets.CN_API_KEY }} From 7a8b410ae551e8bf048252f6a8ee9216d1e739f0 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Fri, 12 Apr 2024 03:05:32 +0530 Subject: [PATCH 11/17] Add verbose and out-dir --- .github/workflows/publish_nightly.yml | 12 ++++++------ Cargo.toml | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/publish_nightly.yml b/.github/workflows/publish_nightly.yml index 7638f12..8d5b3c7 100644 --- a/.github/workflows/publish_nightly.yml +++ b/.github/workflows/publish_nightly.yml @@ -57,8 +57,8 @@ jobs: - name: Install Cargo Packager run: cargo install cargo-packager --locked - - name: Build packager app - run: cargo packager --release + - name: Package the App + run: cargo packager --release --verbose - name: Move assets to workdir run: | @@ -95,8 +95,8 @@ jobs: - name: Install Cargo Packager run: cargo install cargo-packager --locked - - name: Build packager app - run: cargo packager --release + - name: Package the App + run: cargo packager --release --verbose - name: Move assets to workdir run: | @@ -129,8 +129,8 @@ jobs: - name: Install Cargo Packager run: cargo install cargo-packager --locked - - name: Build packager app - run: cargo packager --release + - name: Package the App + run: cargo packager --release --verbose - name: Move assets to workdir run: | diff --git a/Cargo.toml b/Cargo.toml index b41572f..822b0ba 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,6 +25,7 @@ product-name = "verso" identifier = "com.eu-browser.verso" version = "0.0.1" before-each-package-command = "cargo build --release --features \"packager\"" +out-dir = "target/release" resources = [ "resources", "demo.html" From 3c9735b4251028d0ae986c180f6fb2fe9926de33 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Fri, 12 Apr 2024 20:33:22 +0530 Subject: [PATCH 12/17] Fix warnings --- src/app.rs | 1 + src/resources.rs | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/app.rs b/src/app.rs index 74b4cc1..c9c85eb 100644 --- a/src/app.rs +++ b/src/app.rs @@ -61,6 +61,7 @@ impl Verso { CompositeTarget::Fbo, ); + #[cfg(not(feature = "packager"))] let demo_path = std::env::current_dir().unwrap().join("demo.html"); // For production builds, use Resourse Resolver for demo file #[cfg(feature = "packager")] diff --git a/src/resources.rs b/src/resources.rs index fd2684d..577cb8b 100644 --- a/src/resources.rs +++ b/src/resources.rs @@ -1,4 +1,7 @@ -use std::{env, fs, path::PathBuf}; +use std::{fs, path::PathBuf}; + +#[cfg(not(feature = "packager"))] +use std::env; use servo::embedder_traits::resources::{self, Resource, ResourceReaderMethods}; From 0559f14b8c0c37d143a440d9b1827efe948a90a0 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Fri, 12 Apr 2024 20:35:37 +0530 Subject: [PATCH 13/17] Fix windows worflow --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 822b0ba..7bc5053 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ name = "verso" product-name = "verso" identifier = "com.eu-browser.verso" version = "0.0.1" -before-each-package-command = "cargo build --release --features \"packager\"" +before-each-package-command = "cargo build --release --features packager" out-dir = "target/release" resources = [ "resources", From 825d7e76317a7719cc45a5cfa9e07b0fb32606e8 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Tue, 16 Apr 2024 02:51:41 +0530 Subject: [PATCH 14/17] Add NO_STRIP as temporary measure --- .github/workflows/publish_nightly.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_nightly.yml b/.github/workflows/publish_nightly.yml index 8d5b3c7..daf39b7 100644 --- a/.github/workflows/publish_nightly.yml +++ b/.github/workflows/publish_nightly.yml @@ -58,7 +58,7 @@ jobs: run: cargo install cargo-packager --locked - name: Package the App - run: cargo packager --release --verbose + run: NO_STRIP=true cargo packager --release --verbose - name: Move assets to workdir run: | From 09174486486376dc88ff2c47770d24e905eda773 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Tue, 16 Apr 2024 03:15:22 +0530 Subject: [PATCH 15/17] Try Only deb for now --- .github/workflows/publish_nightly.yml | 144 +++++++++++++------------- 1 file changed, 72 insertions(+), 72 deletions(-) diff --git a/.github/workflows/publish_nightly.yml b/.github/workflows/publish_nightly.yml index daf39b7..1397963 100644 --- a/.github/workflows/publish_nightly.yml +++ b/.github/workflows/publish_nightly.yml @@ -58,7 +58,7 @@ jobs: run: cargo install cargo-packager --locked - name: Package the App - run: NO_STRIP=true cargo packager --release --verbose + run: NO_STRIP=true cargo packager -f deb --release --verbose - name: Move assets to workdir run: | @@ -71,79 +71,79 @@ jobs: api-key: ${{ secrets.CN_API_KEY }} - build-windows: - name: Build [windows] - needs: draft - runs-on: windows-latest - environment: "Init Workflow" - steps: - - name: Checkout the repository - uses: actions/checkout@v4 - - - name: Install Rust stable - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - toolchain: stable - cache: true - - - name: Install scroop - uses: MinoruSekine/setup-scoop@v3 - - - name: Install dependencies - run: scoop install git python llvm cmake curl - - - name: Install Cargo Packager - run: cargo install cargo-packager --locked - - - name: Package the App - run: cargo packager --release --verbose - - - name: Move assets to workdir - run: | - mv target/release/* . - - - name: upload assets - uses: crabnebula-dev/cloud-release@v0.1.0 - with: - command: release upload test-verso 0.0.1 --framework packager - api-key: ${{ secrets.CN_API_KEY }} - - build-macos: - name: Build [macos] - needs: draft - runs-on: macos-latest - environment: "Init Workflow" - steps: - - name: Checkout the repository - uses: actions/checkout@v4 - - - name: Install Rust stable - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - toolchain: stable - cache: true - - - name: Install dependencies - run: brew install cmake pkg-config - - - name: Install Cargo Packager - run: cargo install cargo-packager --locked - - - name: Package the App - run: cargo packager --release --verbose - - - name: Move assets to workdir - run: | - mv target/release/* . - - - name: upload assets - uses: crabnebula-dev/cloud-release@v0.1.0 - with: - command: release upload test-verso 0.0.1 --framework packager - api-key: ${{ secrets.CN_API_KEY }} + # build-windows: + # name: Build [windows] + # needs: draft + # runs-on: windows-latest + # environment: "Init Workflow" + # steps: + # - name: Checkout the repository + # uses: actions/checkout@v4 + + # - name: Install Rust stable + # uses: actions-rust-lang/setup-rust-toolchain@v1 + # with: + # toolchain: stable + # cache: true + + # - name: Install scroop + # uses: MinoruSekine/setup-scoop@v3 + + # - name: Install dependencies + # run: scoop install git python llvm cmake curl + + # - name: Install Cargo Packager + # run: cargo install cargo-packager --locked + + # - name: Package the App + # run: cargo packager --release --verbose + + # - name: Move assets to workdir + # run: | + # mv target/release/* . + + # - name: upload assets + # uses: crabnebula-dev/cloud-release@v0.1.0 + # with: + # command: release upload test-verso 0.0.1 --framework packager + # api-key: ${{ secrets.CN_API_KEY }} + + # build-macos: + # name: Build [macos] + # needs: draft + # runs-on: macos-latest + # environment: "Init Workflow" + # steps: + # - name: Checkout the repository + # uses: actions/checkout@v4 + + # - name: Install Rust stable + # uses: actions-rust-lang/setup-rust-toolchain@v1 + # with: + # toolchain: stable + # cache: true + + # - name: Install dependencies + # run: brew install cmake pkg-config + + # - name: Install Cargo Packager + # run: cargo install cargo-packager --locked + + # - name: Package the App + # run: cargo packager --release --verbose + + # - name: Move assets to workdir + # run: | + # mv target/release/* . + + # - name: upload assets + # uses: crabnebula-dev/cloud-release@v0.1.0 + # with: + # command: release upload test-verso 0.0.1 --framework packager + # api-key: ${{ secrets.CN_API_KEY }} publish: - needs: [build-linux, build-windows, build-macos] + needs: build-linux runs-on: ubuntu-latest environment: "Init Workflow" From 0178daf82289331b7a87de0f62eb6d79ee1fd288 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Tue, 16 Apr 2024 03:45:32 +0530 Subject: [PATCH 16/17] Only build app for cache --- .github/workflows/publish_nightly.yml | 181 ++++++++++++++------------ 1 file changed, 95 insertions(+), 86 deletions(-) diff --git a/.github/workflows/publish_nightly.yml b/.github/workflows/publish_nightly.yml index 1397963..05a6f94 100644 --- a/.github/workflows/publish_nightly.yml +++ b/.github/workflows/publish_nightly.yml @@ -9,17 +9,17 @@ on: jobs: - draft: - runs-on: ubuntu-latest - environment: "Init Workflow" - steps: - - uses: actions/checkout@v4 + # draft: + # runs-on: ubuntu-latest + # environment: "Init Workflow" + # steps: + # - uses: actions/checkout@v4 - - name: create draft release - uses: crabnebula-dev/cloud-release@v0.1.0 - with: - command: release draft test-verso 0.0.1 --framework packager - api-key: ${{ secrets.CN_API_KEY }} + # - name: create draft release + # uses: crabnebula-dev/cloud-release@v0.1.0 + # with: + # command: release draft test-verso 0.0.1 --framework packager + # api-key: ${{ secrets.CN_API_KEY }} build-linux: name: Build [linux] @@ -57,101 +57,110 @@ jobs: - name: Install Cargo Packager run: cargo install cargo-packager --locked - - name: Package the App - run: NO_STRIP=true cargo packager -f deb --release --verbose + - name: Build the App + run: cargo build --release --features packager - - name: Move assets to workdir - run: | - mv target/release/* . + # - name: Package the App + # run: NO_STRIP=true cargo packager -f deb --release --verbose + + # - name: Move assets to workdir + # run: | + # mv target/release/* . + + # - name: upload assets + # uses: crabnebula-dev/cloud-release@v0.1.0 + # with: + # command: release upload test-verso 0.0.1 --framework packager + # api-key: ${{ secrets.CN_API_KEY }} + + + build-windows: + name: Build [windows] + needs: draft + runs-on: windows-latest + environment: "Init Workflow" + steps: + - name: Checkout the repository + uses: actions/checkout@v4 - - name: upload assets - uses: crabnebula-dev/cloud-release@v0.1.0 + - name: Install Rust stable + uses: actions-rust-lang/setup-rust-toolchain@v1 with: - command: release upload test-verso 0.0.1 --framework packager - api-key: ${{ secrets.CN_API_KEY }} + toolchain: stable + cache: true + - name: Install scroop + uses: MinoruSekine/setup-scoop@v3 - # build-windows: - # name: Build [windows] - # needs: draft - # runs-on: windows-latest - # environment: "Init Workflow" - # steps: - # - name: Checkout the repository - # uses: actions/checkout@v4 + - name: Install dependencies + run: scoop install git python llvm cmake curl - # - name: Install Rust stable - # uses: actions-rust-lang/setup-rust-toolchain@v1 - # with: - # toolchain: stable - # cache: true + - name: Install Cargo Packager + run: cargo install cargo-packager --locked - # - name: Install scroop - # uses: MinoruSekine/setup-scoop@v3 + - name: Build the App + run: cargo build --release --features packager - # - name: Install dependencies - # run: scoop install git python llvm cmake curl + # - name: Package the App + # run: cargo packager --release --verbose - # - name: Install Cargo Packager - # run: cargo install cargo-packager --locked + # - name: Move assets to workdir + # run: | + # mv target/release/* . - # - name: Package the App - # run: cargo packager --release --verbose + # - name: upload assets + # uses: crabnebula-dev/cloud-release@v0.1.0 + # with: + # command: release upload test-verso 0.0.1 --framework packager + # api-key: ${{ secrets.CN_API_KEY }} - # - name: Move assets to workdir - # run: | - # mv target/release/* . + build-macos: + name: Build [macos] + needs: draft + runs-on: macos-latest + environment: "Init Workflow" + steps: + - name: Checkout the repository + uses: actions/checkout@v4 - # - name: upload assets - # uses: crabnebula-dev/cloud-release@v0.1.0 - # with: - # command: release upload test-verso 0.0.1 --framework packager - # api-key: ${{ secrets.CN_API_KEY }} + - name: Install Rust stable + uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + toolchain: stable + cache: true - # build-macos: - # name: Build [macos] - # needs: draft - # runs-on: macos-latest - # environment: "Init Workflow" - # steps: - # - name: Checkout the repository - # uses: actions/checkout@v4 + - name: Install dependencies + run: brew install cmake pkg-config - # - name: Install Rust stable - # uses: actions-rust-lang/setup-rust-toolchain@v1 - # with: - # toolchain: stable - # cache: true + - name: Install Cargo Packager + run: cargo install cargo-packager --locked + + - name: Build the App + run: cargo build --release --features packager + + # - name: Package the App + # run: cargo packager --release --verbose - # - name: Install dependencies - # run: brew install cmake pkg-config + # - name: Move assets to workdir + # run: | + # mv target/release/* . - # - name: Install Cargo Packager - # run: cargo install cargo-packager --locked + # - name: upload assets + # uses: crabnebula-dev/cloud-release@v0.1.0 + # with: + # command: release upload test-verso 0.0.1 --framework packager + # api-key: ${{ secrets.CN_API_KEY }} - # - name: Package the App - # run: cargo packager --release --verbose + # publish: + # needs: build-linux - # - name: Move assets to workdir - # run: | - # mv target/release/* . + # runs-on: ubuntu-latest + # environment: "Init Workflow" + # steps: + # - uses: actions/checkout@v4 - # - name: upload assets + # - name: publish release # uses: crabnebula-dev/cloud-release@v0.1.0 # with: - # command: release upload test-verso 0.0.1 --framework packager + # command: release publish test-verso 0.0.1 --framework packager # api-key: ${{ secrets.CN_API_KEY }} - - publish: - needs: build-linux - - runs-on: ubuntu-latest - environment: "Init Workflow" - steps: - - uses: actions/checkout@v4 - - - name: publish release - uses: crabnebula-dev/cloud-release@v0.1.0 - with: - command: release publish test-verso 0.0.1 --framework packager - api-key: ${{ secrets.CN_API_KEY }} From 7ff252c2817cb4b1e93d8295c282f5d52c77454c Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Tue, 16 Apr 2024 03:48:31 +0530 Subject: [PATCH 17/17] Fix failing action --- .github/workflows/publish_nightly.yml | 32 +++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/publish_nightly.yml b/.github/workflows/publish_nightly.yml index 05a6f94..4052d34 100644 --- a/.github/workflows/publish_nightly.yml +++ b/.github/workflows/publish_nightly.yml @@ -9,11 +9,11 @@ on: jobs: - # draft: - # runs-on: ubuntu-latest - # environment: "Init Workflow" - # steps: - # - uses: actions/checkout@v4 + draft: + runs-on: ubuntu-latest + environment: "Init Workflow" + steps: + - uses: actions/checkout@v4 # - name: create draft release # uses: crabnebula-dev/cloud-release@v0.1.0 @@ -151,16 +151,16 @@ jobs: # command: release upload test-verso 0.0.1 --framework packager # api-key: ${{ secrets.CN_API_KEY }} - # publish: - # needs: build-linux + publish: + needs: [build-linux, build-windows, build-macos] - # runs-on: ubuntu-latest - # environment: "Init Workflow" - # steps: - # - uses: actions/checkout@v4 + runs-on: ubuntu-latest + environment: "Init Workflow" + steps: + - uses: actions/checkout@v4 - # - name: publish release - # uses: crabnebula-dev/cloud-release@v0.1.0 - # with: - # command: release publish test-verso 0.0.1 --framework packager - # api-key: ${{ secrets.CN_API_KEY }} + # - name: publish release + # uses: crabnebula-dev/cloud-release@v0.1.0 + # with: + # command: release publish test-verso 0.0.1 --framework packager + # api-key: ${{ secrets.CN_API_KEY }}