5 个版本
使用旧Rust 2015
0.1.4 | 2017年12月16日 |
---|---|
0.1.3 | 2017年12月13日 |
0.1.2 | 2017年12月7日 |
0.1.1 | 2017年12月6日 |
0.1.0 | 2017年12月6日 |
#675 in 配置
43KB
852 行
发布管理器
管理带有交叉编译二进制的crate的工具。
为了交叉编译Rust,你需要确保已经通过rustup添加了目标,并且有一个本地工具链来处理编译C依赖项和链接二进制文件。设置这些工具超出了本项目的范围。有关交叉编译Rust项目的信息,请参阅rust-cross。
发布管理器目前支持以下目标
x86_64-pc-windows-gnu
配置为[config.Windows.amd64]
i686-pc-windows-gnu
配置为[config.Windows.i686]
x86_64-apple-darwin
配置为[config.Apple.amd64]
x86_64-unknown-linux-gnu
配置为[config.Linux.amd64]
x86_64-unknown-linux-musl
配置为[config.Linux.amd64musl]
arm-unknown-linux-gnueabihf
配置为[config.Linux.armh]
arm-unknown-linux-musleabihf
配置为[config.Linux.armhmusl]
armv7-unknown-linux-gnueabihf
配置为[config.Linux.armv7h]
armv7-unknown-linux-musleabihf
配置为[config.Linux.armv7hmusl]
aarch64-unknown-linux-gnu
已配置为[config.Linux.aarch64]
设置好交叉编译目标后,创建一个 Release.toml
文件。默认情况下,release-manager 预期 release toml 文件位于您的 crate 目录中。如果您希望将此文件保存在其他位置,可以使用带有路径的配置传递 -r
选项给 release-manager。
release_path = "/home/asonix/Development/rust/releases"
included_files = ["LICENSE", "README.md", "ACKNOWLEDGEMENTS"]
[[config.Linux.aarch64]]
libs = ["/usr/aarch64-linux-gnu/lib", "/home/asonix/Development/aarch64/lib"]
[config.Linux.aarch64.env]
OPENSSL_DIR = "/home/asonix/Development/aarch64"
PKG_CONFIG_ALLOW_CROSS = "1"
[[config.Linux.armv7h]]
libs = ["/usr/arm-linux-gnueabihf/lib", "/home/asonix/Development/armeabi/lib"]
[config.Linux.armv7h.env]
OPENSSL_DIR = "/home/asonix/Development/armeabi"
PKG_CONFIG_ALLOW_CROSS = "1"
[[config.Linux.armh]]
libs = ["/usr/arm-linux-gnueabihf/lib", "/home/asonix/Development/armeabi/lib"]
[config.Linux.armh.env]
OPENSSL_DIR = "/home/asonix/Development/armeabi"
PKG_CONFIG_ALLOW_CROSS = "1"
[[config.Linux.amd64]]
libs = []
env = {}
[[config.Linux.amd64musl]]
libs = ["/usr/lib/musl/lib", "/home/asonix/Development/amd64-musl/lib"]
[config.Linux.amd64musl.env]
OPENSSL_DIR = "/home/asonix/Development/amd64-musl"
PKG_CONFIG_ALLOW_CROSS = "1"
LIBZ_SYS_STATIC = "1"
[[config.Linux.armv7hmusl]]
libs = ["/usr/lib/arm-linux-gnueabihf/lib", "/home/asonix/Development/armh-musl/lib"]
[config.Linux.armv7hmusl.env]
OPENSSL_DIR = "/home/asonix/Development/armh-musl"
PKG_CONFIG_ALLOW_CROSS = "1"
LIBZ_SYS_STATIC = "1"
[[config.Linux.armhmusl]]
libs = ["/usr/lib/arm-linux-gnueabihf/lib", "/home/asonix/Development/armh-musl/lib"]
[config.Linux.armhmusl.env]
OPENSSL_DIR = "/home/asonix/Development/armh-musl"
PKG_CONFIG_ALLOW_CROSS = "1"
LIBZ_SYS_STATIC = "1"
[[config.Windows.amd64]]
libs = ["/usr/x86_64-w64-mingw32/lib"]
env = { PKG_CONFIG_ALLOW_CROSS = "1" }
帮助菜单
$ release-manager
release-manager 0.1.4
Riley Trautman <[email protected]>
A utility for creating release binaries for multiple platforms
USAGE:
release-manager [FLAGS] [OPTIONS]
FLAGS:
-f, --force Force recompiling of succeeded builds
-h, --help Prints help information
-p, --publish Publish to crates.io on succesfull build
--skip-dependencies Don't compile dependencies unless needed
-V, --version Prints version information
--verbose Print debug info
OPTIONS:
-r, --release-config <release_config> Provide an alternative path for the release config
-s, --status-file <status_file> Provide an alternative path for the status file
运行 release-manager 时,它将在您的项目目录中创建一个 Status.toml 文件。如果您希望将其放在其他位置,可以将 -s
选项传递给 release-manager。状态文件用于跟踪哪些构建对哪个 crate 版本成功,以及该 crate 是否已为此版本发布。
输出目录结构
releases/release-manager/0.1.1
[I] ➜ tree
.
├── aarch64-unknown-linux-gnu
│ ├── LICENSE
│ ├── README.md
│ └── release-manager
├── aarch64-unknown-linux-gnu.zip
├── arm-unknown-linux-gnueabihf
│ ├── LICENSE
│ ├── README.md
│ └── release-manager
├── arm-unknown-linux-gnueabihf.zip
├── armv7-unknown-linux-gnueabihf
│ ├── LICENSE
│ ├── README.md
│ └── release-manager
├── armv7-unknown-linux-gnueabihf.zip
├── x86_64-pc-windows-gnu
│ ├── LICENSE
│ ├── README.md
│ └── release-manager.exe
├── x86_64-pc-windows-gnu.zip
├── x86_64-unknown-linux-gnu
│ ├── LICENSE
│ ├── README.md
│ └── release-manager
└── x86_64-unknown-linux-gnu.zip
5 directories, 20 files
许可证
Release Manager 是自由软件:您可以在自由软件基金会发布的 GNU 通用公共许可证条款下重新分发和/或修改它,许可证版本为 3 或(根据您的选择)任何后续版本。
Release Manager 的分发是希望它将是有用的,但没有任何保证;甚至没有关于其商业性或适用于特定目的的暗示性保证。有关更多详细信息,请参阅 GNU 通用公共许可证。此文件是 Release Manager 的一部分。
您应该已收到与 Release Manager 一起提供的 GNU 通用公共许可证副本。如果没有,请参阅 http://www.gnu.org/licenses/。
依赖项
~7–16MB
~195K SLoC