python/create_package.sh
Thomas Basler 71c99b2423 Make shared lib and adjust install path
Otherwise the include files are generated in /include/lib/... instead of
/usr/include/lib/
2025-01-29 20:59:54 +01:00

68 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
set -x
# Variables
PYTHON_VERSION="3.13.1"
PYTHON_VERSION_BUILD="1"
DEB_PACKAGE_NAME="python3.13"
DEB_PACKAGE_VERSION="$PYTHON_VERSION-$PYTHON_VERSION_BUILD"
DEB_PACKAGE_MANTAINER=""
GITEA_URL=""
GITEA_USER=""
GITEA_TOKEN=""
GITEA_REPO_NAME=""
ARCH="amd64"
DISTRIBUTION="bookworm-backports"
COMPONENT="main"
INSTALL_PATH="/opt/python3.13"
set -a && source .env && set +a
# Create control file for Debian packaging
mkdir -p DEBIAN
cat <<EOF > DEBIAN/control
Section: python
Package: $DEB_PACKAGE_NAME
Version: $DEB_PACKAGE_VERSION
Architecture: $ARCH
Maintainer: $DEB_PACKAGE_MANTAINER
Description: Custom built Python $PYTHON_VERSION package
EOF
# Create a Dockerfile
cat <<EOF > Dockerfile
FROM debian:stable
RUN apt update && apt install -y build-essential wget libssl-dev zlib1g-dev \
libncurses5-dev libgdbm-dev libnss3-dev libreadline-dev libffi-dev \
libsqlite3-dev dpkg-dev
WORKDIR /usr/src
RUN wget https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tgz \
&& tar xzf Python-$PYTHON_VERSION.tgz && cd Python-$PYTHON_VERSION \
&& ./configure --prefix=$INSTALL_PATH/usr --enable-shared --enable-optimizations && make -j$(nproc) && make altinstall
RUN mkdir -p $INSTALL_PATH/DEBIAN
RUN mkdir -p /pkg
COPY DEBIAN/control $INSTALL_PATH/DEBIAN/control
RUN dpkg-deb --build $INSTALL_PATH /pkg/$DEB_PACKAGE_NAME-$DEB_PACKAGE_VERSION-$ARCH.deb
EOF
# Build the Docker image
docker build --progress=plain -t python-deb-builder .
# Extract the .deb file
docker run --rm --name python-deb-container -v $(pwd):/output python-deb-builder cp /pkg/$DEB_PACKAGE_NAME-$DEB_PACKAGE_VERSION-$ARCH.deb /output/
# CleanUp
rm -R DEBIAN
rm Dockerfile
# Upload to Gitea
curl --user $GITEA_USER:$GITEA_TOKEN \
-X DELETE \
"$GITEA_URL/api/packages/$GITEA_REPO_NAME/debian/pool/$DISTRIBUTION/$COMPONENT/$DEB_PACKAGE_NAME/$DEB_PACKAGE_VERSION/$ARCH"
curl --user $GITEA_USER:$GITEA_TOKEN \
--upload-file "$DEB_PACKAGE_NAME-$DEB_PACKAGE_VERSION-$ARCH.deb" \
"$GITEA_URL/api/packages/$GITEA_REPO_NAME/debian/pool/$DISTRIBUTION/$COMPONENT/upload"