From 662e5a792ec1643ca54c2d1ff45c5a4eaca3ed15 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Nov 03 2016 06:02:58 +0000 Subject: import libsolv-0.6.20-5.el7 --- diff --git a/.gitignore b/.gitignore index 99ef9a5..0afda40 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/2db517f87a8c0364d28c0fa2590ba034e866a4b8.tar.gz +SOURCES/libsolv-0.6.20.tar.gz diff --git a/.libsolv.metadata b/.libsolv.metadata index 44b5ed7..8e96706 100644 --- a/.libsolv.metadata +++ b/.libsolv.metadata @@ -1 +1 @@ -092984838366a2c5737272af0057b3940a8831b8 SOURCES/2db517f87a8c0364d28c0fa2590ba034e866a4b8.tar.gz +083e3ad09ecf52bc4beda22444b0ff8bce65414d SOURCES/libsolv-0.6.20.tar.gz diff --git a/SOURCES/0001-Fix-order-of-solv_extend-arguments-in-repo_add_rpmmd.patch b/SOURCES/0001-Fix-order-of-solv_extend-arguments-in-repo_add_rpmmd.patch new file mode 100644 index 0000000..102c4a9 --- /dev/null +++ b/SOURCES/0001-Fix-order-of-solv_extend-arguments-in-repo_add_rpmmd.patch @@ -0,0 +1,27 @@ +From 599c58bed474c2a68109ff0649f1effa7ff02c45 Mon Sep 17 00:00:00 2001 +From: Michael Schroeder +Date: Tue, 17 May 2016 11:22:56 +0200 +Subject: [PATCH] Fix order of solv_extend arguments in repo_add_rpmmd + +Fixes libsolv sometimes segfaulting since commit +d06562f7b70f6ceb7d52e717efd1963ce6e8ecf0 +--- + ext/repo_rpmmd.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ext/repo_rpmmd.c b/ext/repo_rpmmd.c +index 78264cc..d280ba0 100644 +--- a/ext/repo_rpmmd.c ++++ b/ext/repo_rpmmd.c +@@ -657,7 +657,7 @@ put_in_cshash(struct parsedata *pd, const unsigned char *key, int keyl, Id id) + } + } + /* a new entry. put in csdata */ +- pd->csdata = solv_extend(pd->csdata, pd->ncsdata, 1, 1 + keyl + sizeof(Id), 4095); ++ pd->csdata = solv_extend(pd->csdata, pd->ncsdata, 1 + keyl + sizeof(Id), 1, 4095); + d = pd->csdata + pd->ncsdata; + d[0] = keyl - 1; + memcpy(d + 1, key, keyl); +-- +2.7.4 + diff --git a/SOURCES/0001-Fix-supplements-handling-when-implicitobsoleteusesco.patch b/SOURCES/0001-Fix-supplements-handling-when-implicitobsoleteusesco.patch new file mode 100644 index 0000000..6619174 --- /dev/null +++ b/SOURCES/0001-Fix-supplements-handling-when-implicitobsoleteusesco.patch @@ -0,0 +1,74 @@ +From b1014a431541444bcd39c6ec83c1ec935c7f0aae Mon Sep 17 00:00:00 2001 +From: Michael Schroeder +Date: Tue, 17 May 2016 13:31:58 +0200 +Subject: [PATCH] Fix supplements handling when implicitobsoleteusescolors is + set + +This currently relys on the infarch lockstep handling a bit. Let's +see if this is enough or we need some better filtering code. +--- + src/solver.c | 20 ++++++++++++++++++++ + .../supplements_implicitobsoleteusescolors.t | 20 ++++++++++++++++++++ + 2 files changed, 40 insertions(+) + create mode 100644 test/testcases/weakdeps/supplements_implicitobsoleteusescolors.t + +diff --git a/src/solver.c b/src/solver.c +index 5da8529..4f849ec 100644 +--- a/src/solver.c ++++ b/src/solver.c +@@ -2636,6 +2636,26 @@ solver_run_sat(Solver *solv, int disablerules, int doweak) + dqs.count = j; + } + ++ /* implicitobsoleteusescolors doesn't mix well with supplements. ++ * filter supplemented packages where we already decided ++ * to install a different architecture */ ++ if (dqs.count && pool->implicitobsoleteusescolors) ++ { ++ for (i = j = 0; i < dqs.count; i++) ++ { ++ Id p2, pp2; ++ p = dqs.elements[i]; ++ s = pool->solvables + p; ++ FOR_PROVIDES(p2, pp2, s->name) ++ if (solv->decisionmap[p2] > 0 && pool->solvables[p2].name == s->name && pool->solvables[p2].arch != s->arch) ++ break; ++ if (p2) ++ continue; /* ignore this package */ ++ dqs.elements[j++] = p; ++ } ++ dqs.count = j; ++ } ++ + /* make dq contain both recommended and supplemented pkgs */ + if (dqs.count) + { +diff --git a/test/testcases/weakdeps/supplements_implicitobsoleteusescolors.t b/test/testcases/weakdeps/supplements_implicitobsoleteusescolors.t +new file mode 100644 +index 0000000..6de4544 +--- /dev/null ++++ b/test/testcases/weakdeps/supplements_implicitobsoleteusescolors.t +@@ -0,0 +1,20 @@ ++repo system 0 empty ++repo test 0 testtags ++#>=Ver: 2.0 ++#>=Pkg: A 1 1 noarch ++#>=Pkg: B 1 1 x86_64 ++#>=Sup: A ++#>=Pkg: B 1 1 i686 ++#>=Sup: A ++#>=Pkg: A2 1 1 noarch ++#>=Pkg: B2 1 1 x86_64 ++#>=Sup: A2 ++#>=Req: XX ++#>=Pkg: B2 1 1 i686 ++#>=Sup: A2 ++system x86_64 * system ++poolflags implicitobsoleteusescolors ++job install name A ++ ++nextjob ++job install name A2 +-- +2.7.4 + diff --git a/SPECS/libsolv.spec b/SPECS/libsolv.spec index e4e3ca0..6c625e2 100644 --- a/SPECS/libsolv.spec +++ b/SPECS/libsolv.spec @@ -1,15 +1,78 @@ -%global gitrev 2db517f87a8c0364d28c0fa2590ba034e866a4b8 - -Name: libsolv -Version: 0.6.11 -Release: 1%{?dist} -License: BSD -Url: https://github.com/openSUSE/libsolv -Source: https://github.com/openSUSE/libsolv/archive/%{gitrev}.tar.gz -Group: Development/Libraries -Summary: Package dependency solver -BuildRequires: cmake libdb-devel expat-devel rpm-devel zlib-devel +%global libname solv + +%if 0%{?rhel} && 0%{?rhel} <= 7 +%bcond_with perl_bindings +%bcond_with ruby_bindings +%bcond_with python_bindings +%if %{with python_bindings} + %bcond_with python3 +%endif +%else +%bcond_without perl_bindings +%bcond_without ruby_bindings +%bcond_without python_bindings +%if %{with python_bindings} + %bcond_without python3 +%endif +%endif +%bcond_with debian_repo +%bcond_with arch_repo +%bcond_with helix_repo +# Creates special prefixed pseudo-packages from appdata metadata +%bcond_with appdata +# Creates special prefixed "group:", "category:" pseudo-packages +%bcond_without comps +# For rich dependencies +%bcond_without complex_deps +# For handling deb + rpm at the same time +%bcond_with multi_symantics + +%global _cmake_opts \\\ + -DFEDORA=1 \\\ + -DENABLE_RPMDB=ON \\\ + -DENABLE_RPMDB_BYRPMHEADER=ON \\\ + -DENABLE_RPMMD=ON \\\ + %{?with_comps:-DENABLE_COMPS=ON} \\\ + %{?with_appdata:-DENABLE_APPDATA=ON} \\\ + -DUSE_VENDORDIRS=ON \\\ + -DENABLE_LZMA_COMPRESSION=ON \\\ + -DENABLE_BZIP2_COMPRESSION=ON \\\ + %{?with_debian_repo:-DENABLE_DEBIAN=ON} \\\ + %{?with_arch_repo:-DENABLE_ARCHREPO=ON} \\\ + %{?with_helix_repo:-DENABLE_HELIXREPO=ON} \\\ + %{?with_multi_symantics:-DMULTI_SYMANTICS=ON} \\\ + %{?with_complex_deps:-DENABLE_COMPLEX_DEPS=1} \\\ + %{nil} + +Name: lib%{libname} +Version: 0.6.20 +Release: 5%{?dist} +Summary: Package dependency solver + +License: BSD +URL: https://github.com/openSUSE/libsolv +Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz + +# https://bugzilla.redhat.com/show_bug.cgi?id=1318662 +# https://github.com/openSUSE/libsolv/commit/599c58bed474c2a68109ff0649f1effa7ff02c45 +Patch0: 0001-Fix-order-of-solv_extend-arguments-in-repo_add_rpmmd.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1325471 +# https://github.com/openSUSE/libsolv/commit/b1014a431541444bcd39c6ec83c1ec935c7f0aae +Patch1: 0001-Fix-supplements-handling-when-implicitobsoleteusesco.patch + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: pkgconfig(rpm) +BuildRequires: zlib-devel +BuildRequires: expat-devel +# -DFEDORA=1 +# -DENABLE_RPMDB=ON +BuildRequires: libdb-devel +# -DENABLE_LZMA_COMPRESSION=ON BuildRequires: xz-devel +# -DENABLE_BZIP2_COMPRESSION=ON +BuildRequires: bzip2-devel + %description A free package dependency solver using a satisfiability algorithm. The library is based on two major, but independent, blocks: @@ -21,84 +84,237 @@ library is based on two major, but independent, blocks: resolving package dependencies. %package devel -Summary: A new approach to package dependency solving -Group: Development/Libraries -Requires: libsolv-tools%{?_isa} = %{version}-%{release} -Requires: libsolv%{?_isa} = %{version}-%{release} -Requires: rpm-devel%{?_isa} -Requires: cmake +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: rpm-devel%{?_isa} %description devel -Development files for libsolv, +Development files for %{name}. %package tools -Summary: A new approach to package dependency solving -Group: Development/Libraries -Requires: gzip bzip2 coreutils -Requires: libsolv%{?_isa} = %{version}-%{release} +Summary: Package dependency solver tools +Requires: %{name}%{?_isa} = %{version}-%{release} +Obsoletes: %{name}-test < 0.6.11-2 +# repo2solv dependencies. All of those are used in shell-script. +Requires: /usr/bin/gzip +Requires: /usr/bin/bzip2 +Requires: /usr/bin/lzma +Requires: /usr/bin/xz +Requires: /usr/bin/cat +Requires: /usr/bin/find %description tools Package dependency solver tools. -%package test -Summary: A new approach to package dependency solving -Group: Development/Libraries -Requires: gzip bzip2 coreutils -Requires: libsolv%{?_isa} = %{version}-%{release} +%package demo +Summary: Applications demoing the %{name} library +Requires: %{name}%{?_isa} = %{version}-%{release} +# solv dependencies. Used as execlp() and system() +Requires: /usr/bin/curl +Requires: /usr/bin/gpg2 -%description test -Binary running libsolv test cases. +%description demo +Applications demoing the %{name} library. -%prep -%setup -q -n libsolv-%{gitrev} +%if %{with perl_bindings} +%package -n perl-%{libname} +Summary: Perl bindings for the %{name} library +BuildRequires: swig +BuildRequires: perl-devel +Requires: %{name}%{?_isa} = %{version}-%{release} -%check -make ARGS="-V" test +%description -n perl-%{libname} +Perl bindings for the %{name} library. +%endif + +%if %{with ruby_bindings} +%package -n ruby-%{libname} +Summary: Ruby bindings for the %{name} library +BuildRequires: swig +BuildRequires: ruby-devel +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description -n ruby-%{libname} +Ruby bindings for the %{name} library. +%endif + +%if %{with python_bindings} +%package -n python2-%{libname} +Summary: Python bindings for the %{name} library +%{?python_provide:%python_provide python2-%{libname}} +BuildRequires: swig +BuildRequires: python2-devel +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description -n python2-%{libname} +Python bindings for the %{name} library. + +Python 2 version. + +%if %{with python3} +%package -n python3-%{libname} +Summary: Python bindings for the %{name} library +%{?python_provide:%python_provide python3-%{libname}} +BuildRequires: swig +BuildRequires: python3-devel +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description -n python3-%{libname} +Python bindings for the %{name} library. + +Python 3 version. +%endif +%endif + +%prep +%autosetup -p1 +mkdir build build-py2 build-py3 %build -%cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DFEDORA=1 \ - -DENABLE_LZMA_COMPRESSION=1 \ +pushd build + %cmake %_cmake_opts ../ \ + %{?with_perl_bindings:-DENABLE_PERL=ON} \ + %{?with_ruby_bindings:-DENABLE_RUBY=ON} \ + %{nil} + %make_build +popd + +%if %{with python_bindings} +pushd build-py2 + %cmake %_cmake_opts ../ \ + -DENABLE_PYTHON=ON \ + -DPythonLibs_FIND_VERSION=2 \ + -DPythonLibs_FIND_VERSION_MAJOR=2 \ + %{nil} + make %{?_smp_mflags} bindings_python +popd -make %{?_smp_mflags} +%if %{with python3} +pushd build-py3 + %cmake %_cmake_opts ../ \ + -DENABLE_PYTHON=ON \ + -DPythonLibs_FIND_VERSION=3 \ + -DPythonLibs_FIND_VERSION_MAJOR=3 \ + %{nil} + make %{?_smp_mflags} bindings_python +popd +%endif +%endif %install -make DESTDIR=$RPM_BUILD_ROOT install -rm $RPM_BUILD_ROOT/usr/bin/solv +pushd build + %make_install +popd + +%if %{with python_bindings} +pushd build-py2 + %make_install +popd + +%if %{with python3} +pushd build-py3 + %make_install +popd +%endif +%endif + +mv %{buildroot}%{_bindir}/repo2solv.sh %{buildroot}%{_bindir}/repo2solv + +%check +pushd build + ctest -VV +popd %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files -%doc LICENSE* README BUGS -%_libdir/libsolv.so.* -%_libdir/libsolvext.so.* +%license LICENSE* +%doc README +%{_libdir}/%{name}.so.* +%{_libdir}/%{name}ext.so.* + +%files devel +%{_libdir}/%{name}.so +%{_libdir}/%{name}ext.so +%{_includedir}/%{libname}/ +%{_libdir}/pkgconfig/%{name}.pc +# Own directory because we don't want to depend on cmake +%dir %{_datadir}/cmake/Modules/ +%{_datadir}/cmake/Modules/FindLibSolv.cmake +%{_mandir}/man3/%{name}*.3* + +# Some small macro to list tools with mans +%global solv_tool() \ +%{_bindir}/%{1}\ +%{_mandir}/man1/%{1}.1* %files tools -%_bindir/deltainfoxml2solv -%_bindir/dumpsolv -%_bindir/installcheck -%_bindir/mergesolv -%_bindir/repo2solv.sh -%_bindir/repomdxml2solv -%_bindir/rpmdb2solv -%_bindir/rpmmd2solv -%_bindir/rpms2solv -%_bindir/updateinfoxml2solv -%_bindir/testsolv - -%files test -%_bindir/testsolv +%solv_tool deltainfoxml2solv +%solv_tool dumpsolv +%solv_tool installcheck +%solv_tool mergesolv +%solv_tool repomdxml2solv +%solv_tool rpmdb2solv +%solv_tool rpmmd2solv +%solv_tool rpms2solv +%solv_tool testsolv +%solv_tool updateinfoxml2solv +%if %{with comps} + %solv_tool comps2solv +%endif +%if %{with appdata} + %solv_tool appdata2solv +%endif +%if %{with debian_repo} + %solv_tool deb2solv +%endif +%if %{with arch_repo} + %solv_tool archpkgs2solv + %solv_tool archrepo2solv +%endif +%if %{with helix_repo} + %solv_tool helix2solv +%endif +%{_bindir}/repo2solv -%files devel -%doc examples/solv.c -%_libdir/libsolv.so -%_libdir/libsolvext.so -%_includedir/solv -%_datadir/cmake/Modules/FindLibSolv.cmake -%{_mandir}/man?/* +%files demo +%{_bindir}/solv + +%if %{with perl_bindings} +%files -n perl-%{libname} +%{perl_vendorarch}/%{libname}.pm +%{perl_vendorarch}/%{libname}.so +%endif + +%if %{with ruby_bindings} +%files -n ruby-%{libname} +%{ruby_vendorarchdir}/%{libname}.so +%endif + +%if %{with python_bindings} +%files -n python2-%{libname} +%{python2_sitearch}/_%{libname}.so +%{python2_sitearch}/%{libname}.py* + +%if %{with python3} +%files -n python3-%{libname} +%{python3_sitearch}/_%{libname}.so +%{python3_sitearch}/%{libname}.py +%{python3_sitearch}/__pycache__/%{libname}.* +%endif +%endif %changelog +* Tue Jul 12 2016 Igor Gnatenko - 0.6.20-5 +- Make obsoletes non-architecture dependent (RHBZ #1354479) + +* Tue May 31 2016 Igor Gnatenko - 0.6.20-4 +- Properly obsolete -test subpkg + +* Mon May 30 2016 Igor Gnatenko - 0.6.20-3 +- Rebase to 0.6.20 with 2 critical patches (RHBZ #1334401) + * Wed Jun 3 2015 Jan Silhan - 0.6.11-1 - initial package for RHEL 7.2 without unnecessary bindings