#!/bin/bash # # Script to manually build a Debian .deb package for @PACKAGE_NAME@ on Slackware # (using only dpkg-deb; no dpkg-buildpackage or debhelper needed) # # This avoids the /var/lib/dpkg/status issue entirely by: # - Building the source directly # - Installing into a temporary package root directory # - Creating minimal DEBIAN/control manually # - Packaging with dpkg-deb --root-owner-group # set -euo pipefail VERSION="@PACKAGE_VERSION@" TARBALL="@PACKAGE@-${VERSION}.tar.gz" PKG_NAME="@PACKAGE@" PKG_ROOT="${PKG_NAME}-deb-root" if [[ ! -f "${TARBALL}" ]]; then echo "Error: ${TARBALL} not found in the current directory." exit 1 fi # Clean previous builds rm -rf "${PKG_ROOT}" @PACKAGE@-${VERSION} # Extract source echo "Extracting source..." tar -xzf "${TARBALL}" # Build the software echo "Configuring and building @PACKAGE@..." cd @PACKAGE@-${VERSION} ./configure --prefix=/usr --sysconfdir=/etc make -j4 # Install into package root echo "Installing into temporary package root..." mkdir -p "../${PKG_ROOT}/usr" make install DESTDIR="../${PKG_ROOT}" # Add example config and docs mkdir -p "../${PKG_ROOT}/usr/share/doc/@PACKAGE@" cp @PACKAGE@.conf.example AUTHORS HISTORY README "../${PKG_ROOT}/usr/share/doc/@PACKAGE@/" cp LICENSES/GPL-3.0 "../${PKG_ROOT}/usr/share/doc/@PACKAGE@/COPYING" cd .. # Create DEBIAN directory and control file echo "Copying DEBIAN/control..." mkdir -p "${PKG_ROOT}/DEBIAN" cp pkg/control "${PKG_ROOT}/DEBIAN/control" # Build the .deb package echo "Building .deb package with dpkg-deb..." dpkg-deb --root-owner-group --build "${PKG_ROOT}" "${PKG_NAME}_${VERSION}-1_amd64.deb" # Cleanup rm -rf "${PKG_ROOT}" @PACKAGE@-${VERSION} echo "" echo "Build complete!" echo "Package created: ${PKG_NAME}_${VERSION}-1_amd64.deb" echo "" echo "Note: This is a basic binary .deb package (no advanced features like scripts or full dependency checking)." echo "To install on a Debian/Ubuntu system: sudo dpkg -i ${PKG_NAME}_${VERSION}-1_amd64.deb" echo "All man pages (including localized ones) and the example config are included."