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"

Reply via email to