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

1.1       snw         1: #!/usr/bin/env bash
                      2: 
                      3: #
1.3     ! snw         4: #   $Id: fmd-pkg-rpm,v 1.2 2025/04/07 05:39:23 snw Exp $
1.1       snw         5: #    Creates an rpm package
                      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-rpm,v $
1.3     ! snw        28: #   Revision 1.2  2025/04/07 05:39:23  snw
        !            29: #   Further work on fmd rpm porting
        !            30: #
1.2       snw        31: #   Revision 1.1  2025/04/07 05:19:36  snw
                     32: #   Initial work on moving rpm packaging 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: 
                     42: source "${SCRIPT_DIR}/_fmd_common.bash"
                     43: 
                     44: if [[ $# != 1 ]]
                     45: then
                     46:     echo "${PGM}:  must run from fmd package"
                     47:     exit 1
                     48: fi
                     49: 
                     50: TMPDIR="/tmp/fmd-pkg-rpm"
                     51: rm -rf "${TMPDIR}"
                     52: mkdir -p "${TMPDIR}"
                     53: 
                     54: LOGFILE="${TMPDIR}/pkgbuild.log"
                     55: echo "${PGM}:  logging to ${LOGFILE}"
                     56: 
1.2       snw        57: RPM_RELEASE=$(echo "${_fmd_freem_version}" | sed "s/-/~/g")
                     58: 
1.1       snw        59: if [[ ! -f Makefile ]]
                     60: then
                     61:     echo -n "${PGM}:  running autogen.sh..."
                     62:     ./autogen.sh &>> "${LOGFILE}"
                     63:     if [[ $? != 0 ]]
                     64:     then
                     65:        echo "[FAIL]"
                     66:        exit 1
                     67:     else
                     68:        echo "[OK]"
                     69:     fi
                     70:     echo -n "${PGM}:  running configure..."
                     71:     ./configure &>> "${LOGFILE}"
                     72:     if [[ $? != 0 ]]
                     73:     then
                     74:        echo "[FAIL]"
                     75:        exit 1
                     76:     else
                     77:        echo "[OK]"
                     78:     fi
                     79: 
                     80: fi
1.3     ! snw        81: 
        !            82: ORIG_TARBALL="freem-${_fmd_freem_version}.tar.gz"
        !            83: ORIG_DIR="freem-${_fmd_freem_version}/"
        !            84: NEW_DIR="freem-${RPM_RELEASE}/"
        !            85: NEW_TARBALL="freem-${RPM_RELEASE}.tar.gz"
1.1       snw        86: 
                     87: echo -n "${PGM}:  running 'make dist' to prepare source tarball..."
                     88: make dist &>> "${LOGFILE}"
                     89: if [[ $? != 0 ]]
                     90: then
                     91:     echo "[FAIL]"
                     92:     exit 1
                     93: else
                     94:     echo "[OK]"
                     95: fi
                     96: 
1.3     ! snw        97: echo -n "${PGM}:  cleaning up..."
        !            98: rm -rf "${OLD_DIR}" "${NEW_DIR}" "${NEW_TARBALL}" &>> /dev/null
        !            99: if [[ $? != 0 ]]
        !           100: then
        !           101:     echo "[FAIL]"
        !           102:     exit 1
        !           103: else
        !           104:     echo "[OK]"
        !           105: fi
1.2       snw       106: 
                    107: echo -n "${PGM}:  decompressing source tarball..."
1.3     ! snw       108: tar xzf "${ORIG_TARBALL}"
        !           109: if [[ $? != 0 ]]
        !           110: then
        !           111:     echo "[FAIL]"
        !           112:     exit 1
        !           113: else
        !           114:     echo "[OK]"
        !           115: fi
        !           116: 
        !           117: echo -n "${PGM}:  renaming ${ORIG_DIR} -> ${NEW_DIR}..."
        !           118: mv "${ORIG_DIR}" "${NEW_DIR}" &>> /dev/null
        !           119: if [[ $? != 0 ]]
        !           120: then
        !           121:     echo "[FAIL]"
        !           122:     exit 1
        !           123: else
        !           124:     echo "[OK]"
        !           125: fi
        !           126: 
        !           127: echo -n "${PGM}:  generating ${NEW_TARBALL}..."
        !           128: tar cf "${NEW_TARBALL}" "${NEW_DIR}" &>> /dev/null
1.2       snw       129: if [[ $? != 0 ]]
                    130: then
                    131:     echo "[FAIL]"
                    132:     exit 1
                    133: else
                    134:     echo "[OK]"
                    135: fi
                    136: 
                    137: 
1.1       snw       138: echo -n "${PGM}:  uploading source tarball..."
1.3     ! snw       139: scp "${NEW_TARBALL}" jpw@freem.coherent-logic.com://var/www/freem.coherent-logic.com/downloads/ &>> "${LOGFILE}"
1.1       snw       140: if [[ $? != 0 ]]
                    141: then
                    142:     echo "[FAIL]"
                    143:     exit 1
                    144: else
                    145:     echo "[OK]"
                    146: fi
1.2       snw       147: 
                    148: echo "${PGM}:  performing substitutions on specfile..."
                    149: cat scripts/rpm/freem.spec.in | sed "s/FREEM_VERSION/${RPM_RELEASE}/g" > scripts/rpm/freem.spec
                    150: 
1.3     ! snw       151: RPMROOT="${HOME}/rpmbuild"
        !           152: echo -n "${PGM}:  removing ${RPMROOT}..."
        !           153: rm -rf "${RPMROOT}" &>> "${LOGFILE}"
        !           154: if [[ $? != 0 ]]
        !           155: then
        !           156:     echo "[FAIL]"
        !           157:     exit 1
        !           158: else
        !           159:     echo "[OK]"
        !           160: fi
        !           161: 
        !           162: echo -n "${PGM}:  preparing directory structure..."
        !           163: rpmdev-setuptree &>> "${LOGFILE}"
        !           164: if [[ $? != 0 ]]
        !           165: then
        !           166:     echo "[FAIL]"
        !           167:     exit 1
        !           168: else
        !           169:     echo "[OK]"
        !           170: fi
        !           171: 
1.2       snw       172: echo -n "${PGM}:  running spectool..."
                    173: spectool -g -R scripts/rpm/freem.spec &>> "${LOGFILE}"
                    174: if [[ $? != 0 ]]
                    175: then
                    176:     echo "[FAIL]"
                    177:     exit 1
                    178: else
                    179:     echo "[OK]"
                    180: fi
                    181: 
                    182: echo -n "${PGM}:  building package..."
                    183: rpmbuild -ba scripts/rpm/freem.spec &>> "${LOGFILE}"
                    184: if [[ $? != 0 ]]
                    185: then
                    186:     echo "[FAIL]"
                    187:     exit 1
                    188: else
                    189:     echo "[OK]"
                    190: fi
1.3     ! snw       191: 
        !           192: echo -n "${PGM}:  cleaning up..."
        !           193: rm -rf "${OLD_DIR}" "${NEW_DIR}" "${NEW_TARBALL}" &>> /dev/null
        !           194: if [[ $? != 0 ]]
        !           195: then
        !           196:     echo "[FAIL]"
        !           197:     exit 1
        !           198: else
        !           199:     echo "[OK]"
        !           200: fi
        !           201: 
        !           202: echo -n "${PGM}:  copying rpm packages..."
        !           203: cp ${RPMROOT}/RPMS/${_fmd_arch}/*.rpm . &>> "${LOGFILE}"
        !           204: if [[ $? != 0 ]]
        !           205: then
        !           206:     echo "[FAIL]"
        !           207:     exit 1
        !           208: else
        !           209:     echo "[OK]"
        !           210: fi
        !           211: 
        !           212: echo -n "${PGM}:  copying source rpm packages..."
        !           213: cp ${RPMROOT}/SRPMS/*.rpm . &>> "${LOGFILE}"
        !           214: if [[ $? != 0 ]]
        !           215: then
        !           216:     echo "[FAIL]"
        !           217:     exit 1
        !           218: else
        !           219:     echo "[OK]"
        !           220: fi
        !           221: 
        !           222: RPM_BUILT=$(ls -1 *.rpm)
        !           223: 
        !           224: BLDLST=""
        !           225: for PKGFILE in ${RPM_BUILT}
        !           226: do
        !           227:     if [[ "${BLDLST}" == "" ]]
        !           228:     then
        !           229:        BLDLST="${PKGFILE}"
        !           230:     else
        !           231:        BLDLST="${BLDLST} ${PKGFILE}"
        !           232:     fi
        !           233: done
        !           234: 
        !           235: echo "${PGM}:  built ${BLDLST}"
        !           236: 

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