This change adds the ability to create source tarballs for unreleased or untagged code by providing the --git-ref <GIT_REF> flag to the llvm/utils/release/export.sh script. This is useful for creating daily snapshot tarballs that can easily be consumed by packagers who want to build a daily snapshot.
The default behavior of export.sh hasn't changed.
You may also provide a --template argument to say how the artifacts
are supposed to be named (as suggested by @hans).
The -help output of export.sh was changed quite significantly to look like this:
Export the Git sources and build tarballs from them. Usage: export.sh [-release|--release <major>.<minor>.<patch>] [-rc|--rc <num>] [-final|--final] [-git-ref|--git-ref <git-ref>] [-template|--template <template>] Flags: -release | --release <major>.<minor>.<patch> The version number of the release -rc | --rc <num> The release candidate number -final | --final When provided, this option will disable the rc flag -git-ref | --git-ref <git-ref> (optional) Use <git-ref> to determine the release and don't export the test-suite files -template | --template <template> (optional) Possible placeholders: $PROJECT $YYYYMMDD $GIT_REF $RELEASE $RC. Defaults to '${PROJECT}-${RELEASE}${RC}.src.tar.xz'. The following list shows the filenames (with <placeholders>) for the artifacts that are being generated (given that you don't touch --template). * llvm-<RELEASE><RC>.src.tar.xz * clang-<RELEASE><RC>.src.tar.xz * compiler-rt-<RELEASE><RC>.src.tar.xz * libcxx-<RELEASE><RC>.src.tar.xz * libcxxabi-<RELEASE><RC>.src.tar.xz * libclc-<RELEASE><RC>.src.tar.xz * clang-tools-extra-<RELEASE><RC>.src.tar.xz * polly-<RELEASE><RC>.src.tar.xz * lldb-<RELEASE><RC>.src.tar.xz * lld-<RELEASE><RC>.src.tar.xz * openmp-<RELEASE><RC>.src.tar.xz * libunwind-<RELEASE><RC>.src.tar.xz * flang-<RELEASE><RC>.src.tar.xz Additional files being generated: * llvm-project-<RELEASE><RC>.src.tar.xz (the complete LLVM source project) * test-suite-<RELEASE><RC>.src.tar.xz (only when not using --git-ref) To ease the creation of snapshot builds, we also provide these files * llvm-release-<YYYYMMDD>.txt (contains the <RELEASE> as a text) * llvm-rc-<YYYYMMDD>.txt (contains the rc version passed to the invocation of export.sh) * llvm-git-revision-<YYYYMMDD>.txt (contains the current git revision sha1) Example values for the placeholders: * <RELEASE> -> 13.0.0 * <YYYYMMDD> -> 20210414 * <RC> -> rc4 (will be empty when using --git-ref) In order to generate snapshots of the upstream main branch you could do this for example: export.sh --git-ref upstream/main --template '${PROJECT}-${YYYYMMDD}.src.tar.xz'
The test-release.sh script (and maybe others?) have a "-git-ref" option. Maybe that's a better name than "-snapshot", for consistency?