This is an automated email from the ASF dual-hosted git repository. piotr pushed a commit to branch release_script in repository https://gitbox.apache.org/repos/asf/iggy.git
commit 15945531882a84ee42782c63154d05d4fb49c087 Author: spetz <[email protected]> AuthorDate: Mon Dec 1 16:51:58 2025 +0100 chore(repo): improve release script --- licenses/passterm-BSD 3-Clause.txt | 26 ----- licenses/ring-BoringSSL.txt | 204 ------------------------------------- scripts/prepare-release.sh | 173 ++++++------------------------- 3 files changed, 31 insertions(+), 372 deletions(-) diff --git a/licenses/passterm-BSD 3-Clause.txt b/licenses/passterm-BSD 3-Clause.txt deleted file mode 100644 index 2e6410e78..000000000 --- a/licenses/passterm-BSD 3-Clause.txt +++ /dev/null @@ -1,26 +0,0 @@ -Copyright (c) 2021-2024 Kyle Schreiber. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/licenses/ring-BoringSSL.txt b/licenses/ring-BoringSSL.txt deleted file mode 100644 index bf787438e..000000000 --- a/licenses/ring-BoringSSL.txt +++ /dev/null @@ -1,204 +0,0 @@ -Note that it is easy for this file to get out of sync with the licenses in the -source code files. It's recommended to compare the licenses in the source code -with what's mentioned here. - -*ring* is derived from BoringSSL, so the licensing situation in *ring* is -similar to BoringSSL. - -*ring* uses an ISC-style license like BoringSSL for code in new files, -including in particular all the Rust code: - - Copyright 2015-2016 Brian Smith. - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY - SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -BoringSSL is a fork of OpenSSL. As such, large parts of it fall under OpenSSL -licensing. Files that are completely new have a Google copyright and an ISC -license. This license is reproduced at the bottom of this file. - -Contributors to BoringSSL are required to follow the CLA rules for Chromium: -https://cla.developers.google.com/clas - -Files in third_party/ have their own licenses, as described therein. The MIT -license, for third_party/fiat, which, unlike other third_party directories, is -compiled into non-test libraries, is included below. - -The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the -OpenSSL License and the original SSLeay license apply to the toolkit. See below -for the actual license texts. Actually both licenses are BSD-style Open Source -licenses. In case of any license issues related to OpenSSL please contact [email protected]. - -The following are Google-internal bug numbers where explicit permission from -some authors is recorded for use of their work: - 27287199 - 27287880 - 27287883 - - OpenSSL License - --------------- - -/* ==================================================================== - * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * [email protected]. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * ([email protected]). This product includes software written by Tim - * Hudson ([email protected]). - * - */ - - Original SSLeay License - ----------------------- - -/* Copyright (C) 1995-1998 Eric Young ([email protected]) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young ([email protected]). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson ([email protected]). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young ([email protected])" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson ([email protected])" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - - -ISC license used for completely new code in BoringSSL: - -/* Copyright (c) 2015, Google Inc. - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ - - -The code in third_party/fiat carries the MIT license: - -Copyright (c) 2015-2016 the fiat-crypto authors (see -https://github.com/mit-plv/fiat-crypto/blob/master/AUTHORS). - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/scripts/prepare-release.sh b/scripts/prepare-release.sh index 83e6d46fb..bf90e9722 100755 --- a/scripts/prepare-release.sh +++ b/scripts/prepare-release.sh @@ -1,5 +1,3 @@ -#!/bin/bash - #!/usr/bin/env bash # Licensed to the Apache Software Foundation (ASF) under one @@ -19,37 +17,34 @@ # specific language governing permissions and limitations # under the License. -# This script is used to prepare the release artifacts for the Apache Iggy project. +# This script creates reproducible source release archives for Apache Iggy. +# It uses git archive which produces identical output across all platforms. set -euo pipefail -# Determine tar command based on OS -TAR_CMD="tar" -OS_NAME=$(uname) - -if [[ "$OS_NAME" == "Darwin" ]]; then - if command -v gtar >/dev/null 2>&1; then - TAR_CMD="gtar" - else - echo "❌ GNU tar (gtar) is required on macOS. Install it with: brew install gnu-tar" - exit 1 - fi -fi - if [ "$(basename "$PWD")" == "scripts" ]; then cd .. fi -SRC_DIR="./" -RELEASE_DIR="iggy_release" -TEMP_DIR="iggy_release_tmp" +# Ensure we're in a git repository +if ! git rev-parse --git-dir > /dev/null 2>&1; then + echo "Error: Must be run from within the git repository" + exit 1 +fi -rm -rf "$TEMP_DIR" +RELEASE_DIR="iggy_release" rm -rf "$RELEASE_DIR" -mkdir -p "$TEMP_DIR" mkdir -p "$RELEASE_DIR" -RELEASE_FILES=( +# Get version from Cargo.toml +VERSION=$(grep '^version' "core/server/Cargo.toml" | head -n 1 | cut -d '"' -f2) + +echo "Preparing release for version: $VERSION" + +ARCHIVE_NAME="iggy-${VERSION}-incubating-src.tar.gz" + +# Files/directories to include in the release +RELEASE_PATHS=( "Cargo.lock" "Cargo.toml" "DEPENDENCIES.md" @@ -59,138 +54,32 @@ RELEASE_FILES=( "NOTICE" "docker-compose.yml" "justfile" -) - -RELEASE_DIRS=( "bdd" "core" "examples" "foreign" "helm" - "licenses" "scripts" "web" ) -IGNORED_FILES=( - ".DS_Store" - ".gitignore" -) - -IGNORED_DIRS=( - "assets" - "target" - "node_modules" - "pkg" - "build" - "out" - "dist" - "bin" - "obj" - "__pycache__" - ".elixir_ls" - ".tox" - ".eggs" - ".venv" - ".svelte-kit" - ".config" - ".github" - ".idea" - ".vscode" - ".zed" -) - -for file in "${RELEASE_FILES[@]}"; do - cp "$SRC_DIR/$file" "$TEMP_DIR/" -done - -shopt -s dotglob nullglob - -for dir in "${RELEASE_DIRS[@]}"; do - src="$SRC_DIR/$dir" - dest="$TEMP_DIR/$dir" - - [ -d "$src" ] || continue - mkdir -p "$dest" - - for item in "$src"/*; do - name=$(basename "$item") - - if [[ "$dir" == "web" ]]; then - if [ -d "$item" ]; then - for ignored in "${IGNORED_DIRS[@]}"; do - if [[ "$name" == "$ignored" ]]; then - continue 2 - fi - done - fi - - if [ -f "$item" ]; then - for ignored_file in "${IGNORED_FILES[@]}"; do - if [[ "$name" == "$ignored_file" ]]; then - continue 2 - fi - done - fi - fi - - if [[ "$dir" == "foreign" && -d "$item" ]]; then - sdk=$(basename "$item") - mkdir -p "$dest/$sdk" - - for sdk_item in "$item"/*; do - sdk_name=$(basename "$sdk_item") - - if [ -d "$sdk_item" ]; then - for ignored in "${IGNORED_DIRS[@]}"; do - if [[ "$sdk_name" == "$ignored" ]]; then - continue 2 - fi - done - fi - - if [ -f "$sdk_item" ]; then - for ignored_file in "${IGNORED_FILES[@]}"; do - if [[ "$sdk_name" == "$ignored_file" ]]; then - continue 2 - fi - done - fi - - cp -r "$sdk_item" "$dest/$sdk/" - done - - continue - fi - - cp -r "$item" "$dest/" - done -done - -shopt -u dotglob nullglob - - -VERSION=$(grep '^version' "$TEMP_DIR/core/server/Cargo.toml" | head -n 1 | cut -d '"' -f2) - -echo "Preparing release for version: $VERSION" - -ARCHIVE_NAME="iggy-${VERSION}-incubating-src.tar.gz" - -GZIP=-n "$TAR_CMD" --sort=name \ - --mtime='UTC 2020-01-01' \ - --owner=0 --group=0 --numeric-owner \ - -czf "$ARCHIVE_NAME" -C "$TEMP_DIR" . - +# Use git archive for reproducible output +# --prefix adds a top-level directory to the archive +# --worktree-attributes respects .gitattributes export-ignore +git archive \ + --format=tar.gz \ + --prefix="iggy-${VERSION}-incubating-src/" \ + -o "$RELEASE_DIR/$ARCHIVE_NAME" \ + HEAD \ + "${RELEASE_PATHS[@]}" + +# Generate checksum +cd "$RELEASE_DIR" CHECKSUM_FILE="${ARCHIVE_NAME}.sha512" sha512sum "$ARCHIVE_NAME" > "$CHECKSUM_FILE" -rm -rf "$TEMP_DIR" - echo "Release directory: $RELEASE_DIR" echo "SHA-512 checksum:" cat "$CHECKSUM_FILE" -echo "✔ Archive created: $ARCHIVE_NAME" -echo "✔ Checksum saved to: $CHECKSUM_FILE" - -mv "$ARCHIVE_NAME" "$RELEASE_DIR/" -mv "$CHECKSUM_FILE" "$RELEASE_DIR/" +echo "Archive created: $ARCHIVE_NAME" +echo "Checksum saved to: $CHECKSUM_FILE"
