SPEC.yast2-ycp-ui-bindings/yast2-ycp-ui-bindings.spec
2025-02-16 13:57:21 +08:00

244 lines
7.1 KiB
RPMSpec

#
# built-in perl-macro
# macros.perl file
# macros for perl module building. handle with care.
# Useful perl macros (from Artur Frysiak <wiget@t17.ds.pwr.wroc.pl>)
#
%define perl_sitearch %(eval "`%{__perl} -V:installsitearch`"; echo $installsitearch)
%define perl_sitelib %(eval "`%{__perl} -V:installsitelib`"; echo $installsitelib)
%define perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch)
%define perl_vendorlib %(eval "`%{__perl} -V:installvendorlib`"; echo $installvendorlib)
%define perl_archlib %(eval "`%{__perl} -V:installarchlib`"; echo $installarchlib)
%define perl_privlib %(eval "`%{__perl} -V:installprivlib`"; echo $installprivlib)
# More useful perl macros (from Raul Dias <rsd@swi.com.br>)
#
%define perl_version %(perl -V:version | sed "s!.*='!!;s!'.*!!")
%define perl_man1ext %(perl -V:man1ext | sed "s!.*='!!;s!'.*!!")
%define perl_man3ext %(perl -V:man3ext | sed "s!.*='!!;s!'.*!!")
%define perl_man1dir %(perl -V:man1dir | sed "s!.*='!!;s!'.*!!")
%define perl_man3dir %(perl -V:man3dir | sed "s!.*='!!;s!'.*!!")
%define perl_installman1dir %(perl -V:installman1dir | sed "s!.*='!!;s!'.*!!")
%define perl_installman3dir %(perl -V:installman3dir | sed "s!.*='!!;s!'.*!!")
%define perl_installarchlib %(perl -V:installarchlib | sed "s!.*='!!;s!'.*!!")
%define perl_prefix %{buildroot}
# Macro to encapsulate perl requires (empty for fedora)
# we keep the complicated form even here to easy sync the other macros with
# perl-macros package
#
%define perl_requires() \
%if 0%{?suse_version} > 0 \
Requires: perl(:MODULE_COMPAT_%{perl_version}) \
%endif
%define libperl_requires() \
%if 0%{?suse_version} > 0 \
Requires: perl = %{perl_version} \
%endif
# suse specific macros
#
%define perl_make_install make DESTDIR=$RPM_BUILD_ROOT install_vendor
%define perl_process_packlist(n:) \
if test -n "$RPM_BUILD_ROOT" -a -d $RPM_BUILD_ROOT%perl_vendorarch/auto; then \
find $RPM_BUILD_ROOT%perl_vendorarch/auto -name .packlist -print0 | xargs -0 -r rm \
if [ %{_target_cpu} == noarch ]; then \
find $RPM_BUILD_ROOT%perl_vendorarch/auto -depth -type d -print0 | xargs -0 -r rmdir \
fi \
fi \
rm -f $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod \
%nil
# macro: perl_gen_filelist (from Christian <chris@computersalat.de>)
# do the rpmlint happy filelist generation
# with %dir in front of directories
#
%define perl_gen_filelist(n)\
FILES=%{name}.files\
# fgen_dir func\
# IN: dir\
fgen_dir(){\
%{__cat} >> $FILES << EOF\
%dir ${1}\
EOF\
}\
# fgen_file func\
# IN: file\
fgen_file(){\
%{__cat} >> $FILES << EOF\
${1}\
EOF\
}\
# check for files in %{perl_vendorlib}\
RES=`find ${RPM_BUILD_ROOT}%{perl_vendorlib} -maxdepth 1 -type f`\
if [ -n "$RES" ]; then\
for file in $RES; do\
fgen_file "%{perl_vendorlib}/$(basename ${file})"\
done\
fi\
\
# get all dirs into array\
base_dir="${RPM_BUILD_ROOT}%{perl_vendorlib}/"\
for dir in `find ${base_dir} -type d | sort`; do\
if [ "$dir" = "${base_dir}" ]; then\
continue\
else\
el=${dir#$base_dir}\
all_dir=(${all_dir[@]} $el)\
fi\
done\
\
# build filelist\
for i in ${all_dir[@]}; do\
# do not add "dir {perl_vendorlib/arch}/auto", included in perl package\
if [ "${i}" = "auto" ]; then\
continue\
fi\
if [ "%{perl_vendorlib}/${i}" = "%{perl_vendorarch}/auto" ]; then\
continue\
else\
if [ -d ${base_dir}/${i} ]; then\
if [ "%{perl_vendorlib}/${i}" != "%{perl_vendorarch}" ]; then\
fgen_dir "%{perl_vendorlib}/${i}"\
fi\
RES=`find "${base_dir}/${i}" -maxdepth 1 -type f`\
for file in $RES; do\
fgen_file "%{perl_vendorlib}/${i}/$(basename ${file})"\
done\
fi\
fi\
done\
# add man pages\
# if exist :)\
if [ -d "${RPM_BUILD_ROOT}%{_mandir}" ]; then\
for file in `cd "${RPM_BUILD_ROOT}%{_mandir}" && find . -type f -name "*3pm*"`; do \
if test -e "%{_mandir}/$file" -o -e "%{_mandir}/$file.gz"; then \
mv ${RPM_BUILD_ROOT}%{_mandir}/$file ${RPM_BUILD_ROOT}%{_mandir}/${file/3pm/3pmc} \
fi \
done \
fgen_file "%{_mandir}/man?/*"\
fi\
\
# add packlist file\
# generated fom perllocal.pod\
if [ -f "${RPM_BUILD_ROOT}/var/adm/perl-modules/%{name}" ]; then\
fgen_file "/var/adm/perl-modules/%{name}"\
fi\
\
# check for files in %{_bindir}\
if [ -d ${RPM_BUILD_ROOT}%{_bindir} ]; then\
RES=`find "${RPM_BUILD_ROOT}%{_bindir}" -maxdepth 1 -type f`\
if [ -n "$RES" ]; then\
for file in $RES; do\
fgen_file "%{_bindir}/$(basename ${file})"\
done\
fi\
fi
# spec file for package yast2-ycp-ui-bindings
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define min_yui_version 4.3.0
%define yui_so 16
Name: yast2-ycp-ui-bindings
Version: 5.0.1
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source0: %{name}-%{version}.tar.bz2
Group: System/YaST
License: GPL-2.0-only
BuildRequires: gcc-c++
BuildRequires: libtool
BuildRequires: yast2-devtools >= 3.1.10
# autodocs + docbook docs
BuildRequires: doxygen
BuildRequires: docbook-xsl-stylesheets
BuildRequires: libxslt
BuildRequires: sgml-skel
Requires: yast2-core
BuildRequires: yast2-core-devel
BuildRequires: libyui-devel >= %min_yui_version
Requires: libyui%yui_so >= %min_yui_version
# libyui ImplPtr
BuildRequires: boost-devel
Summary: YaST2 - YCP Bindings for the YaST2 User Interface Engine
%description
This package makes the generic YaST2 user interface engine available
for YCP applications (YCP is the scripting language in which most YaST2
modules are written).
%package devel
Requires: yast2-ycp-ui-bindings = %version
Group: Development/Libraries
Summary: YaST2 - YCP Bindings for the YaST2 User Interface Engine
Requires: boost-devel
Requires: glibc-devel
Requires: libstdc++-devel
Requires: libyui-devel >= %min_yui_version
Requires: yast2-core-devel
Requires: yast2-devtools
%description devel
This is the development package that makes the generic YaST2 user
interface engine available for YCP applications (YCP is the scripting
language in which most YaST2 modules are written).
%prep
%setup -n %{name}-%{version}
%build
%yast_build
%install
%yast_install
mkdir -p "$RPM_BUILD_ROOT"%{yast_logdir}
%perl_process_packlist
%files
%defattr(-,root,root)
%dir %{_libdir}/YaST2
%dir %{yast_plugindir}
%{yast_plugindir}/lib*.so.*
%files devel
%defattr(-,root,root)
%{yast_plugindir}/lib*.so
%{yast_plugindir}/lib*.la
%{yast_includedir}
%{_libdir}/pkgconfig/yast2-ycp-ui-bindings.pc
%doc %{_docdir}/packages/%{name}
%license COPYING
%changelog