# FORGEJO # https://codeberg.org/forgejo/forgejo %global _owner pgnd %global _lib_legacy %( echo %{_lib} | sed 's|64$||g' ) %global _build_timestamp %( date +%%Y%%m%%d_%%H%%M%%S --utc ) %global _dist .%{_build_timestamp}.%{_owner}.fc%{fedora} %global _fj_name forgejo %global _fj_pkgnm forgejo %global _fj_unitnm forgejo %global _fj_comment Lightweight, git-compatible software SCM forge %global _fj_descrip %{expand: %{_fj_comment}.} # https://spdx.org/licenses/{MIT,GPL-3.0-or-later}.html %global _fj_license MIT AND GPL-3.0-or-later %global _fj_usr git %global _fj_grp git %global _fj_bin_dir_r bin %global _fj_conf_dir /usr/local/etc/forgejo %global _fj_data_dir /data/git/forgejo %global _fj_db_dir /data/db/forgejo %global _fj_home_dir /home/forgejo %global _fj_install_dir /usr/local/forgejo %global _fj_run_dir /run/forgejo %global _fj_unit_dir /etc/systemd/system %global _fj_scm_host https://codeberg.org %global _fj_scm_repo forgejo/forgejo %global _fj_scm_url %{_fj_scm_host}/%{_fj_scm_repo} # CODEBERG/FORGEJO API: # https://codeberg.org/api/swagger#/repository/repoGetArchive %global _fj_scm_host_api %{_fj_scm_host}/api/v1/repos # LATEST _release_ tag %global _fj_rel_tag %( curl -s '%{_fj_scm_host_api}/%{_fj_scm_repo}/tags' | jq -r 'sort_by(.commit.created) | reverse | .[0].name') %global _fj_rel_ver %( echo %{_fj_rel_tag} | sed 's|^v||g' ) # Vendor Pinning Vendor: %{_owner} %global dist %{_dist} # NEVRA (n-e:v-r.a) Epoch: 3 Name: %{_fj_pkgnm} Version: %{_fj_rel_ver} Release: 0%{?dist} %global _same_evr %{epoch}:%{version}-%{release} Summary: %{_fj_comment} License: %{_fj_license} URL: %{_fj_scm_url} # GOOD e.g. # https://codeberg.org/forgejo/forgejo/releases/download/v11.0.0/forgejo-11.0.0-linux-amd64.xz %global _fj_file_0 %( basename forgejo-%{_fj_rel_ver}-linux-amd64.xz ) %global _fj_file_1 %{_fj_file_0}.sha256 %global _fj_source_url %{_fj_scm_url}/releases/download/%{_fj_rel_tag} %global _fj_source_0 %{_fj_source_url}/%{_fj_file_0} %global _fj_source_1 %{_fj_source_0}.sha256 Source100: %{_fj_unitnm}.service Source101: %{_fj_unitnm}.target Source200: bash_logout Source201: bash_profile Source202: bashrc BuildArch: x86_64 BuildRequires: xz BuildRequires: coreutils BuildRequires: systemd-rpm-macros Provides: forgejo = %{_same_evr} Obsoletes: forgejo < %{_same_evr} Requires: bash Requires: coreutils Requires: git Requires: git-lfs Requires: sed Requires: systemd-sysusers Requires: valkey %description %{_fj_descrip} %prep echo '##### STARTING PREP #####' echo '== FORGEJO TAG: %{_fj_rel_tag}' export _tmp_dir=$(mktemp -d) echo ${_tmp_dir} > .tmpdir cd ${_tmp_dir} wget -O %{_fj_file_0} %{_fj_source_0} wget -O %{_fj_file_1} %{_fj_source_1} sha256sum --status --check %{_fj_file_1} || exit 1 %install echo '##### STARTING INSTALL #####' mkdir -p ${RPM_BUILD_ROOT}/%{_fj_install_dir}/bin mkdir -p ${RPM_BUILD_ROOT}/%{_fj_home_dir} _tmp_dir=$(cat .tmpdir) xz -dc ${_tmp_dir}/%{_fj_file_0} \ > ${RPM_BUILD_ROOT}/%{_fj_install_dir}/bin/%{_fj_name} chmod 0750 ${RPM_BUILD_ROOT}/%{_fj_install_dir}/bin/%{_fj_name} sed -i \ -e 's|__FJ_EXEC__|%{_fj_install_dir}/%{_fj_bin_dir_r}/forgejo|g' \ -e 's|__FJ_USR__|%{_fj_usr}|g' \ -e 's|__FJ_GRP__|%{_fj_grp}|g' \ -e 's|__FJ_CONFDIR__|%{_fj_conf_dir}|g' \ -e 's|__FJ_DATADIR__|%{_fj_data_dir}|g' \ -e 's|__FJ_DBDIR__|%{_fj_db_dir}|g' \ -e 's|__FJ_HOMEDIR__|%{_fj_home_dir}|g' \ -e 's|__FJ_LOGDIR__|%{_fj_log_dir}|g' \ -e 's|__FJ_RUNDIR_BASE__|%( basename %{_fj_run_dir})|g' \ %{SOURCE100} install -D --preserve-timestamps --mode=644 --verbose \ %{SOURCE100} \ ${RPM_BUILD_ROOT}/%{_fj_unit_dir}/%{_fj_unitnm}.service install -D --preserve-timestamps --mode=644 --verbose \ %{SOURCE101} \ ${RPM_BUILD_ROOT}/%{_fj_unit_dir}/%{_fj_unitnm}.target # HOME DIR install -D --preserve-timestamps --mode=640 --verbose \ %{SOURCE200} \ ${RPM_BUILD_ROOT}/%{_fj_home_dir}/.bash_logout install -D --preserve-timestamps --mode=640 --verbose \ %{SOURCE201} \ ${RPM_BUILD_ROOT}/%{_fj_home_dir}/.bash_profile install -D --preserve-timestamps --mode=640 --verbose \ %{SOURCE202} \ ${RPM_BUILD_ROOT}/%{_fj_home_dir}/.bashrc %pre # create service user/group # %%sysusers_create %%{SOURCE3} %post -e systemctl daemon-reload systemctl --no-reload enable my-servers.timer systemctl restart --quiet %{_fj_unitnm}.service %preun # %%systemd_preun %%{_fj_unitnm}.service systemctl --no-reload stop --no-warn %{_fj_unitnm}.service %postun systemctl daemon-reload %systemd_postun_with_restart %{_fj_unitnm}.service %files %dir %attr(0750,%{_fj_usr},%{_fj_grp}) %{_fj_install_dir} %attr(0750,%{_fj_usr},%{_fj_grp}) %{_fj_install_dir}/bin/%{_fj_name} %attr(0640,%{_fj_usr},%{_fj_grp}) %{_fj_home_dir}/.bash{_logout,_profile,rc} %{_fj_unit_dir}/%{_fj_unitnm}* %changelog * Sat Apr 26 2025 pgnd _ - bump 1745717546