Annotation of freem/scripts/fmd-pkg-dpkg, revision 1.3

1.1       snw         1: #!/usr/bin/env bash
                      2: 
                      3: #
1.3     ! snw         4: #   $Id: fmd-pkg-dpkg,v 1.2 2025/04/06 05:01:21 snw Exp $
1.1       snw         5: #    Creates a Debian package for a specific FreeM version
                      6: #
                      7: #  
                      8: #   Author: Serena Willis <snw@coherent-logic.com>
                      9: #    Copyright (C) 2025 Coherent Logic Development LLC
                     10: #
                     11: #
                     12: #   This file is part of FreeM.
                     13: #
                     14: #   FreeM is free software: you can redistribute it and/or modify
                     15: #   it under the terms of the GNU Affero Public License as published by
                     16: #   the Free Software Foundation, either version 3 of the License, or
                     17: #   (at your option) any later version.
                     18: #
                     19: #   FreeM is distributed in the hope that it will be useful,
                     20: #   but WITHOUT ANY WARRANTY; without even the implied warranty of
                     21: #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     22: #   GNU Affero Public License for more details.
                     23: #
                     24: #   You should have received a copy of the GNU Affero Public License
                     25: #   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.
                     26: #
1.2       snw        27: #   $Log: fmd-pkg-dpkg,v $
1.3     ! snw        28: #   Revision 1.2  2025/04/06 05:01:21  snw
        !            29: #   Initial working implementation of fmd package for dpkg
        !            30: #
1.2       snw        31: #   Revision 1.1  2025/04/06 03:38:05  snw
                     32: #   Prepare for adding packaging functionality to fmd
                     33: #
1.1       snw        34: #
                     35: # SPDX-FileCopyrightText:  (C) 2025 Coherent Logic Development LLC
                     36: # SPDX-License-Identifier: AGPL-3.0-or-later
                     37: #
                     38: 
                     39: PGM=$(basename $0)
                     40: SCRIPT_DIR=$(dirname "$0")
                     41: 
