diff options
| author | Danilo M. <danix@danix.xyz> | 2026-06-26 12:04:24 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-06-26 12:04:24 +0200 |
| commit | e583114ac4e84312e06427041f45b7d982097dd6 (patch) | |
| tree | 89285cf376159bcb2344a55428fb44d45a7df689 | |
| parent | 5ef91efd7d0250c23081f1f98b9329f5c452e8ac (diff) | |
| download | mkwheels-e583114ac4e84312e06427041f45b7d982097dd6.tar.gz mkwheels-e583114ac4e84312e06427041f45b7d982097dd6.zip | |
mkwheels: add script skeleton with arg parse and tool checks
| -rwxr-xr-x | mkwheels | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/mkwheels b/mkwheels new file mode 100755 index 0000000..1692842 --- /dev/null +++ b/mkwheels @@ -0,0 +1,57 @@ +#!/bin/bash +# mkwheels — build a reproducible, pinned Python wheels tarball for a package. +# +# Copyright (C) 2026 Danilo M. <danix@danix.xyz> +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, see <https://www.gnu.org/licenses/>. +set -eu + +usage() { + cat <<EOF +usage: ${0##*/} <pkg> <ver> [epoch] + +Build a reproducible pinned Python wheels tarball <pkg>-wheels-<ver>.tar.gz +plus a hashed requirements.txt, for vendoring into a SlackBuild. + + <pkg> <ver> PyPI package name and exact version to vendor. + [epoch] SOURCE_DATE_EPOCH for the tarball mtime. Omitted -> auto-derived + from the PyPI release upload time (a warning is printed). + + OUTPUT env var: output directory (default: current dir). + +Requires: python3+pip, jq, curl, tar, gzip, md5sum. +EOF +} + +case "${1:-}" in + -h|--help) usage; exit 0 ;; +esac +[ $# -ge 2 ] && [ $# -le 3 ] || { usage >&2; exit 2; } + +pkg=$1 +ver=$2 +epoch=${3:-} +OUTPUT=${OUTPUT:-$PWD} + +# Check required tools up front. +for tool in python3 jq curl tar gzip md5sum; do + command -v "$tool" >/dev/null 2>&1 || { + echo "error: required tool not found: $tool" >&2 + exit 1 + } +done +python3 -m pip --version >/dev/null 2>&1 || { + echo "error: python3 pip module not available" >&2 + exit 1 +} + +echo "mkwheels: $pkg $ver -> $OUTPUT/$pkg-wheels-$ver.tar.gz" |
