From 6d40e7b38d448676dbe553d71e4da68f0ca2ac06 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Tue, 14 Aug 2007 07:36:42 +0000 Subject: [PATCH] - another debugedit fix from Roland McGrath - make popt provide popt-devel to further ease split-off transition - skip ESTALE and EACCESS on mountpoints from Jeff Johnson (#190496, #220991) --- rpm-4.4.2.1-debuginfo-names.patch | 60 +++++++++++++++++++++++++++++++ rpm-4.4.2.1-estale.patch | 34 ++++++++++++++++++ rpm.spec | 13 ++++++- 3 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 rpm-4.4.2.1-debuginfo-names.patch create mode 100644 rpm-4.4.2.1-estale.patch diff --git a/rpm-4.4.2.1-debuginfo-names.patch b/rpm-4.4.2.1-debuginfo-names.patch new file mode 100644 index 0000000..5bc6bf7 --- /dev/null +++ b/rpm-4.4.2.1-debuginfo-names.patch @@ -0,0 +1,60 @@ +From roland@redhat.com Sun Aug 12 15:45:49 2007 +Date: Sun, 12 Aug 2007 05:45:16 -0700 (PDT) +From: Roland McGrath +To: Panu Matilainen +Cc: Paul Nasrat +Subject: Re: debugedit.c goof + +> No need, already applied upstream HEAD, 4.4.x branch and rawhide build +> with the fix triggered. + +Too quick! I have another fix. ;-) + +This one is less trivial, and not tested. It should make it put names in +the -l file when they match the edit replace directory name as well as the +edit match directory name, the point being that it emits the same names +when run twice in a row. + +Thanks, +Roland + + +diff -r fb1ee4c438c9 tools/debugedit.c +--- a/tools/debugedit.c Sun Aug 12 15:27:46 2007 +0300 ++++ b/tools/debugedit.c Sun Aug 12 05:42:13 2007 -0700 +@@ -567,23 +567,22 @@ edit_dwarf2_line (DSO *dso, uint_32 off, + memcpy (s + comp_dir_len + 1 + dir_len + 1, file, file_len + 1); + } + canonicalize_path (s, s); +- if (base_dir == NULL || +- has_prefix (s, base_dir)) +- { +- char *p; +- size_t size; +- ssize_t ret; +- if (base_dir) ++ if (list_file_fd != -1) ++ { ++ char *p = NULL; ++ if (base_dir == NULL) ++ p = s; ++ else if (has_prefix (s, base_dir)) + p = s + strlen (base_dir); +- else +- p = s; +- +- if (list_file_fd != -1) ++ else if (has_prefix (s, dest_dir)) ++ p = s + strlen (dest_dir); ++ ++ if (p) + { +- size = strlen (p) + 1; ++ size_t size = strlen (p) + 1; + while (size > 0) + { +- ret = write (list_file_fd, p, size); ++ ssize_t ret = write (list_file_fd, p, size); + if (ret == -1) + break; + size -= ret; diff --git a/rpm-4.4.2.1-estale.patch b/rpm-4.4.2.1-estale.patch new file mode 100644 index 0000000..6116f89 --- /dev/null +++ b/rpm-4.4.2.1-estale.patch @@ -0,0 +1,34 @@ +changeset: 6253:a5f774e61a47 +user: Panu Matilainen +date: Thu Aug 09 21:50:56 2007 +0300 +files: lib/fs.c +description: +Skip stale and unaccessible (FUSE) mountpoints (rhbz#190496, 220991) +Ported from rpm5.org work of Jeff Johnson. + + +diff -r 0cda3105a3c4 -r a5f774e61a47 lib/fs.c +--- a/lib/fs.c Thu Aug 09 19:26:05 2007 +0300 ++++ b/lib/fs.c Thu Aug 09 21:50:56 2007 +0300 +@@ -109,11 +109,17 @@ static int getFilesystemList(void) + filesystems[i].mntPoint = fsnames[i] = fsn; + + if (stat(filesystems[i].mntPoint, &sb)) { +- rpmError(RPMERR_STAT, _("failed to stat %s: %s\n"), fsnames[i], ++ switch (errno) { ++ case EACCES: /* fuse mount */ ++ case ESTALE: ++ continue; ++ default: ++ rpmError(RPMERR_STAT, _("failed to stat %s: %s\n"), fsnames[i], + strerror(errno)); + +- freeFilesystems(); +- return 1; ++ freeFilesystems(); ++ return 1; ++ } + } + + filesystems[i].dev = sb.st_dev; + diff --git a/rpm.spec b/rpm.spec index f3f1042..ef2443b 100644 --- a/rpm.spec +++ b/rpm.spec @@ -14,7 +14,7 @@ Summary: The RPM package management system Name: rpm Version: 4.4.2.1 %{expand: %%define rpm_version %{version}} -Release: 6%{?dist} +Release: 7%{?dist} Group: System Environment/Base Url: http://www.rpm.org/ Source: rpm-%{rpm_version}.tar.gz @@ -35,6 +35,8 @@ Patch14: rpm-4.4.2.1-rpm-glibc.patch Patch15: rpm-4.4.2.1-config-mtime.patch Patch16: rpm-4.4.2.1-strict-docdir.patch Patch17: rpm-4.4.2.1-buildid-thinko.patch +Patch18: rpm-4.4.2.1-estale.patch +Patch19: rpm-4.4.2.1-debuginfo-names.patch # XXX Beware, this is one murky license, partially GPL/LGPL dual-licensed # and several different components with their own licenses included... License: (GPLv2 and LGPLv2 with exceptions) and BSD and MIT and Sleepycat @@ -133,6 +135,7 @@ Summary: A C library for parsing command line parameters Group: Development/Libraries Version: 1.10.2.1 License: MIT +Provides: popt-devel = %{name}-%{version} %description -n popt Popt is a C library for parsing command line parameters. Popt was @@ -163,6 +166,9 @@ shell-like rules. %patch15 -p1 -b .config-mtime %patch16 -p1 -b .strict-docdir %patch17 -p1 -b .buildid-thinko +%patch18 -p1 -b .estale +%patch19 -p1 -b .debugedit-names + cp -f %{SOURCE2} scripts/find-debuginfo.sh %build @@ -467,6 +473,11 @@ exit 0 %{__includedir}/popt.h %changelog +* Mon Aug 13 2007 Panu Matilainen - 4.4.2.1-7 +- another debugedit fix from Roland McGrath +- make popt provide popt-devel to further ease split-off transition +- skip ESTALE and EACCESS on mountpoints from Jeff Johnson (#190496, #220991) + * Sun Aug 12 2007 Panu Matilainen - 4.4.2.1-6 - debugedit buildid thinko fix from Roland McGrath - loosen up popt-dependency to prepare for splitting it off