# KEYD.SPEC # https://download.copr.fedorainfracloud.org/results/alternateved/keyd/fedora-rawhide-x86_64/07991256-keyd/keyd.spec %global _keyd_scm_host https://github.com %global _keyd_scm_repo rvaiya/keyd %global _keyd_scm_branch master %global _owner pgnd %global _build_timestamp %( date +%%Y%%m%%d_%%H%%M%%S --utc ) %global _dist .%{_build_timestamp}.%{_owner}.fc%{fedora} # https://stackoverflow.com/questions/47838041/rpmbuild-how-to-disable-check-buildroot # https://rpm-software-management.github.io/rpm/manual/dependency_generators.html # %%define __spec_install_pre /bin/true # %%define __arch_install_post %%{nil} # %%define __os_install_post %%{nil} %global _disable_source_fetch 0 %global debug_package %{nil} # %%undefine _auto_set_build_flags %global _hardened_build 1 # %%global __brp_mangle_shebangs %%{nil} # %%global __brp_strip %%{nil} # %%define __requires_exclude ^.*/xxx/bin/python.*$ # %%define __requires_exclude_from ^.*/xxx/bin/python.*$ # %%define _build_id_links none # %%bcond_with XXX : opt build with XXX; default, without # %%bcond_without XXX : opt build without XXX; default, with %global _keyd_name keyd %global _keyd_pkgnm keyd %global _keyd_unitnm keyd %global _keyd_comment Keyd key remapper daemon %global _keyd_descrip %{expand: %{_keyd_comment}.} # https://spdx.org/licenses/MIT.html %global _keyd_license MIT %global _keyd_grp keyd %global _keyd_conf_dir /usr/local/etc/keyd %global _keyd_install_dir /usr/local/keyd %global _keyd_run_dir /run/%{_keyd_pkgnm} %global _keyd_bin_dir_r bin %global _keyd_man_dir man %global _keyd_unit_dir /etc/systemd/system %global _keyd_log_dir /var/log/%{_keyd_pkgnm} %global _keyd_exec %{_keyd_install_dir}/%{_keyd_bin_dir_r}/keyd %global _keyd_scm_url %{_keyd_scm_host}/%{_keyd_scm_repo} %global _keyd_scm_repo_esc %( echo %{_keyd_scm_repo} | sed 's|_|-|g' | sed 's|/|%2F|g') %global _keyd_scm_repo_norm %( echo %{_keyd_scm_repo} | sed 's|_|-|g' | sed 's|/|-|g' ) %global _keyd_scm_branch_norm %( echo %{_keyd_scm_branch} | sed 's|_|-|g' | sed 's|/|-|g' ) %global _keyd_commit %( git ls-remote %{_keyd_scm_url} | grep /%{_keyd_scm_branch}$ | cut -f1 ) %global _keyd_shortcommit %( c=%{_keyd_commit}; echo ${c} | head -c 7 ) # GITHUB API: https://docs.github.com/en/rest/repos %global _keyd_scm_host_api https://api.github.com/repos %global _keyd_scm_tarball %{_keyd_scm_host_api}/%{_keyd_scm_repo}/tarball/%{_keyd_commit} %global _keyd_scm_extract_dir %{_keyd_scm_repo_norm}-%{_keyd_shortcommit} %global forgeurl0 %{_keyd_scm_url} %global commit0 %{_keyd_commit} %global shortcommit0 %{_keyd_shortcommit} %global forgesource0 %{_keyd_scm_tarball} %global extractdir0 %{_keyd_scm_extract_dir} %global forgesetupargs0 -T -D -b 0 -n %{extractdir0} %forgemeta -a %global dist %{_dist} Vendor: %{_owner} # NEVRA (n-e:v-r.a) : https://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ Name: %{_keyd_pkgnm} Epoch: 3 Version: %{scm0}_%( echo %{_keyd_scm_branch} | sed 's|-|_|g' ) Release: 0%{?dist} %global _same_evr %{epoch}:%{version}-%{release} Summary: %{_keyd_comment} License: %{_keyd_license} URL: %{forgeurl0} Source0: %{forgesource0} Source100: %{_keyd_unitnm}.service # https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets BuildRequires: gcc-c++ BuildRequires: kernel-headers BuildRequires: systemd BuildRequires: systemd-devel %{?systemd_requires} Requires: setxkbmap Requires(pre): group(keyd) # Packaging:Conflicts # https://fedoraproject.org/wiki/Packaging:Conflicts Obsoletes: %{_keyd_pkgnm} <= %{version} Provides: %{_keyd_pkgnm} = %{version} Conflicts: keyd %description %{_keyd_comment} %prep echo '##### STARTING PREP #####' %forgesetup -a cd %{_builddir}/%{extractdir0} sed -i \ -e "s|^\(VERSION=\).*|\1%{_keyd_scm_branch}|g" \ -e "s|^\(COMMIT=\).*|\1%{shortcommit0}|g" \ Makefile %build echo '##### STARTING BUILD #####' cd %{_builddir}/%{extractdir0} PREFIX=%{_keyd_install_dir} \ CONFIG_DIR=%{_keyd_conf_dir} \ make -f Makefile \ V=1 \ -j${RPM_BUILD_NCPUS} %install echo '##### STARTING INSTALL #####' cd %{_builddir}/%{extractdir0} # GENERATE .service FILES, scripts sed -i \ -e 's|__KEYD_EXEC__|%{_keyd_exec}|g' \ -e 's|__KEYD_GRP__|%{_keyd_grp}|g' \ -e 's|__KEYD_INSTALLDIR__|%{_keyd_install_dir}|g' \ -e 's|__KEYD_CONFDIR__|%{_keyd_conf_dir}|g' \ %{SOURCE100} # DIRS mkdir -p ${RPM_BUILD_ROOT}/%{_keyd_install_dir} DESTDIR="${RPM_BUILD_ROOT}/%{_keyd_install_dir}" \ FORCE_SYSTEMD=1 \ PREFIX="" \ make -f Makefile install \ V=1 \ -j${RPM_BUILD_NCPUS} # check @ local mock # rpm -ql /home/mock/resultdir/fedora-42-x86_64/keyd/2/*x86_64.rpm # SERVICEs install -D -p -m 644 \ %{SOURCE100} \ ${RPM_BUILD_ROOT}/%{_keyd_unit_dir}/%{_keyd_unitnm}.service # symlink bins mkdir -p ${RPM_BUILD_ROOT}/usr/local/bin pushd ${RPM_BUILD_ROOT}/usr/local/bin _d="${RPM_BUILD_ROOT}%{_keyd_install_dir}/bin" ln -sfr ${_d}/keyd-application-mapper . popd %pre %post %systemd_post %{_keyd_unitnm}.service %preun %systemd_preun %{_keyd_unitnm}.service %postun %systemd_postun_with_restart %{_keyd_unitnm}.service %files # http://ftp.rpm.org/max-rpm/s1-rpm-inside-files-list-directives.html %license LICENSE %dir %{_keyd_install_dir} %{_keyd_install_dir}/* %dir /usr/local/bin/ /usr/local/bin/keyd-application-mapper %attr(0644,root,root) %{_keyd_unit_dir}/%{_keyd_unitnm}.service %changelog * Sun Nov 2 2025 pgnd _ - bump 1762114158