# https://docs.fedoraproject.org/en-US/quick-docs/publish-rpm-on-copr # https://rpm-software-management.github.io/rpm/manual/macros.html # https://rpm-packaging-guide.github.io/ %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 # %%global __spec_install_pre /bin/true # %%global __arch_install_post %%{nil} # %%global __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} # %%global __requires_exclude ^.*/xxx/bin/python.*$ # %%global __requires_exclude_from ^.*/xxx/bin/python.*$ # %%global _build_id_links none # %%bcond_with XXX : opt build with XXX; default, without # %%bcond_without XXX : opt build without XXX; default, with # DDCUTIL # https://github.com/rockowitz/ddcutil %global _ddcui_name ddcui %global _ddcui_pkgnm ddcui %global _ddcui_comment Graphical user interface for ddcuitl %global _ddcui_descrip %{expand: %{_ddcui_comment}.} # https://spdx.org/licenses/GPL-2.0-only.html %global _ddcui_license GPL-2.0-only %global _ddcui_install_dir /usr/local/ddcutil-pgnd %global _ddcui_ldconf_dir /etc/ld.so.conf.d %global _ddcui_build_dir ddcui-build %global _ddcui_c /usr/bin/gcc %global _ddcui_cxx /usr/bin/g++ %global _ddcui_linker /usr/bin/ld.bfd %global _ddcui_make_type ninja # https://docs.fedoraproject.org/en-US/packaging-guidelines/SourceURL/ # https://github.com/rockowitz/ddcui %global _ddcui0_scm_host https://github.com %global _ddcui0_scm_repo rockowitz/ddcui # 0.5.4-dev %global _ddcui0_scm_branch 0.5.5-dev %global _ddcui0_scm_url %{_ddcui0_scm_host}/%{_ddcui0_scm_repo} %global _ddcui0_scm_commit %( git ls-remote %{_ddcui0_scm_url} | grep /%{_ddcui0_scm_branch}$ | cut -f1 ) %global _ddcui0_scm_shortcommit %( c=%{_ddcui0_scm_commit}; echo ${c} | head -c 7 ) %global _ddcui0_scm_repo_esc %( echo %{_ddcui0_scm_repo} | sed 's|_|-|g' | sed 's|/|%2F|g') %global _ddcui0_scm_repo_norm %( echo %{_ddcui0_scm_repo} | sed 's|_|-|g' | sed 's|/|-|g' ) %global _ddcui0_scm_branch_norm %( echo %{_ddcui0_scm_branch} | sed 's|_|-|g' | sed 's|/|-|g' ) # GH API: # https://docs.github.com/en/rest/repos/contents %global _ddcui0_scm_host_api https://api.github.com/repos %global _ddcui0_scm_tarball %{_ddcui0_scm_host_api}/%{_ddcui0_scm_repo}/tarball/%{commit0} %global _ddcui0_scm_extract_dir %{_ddcui0_scm_repo_norm}-%{shortcommit0} %global forgeurl0 %{_ddcui0_scm_url} %global commit0 %{_ddcui0_scm_commit} %global shortcommit0 %{_ddcui0_scm_shortcommit} %global forgesource0 %{_ddcui0_scm_tarball} %global extractdir0 %{_ddcui0_scm_extract_dir} %global forgesetupargs0 -T -D -b 0 -n %{extractdir0} %forgemeta -i -a %global dist %{_dist} # Vendor Pinning Vendor: %{_owner} # NEVRA (n-e:v-r.a) Name: %{_ddcui_pkgnm} Epoch: 3 # https://docs.fedoraproject.org/en-US/packaging-guidelines/Versioning/ Version: %{scm0}_%( echo %{_ddcui0_scm_branch} | sed 's|-|_|g' ) Release: 0%{?dist} # https://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ %global _same_evr %{epoch}:%{version}-%{release} Summary: %{_ddcui_comment} License: %{_ddcui_license} URL: %{forgeurl0} Source0: %{forgesource0} Source100: ddc-ld.conf BuildRequires: cmake BuildRequires: cmake-filesystem BuildRequires: cmake-rpm-macros BuildRequires: ddcutil BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: make BuildRequires: ninja-build BuildRequires: pkgconf BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(Qt5Help) BuildRequires: pkgconfig(Qt5Widgets) BuildRequires: qt5-qtbase-devel BuildRequires: qt5-qttools-devel BuildRequires: qt5-qtbase-private-devel BuildRequires: qt5-qtmultimedia-devel BuildRequires: qt5-qtspeech-devel Requires: ddcutil > 2.1.4 Requires: pkgconfig(Qt5) %description %{_ddcui_descrip} %prep echo '##### STARTING PREP #####' %forgesetup -a %build echo '##### STARTING BUILD #####' cd %{_builddir} export PATH="/usr/local/ddcutil-pgnd/bin:${PATH}" export PKG_CONFIG_PATH="/usr/local/ddcutil-pgnd/lib64/pkgconfig:${PKG_CONFIG_PATH}" # increase UI font sizes pushd %{extractdir0} _F="./src/base/ddcui_parms.h" sed -i \ -e 's|\(FEATURE_VALUE_.*_FONT_SIZE\).*|\1 12|g' \ -e 's|\(MAIN_MENU_.*_FONT_SIZE\).*|\1 14|g' \ ${_F} sed -i \ -e 's|setPointSize(10)|setPointSize(14)|g' \ -e 's|setPointSize(9)|setPointSize(12)|g' \ -e 's|setPointSize(8)|setPointSize(11)|g' \ $(grep -rln setPointSize .) popd echo '##### DDCUI SOURCE FLAGS PREP #####' _this_CFLAGS=" -I/usr/local/ddcutil-pgnd ${CFLAGS}" _this_CPPFLAGS="${_this_CFLAGS}" _this_CXXFLAGS="${_this_CFLAGS}" _this_LDFLAGS=" -L/usr/local/ddcutil-pgnd/lib64 -lddcutil ${LDFLAGS}" BDO="" BDO+=" -Wno-dev" #BDO+=" -DUSE_QT6=1" DBO+=" -DCMAKE_POLICY_DEFAULT_CMP0056=NEW" DBO+=" -DDDCUTIL_PROJECT_DIR=/usr/local/ddcutil-pgnd" DBO+=" -DCMAKE_PREFIX_PATH=/usr/lib64/cmake/Qt5" DBO+=" -DPKG_CONFIG_ARGN='--with-path=/usr/local/ddcutil-pgnd/lib64/pkgconfig'" _this_BUILD_DEBUG_OPTS=${BDO} rm -rf "%{_ddcui_build_dir}" mkdir -p "%{_ddcui_build_dir}" export _this_CFLAGS _this_CXXFLAGS _this_CPPFLAGS _this_LDFLAGS unset CFLAGS CXXFLAGS CPPFLAGS LDFLAGS # CMAKE_BUILD_TYPE-STRINGS:INTERNAL=None;Debug;Release;MinSizeRel;RelWithDebInfo #_this_CMAKE_BUILD_TYPE="None" _this_CMAKE_BUILD_TYPE="Release" #_this_CMAKE_BUILD_TYPE="Debug" %if "%{_ddcui_make_type}" == "ninja" _this_MAKEFILE_TYPE="Ninja" %else _this_MAKEFILE_TYPE="Unix Makefiles" %endif echo '##### DDCUI CMAKE DEFAULT CONFIG #####' cmake \ --debug-output --log-level=DEBUG \ -LAH \ -S "%{extractdir0}" \ -B "%{_ddcui_build_dir}" \ -G "${_this_MAKEFILE_TYPE}" \ ${_this_BUILD_DEBUG_OPTS} \ -DCMAKE_VERBOSE_MAKEFILE=1 \ >> cmake_LAH_out.txt 2>&1 echo '##### DDCUI CMAKE CONFIG #####' cmake \ --fresh \ --debug-output --log-level=DEBUG \ -DCMAKE_BUILD_TYPE=${_this_CMAKE_BUILD_TYPE} \ -S "%{extractdir0}" \ -B "%{_ddcui_build_dir}" \ -G "${_this_MAKEFILE_TYPE}" \ ${_this_BUILD_DEBUG_OPTS} \ -DCMAKE_VERBOSE_MAKEFILE=1 \ -DCMAKE_C_COMPILER="%{_ddcui_c}" \ -DCMAKE_C_FLAGS="${_this_CFLAGS}" \ -DCMAKE_CXX_COMPILER="%{_ddcui_cxx}" \ -DCMAKE_CXX_FLAGS="${_this_CXXFLAGS}" \ -DCMAKE_LINKER="%{_ddcui_linker}" \ -DBUILD_SHARED_LIBS=1 \ -DCMAKE_EXE_LINKER_FLAGS="${_this_LDFLAGS}" \ -DCMAKE_SHARED_LINKER_FLAGS="${_this_LDFLAGS}" \ -DCMAKE_SKIP_INSTALL_RPATH=0 \ -DCMAKE_SKIP_RPATH=0 \ -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=1 \ -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_unicode_ci \ -DWITH_EXTRA_CHARSETS=all \ -DLIB_SUFFIX=64 \ -DCMAKE_INSTALL_PREFIX="%{_ddcui_install_dir}" \ -DBUILD_DOCS=1 echo '##### DCCUI CMAKE BUILD #####' %if "%{_ddcui_make_type}" == "ninja" _this_verbosity="--quiet" #_this_verbosity="--verbose" ninja -C "%{_ddcui_build_dir}" -j${RPM_BUILD_NCPUS} ${_this_verbosity} %else #_this_verbosity="" _this_verbosity="--verbose" cmake --build "%{_ddcui_build_dir}" -j${RPM_BUILD_NCPUS} ${_this_verbosity} %endif %install echo '##### STARTING INSTALL #####' cd %{_builddir} %if "%{_ddcui_make_type}" == "ninja" _this_verbosity="--quiet" #_this_verbosity="--verbose" DESTDIR="${RPM_BUILD_ROOT}" ninja install -C "%{_ddcui_build_dir}" ${_this_verbosity} %else #_this_verbosity="" _this_verbosity="--verbose" DESTDIR="${RPM_BUILD_ROOT}" cmake --install "%{_ddcui_build_dir}" ${_this_verbosity} %endif # cat /usr/local/ddcutil-pgnd/lib/modules-load.d/ddcutil.conf # i2c-dev mkdir -p ${RPM_BUILD_ROOT}/%{_ddcui_ldconf_dir} sed -i \ -e 's|__DDC_LIBDIR__|%{_ddcui_ldconf_dir}|g' \ %{SOURCE100} install -D -p -m 644 -v \ %{SOURCE100} \ ${RPM_BUILD_ROOT}/%{_ddcui_ldconf_dir}/ddc.conf %post ldconfig %preun %postun ldconfig %files # http://ftp.rpm.org/max-rpm/s1-rpm-inside-files-list-directives.html %{_ddcui_install_dir} %{_ddcui_ldconf_dir}/ddc.conf %changelog * Mon Mar 17 2025 pgnd _ - bump 1742243858