1.3     ! snw        42: source "${SCRIPT_DIR}/_fmd_common.bash"
1.2       snw        43: 
1.3     ! snw        44: if [[ $# != 1 ]]
1.1       snw        45: then
1.3     ! snw        46:     echo "${PGM}:  must run from fmd package"
1.1       snw        47:     exit 1
                     48: fi
                     49: 
                     50: FMD=$1
                     51: FREEM_VERSION="${_fmd_freem_version}"
                     52: FREEM_VERSION_MOD=$(echo "${FREEM_VERSION}" | sed 's/-/./g')
1.3     ! snw        53: export DEBEMAIL="${_fmd_email}"
        !            54: export DEBFULLNAME="${_fmd_fullname}"
        !            55: 
        !            56: echo -n "${PGM}:  getting debian package release for ${_fmd_freem_version}... "
        !            57: FDPKG_VERSION=$(_fmd_next_dpkg)
        !            58: echo "[${FDPKG_VERSION}]"
        !            59: echo "${PGM}:  package version is ${FREEM_VERSION}-${FDPKG_VERSION}"
1.1       snw        60: 
                     61: TMPDIR="/tmp/fmd-pkg-dpkg"
                     62: rm -rf "${TMPDIR}"
1.2       snw        63: mkdir -p "${TMPDIR}"
1.1       snw        64: 
1.2       snw        65: LOGFILE="${TMPDIR}/pkgbuild.log"
                     66: echo "${PGM}:  logging to ${LOGFILE}"
1.1       snw        67: INFILE="freem-${FREEM_VERSION}.tar.gz"
                     68: OUTFILE="${TMPDIR}/freem_${FREEM_VERSION_MOD}.orig.tar.gz"
                     69: TARDIR="${TMPDIR}/freem-${FREEM_VERSION_MOD}"
                     70: 
1.2       snw        71: if [[ -f "${INFILE}" ]]
                     72: then
                     73:     echo "${PGM}:  removing ${INFILE}"
                     74:     rm -f "${INFILE}"
                     75: fi
                     76: 
                     77: echo -n "${PGM}:  running 'make dist' to prepare source tarball..."
                     78: make dist &>> "${LOGFILE}"
                     79: if [[ $? != 0 ]]
                     80: then
                     81:     echo "[FAIL]"
                     82:     exit 1
                     83: else
                     84:     echo "[OK]"
                     85: fi
                     86: 
                     87: echo "${PGM}:  moving ${INFILE} to ${OUTFILE}..."
                     88: mv "${INFILE}" "${OUTFILE}"
1.1       snw        89: 
1.2       snw        90: echo "${PGM}:  extracting ${OUTFILE} to ${TARDIR}..."
1.1       snw        91: tar zxf "${OUTFILE}" -C "${TMPDIR}"
                     92: if [[ "${FREEM_VERSION}" != "${FREEM_VERSION_MOD}" ]]
                     93: then
                     94:     mv "${TMPDIR}/freem-${FREEM_VERSION}" "${TMPDIR}/freem-${FREEM_VERSION_MOD}"
                     95: fi
1.2       snw        96: 
1.3     ! snw        97: echo "${PGM}:  generating Debian changelog..."
        !            98: TMP_CHLOG=$(mktemp)
        !            99: ${FMD} changelog --minimal > "${TMP_CHLOG}"
        !           100: 
        !           101: pushd scripts &> /dev/null
        !           102: rm debian/changelog
        !           103: dch --create -v "${FREEM_VERSION_MOD}-${FDPKG_VERSION}" -u low --package freem --empty &>> "${LOGFILE}"
        !           104: 
        !           105: while read LINE
        !           106: do
        !           107:     dch --append "${LINE}" &>> "${LOGFILE}"
        !           108: done < "${TMP_CHLOG}"
        !           109: 
        !           110: rm -f "${TMP_CHLOG}"
        !           111: 
        !           112: dch --release "Release the package" &>> "${LOGFILE}"
        !           113: 
        !           114: popd &> /dev/null
        !           115: 
1.2       snw       116: echo -n "${PGM}:  copying Debian packaging control info to ${TARDIR}... "
                    117: cp -r scripts/debian "${TARDIR}/"
1.1       snw       118: if [[ $? == 0 ]]
                    119: then
                    120:     echo "[OK]"
                    121: else
                    122:     echo "[FAIL]"
                    123:     exit 1
                    124: fi
                    125: 
1.2       snw       126: sed -i "s/FREEM_VERSION/${FREEM_VERSION}-${FDPKG_VERSION}/g" "${TARDIR}/debian/control"
                    127: 
                    128: echo -n "${PGM}:  building the packages (this may take awhile)..."
                    129: cd "${TARDIR}"
                    130: export DEB_BUILD_MAINT_OPTIONS=hardening=-fortify,-format,-stackprotector,-stackprotectorstrong
                    131: debuild -us -uc &>> "${LOGFILE}"
1.1       snw       132: if [[ $? == 0 ]]
                    133: then
                    134:     echo "[OK]"
                    135: else
                    136:     echo "[FAIL]"
                    137:     exit 1
                    138: fi
                    139: 
1.3     ! snw       140: cd - &> /dev/null
1.2       snw       141: mv ${TMPDIR}/*.deb .
1.1       snw       142: 
1.2       snw       143: DPKG_BUILT=$(ls -1 *.deb)
1.1       snw       144: 
1.2       snw       145: BLDLST=""
                    146: for PKGFILE in ${DPKG_BUILT}
                    147: do
                    148:     if [[ "${BLDLST}" == "" ]]
                    149:     then
                    150:        BLDLST="${PKGFILE}"
                    151:     else
                    152:        BLDLST="${BLDLST} ${PKGFILE}"
                    153:     fi
                    154: done
1.1       snw       155: 
1.2       snw       156: echo "${PGM}:  built ${BLDLST}"
1.3     ! snw       157: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>