--- freem/scripts/fmd-pkg-dpkg 2025/04/06 03:38:05 1.1 +++ freem/scripts/fmd-pkg-dpkg 2025/04/07 00:45:52 1.3 @@ -1,7 +1,7 @@ #!/usr/bin/env bash # -# $Id: fmd-pkg-dpkg,v 1.1 2025/04/06 03:38:05 snw Exp $ +# $Id: fmd-pkg-dpkg,v 1.3 2025/04/07 00:45:52 snw Exp $ # Creates a Debian package for a specific FreeM version # # @@ -25,6 +25,12 @@ # along with FreeM. If not, see . # # $Log: fmd-pkg-dpkg,v $ +# Revision 1.3 2025/04/07 00:45:52 snw +# Enhance fmd-pkg-dpkg to auto-generate the debian/changelog file from the FreeM ChangeLog +# +# Revision 1.2 2025/04/06 05:01:21 snw +# Initial working implementation of fmd package for dpkg +# # Revision 1.1 2025/04/06 03:38:05 snw # Prepare for adding packaging functionality to fmd # @@ -36,32 +42,82 @@ PGM=$(basename $0) SCRIPT_DIR=$(dirname "$0") -if [[ $# != 2 ]] +source "${SCRIPT_DIR}/_fmd_common.bash" + +if [[ $# != 1 ]] then - echo "fmd-pkg-dpkg: must run from fmd package" + echo "${PGM}: must run from fmd package" exit 1 fi FMD=$1 - FREEM_VERSION="${_fmd_freem_version}" FREEM_VERSION_MOD=$(echo "${FREEM_VERSION}" | sed 's/-/./g') -FDPKG_VERSION=$2 +export DEBEMAIL="${_fmd_email}" +export DEBFULLNAME="${_fmd_fullname}" + +echo -n "${PGM}: getting debian package release for ${_fmd_freem_version}... " +FDPKG_VERSION=$(_fmd_next_dpkg) +echo "[${FDPKG_VERSION}]" +echo "${PGM}: package version is ${FREEM_VERSION}-${FDPKG_VERSION}" TMPDIR="/tmp/fmd-pkg-dpkg" rm -rf "${TMPDIR}" +mkdir -p "${TMPDIR}" +LOGFILE="${TMPDIR}/pkgbuild.log" +echo "${PGM}: logging to ${LOGFILE}" INFILE="freem-${FREEM_VERSION}.tar.gz" OUTFILE="${TMPDIR}/freem_${FREEM_VERSION_MOD}.orig.tar.gz" TARDIR="${TMPDIR}/freem-${FREEM_VERSION_MOD}" +if [[ -f "${INFILE}" ]] +then + echo "${PGM}: removing ${INFILE}" + rm -f "${INFILE}" +fi + +echo -n "${PGM}: running 'make dist' to prepare source tarball..." +make dist &>> "${LOGFILE}" +if [[ $? != 0 ]] +then + echo "[FAIL]" + exit 1 +else + echo "[OK]" +fi + +echo "${PGM}: moving ${INFILE} to ${OUTFILE}..." +mv "${INFILE}" "${OUTFILE}" -echo -n "${PGM}: extracting ${OUTFILE} to ${TARDIR}..." +echo "${PGM}: extracting ${OUTFILE} to ${TARDIR}..." tar zxf "${OUTFILE}" -C "${TMPDIR}" if [[ "${FREEM_VERSION}" != "${FREEM_VERSION_MOD}" ]] then mv "${TMPDIR}/freem-${FREEM_VERSION}" "${TMPDIR}/freem-${FREEM_VERSION_MOD}" fi + +echo "${PGM}: generating Debian changelog..." +TMP_CHLOG=$(mktemp) +${FMD} changelog --minimal > "${TMP_CHLOG}" + +pushd scripts &> /dev/null +rm debian/changelog +dch --create -v "${FREEM_VERSION_MOD}-${FDPKG_VERSION}" -u low --package freem --empty &>> "${LOGFILE}" + +while read LINE +do + dch --append "${LINE}" &>> "${LOGFILE}" +done < "${TMP_CHLOG}" + +rm -f "${TMP_CHLOG}" + +dch --release "Release the package" &>> "${LOGFILE}" + +popd &> /dev/null + +echo -n "${PGM}: copying Debian packaging control info to ${TARDIR}... " +cp -r scripts/debian "${TARDIR}/" if [[ $? == 0 ]] then echo "[OK]" @@ -70,8 +126,12 @@ else exit 1 fi -echo -n "${PGM}: copying Debian packaging control info to ${TARDIR}..." -cp -r debian "${TARDIR}/" +sed -i "s/FREEM_VERSION/${FREEM_VERSION}-${FDPKG_VERSION}/g" "${TARDIR}/debian/control" + +echo -n "${PGM}: building the packages (this may take awhile)..." +cd "${TARDIR}" +export DEB_BUILD_MAINT_OPTIONS=hardening=-fortify,-format,-stackprotector,-stackprotectorstrong +debuild -us -uc &>> "${LOGFILE}" if [[ $? == 0 ]] then echo "[OK]" @@ -80,15 +140,21 @@ else exit 1 fi -sed -i "s/FREEM_VERSION/${FREEM_VERSION_MOD}-${FDPKG_VERSION}/g" "${TARDIR}/debian/changelog" -sed -i "s/FREEM_VERSION/${FREEM_VERSION}-${FDPKG_VERSION}/g" "${TARDIR}/debian/control" +cd - &> /dev/null +mv ${TMPDIR}/*.deb . -echo "${PGM}: building the package..." -cd "${TARDIR}" -export DEB_BUILD_MAINT_OPTIONS=hardening=-fortify,-format,-stackprotector,-stackprotectorstrong -debuild -us -uc +DPKG_BUILT=$(ls -1 *.deb) + +BLDLST="" +for PKGFILE in ${DPKG_BUILT} +do + if [[ "${BLDLST}" == "" ]] + then + BLDLST="${PKGFILE}" + else + BLDLST="${BLDLST} ${PKGFILE}" + fi +done -echo "${PGM}: the package is in ${TMPDIR}" +echo "${PGM}: built ${BLDLST}" -rm -f ${TMPDIR}/*dbgsym* -scp ${TMPDIR}/*.deb "${FDSSH}://var/www/freem.coherent-logic.com/downloads/binaries/debian/"