From fb2568975400467415b6545806191ad2412dd63b Mon Sep 17 00:00:00 2001 From: Moosieus Date: Fri, 29 Dec 2023 13:57:20 -0500 Subject: [PATCH] fix action compilation --- .github/workflows/release.yml | 2 +- Development.md | 13 +++++++++++++ README.md | 3 +-- native/bzip2_decomp/Cargo.toml | 2 +- priv/native/libbzip2_decomp.so | Bin 422776 -> 422776 bytes 5 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 Development.md diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a8fef31..64bf4e1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,7 +14,7 @@ jobs: strategy: fail-fast: false matrix: - nif: ["2.17", "2.16", "2.15", "2.14"] + nif: ["2.17", "2.16", "2.15"] job: - { target: arm-unknown-linux-gnueabihf , os: ubuntu-20.04 , use-cross: true } - { target: aarch64-unknown-linux-gnu , os: ubuntu-20.04 , use-cross: true } diff --git a/Development.md b/Development.md new file mode 100644 index 0000000..e3cf837 --- /dev/null +++ b/Development.md @@ -0,0 +1,13 @@ +# Development +Since the `bzip2-rs` crate hasn't been kept up to date, this repo's targeting [the git repo directly](native/bzip2_decomp/Cargo.toml). + +```sh +mix rustler_precompiled.download Bzip2 --all --print +``` + +### [Recommended Flow](https://hexdocs.pm/rustler_precompiled/precompilation_guide.html#recommended-flow) +1. release a new tag +2. push the code to your repository with the new tag: git push origin main --tags +3. wait for all NIFs to be built +4. run the mix rustler_precompiled.download task (with the flag --all) +5. release the package to Hex.pm (make sure your release includes the correct files). diff --git a/README.md b/README.md index ef61490..de8ebe2 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,7 @@ Documentation is available on [HexDocs](https://hexdocs.pm/bzip2_decomp/readme.h Bzip2.decompress(encoded_data) ``` -## Notes: -Since the `bzip2-rs` crate hasn't been kept up to date, this repo's targeting [the git repo directly](native/bzip2_decomp/Cargo.toml). +## [Development](./Development.md) ## Acknowledgments Special thanks to [crypdough.eth](https://github.com/crypdoughdoteth) for providing the Rust expertise to make this package possible. diff --git a/native/bzip2_decomp/Cargo.toml b/native/bzip2_decomp/Cargo.toml index 7bec117..21aa8fa 100644 --- a/native/bzip2_decomp/Cargo.toml +++ b/native/bzip2_decomp/Cargo.toml @@ -10,5 +10,5 @@ path = "src/lib.rs" crate-type = ["cdylib"] [dependencies] -rustler = { version = "0.30.0", default-features = false, features = ["derive", "nif_version_2_14"] } +rustler = { version = "0.30.0", default-features = false, features = ["derive", "nif_version_2_15"] } bzip2-rs = { git = "https://github.com/paolobarbolini/bzip2-rs.git", rev = "82e3cbb4ea6cb4249a43f90b06ae1a5e94f06a9f"} diff --git a/priv/native/libbzip2_decomp.so b/priv/native/libbzip2_decomp.so index 35c87ef22e9fbe1edbfecda4813f9fa4e11facff..f5bbf6fe0d7cd8a8bd390e1adfeb8659b012cd04 100755 GIT binary patch delta 13079 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