SPEC.libyui/libyui-bindings.spec
2025-02-17 20:25:51 +08:00

292 lines
8.6 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 libyui-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/
#
# nodebuginfo
Name: libyui-bindings
# DO NOT manually bump the version here; instead, use rake version:bump
Version: 4.6.3
Release: 0
Summary: Bindings for libyui
License: LGPL-2.1-only OR LGPL-3.0-only
Group: Development/Sources
URL: https://github.com/libyui/libyui-bindings
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: cmake
BuildRequires: gcc-c++
# New cmake build environment
BuildRequires: libyui-devel >= %{version}
# Adaptation for openEuler package architecture
BuildRequires: perl-devel
BuildRequires: python3-devel
BuildRequires: ruby-devel
BuildRequires: swig
Source: libyui-%{version}.tar.bz2
Prefix: /usr
%description
This package provides Ruby language bindings to access functions of
libyui - An User Interface engine that provides the
abstraction from graphical user interfaces (Qt, Gtk) and text based
user interfaces (ncurses).
Authors:
---------
- kkaempf@suse.de
- dmacvicar@suse.de
%prep
%setup -q -n libyui-%{version}
%build
export CFLAGS="-L%{_libdir}"
export CXXFLAGS="-L%{_libdir}"
pushd %{name}
mkdir build
cd build
cmake -DYPREFIX=%{prefix} \
-DCMAKE_INSTALL_PREFIX=%{prefix} \
-DLIB=%{_lib} \
-DPYTHON_SITEDIR=%{python3_sitelib} \
-DCMAKE_VERBOSE_MAKEFILE=TRUE \
-DCMAKE_C_FLAGS_RELEASE:STRING="%{optflags}" \
-DCMAKE_CXX_FLAGS_RELEASE:STRING="%{optflags}" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_SKIP_RPATH=1 \
-DBUILD_RUBY_GEM=no \
..
make %{?jobs:-j %jobs}
popd
%install
pushd %{name}
cd build
make install DESTDIR=$RPM_BUILD_ROOT
popd
%clean
%{__rm} -rf %{buildroot}
%package -n ruby-yui
Summary: Ruby bindings for libyui
Group: Development/Languages/Ruby
%description -n ruby-yui
This package provides Ruby language bindings to access functions of
libyui - An User Interface engine that provides the
abstraction from graphical user interfaces (Qt, Gtk) and text based
user interfaces (ncurses).
Authors:
---------
- kkaempf@suse.de
- dmacvicar@suse.de
%package -n python3-yui
Summary: Python 3 bindings for libyui
Group: Development/Languages/Python
%description -n python3-yui
This package provides Python 3 language bindings to access functions of
libyui - An User Interface engine that provides the
abstraction from graphical user interfaces (Qt, Gtk) and text based
user interfaces (ncurses).
Authors:
---------
- kkaempf@suse.de
- dmacvicar@suse.de
%package -n perl-yui
%{perl_requires}
Summary: Perl bindings for libyui
Group: Development/Languages/Perl
%description -n perl-yui
This package provides Perl language bindings to access functions of
yast2-libyui - An User Interface engine that provides the
abstraction from graphical user interfaces (Qt, Gtk) and text based
user interfaces (ncurses).
Authors:
---------
- kkaempf@suse.de
- dmacvicar@suse.de
%files -n ruby-yui
%defattr(-,root,root,-)
%doc %{name}/swig/ruby/examples/*.rb
%{_datadir}/ruby/vendor_ruby/yui/*.rb
%{_datadir}/ruby/vendor_ruby/yui.rb
%{_libdir}/ruby/vendor_ruby/_yui.so
%files -n python3-yui
%defattr(-,root,root,-)
%doc %{name}/swig/python/examples/*.py
%{python3_sitelib}/_yui.so
%{python3_sitelib}/yui.py
%exclude %dir %{python3_sitelib}/__pycache__
%exclude %{python3_sitelib}/__pycache__/*.pyc
%files -n perl-yui
%defattr(-,root,root,-)
%doc %{name}/swig/perl/examples/*.pl
%{perl_vendorarch}/yui.so
%{perl_vendorlib}/yui.pm
%changelog