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>