mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2024-12-23 14:52:24 +00:00
82 lines
4.4 KiB
Markdown
82 lines
4.4 KiB
Markdown
# Notes
|
|
|
|
## Making a release
|
|
|
|
1. run vcpkg_cli and test it
|
|
1. run systest\test.cmd
|
|
1. check that everything is committed and work dir is clean
|
|
1. push to master on github
|
|
1. check that github actions ci passes
|
|
1. update changelog, commit and push
|
|
1. update version number in Cargo.toml for the crate to be released
|
|
1. commit
|
|
1. push
|
|
1. wait for the ci to work
|
|
1. create a tag for the right crate like `git tag vcpkg-rs-0.2.3`
|
|
1. cd to the crate dir and run `cargo publish`
|
|
1. git push origin --tags
|
|
|
|
## Possible future features
|
|
|
|
- hide or deprecate or note that the lib_name api is not as good as find_package
|
|
|
|
- make sure the find_package api is first in the docs and mention that it's the best option
|
|
|
|
- allow specifying a triple to use using an environment variable. this will allow setting up a custom "x64-rust-static" triple that dynamically links to msvcrt, allowing static builds with the default rust.
|
|
|
|
- add information about target triples and target triple selection being driven by RUSTFLAGS=-Ctarget-feature=+crt-static
|
|
|
|
- add a note that even rust debug builds are linked against the release version
|
|
of built libraries
|
|
|
|
- there is a lib\no_auto_link folder that some packages generate that needs
|
|
to be added to the link line. this will require finding an example of
|
|
a library that uses that feature. (boost?)
|
|
|
|
- vcpkg_cli: make probe failure return a nonzero exit code so the build fails
|
|
|
|
- remove crate doc info about the libname -> package mapping. (why?)
|
|
|
|
- look into the possibility of using dotenv to allow setting VCPKG_ROOT
|
|
|
|
- could run vcpkg and parse it's output to determine what package versions are installed.
|
|
|
|
- could parse vcpkg's installed files list to guess at the names for libraries and dlls rather than requiring them to be specified.
|
|
|
|
- could parse vcpkg's installed packages list to determine what other packages we need to link against.
|
|
|
|
- vcpkg has common include and lib dirs so there is a chance that someone is going to end up picking up a vcpkg lib on their link line in preference to some other version at some point. I believe cmake handles this by using absolute paths for libs wherever possible. if everything below you in the dependency tree is looking in vcpkg then everything will agree.
|
|
|
|
- vcpkg has a per-package output dir that looks like it would be helpful, but at present it is undocumented and subject to change. (what I read mentioned the possibility of compressing the contents.)
|
|
|
|
- warn if you use something that looks like a vcpkg triplet in place of a rust triple
|
|
|
|
- allow specifying of the library to be installed like pkg-config does. (hard in general because there is no specific format for version numbers )
|
|
|
|
- allow stipulating that a specific feature be installed. at present if a feature is installed any extra libraries it requires will be linked as expected. how should this be? The vcpkg way is to specify it as harfbuzz[graphite2,icu] for example.
|
|
|
|
- report enabled/available features in the Library returned from find_package
|
|
|
|
- get information about installed packages by running the vcpkg executable
|
|
|
|
- if using json to encode the information, this requires writing a json parser or adding a dependency on serde for anything that transitively depends on vcpkg, which is a lot of stuff, probably only a tiny percentage of which actually uses the vcpkg functionality. otherwise, could invent yet another easy-to-parse custom format.
|
|
- vcpkg is now available on linux and macos also. a possible use is to build the whole bag of windows dependencies on a windows machine at the point that lld can cross link windows/msvc code.
|
|
|
|
- add a changelog for vcpkg_cli
|
|
|
|
- make the breaking change of dropping Rust 1.10 (actually 1.12) compatibility when updating to 0.3
|
|
|
|
- vcpkg_cli should say if there are other versions of the ports available that do not match what is being looked for
|
|
|
|
- add some commentary describing the vcpkg target triplets on windows - static vs dynamic crt and the fact that rust prefers something in between - dynamic crt, static libs on top of that.
|
|
|
|
- vcpkg now has a community supported triplet called x64-windows-static-md which is a match for the default Rust build type on windows - dynamic linking to the c runtime, and static linking to other libraries.
|
|
|
|
## Creating empty files from list files
|
|
|
|
```sh
|
|
touch `grep -h \.lib$ vcpkg/info/*x86* | grep -v debug `
|
|
touch `grep -h \.dll$ vcpkg/info/*x86* | grep -v debug `
|
|
```
|
|
|