diff --git a/rpm-5.4.10-fix-uninitialized-variable.patch b/rpm-5.4.10-fix-uninitialized-variable.patch new file mode 100644 index 0000000..66d2451 --- /dev/null +++ b/rpm-5.4.10-fix-uninitialized-variable.patch @@ -0,0 +1,11 @@ +--- rpm-5.4.10/lib/rpmds.c.initialize~ 2012-10-04 16:34:29.681882554 +0200 ++++ rpm-5.4.10/lib/rpmds.c 2012-10-04 16:34:31.081905144 +0200 +@@ -3583,7 +3583,7 @@ int rpmdsSymlink(const char * fn, int fl + int is_symlink; + const char * soname = NULL; + rpmds ds; +- int xx; ++ int xx = -1; + int isElf64; + int isuClibc; + int gotSONAME = 0; diff --git a/rpm-5.4.10-search-through-buildroot-library-dirs-for-uclibc-deps.patch b/rpm-5.4.10-search-through-buildroot-library-dirs-for-uclibc-deps.patch new file mode 100644 index 0000000..2160452 --- /dev/null +++ b/rpm-5.4.10-search-through-buildroot-library-dirs-for-uclibc-deps.patch @@ -0,0 +1,57 @@ +--- rpm-5.4.10/lib/rpmds.c.uclibc_buildroot~ 2012-10-04 16:25:30.850199688 +0200 ++++ rpm-5.4.10/lib/rpmds.c 2012-10-04 16:25:40.130349028 +0200 +@@ -3063,8 +3063,10 @@ foo: + } + if (dyn->d_tag == DT_NEEDED) { + char *tmp, *tmp2; +- char buf[MAXPATHLEN]; +- char path[MAXPATHLEN] = ""; ++ /* XXX: we multiply by 4 to make sure to have room for several paths */ ++ char buf[4*MAXPATHLEN] = ""; ++ char path[4*MAXPATHLEN]; ++ char *buildroot; + + libpath = elf_strptr (elf, shdr->sh_link, dyn->d_un.d_val); + if (prev && *prev && libpath && !strcmp(basename(prev), libpath)) +@@ -3084,10 +3086,9 @@ foo: + if (stat(libpath, &statbuf) == 0) + continue; + +- tmp2 = path; ++ tmp2 = buf; + if (rpath && *rpath) { +- tmp2 = stpcpy(tmp2, rpath); +- tmp2 = stpcpy(tmp2, ":"); ++ tmp2 = stpcpy(buf, rpath); + } + tmp = getenv("LD_LIBRARY_PATH"); + if (tmp) +@@ -3096,6 +3097,28 @@ foo: + tmp2 = stpcpy(tmp2, ":"); + /* XXX: do better check to ensure libraries are all of the same class */ + tmp2 = stpcpy(tmp2, (class == ELFCLASS64) ? "/lib64:/usr/lib64" : "/lib:/usr/lib"); ++ /* we need to search through library paths within buildroot as well */ ++ buildroot = rpmExpand("%{buildroot}", NULL); ++ if (stat(buildroot, &statbuf) == 0) { ++ char *tmp3; ++ for (tmp2 = buf, tmp = path; ++ tmp2 != NULL; ++ tmp2 = tmp3) { ++ tmp = stpcpy(tmp, buildroot); ++ tmp3 = strchr(tmp2, ':'); ++ if (tmp3) ++ *tmp3 = '\0'; ++ tmp = stpcpy(tmp, tmp2); ++ tmp = stpcpy(tmp, ":"); ++ if (tmp3) { ++ *tmp3 = ':'; ++ tmp3++; ++ } ++ } ++ } else ++ tmp = path; ++ _free(buildroot); ++ stpcpy(tmp, buf); + tmp = buf; + { + int i, count = 1; diff --git a/rpm.spec b/rpm.spec index 5310e55..4cdca66 100644 --- a/rpm.spec +++ b/rpm.spec @@ -59,7 +59,7 @@ Summary: The RPM package management system Name: rpm Epoch: 1 Version: %{libver}.%{minorver} -Release: %{?prereldate:0.%{prereldate}.}4 +Release: %{?prereldate:0.%{prereldate}.}5 License: LGPLv2.1+ Group: System/Configuration/Packaging URL: http://rpm5.org/ @@ -348,6 +348,11 @@ Patch158: rpm-5.4.10-fix-neon-saving-error-pages-as-target-file.patch # status: needs to be discussed upstream before thinking about merging Patch159: rpm-5.4.10-support-ignore-arch-and-os-again.patch Patch160: rpm-5.4.10-bump-up-to-default-xz-compression-level.patch +# fix so that we search through library dirs within buildroot for uclibc libraries +# status: same as for other dep gen patches +Patch161: rpm-5.4.10-search-through-buildroot-library-dirs-for-uclibc-deps.patch +# status: same as for other dep gen patches +Patch162: rpm-5.4.10-fix-uninitialized-variable.patch BuildRequires: autoconf >= 2.57 BuildRequires: bzip2-devel BuildRequires: automake >= 1.8 @@ -702,6 +707,8 @@ This package contains the RPM API documentation generated in HTML format. #patch138 -p1 -b .trigtrans~ %patch159 -p1 -b .ignore_arch~ %patch160 -p1 -b .xz_level~ +%patch161 -p1 -b .uclibc_buildroot~ +%patch162 -p1 -b .uninitialized~ #required by P55, P80, P81, P94.. ./autogen.sh @@ -900,6 +907,10 @@ install -d %{buildroot}%(linux32 rpm -E %%{multiarch_bindir}) install -d %{buildroot}%(linux32 rpm -E %%{multiarch_includedir}) %endif +# should really be handled by make script.. +ln -f %{buildroot}%{_rpmhome}/bin/{rpmlua,lua} +ln -f %{buildroot}%{_rpmhome}/bin/{rpmluac,luac} + # TODO: review which files goes into what packages...? %files -f %{name}.lang %doc CHANGES doc/manual/[a-z]* @@ -946,6 +957,7 @@ install -d %{buildroot}%(linux32 rpm -E %%{multiarch_includedir}) %dir %{_localstatedir}/spool/repackage %dir %{_rpmhome} %dir %{_rpmhome}/bin +%dir %{_rpmhome}/lib %dir %{_rpmhome}/platform/ %dir %{_rpmhome}/platform/*/ %dir %{_rpmhome}/macros.d @@ -1141,6 +1153,14 @@ install -d %{buildroot}%(linux32 rpm -E %%{multiarch_includedir}) %changelog +* Thu Oct 04 2012 Per Øyvind Karlsen 1:5.4.10-5 ++ Revision: 818380 +- fix duplicate /usr/lib/rpm/bin/{{rpmlua,lua},{rpmluac,luac} files to be + hardlinks in stead +- own /usr/lib/rpm/lib +- fix a possibly unitialized variable being used (P162) +- search through library dirs within buildroot for uclibc dependencies (P161) + * Thu Aug 30 2012 Andrey Bondrov 1:5.4.10-4 + Revision: 816074 - Update ruby1.9-fixes patch to deal with new psych