diff --git a/rpm/libzypp.spec b/rpm/libzypp.spec new file mode 100644 index 0000000..20b9ecd --- /dev/null +++ b/rpm/libzypp.spec @@ -0,0 +1,218 @@ +Name: libzypp +License: GPL v2 or later +Group: System/Packages +Summary: Package, Patch, Pattern, and Product Management +Version: 12.2.0 +Release: 1 +Source: %{name}-%{version}.tar.bz2 +Source1: %{name}-rpmlintrc +BuildRequires: cmake +BuildRequires: openssl-devel +BuildRequires: libudev-devel +BuildRequires: boost-devel >= 1.49.0 +BuildRequires: doxygen +BuildRequires: gcc-c++ >= 4.6 +BuildRequires: gettext-devel +BuildRequires: libxml2-devel +BuildRequires: pkgconfig(libproxy-1.0) +BuildRequires: libsolv-devel >= 0.1.0 +Requires: libsolv-tools >= 0.1.0 +BuildRequires: expat-devel +BuildRequires: glib2-devel +BuildRequires: popt-devel +BuildRequires: rpm-devel +Requires: gnupg2 +BuildRequires: curl-devel + +%description +Package, Patch, Pattern, and Product Management + +Authors: +-------- + Michael Andres + Jiri Srain + Stefan Schubert + Duncan Mac-Vicar + Klaus Kaempf + Marius Tomaschewski + Stanislav Visnovsky + Ladislav Slezak + +%package devel +License: GPL v2 or later +Requires: libzypp = %{version} +Requires: libxml2-devel +Requires: openssl-devel +Requires: rpm-devel +Requires: glibc-devel +Requires: zlib-devel +Requires: bzip2 +Requires: popt-devel +Requires: boost-devel >= 1.49.0 +Requires: libstdc++-devel +Requires: libudev-devel +Requires: cmake +Requires: curl-devel +Requires: libsolv-devel +Summary: Package, Patch, Pattern, and Product Management - developers files +Group: System/Packages + +%description -n libzypp-devel +Package, Patch, Pattern, and Product Management - developers files + +Authors: +-------- + Michael Andres + Jiri Srain + Stefan Schubert + Duncan Mac-Vicar + Klaus Kaempf + Marius Tomaschewski + Stanislav Visnovsky + Ladislav Slezak + +%prep +%setup -q -n %{name}-%{version}/%{name} + +%build +mkdir build +cd build + +# There is gcc bug that prevents using gdwarf-4 atm. +export CFLAGS="$CFLAGS -gdwarf-2" +export CXXFLAGS="$CXXFLAGS -gdwarf-2" + +cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} \ + -DDOC_INSTALL_DIR=%{_docdir} \ + -DLIB=%{_lib} \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_SKIP_RPATH=1 \ + -DUSE_TRANSLATION_SET=${TRANSLATION_SET:-zypp} \ + .. +make %{?_smp_mflags} VERBOSE=1 +make -C doc/autodoc %{?_smp_mflags} +make -C po %{?_smp_mflags} translations + +%if 0%{?run_testsuite} + make -C tests %{?_smp_mflags} + pushd tests + LD_LIBRARY_PATH=$PWD/../zypp:$LD_LIBRARY_PATH ctest . + popd +%endif + +%install +rm -rf "$RPM_BUILD_ROOT" +cd build +make install DESTDIR=$RPM_BUILD_ROOT +make -C doc/autodoc install DESTDIR=$RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/zypp/repos.d +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/zypp/services.d +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/zypp/vendors.d +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/zypp/multiversion.d +mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/zypp +mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/zypp/plugins +mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/zypp/plugins/commit +mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/zypp/plugins/services +mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/zypp/plugins/system +mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/zypp/plugins/urlresolver +mkdir -p $RPM_BUILD_ROOT%{_var}/lib/zypp +mkdir -p $RPM_BUILD_ROOT%{_var}/log/zypp +mkdir -p $RPM_BUILD_ROOT%{_var}/cache/zypp + +make -C po install DESTDIR=$RPM_BUILD_ROOT +# Create filelist with translations +cd .. +%{find_lang} zypp + +%post +/sbin/ldconfig +if [ -f /var/cache/zypp/zypp.db ]; then rm /var/cache/zypp/zypp.db; fi + +# convert old lock file to new +# TODO make this a separate file? +# TODO run the sript only when updating form pre-11.0 libzypp versions +LOCKSFILE=%{_sysconfdir}/zypp/locks +OLDLOCKSFILE=%{_sysconfdir}/zypp/locks.old + +is_old(){ + # if no such file, exit with false (1 in bash) + test -f ${LOCKSFILE} || return 1 + TEMP_FILE=`mktemp` + cat ${LOCKSFILE} | sed '/^\#.*/ d;/.*:.*/d;/^[^[a-zA-Z\*?.0-9]*$/d' > ${TEMP_FILE} + if [ -s ${TEMP_FILE} ] + then + RES=0 + else + RES=1 + fi + rm -f ${TEMP_FILE} + return ${RES} +} + +append_new_lock(){ + case "$#" in + 1 ) + echo " +solvable_name: $1 +match_type: glob +" >> ${LOCKSFILE} +;; + 2 ) #TODO version + echo " +solvable_name: $1 +match_type: glob +version: $2 +" >> ${LOCKSFILE} +;; + 3 ) #TODO version + echo " +solvable_name: $1 +match_type: glob +version: $2 $3 +" >> ${LOCKSFILE} + ;; +esac +} + +die() { + echo $1 + exit 1 +} + +if is_old ${LOCKSFILE} + then + mv -f ${LOCKSFILE} ${OLDLOCKSFILE} || die "cannot backup old locks" + cat ${OLDLOCKSFILE}| sed "/^\#.*/d"| while read line + do + append_new_lock $line + done +fi + +%postun -p /sbin/ldconfig + +%files -f zypp.lang +%defattr(-,root,root) +%dir %{_sysconfdir}/zypp +%dir %{_sysconfdir}/zypp/repos.d +%dir %{_sysconfdir}/zypp/services.d +%dir %{_sysconfdir}/zypp/vendors.d +%dir %{_sysconfdir}/zypp/multiversion.d +%config(noreplace) %{_sysconfdir}/zypp/zypp.conf +%config(noreplace) %{_sysconfdir}/zypp/systemCheck +%config(noreplace) %{_sysconfdir}/logrotate.d/zypp-history.lr +%dir %{_var}/lib/zypp +%dir %{_var}/log/zypp +%dir %{_var}/cache/zypp +%{_libdir}/zypp +%{_datadir}/zypp +%{_bindir}/* +%{_libdir}/libzypp*so.* + +%files devel +%defattr(-,root,root,-) +%{_libdir}/libzypp.so +%{_docdir}/%{name} +%{_includedir}/zypp +%{_datadir}/cmake/Modules/* +%{_libdir}/pkgconfig/libzypp.pc +%doc %_mandir/man5/locks.5.*