#!/usr/bin/env bash
#
# $Id: fmd-pkg-rpm,v 1.4 2025/04/07 21:50:11 snw Exp $
# Creates an rpm package
#
#
# Author: Serena Willis <snw@coherent-logic.com>
# Copyright (C) 2025 Coherent Logic Development LLC
#
#
# This file is part of FreeM.
#
# FreeM is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# FreeM is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero Public License for more details.
#
# You should have received a copy of the GNU Affero Public License
# along with FreeM. If not, see <https://www.gnu.org/licenses/>.
#
# $Log: fmd-pkg-rpm,v $
# Revision 1.4 2025/04/07 21:50:11 snw
# Fix bug in fmd-pkg-rpm
#
# Revision 1.3 2025/04/07 13:02:51 snw
# Initial working version of fmd-pkg-rpm
#
# Revision 1.2 2025/04/07 05:39:23 snw
# Further work on fmd rpm porting
#
# Revision 1.1 2025/04/07 05:19:36 snw
# Initial work on moving rpm packaging to fmd
#
#
# SPDX-FileCopyrightText: (C) 2025 Coherent Logic Development LLC
# SPDX-License-Identifier: AGPL-3.0-or-later
#
PGM=$(basename $0)
SCRIPT_DIR=$(dirname "$0")
source "${SCRIPT_DIR}/_fmd_common.bash"
if [[ $# != 1 ]]
then
echo "${PGM}: must run from fmd package"
exit 1
fi
TMPDIR="/tmp/fmd-pkg-rpm"
rm -rf "${TMPDIR}"
mkdir -p "${TMPDIR}"
LOGFILE="${TMPDIR}/pkgbuild.log"
echo "${PGM}: logging to ${LOGFILE}"
RPM_RELEASE=$(echo "${_fmd_freem_version}" | sed "s/-/~/g")
if [[ ! -f Makefile ]]
then
echo -n "${PGM}: running autogen.sh..."
./autogen.sh &>> "${LOGFILE}"
if [[ $? != 0 ]]
then
echo "[FAIL]"
exit 1
else
echo "[OK]"
fi
echo -n "${PGM}: running configure..."
./configure &>> "${LOGFILE}"
if [[ $? != 0 ]]
then
echo "[FAIL]"
exit 1
else
echo "[OK]"
fi
fi
ORIG_TARBALL="freem-${_fmd_freem_version}.tar.gz"
ORIG_DIR="freem-${_fmd_freem_version}/"
NEW_DIR="freem-${RPM_RELEASE}/"
NEW_TARBALL="freem-${RPM_RELEASE}.tar.gz"
echo -n "${PGM}: running 'make dist' to prepare source tarball..."
make dist &>> "${LOGFILE}"
if [[ $? != 0 ]]
then
echo "[FAIL]"
exit 1
else
echo "[OK]"
fi
if [[ "${ORIG_TARBALL}" != "${NEW_TARBALL}" ]]
then
RENAME=1
else
RENAME=0
fi
if [[ $RENAME == 1 ]]
then
echo -n "${PGM}: cleaning up..."
rm -rf "${OLD_DIR}" "${NEW_DIR}" "${NEW_TARBALL}" &>> /dev/null
if [[ $? != 0 ]]
then
echo "[FAIL]"
exit 1
else
echo "[OK]"
fi
fi
echo -n "${PGM}: decompressing source tarball..."
tar xzf "${ORIG_TARBALL}"
if [[ $? != 0 ]]
then
echo "[FAIL]"
exit 1
else
echo "[OK]"
fi
if [[ $RENAME == 1 ]]
then
echo -n "${PGM}: renaming ${ORIG_DIR} -> ${NEW_DIR}..."
mv "${ORIG_DIR}" "${NEW_DIR}" &>> /dev/null
if [[ $? != 0 ]]
then
echo "[FAIL]"
exit 1
else
echo "[OK]"
fi
echo -n "${PGM}: generating ${NEW_TARBALL}..."
tar cf "${NEW_TARBALL}" "${NEW_DIR}" &>> /dev/null
if [[ $? != 0 ]]
then
echo "[FAIL]"
exit 1
else
echo "[OK]"
fi
fi
echo -n "${PGM}: uploading source tarball..."
scp "${NEW_TARBALL}" jpw@freem.coherent-logic.com://var/www/freem.coherent-logic.com/downloads/ &>> "${LOGFILE}"
if [[ $? != 0 ]]
then
echo "[FAIL]"
exit 1
else
echo "[OK]"
fi
echo "${PGM}: performing substitutions on specfile..."
cat scripts/rpm/freem.spec.in | sed "s/FREEM_VERSION/${RPM_RELEASE}/g" > scripts/rpm/freem.spec
RPMROOT="${HOME}/rpmbuild"
echo -n "${PGM}: removing ${RPMROOT}..."
rm -rf "${RPMROOT}" &>> "${LOGFILE}"
if [[ $? != 0 ]]
then
echo "[FAIL]"
exit 1
else
echo "[OK]"
fi
echo -n "${PGM}: preparing directory structure..."
rpmdev-setuptree &>> "${LOGFILE}"
if [[ $? != 0 ]]
then
echo "[FAIL]"
exit 1
else
echo "[OK]"
fi
echo -n "${PGM}: running spectool..."
spectool -g -R scripts/rpm/freem.spec &>> "${LOGFILE}"
if [[ $? != 0 ]]
then
echo "[FAIL]"
exit 1
else
echo "[OK]"
fi
echo -n "${PGM}: building package..."
rpmbuild -ba scripts/rpm/freem.spec &>> "${LOGFILE}"
if [[ $? != 0 ]]
then
echo "[FAIL]"
exit 1
else
echo "[OK]"
fi
echo -n "${PGM}: cleaning up..."
rm -rf "${OLD_DIR}" "${NEW_DIR}" "${NEW_TARBALL}" &>> /dev/null
if [[ $? != 0 ]]
then
echo "[FAIL]"
exit 1
else
echo "[OK]"
fi
echo -n "${PGM}: copying rpm packages..."
cp ${RPMROOT}/RPMS/${_fmd_arch}/*.rpm . &>> "${LOGFILE}"
if [[ $? != 0 ]]
then
echo "[FAIL]"
exit 1
else
echo "[OK]"
fi
echo -n "${PGM}: copying source rpm packages..."
cp ${RPMROOT}/SRPMS/*.rpm . &>> "${LOGFILE}"
if [[ $? != 0 ]]
then
echo "[FAIL]"
exit 1
else
echo "[OK]"
fi
RPM_BUILT=$(ls -1 *.rpm)
BLDLST=""
for PKGFILE in ${RPM_BUILT}
do
if [[ "${BLDLST}" == "" ]]
then
BLDLST="${PKGFILE}"
else
BLDLST="${BLDLST} ${PKGFILE}"
fi
done
echo "${PGM}: built ${BLDLST}"
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>