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

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

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