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>