# # spec file for package libsmbios # # Copyright (c) 2018 SUSE LINUX Products 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 3 %define micro 3 %define extra %{nil} %define pot_file libsmbios %define lang_dom libsmbios-2.3-x86_64 %define release_version 2.3.3 %define release_name libsmbios %define other_name libsmbios2 %if 0%{?suse_version} %define release_name libsmbios2 %define other_name libsmbios %endif %{!?build_python: %global build_python 1} %{?_with_python: %global build_python 1} %{?_without_python: %undefine build_python} %{?!python_module:%define python_module() python-%{**} python3-%{**}} # %%define debug_package %%{nil} # 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: %define run_unit_tests 1} %{!?as_needed: %global as_needed 1} %{?_without_as_needed: %undefine as_needed} %{?_with_as_needed: %global as_needed 1} %define cppunit_BR cppunit-devel %define pkgconfig_BR pkgconfig %define ctypes_BR python-ctypes %define 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 # suse/sles %if 0%{?suse_version} %if 0%{?suse_version} < 1000 %define valgrind_BR %{nil} # sles 9 doesnt have as_needed %undefine as_needed %endif %if 0%{?suse_version} >= 1020 # suse never added python-ctypes provides to python 2.5 :( %define ctypes_BR %{nil} %endif %endif # rhel (should work on OBS and EPEL) %if 0%{?rhel} %if 0%{?rhel} < 4 # dont yet have rhel3 valgrind %define valgrind_BR %{nil} # no python-ctypes for python <= 2.2 %undefine build_python # rhel3 doesnt have -as-needed %undefine as_needed %endif %endif %define python_devel_BR %{nil} %if 0%{?build_python} %define python_devel_BR %{pythons} # per fedora and suse python packaging guidelines # suse: will define py_sitedir for us # fedora: use the !? code below to define when it isnt already # pure python stuff goes here %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} # arch-dep python stuff goes here %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} %endif # if unit tests are disabled, get rid of a few BuildRequires %{!?run_unit_tests: %global cppunit_BR %{nil}} %{!?run_unit_tests: %global valgrind_BR %{nil}} Name: %{release_name} Version: %{release_version} Release: 3.1%{?dist} Summary: Libsmbios C shared libraries License: GPL-2.0+ or OSL-2.1 Group: System/Libraries Source: libsmbios-%{version}.tar.bz2 Source1: libsmbios.rpmlintrc Url: http://github.com/dell/libsmbios BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: python-rpm-macros BuildRequires: strace libxml2-devel gcc-c++ gettext doxygen %{valgrind_BR} %{cppunit_BR} %{pkgconfig_BR} %{pythons} # 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 This package 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 provides the C-based libsmbios library, with a C interface. %package -n python-smbios Summary: Python interface to Libsmbios C library Group: System/Libraries Requires: %{release_name} = %{version}-%{release} Requires: python %{ctypes_BR} %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 755 {} \; find doc src -type f -exec chmod -f 644 {} \; find ./src/cppunit/ -name "*.sh" -type f -exec chmod 755 '{}' \; %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 echo '../configure "$@"' > configure chmod +x ./configure %configure \ %{?!as_needed:--disable-as-needed} %{?!build_python:--disable-python} mkdir -p out/libsmbios_c make CFLAGS="-Werror" %{?_smp_mflags} OPT="$RPM_OPT_FLAGS" 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 } if [ -d /usr/include/cppunit ]; then # run this first since it is slightly faster than valgrind VALGRIND="strace -f" runtest check strace > /dev/null || echo FAILED strace check fi if [ -e /usr/bin/valgrind -a -d /usr/include/cppunit ]; then runtest valgrind > /dev/null || echo FAILED valgrind check fi if [ -d /usr/include/cppunit ]; then runtest check > /dev/null || echo FAILED check fi if [ ! -d /usr/include/cppunit ]; then echo "Unit tests skipped due to missing cppunit." fi %install rm -rf %{buildroot} mkdir %{buildroot} cd _build TOPDIR=.. make install DESTDIR=%{buildroot} 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}/lib*.{la,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' -exec rm {} \; 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 %python_expand sitelib=%{$python_sitelib} cat > files-python-smbios <<-EOF %doc COPYING-GPL COPYING-OSL $sitelib/* 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 # 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 %clean rm -rf %{buildroot} %post -n %{release_name} -p /sbin/ldconfig %postun -n %{release_name} -p /sbin/ldconfig %files -f _build/%{lang_dom}.lang %defattr(-,root,root,-) %{_libdir}/libsmbios_c.so.* %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