defaultfeatures - nonebundled- uses binaries location for an installed(and bundled) application.
You can find the Stremio Service packages in the releases asset files or by using one of the following urls.
For dl.strem.io urls replace {VERSION} with the latest release version of Stremio Service in the format v*.*.*.
- MacOS: https://dl.strem.io/stremio-service/{VERSION}/StremioService.dmg
- Windows: https://dl.strem.io/stremio-service/{VERSION}/StremioServiceSetup.exe
- Debian: https://dl.strem.io/stremio-service/{VERSION}/stremio-service_amd64.deb
- Redhat: https://dl.strem.io/stremio-service/{VERSION}/stremio-service_x86_64.rpm
- Flatpak package: https://flathub.org/apps/com.stremio.Service
git clone --recurse-submodules https://github.com/Stremio/stremio-serviceDownload & Install Inno Setup.
apt install build-essential pkg-config libgtk-3-dev libssl-dev libayatana-appindicator3-dev
cargo install cargo-debdnf install gtk3-devel
cargo install cargo-generate-rpmnpm install -g create-dmg && brew install graphicsmagick imagemagickBy default the stremio-service binary is ran with info log level:
RUST_LOG=info cargo runcargo build --releaseBuild the binaries on Windows in release using the bundled feature.
cargo build --release --features=bundledRun the Inno Setup compiler ISCC command inside Command Prompt or PowerShell against the StremioService.iss script. Depending on your installation the path to IISC may vary. Here is an example with the default installation path, presuming your current working directory is the project's root:
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" "setup\StremioService.iss"If you use PowerShell you need to prepend & in the beginning of the line.
A new executable should be produced - StremioServiceSetup.exe
- For cross-compiling on Linux, you need to add the
x86_64-pc-windows-gnutarget:
rustup target add x86_64-pc-windows-gnu- And build the binary using the
bundledfeature:
cargo build --release --target x86_64-pc-windows-gnu --features=bundledNOTE: The Windows installed can not be built on other platforms, only Windows.
cargo debcargo build --release --features=bundled
strip -s target/release/stremio-service
cargo generate-rpmThe Manifest is located com.stremio.Service.json and you can bundle the application using the script:
./flatpak/build.shUse either cargo run --bin bundle-macos or its alias cargo macos to build the MacOS .app and then build the dmg package:
cargo macos && create-dmg --overwrite target/macos/*.app target/macos- Bump version and update Flatpak
- Bump version in
Cargo.toml - Flatpak packages - necessary to add the new version and it's date to the com.stremio.Service.appdata.xml file.
- Commit
Cargo.toml,Cargo.lockandresources/com.stremio.service.metainfo.xml.
- Make a new tag
git tag -a v0.XX.XX -m "Service v0.XX.XX"
- Push it to the repo
git push -u origin v0.XX.XX
- The
releaseworkflow will be triggered
The generate_descriptor.js script is used to generate new version descriptor and upload it to s3. This script is automatically called in the release workflows for Mac OS and Windows. The default behavior is to find the latest artifacts and generate a release candidate descriptor.
Assuming the release actions finished successfully there will be already a release candidate descriptor. It can be tested by running the service with the --release-candidate argument and it should update. If so invoking the generate_descriptor.js script with --release flag will publish the descriptor to the release channel:
C:\stremio-service> node .\generate_descriptor.js --tag=v0.1.0 --release
Descriptor for tag v0.1.0 already exists in the RC folder. Moving it to the releases folder
Done
C:\stremio-service>In order to run the script the AWS Command Line Interface must be installed on the system and properly configured with credentials that have write permissions to the bucket.
If the --release flag is passed the release candidate is copied to the releases destination thus releasing a new version. If there is no release candidate yet for some reason a new release descriptor is generated skipping the candidate.
With the --tag="vX.X.X..." argument the script creates a descriptor for the given tag. If there is already released a descriptor for that tag the script exits with an error unless the --force flag is set. In this case new descriptor is always generated and the old is overwritten.
By default the script generates a descriptor as long as at least one file is built for the given tag. If the --wait-all flag is set the script will exit successfully but it will do nothing unless all the installers for the supported platforms are present. This option is used in the CI to reduce the load.
For testing purposes there is also a --dry-run flag. If you use it the descriptor will be generated and printed to the terminal. This flag should work even with read only AWS credentials. Here is an example of the -dry-run flag:
C:\stremio-service> node .\generate_descriptor.js --tag=v0.1.0 --dry-run
RC Descriptor for tag v0.1.0 already exists
C:\stremio-service> node .\generate_descriptor.js --tag=v0.1.0 --dry-run --force
Getting files for tag v0.1.0
Calculating hashes for files
The hash for StremioService.dmg is <dmg sha256 hash>
The hash for StremioServiceSetup.exe is <exe sha256 hash>
{
"version": "0.1.0",
"tag": "v0.1.0",
"released": "2023-04-13T13:34:53.000Z",
"files": [
{
"name": "StremioService.dmg",
"url": "https://s3.example.com/stremio-service/v0.1.0/StremioService.dmg",
"os": "macos",
"date": "2023-04-13T13:34:53.000Z",
"checksum": "<dmg sha256 hash>"
},
{
"name": "StremioServiceSetup.exe",
"url": "https://s3.example.com/stremio-service/v0.1.0/StremioServiceSetup.exe",
"os": "windows",
"date": "2023-04-13T13:30:17.000Z",
"checksum": "<exe sha256 hash>"
}
]
}If the --quiet flag is used together with --dry-run only the descriptor is printed to STDOUT. In case of error the error is printed to STDERR and STDOUT is blank.
GPL-2.0 LICENSE.md