File libsmbios.spec of Package libsmbios
#
# spec file for package libsmbios
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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 http://bugs.opensuse.org/
#
# these are all substituted by autoconf
%define major 2
%define minor 4
%define micro 1
%define extra %{nil}
%define pot_file libsmbios
%define lang_dom libsmbios-2.4-x86_64
%define release_version 2.4.1
%define release_name libsmbios
%define other_name libsmbios2
%if 0%{?suse_version}
%define release_name libsmbios_c2
%define other_name libsmbios
%endif
%{!?build_python: %global build_python 1}
%{?_with_python: %global build_python 1}
%{?_without_python: %undefine build_python}
# run_unit_tests not defined by default as cppunit
# not available in OS on several major OS
%{?_without_unit_tests: %undefine run_unit_tests}
%{?_with_unit_tests: %global run_unit_tests 1}
%{!?as_needed: %global as_needed 1}
%{?_without_as_needed: %undefine as_needed}
%{?_with_as_needed: %global as_needed 1}
%global pkgconfig_BR pkgconfig
%global valgrind_BR valgrind
# Some variable definitions so that we can be compatible between SUSE Build service and Fedora build system
# SUSE: fedora_version suse_version rhel_version centos_version sles_version
# Fedora: fedora dist fc8 fc9
%global python_devel_BR %{nil}
%if 0%{?build_python}
%global python_devel_BR python3-devel
%endif
# if unit tests are disabled, get rid of a few BuildRequires
%{!?run_unit_tests: %global valgrind_BR %{nil}}
Name: libsmbios
Version: %{release_version}
Release: 0%{?dist}
Summary: SMBIOS table library and utilities
License: GPL-2.0-or-later OR OSL-2.1
Group: Hardware/Other
Source: libsmbios-%{version}.tar.xz
Source1: libsmbios.rpmlintrc
Url: http://github.com/dell/libsmbios
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: gettext-devel
BuildRequires: libtool
BuildRequires: python-rpm-macros
BuildRequires: strace libxml2-devel gcc-c++ gettext doxygen help2man %{valgrind_BR} %{pkgconfig_BR} %{python_devel_BR}
# uncomment for official fedora
Obsoletes: libsmbios-libs < 2.0.0
Provides: libsmbios-libs = 0:%{version}-%{release}
Obsoletes: %{other_name} < 0:%{version}-%{release}
Provides: %{other_name} = 0:%{version}-%{release}
# libsmbios only ever makes sense on intel compatible arches
# no DMI tables on ppc, s390, etc.
ExclusiveArch: x86_64 ia64 %{ix86}
%description
libsmbios provides a library to interface with the SMBIOS tables. It
also provides extensions for proprietary methods of interfacing with
Dell specific SMBIOS tables.
%package lang
Summary: Translations for package libsmbios
Group: System/Localization
%description lang
Provides translations for the "libsmbios" package.
%package -n %{release_name}
Summary: SMBIOS table interface library
# Leap 42.X
Group: System/Libraries
Provides: libsmbios = %{version}
Obsoletes: libsmbios < %{version}
# Short-time Factory package containing libsmbios_c2
Provides: libsmbios2 = %{version}
Obsoletes: libsmbios2 < %{version}
%description -n %{release_name}
libsmbios provides a library to interface with the SMBIOS tables. It
also provides extensions for proprietary methods of interfacing with
Dell specific SMBIOS tables.
This package provides the C API library.
%package -n python-smbios
Summary: Python interface to Libsmbios C library
Group: System/Libraries
Requires: %{release_name} = %{version}-%{release}
Requires: python3
%description -n python-smbios
This package provides a Python interface to libsmbios
%package -n smbios-utils
Summary: Meta-package that pulls in all smbios binaries and python scripts
Group: System/Management
Requires: smbios-utils-bin
%if 0%{?build_python}
Requires: smbios-utils-python
%endif
Obsoletes: libsmbios-bin < 0:2.0.0
Provides: libsmbios-bin = %{version}-%{release}
Obsoletes: libsmbios-unsupported-bin < 0:2.0.0
Provides: libsmbios-unsupported-bin = %{version}-%{release}
%description -n smbios-utils
This is a meta-package that pulls in the binary libsmbios executables as well
as the python executables.
%package -n smbios-utils-bin
Summary: Binary utilities that use libsmbios
Group: System/Management
Requires: %{release_name} = %{version}-%{release}
%description -n smbios-utils-bin
Get BIOS information, such as System product name, product id, service tag and
asset tag.
%package -n smbios-utils-python
Summary: Python executables that use libsmbios
Group: System/Management
Requires: python-smbios = %{version}-%{release}
%description -n smbios-utils-python
Get BIOS information, such as System product name, product id, service tag and
asset tag. Set service and asset tags on Dell machines. Manipulate wireless
cards/bluetooth on Dell laptops. Set BIOS password on select Dell systems.
Update BIOS on select Dell systems. Set LCD brightness on select Dell laptops.
# name the devel package libsmbios-devel regardless of package name, per suse/fedora convention
%package -n libsmbios-devel
Summary: Development headers and archives
Group: Development/Libraries/C and C++
Requires: %{release_name} = %{version}-%{release}
Provides: libsmbios2-devel = %{version}-%{release}
Obsoletes: libsmbios2-devel < %{version}-%{release}
%description -n libsmbios-devel
Libsmbios is a library and utilities that can be used by client programs to get
information from standard BIOS tables, such as the SMBIOS table.
This package contains the headers and .a files necessary to compile new client
programs against libsmbios.
%prep
: '########################################'
: '########################################'
: '#'
: '# build_python: %{?build_python}'
: '# run_unit_tests: %{?run_unit_tests}'
: '# rhel: %{?rhel}'
: '# suse_version: %{?suse_version}'
: '#'
: '########################################'
: '########################################'
%setup -q -n libsmbios-%{version}
find . -type d -exec chmod -f a+rx "{}" "+"
find doc src -type f -exec chmod -f a-x "{}" "+"
find src/pyunit/ -name "*.sh" -o -name "*.py" -type f -exec chmod a+x "{}" "+"
%build
# this line lets us build an RPM directly from a git tarball
# and retains any customized version information we might have
[ -e ./configure ] || ./autogen.sh --no-configure
mkdir _build
cd _build
%define _configure ../configure
%configure \
%{?!as_needed:--disable-as-needed} %{?!build_python:--disable-python}
mkdir -p out/libsmbios_c
make CFLAGS="-Werror %{optflags}" %{?_smp_mflags} 2>&1 | tee build-%{_arch}.log
echo '%%doc _build/build-%{_arch}.log' > buildlogs.txt
%check
runtest() {
mkdir _$1$2
%if 0%{?run_unit_tests}
pushd _$1$2
../configure
make -e $1 CFLAGS="$CFLAGS -DDEBUG_OUTPUT_ALL" 2>&1 | tee $1$2.log
touch -r ../configure.ac $1$2-%{_arch}.log
make -e $1 2>&1 | tee $1$2.log
popd
echo "%%doc _$1$2/$1$2-%{_arch}.log" >> _build/buildlogs.txt
%endif
}
VALGRIND="strace -f" runtest check strace > /dev/null || echo FAILED strace check
runtest valgrind > /dev/null || echo FAILED valgrind check
runtest check > /dev/null || echo FAILED check
%install
cd _build
TOPDIR=..
%make_install INSTALL="install -p"
mkdir -p %{buildroot}/%{_includedir}
mkdir -p %{buildroot}/%{_bindir}
cp -a $TOPDIR/src/include/* %{buildroot}/%{_includedir}/
cp -a out/public-include/* %{buildroot}/%{_includedir}/
rm -f %{buildroot}/%{_libdir}/libsmbios*.*a
find %{buildroot}/%{_includedir} out/libsmbios_c -exec touch -r $TOPDIR/configure.ac "{}" "+"
mv out/libsmbios_c out/libsmbios_c-%{_arch}
rename %{pot_file}.mo %{lang_dom}.mo $(find %{buildroot}/%{_datadir} -name %{pot_file}.mo)
%find_lang %{lang_dom}
find %{buildroot} -name '*-1.pyc' -delete
touch files-smbios-utils-python
touch files-python-smbios
%if 0%{?build_python}
# backwards compatible:
ln -s %{_sbindir}/dellWirelessCtl %{buildroot}/%{_bindir}/dellWirelessCtl
ln -s smbios-sys-info %{buildroot}/%{_sbindir}/getSystemId
ln -s smbios-wireless-ctl %{buildroot}/%{_sbindir}/dellWirelessCtl
ln -s smbios-lcd-brightness %{buildroot}/%{_sbindir}/dellLcdBrightness
cat > files-python-smbios <<-EOF
%%doc COPYING-GPL COPYING-OSL
%%{python3_sitearch}/*
EOF
cat > files-smbios-utils-python <<-EOF
%%doc COPYING-GPL COPYING-OSL
%%doc src/bin/getopts_LICENSE.txt
%%dir %%{_sysconfdir}/libsmbios
%%config(noreplace) %%{_sysconfdir}/libsmbios/*
# python utilities
%%{_sbindir}/smbios-sys-info
%%{_sbindir}/smbios-token-ctl
%%{_sbindir}/smbios-passwd
%%{_sbindir}/smbios-wakeup-ctl
%%{_sbindir}/smbios-wireless-ctl
%%{_sbindir}/smbios-lcd-brightness
%%{_sbindir}/smbios-keyboard-ctl
%%{_sbindir}/smbios-thermal-ctl
%%{_sbindir}/smbios-battery-ctl
# man pages
%%{_mandir}/man1/smbios*
# used by HAL in old location, so keep it around until HAL is updated.
%%{_sbindir}/dellLcdBrightness
%%{_sbindir}/getSystemId
%%{_sbindir}/dellWirelessCtl
%%{_bindir}/dellWirelessCtl
# data files
%%{_datadir}/smbios-utils
EOF
%endif
%post -n %{release_name} -p /sbin/ldconfig
%postun -n %{release_name} -p /sbin/ldconfig
%files -n %{release_name}
%defattr(-,root,root,-)
%{_libdir}/libsmbios_c.so.*
%files lang -f _build/%{lang_dom}.lang
%defattr(-,root,root,-)
%files -n libsmbios-devel -f _build/buildlogs.txt
%defattr(-,root,root,-)
%doc COPYING-GPL COPYING-OSL src/bin/getopts_LICENSE.txt
%{_includedir}/smbios
%{_includedir}/smbios_c
%{_libdir}/libsmbios_c.so
%{_libdir}/pkgconfig/*.pc
%doc _build/out/libsmbios_c-%{_arch}
%files -n smbios-utils
# opensuse 11.1 enforces non-empty file list :(
%defattr(-,root,root,-)
%doc COPYING-GPL COPYING-OSL
# no other files.
%files -n smbios-utils-bin
%defattr(-,root,root,-)
%doc COPYING-GPL COPYING-OSL
%doc src/bin/getopts_LICENSE.txt
# new C utilities
%{_sbindir}/smbios-state-byte-ctl
%{_sbindir}/smbios-get-ut-data
%{_sbindir}/smbios-upflag-ctl
%{_sbindir}/smbios-sys-info-lite
%files -n python-smbios -f _build/files-python-smbios
%defattr(-,root,root,-)
%files -n smbios-utils-python -f _build/files-smbios-utils-python
%defattr(-,root,root,-)
%changelog