- update to 4.7.1, drop merged patches
- fix source url
This commit is contained in:
parent
20e9972fc7
commit
e296089e4d
@ -1 +1 @@
|
||||
rpm-4.7.0.tar.bz2
|
||||
rpm-4.7.1.tar.bz2
|
||||
|
@ -1,158 +0,0 @@
|
||||
commit 71a7dd8b7a2df677214c18473eac661ea38fb649
|
||||
Author: Panu Matilainen <pmatilai@redhat.com>
|
||||
Date: Tue Jun 16 13:52:43 2009 +0300
|
||||
|
||||
Add debugedit support for DWARF-3 (RhBug:505774)
|
||||
- patch from Jakub Jelinek
|
||||
|
||||
diff --git a/tools/debugedit.c b/tools/debugedit.c
|
||||
index f42b34a..b9db7db 100644
|
||||
--- a/tools/debugedit.c
|
||||
+++ b/tools/debugedit.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2001, 2002, 2003, 2005, 2007 Red Hat, Inc.
|
||||
+/* Copyright (C) 2001, 2002, 2003, 2005, 2007, 2009 Red Hat, Inc.
|
||||
Written by Alexander Larsson <alexl@redhat.com>, 2002
|
||||
Based on code by Jakub Jelinek <jakub@redhat.com>, 2001.
|
||||
|
||||
@@ -88,6 +88,7 @@ static uint32_t (*do_read_32) (unsigned char *ptr);
|
||||
static void (*write_32) (unsigned char *ptr, GElf_Addr val);
|
||||
|
||||
static int ptr_size;
|
||||
+static int cu_version;
|
||||
|
||||
static inline uint16_t
|
||||
buf_read_ule16 (unsigned char *data)
|
||||
@@ -213,16 +214,18 @@ static struct
|
||||
#define DEBUG_LINE 2
|
||||
#define DEBUG_ARANGES 3
|
||||
#define DEBUG_PUBNAMES 4
|
||||
-#define DEBUG_MACINFO 5
|
||||
-#define DEBUG_LOC 6
|
||||
-#define DEBUG_STR 7
|
||||
-#define DEBUG_FRAME 8
|
||||
-#define DEBUG_RANGES 9
|
||||
+#define DEBUG_PUBTYPES 5
|
||||
+#define DEBUG_MACINFO 6
|
||||
+#define DEBUG_LOC 7
|
||||
+#define DEBUG_STR 8
|
||||
+#define DEBUG_FRAME 9
|
||||
+#define DEBUG_RANGES 10
|
||||
{ ".debug_info", NULL, NULL, 0, 0, 0 },
|
||||
{ ".debug_abbrev", NULL, NULL, 0, 0, 0 },
|
||||
{ ".debug_line", NULL, NULL, 0, 0, 0 },
|
||||
{ ".debug_aranges", NULL, NULL, 0, 0, 0 },
|
||||
{ ".debug_pubnames", NULL, NULL, 0, 0, 0 },
|
||||
+ { ".debug_pubtypes", NULL, NULL, 0, 0, 0 },
|
||||
{ ".debug_macinfo", NULL, NULL, 0, 0, 0 },
|
||||
{ ".debug_loc", NULL, NULL, 0, 0, 0 },
|
||||
{ ".debug_str", NULL, NULL, 0, 0, 0 },
|
||||
@@ -302,7 +305,7 @@ no_memory:
|
||||
}
|
||||
if (*slot != NULL)
|
||||
{
|
||||
- error (0, 0, "%s: Duplicate DWARF-2 abbreviation %d", dso->filename,
|
||||
+ error (0, 0, "%s: Duplicate DWARF abbreviation %d", dso->filename,
|
||||
t->entry);
|
||||
free (t);
|
||||
htab_delete (h);
|
||||
@@ -322,7 +325,7 @@ no_memory:
|
||||
form = read_uleb128 (ptr);
|
||||
if (form == 2 || form > DW_FORM_indirect)
|
||||
{
|
||||
- error (0, 0, "%s: Unknown DWARF-2 DW_FORM_%d", dso->filename, form);
|
||||
+ error (0, 0, "%s: Unknown DWARF DW_FORM_%d", dso->filename, form);
|
||||
htab_delete (h);
|
||||
return NULL;
|
||||
}
|
||||
@@ -332,7 +335,7 @@ no_memory:
|
||||
}
|
||||
if (read_uleb128 (ptr) != 0)
|
||||
{
|
||||
- error (0, 0, "%s: DWARF-2 abbreviation does not end with 2 zeros",
|
||||
+ error (0, 0, "%s: DWARF abbreviation does not end with 2 zeros",
|
||||
dso->filename);
|
||||
htab_delete (h);
|
||||
return NULL;
|
||||
@@ -484,7 +487,7 @@ edit_dwarf2_line (DSO *dso, uint32_t off, char *comp_dir, int phase)
|
||||
}
|
||||
|
||||
value = read_16 (ptr);
|
||||
- if (value != 2)
|
||||
+ if (value != 2 && value != 3)
|
||||
{
|
||||
error (0, 0, "%s: DWARF version %d unhandled", dso->filename,
|
||||
value);
|
||||
@@ -829,7 +832,12 @@ edit_attributes (DSO *dso, unsigned char *ptr, struct abbrev_tag *t, int phase)
|
||||
|
||||
switch (form)
|
||||
{
|
||||
- case DW_FORM_ref_addr: /* ptr_size in DWARF 2, offset in DWARF 3 */
|
||||
+ case DW_FORM_ref_addr:
|
||||
+ if (cu_version == 2)
|
||||
+ ptr += ptr_size;
|
||||
+ else
|
||||
+ ptr += 4;
|
||||
+ break;
|
||||
case DW_FORM_addr:
|
||||
ptr += ptr_size;
|
||||
break;
|
||||
@@ -881,7 +889,7 @@ edit_attributes (DSO *dso, unsigned char *ptr, struct abbrev_tag *t, int phase)
|
||||
assert (len < UINT_MAX);
|
||||
break;
|
||||
default:
|
||||
- error (0, 0, "%s: Unknown DWARF-2 DW_FORM_%d", dso->filename,
|
||||
+ error (0, 0, "%s: Unknown DWARF DW_FORM_%d", dso->filename,
|
||||
form);
|
||||
return NULL;
|
||||
}
|
||||
@@ -1178,11 +1186,11 @@ edit_dwarf2 (DSO *dso)
|
||||
return 1;
|
||||
}
|
||||
|
||||
- value = read_16 (ptr);
|
||||
- if (value != 2)
|
||||
+ cu_version = read_16 (ptr);
|
||||
+ if (cu_version != 2 && cu_version != 3)
|
||||
{
|
||||
error (0, 0, "%s: DWARF version %d unhandled", dso->filename,
|
||||
- value);
|
||||
+ cu_version);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -1192,7 +1200,7 @@ edit_dwarf2 (DSO *dso)
|
||||
if (debug_sections[DEBUG_ABBREV].data == NULL)
|
||||
error (0, 0, "%s: .debug_abbrev not present", dso->filename);
|
||||
else
|
||||
- error (0, 0, "%s: DWARF-2 CU abbrev offset too large",
|
||||
+ error (0, 0, "%s: DWARF CU abbrev offset too large",
|
||||
dso->filename);
|
||||
return 1;
|
||||
}
|
||||
@@ -1202,14 +1210,14 @@ edit_dwarf2 (DSO *dso)
|
||||
ptr_size = read_1 (ptr);
|
||||
if (ptr_size != 4 && ptr_size != 8)
|
||||
{
|
||||
- error (0, 0, "%s: Invalid DWARF-2 pointer size %d",
|
||||
+ error (0, 0, "%s: Invalid DWARF pointer size %d",
|
||||
dso->filename, ptr_size);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else if (read_1 (ptr) != ptr_size)
|
||||
{
|
||||
- error (0, 0, "%s: DWARF-2 pointer size differs between CUs",
|
||||
+ error (0, 0, "%s: DWARF pointer size differs between CUs",
|
||||
dso->filename);
|
||||
return 1;
|
||||
}
|
||||
@@ -1227,7 +1235,7 @@ edit_dwarf2 (DSO *dso)
|
||||
t = htab_find_with_hash (abbrev, &tag, tag.entry);
|
||||
if (t == NULL)
|
||||
{
|
||||
- error (0, 0, "%s: Could not find DWARF-2 abbreviation %d",
|
||||
+ error (0, 0, "%s: Could not find DWARF abbreviation %d",
|
||||
dso->filename, tag.entry);
|
||||
htab_delete (abbrev);
|
||||
return 1;
|
@ -1,19 +0,0 @@
|
||||
commit acfe923bf21a4402a48b6e357a53a398b107f0b3
|
||||
Author: Ville Skyttä <ville.skytta@iki.fi>
|
||||
Date: Sun Apr 12 21:39:50 2009 +0300
|
||||
|
||||
Fix --with-kde with KDE3 (rhbz#466009).
|
||||
|
||||
diff --git a/scripts/find-lang.sh b/scripts/find-lang.sh
|
||||
index 2dd9e0d..bb25b31 100755
|
||||
--- a/scripts/find-lang.sh
|
||||
+++ b/scripts/find-lang.sh
|
||||
@@ -138,7 +138,7 @@ if [ x"$KDE3_HTML" != x -a -d "$TOP_DIR$KDE3_HTML" ]; then
|
||||
find $TOP_DIR$KDE3_HTML -type d|sed '
|
||||
s:'"$TOP_DIR"'::
|
||||
'"$NO_ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/'"$NAME"'/\)::
|
||||
-'"$NO_ALL_NAME$KDE"'s:\(.*/HTML\)\([^/_]\+\)\(.*/'"$NAME"'\)$:%lang(\2) \1\2\3:
|
||||
+'"$NO_ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/'"$NAME"'\)$:%lang(\2) \1\2\3:
|
||||
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+/\)::
|
||||
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3:
|
||||
s:^\([^%].*\)::
|
@ -1,105 +0,0 @@
|
||||
diff --git a/lib/fprint.c b/lib/fprint.c
|
||||
index e57ba20..c56b0e5 100644
|
||||
--- a/lib/fprint.c
|
||||
+++ b/lib/fprint.c
|
||||
@@ -37,8 +37,10 @@ fingerPrintCache fpCacheCreate(int sizeHint)
|
||||
|
||||
fingerPrintCache fpCacheFree(fingerPrintCache cache)
|
||||
{
|
||||
- cache->ht = rpmFpEntryHashFree(cache->ht);
|
||||
- free(cache);
|
||||
+ if (cache) {
|
||||
+ cache->ht = rpmFpEntryHashFree(cache->ht);
|
||||
+ free(cache);
|
||||
+ }
|
||||
return NULL;
|
||||
}
|
||||
|
||||
diff --git a/lib/rpmdb.c b/lib/rpmdb.c
|
||||
index 439a974..d76630e 100644
|
||||
--- a/lib/rpmdb.c
|
||||
+++ b/lib/rpmdb.c
|
||||
@@ -1098,20 +1098,20 @@ int rpmdbVerify(const char * prefix)
|
||||
static int rpmdbFindByFile(rpmdb db, const char * filespec,
|
||||
DBT * key, DBT * data, dbiIndexSet * matches)
|
||||
{
|
||||
- char * dirName;
|
||||
+ char * dirName = NULL;
|
||||
const char * baseName;
|
||||
- fingerPrintCache fpc;
|
||||
+ fingerPrintCache fpc = NULL;
|
||||
fingerPrint fp1;
|
||||
dbiIndex dbi = NULL;
|
||||
DBC * dbcursor;
|
||||
dbiIndexSet allMatches = NULL;
|
||||
dbiIndexItem rec = NULL;
|
||||
unsigned int i;
|
||||
- int rc;
|
||||
+ int rc = -2; /* assume error */
|
||||
int xx;
|
||||
|
||||
*matches = NULL;
|
||||
- if (filespec == NULL) return -2;
|
||||
+ if (filespec == NULL) return rc; /* nothing alloced yet */
|
||||
|
||||
if ((baseName = strrchr(filespec, '/')) != NULL) {
|
||||
size_t len = baseName - filespec + 1;
|
||||
@@ -1123,11 +1123,7 @@ static int rpmdbFindByFile(rpmdb db, const char * filespec,
|
||||
baseName = filespec;
|
||||
}
|
||||
if (baseName == NULL)
|
||||
- return -2;
|
||||
-
|
||||
- fpc = fpCacheCreate(20);
|
||||
- fp1 = fpLookup(fpc, dirName, baseName, 1);
|
||||
- free(dirName);
|
||||
+ goto exit;
|
||||
|
||||
dbi = dbiOpen(db, RPMTAG_BASENAMES, 0);
|
||||
if (dbi != NULL) {
|
||||
@@ -1154,16 +1150,14 @@ static int rpmdbFindByFile(rpmdb db, const char * filespec,
|
||||
} else
|
||||
rc = -2;
|
||||
|
||||
- if (rc) {
|
||||
- allMatches = dbiFreeIndexSet(allMatches);
|
||||
- fpc = fpCacheFree(fpc);
|
||||
- return rc;
|
||||
- }
|
||||
+ if (rc || allMatches == NULL) goto exit;
|
||||
|
||||
*matches = xcalloc(1, sizeof(**matches));
|
||||
rec = dbiIndexNewItem(0, 0);
|
||||
+ fpc = fpCacheCreate(allMatches->count);
|
||||
+ fp1 = fpLookup(fpc, dirName, baseName, 1);
|
||||
+
|
||||
i = 0;
|
||||
- if (allMatches != NULL)
|
||||
while (i < allMatches->count) {
|
||||
struct rpmtd_s bn, dn, di;
|
||||
const char ** baseNames, ** dirNames;
|
||||
@@ -1216,16 +1210,19 @@ static int rpmdbFindByFile(rpmdb db, const char * filespec,
|
||||
}
|
||||
|
||||
rec = _free(rec);
|
||||
- allMatches = dbiFreeIndexSet(allMatches);
|
||||
-
|
||||
- fpc = fpCacheFree(fpc);
|
||||
+ fpCacheFree(fpc);
|
||||
|
||||
if ((*matches)->count == 0) {
|
||||
*matches = dbiFreeIndexSet(*matches);
|
||||
- return 1;
|
||||
+ rc = 1;
|
||||
+ } else {
|
||||
+ rc = 0;
|
||||
}
|
||||
|
||||
- return 0;
|
||||
+exit:
|
||||
+ dbiFreeIndexSet(allMatches);
|
||||
+ free(dirName);
|
||||
+ return rc;
|
||||
}
|
||||
|
||||
/* XXX python/upgrade.c, install.c, uninstall.c */
|
@ -1,26 +0,0 @@
|
||||
commit 1b9e6d7f48a68fd677c70d04c9a6bb4274cf7b9f
|
||||
Author: Florian Festi <ffesti@redhat.com>
|
||||
Date: Tue Jun 16 17:37:40 2009 +0200
|
||||
|
||||
Fix Segfault for to be installed symlinks pointing to existing locations
|
||||
fixes rhbz#505777
|
||||
|
||||
diff --git a/lib/fprint.c b/lib/fprint.c
|
||||
index d32eec1..e57ba20 100644
|
||||
--- a/lib/fprint.c
|
||||
+++ b/lib/fprint.c
|
||||
@@ -311,10 +311,10 @@ void fpLookupSubdir(rpmFpHash symlinks, rpmFpHash fphash, fingerPrintCache fpc,
|
||||
/* setup current_fp for the new path */
|
||||
found = 1;
|
||||
current_fp = *fp;
|
||||
- if (!fp->subDir) {
|
||||
- lensubDir = 0;
|
||||
- currentsubdir = endsubdir = NULL;
|
||||
- break;
|
||||
+ if (fp->subDir == NULL) {
|
||||
+ /* directory exists - no need to look for symlinks */
|
||||
+ rpmFpHashAddEntry(fphash, fp, ffi);
|
||||
+ return;
|
||||
}
|
||||
lensubDir = strlen(fp->subDir);
|
||||
currentsubdir = xstrdup(fp->subDir);
|
@ -1,98 +0,0 @@
|
||||
commit cdfd0934841d4eccc26d7da7c35b23e6e9f76a9c
|
||||
Author: Panu Matilainen <pmatilai@redhat.com>
|
||||
Date: Fri May 29 09:02:44 2009 +0300
|
||||
|
||||
Fix calculation of hardlinked files (RhBug:503020)
|
||||
- regression from commit 899dfb58927ec6e91014773430824462f4d0002e,
|
||||
size of hardlinked file set is the size of one file of the set
|
||||
- add isHardLink() internal helper to avoid a copy-paste code
|
||||
|
||||
diff --git a/build/files.c b/build/files.c
|
||||
index ef60ae2..98abedd 100644
|
||||
--- a/build/files.c
|
||||
+++ b/build/files.c
|
||||
@@ -981,6 +981,14 @@ static int isDoc(FileList fl, const char * fileName)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int isHardLink(FileListRec flp, FileListRec tlp)
|
||||
+{
|
||||
+ return ((S_ISREG(flp->fl_mode) && S_ISREG(tlp->fl_mode)) &&
|
||||
+ ((flp->fl_nlink > 1) && (flp->fl_nlink == tlp->fl_nlink)) &&
|
||||
+ (flp->fl_ino == tlp->fl_ino) &&
|
||||
+ (flp->fl_dev == tlp->fl_dev));
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* Verify that file attributes scope over hardlinks correctly.
|
||||
* If partial hardlink sets are possible, then add tracking dependency.
|
||||
@@ -999,14 +1007,18 @@ static int checkHardLinks(FileList fl)
|
||||
|
||||
for (j = i + 1; j < fl->fileListRecsUsed; j++) {
|
||||
jlp = fl->fileList + j;
|
||||
- if (!S_ISREG(jlp->fl_mode))
|
||||
- continue;
|
||||
- if (ilp->fl_nlink != jlp->fl_nlink)
|
||||
- continue;
|
||||
- if (ilp->fl_ino != jlp->fl_ino)
|
||||
- continue;
|
||||
- if (ilp->fl_dev != jlp->fl_dev)
|
||||
- continue;
|
||||
+ if (isHardLink(ilp, jlp)) {
|
||||
+ return 1;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int seenHardLink(FileList fl, FileListRec flp)
|
||||
+{
|
||||
+ for (FileListRec ilp = fl->fileList; ilp < flp; ilp++) {
|
||||
+ if (isHardLink(flp, ilp)) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -1147,9 +1159,12 @@ static void genCpioListAndHeader(FileList fl,
|
||||
rpm_off_t rsize32 = (rpm_off_t)flp->fl_size;
|
||||
headerPutUint32(h, RPMTAG_FILESIZES, &rsize32, 1);
|
||||
}
|
||||
- /* Excludes and dupes have been filtered out by now */
|
||||
- if (S_ISREG(flp->fl_mode))
|
||||
- totalFileSize += flp->fl_size;
|
||||
+ /* Excludes and dupes have been filtered out by now. */
|
||||
+ if (S_ISREG(flp->fl_mode)) {
|
||||
+ if (flp->fl_nlink == 1 || !seenHardLink(fl, flp)) {
|
||||
+ totalFileSize += flp->fl_size;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
/*
|
||||
* For items whose size varies between systems, always explicitly
|
||||
@@ -1492,25 +1507,7 @@ static rpmRC addFile(FileList fl, const char * diskPath,
|
||||
flp->specdFlags = fl->currentSpecdFlags;
|
||||
flp->verifyFlags = fl->currentVerifyFlags;
|
||||
|
||||
- /* Hard links need be counted only once. */
|
||||
- if (S_ISREG(flp->fl_mode) && flp->fl_nlink > 1) {
|
||||
- FileListRec ilp;
|
||||
- for (i = 0; i < fl->fileListRecsUsed; i++) {
|
||||
- ilp = fl->fileList + i;
|
||||
- if (!S_ISREG(ilp->fl_mode))
|
||||
- continue;
|
||||
- if (flp->fl_nlink != ilp->fl_nlink)
|
||||
- continue;
|
||||
- if (flp->fl_ino != ilp->fl_ino)
|
||||
- continue;
|
||||
- if (flp->fl_dev != ilp->fl_dev)
|
||||
- continue;
|
||||
- break;
|
||||
- }
|
||||
- } else
|
||||
- i = fl->fileListRecsUsed;
|
||||
-
|
||||
- if (!(flp->flags & RPMFILE_EXCLUDE) && S_ISREG(flp->fl_mode) && i >= fl->fileListRecsUsed) {
|
||||
+ if (!(flp->flags & RPMFILE_EXCLUDE) && S_ISREG(flp->fl_mode)) {
|
||||
/*
|
||||
* XXX Simple and stupid check for now, this needs to be per-payload
|
||||
* format check once we have other payloads than good 'ole cpio.
|
@ -1,531 +0,0 @@
|
||||
commit 7417cd283a3641ee62b282ae36c5d2d7df349d04
|
||||
Author: Panu Matilainen <pmatilai@redhat.com>
|
||||
Date: Thu Jun 18 13:06:42 2009 +0300
|
||||
|
||||
Pile of OSGi dependency generator fixes from Alphonse Van Assche (ticket #39)
|
||||
- use Temp perl module to provide temp dir
|
||||
- re-enable deps solving in Require-Bundle, Import-Package, Export-Package
|
||||
OSGI properties
|
||||
- remove uses bundle of Export-Package OSGI property
|
||||
- use RPM '>=' as version operator to match OSGI '='
|
||||
- remove all .0 at the end of the version string
|
||||
- typo fixes
|
||||
|
||||
diff --git a/scripts/osgideps.pl b/scripts/osgideps.pl
|
||||
index 7b02016..971dade 100644
|
||||
--- a/scripts/osgideps.pl
|
||||
+++ b/scripts/osgideps.pl
|
||||
@@ -1,203 +1,357 @@
|
||||
#!/usr/bin/perl
|
||||
-
|
||||
+#
|
||||
+# osgideps.pl -- Analyze dependencies of OSGi bundles.
|
||||
+#
|
||||
+# Kyu Lee
|
||||
+# Alphonse Van Assche <alcapcom@fedoraproject.org>
|
||||
+#
|
||||
+# $Id: osgideps.pl,v 1.0 2009/06/08 12:12:12 mej Exp $
|
||||
+#
|
||||
|
||||
use Cwd;
|
||||
use Getopt::Long;
|
||||
-
|
||||
+use File::Temp qw/ tempdir /;
|
||||
|
||||
$cdir = getcwd();
|
||||
-$TEMPDIR="/tmp";
|
||||
-$MANIFEST_NAME="META-INF/MANIFEST.MF";
|
||||
-
|
||||
+$TEMPDIR = tempdir( CLEANUP => 1 );
|
||||
+$MANIFEST_NAME = "META-INF/MANIFEST.MF";
|
||||
|
||||
# prepare temporary directory
|
||||
-if (! (-d $TEMPDIR)) {
|
||||
- if (($_ = `mkdir $TEMPDIR`) != 0) {exit 1;}
|
||||
- elsif (! (-w $TEMPDIR) && (-x $TEMPDIR)) {exit 1;}
|
||||
+if ( !( -d $TEMPDIR ) ) {
|
||||
+ if ( ( $_ = `mkdir $TEMPDIR` ) != 0 ) { exit 1; }
|
||||
+ elsif ( !( -w $TEMPDIR ) && ( -x $TEMPDIR ) ) { exit 1; }
|
||||
}
|
||||
|
||||
# parse options
|
||||
-my ($show_provides, $show_requires);
|
||||
-
|
||||
-my $result = GetOptions("provides" => \$show_provides,
|
||||
- "requires" => \$show_requires);
|
||||
-
|
||||
-exit(1) if (not $result);
|
||||
-
|
||||
-
|
||||
+my ( $show_provides, $show_requires, $show_system_bundles, $debug );
|
||||
+my $result = GetOptions(
|
||||
+ "provides" => \$show_provides,
|
||||
+ "requires" => \$show_requires,
|
||||
+ "system" => \$show_system_bundles,
|
||||
+ "debug" => \$debug
|
||||
+);
|
||||
+exit(1) if ( not $result );
|
||||
|
||||
+# run selected function
|
||||
@allfiles = <STDIN>;
|
||||
-
|
||||
if ($show_provides) {
|
||||
- do_provides(@allfiles);
|
||||
+ getProvides(@allfiles);
|
||||
}
|
||||
-
|
||||
if ($show_requires) {
|
||||
- do_requires(@allfiles);
|
||||
+ getRequires(@allfiles);
|
||||
+}
|
||||
+if ($show_system_bundles) {
|
||||
+ getSystemBundles(@allfiles);
|
||||
}
|
||||
-
|
||||
-
|
||||
exit(0);
|
||||
|
||||
-
|
||||
-
|
||||
-sub do_provides {
|
||||
-
|
||||
-foreach $file (@_) {
|
||||
-
|
||||
- next if -f $file && -r $file && !-l $file;
|
||||
- $file =~ s/[^[:print:]]//g;
|
||||
- if ($file =~ m/$MANIFEST_NAME$/ || $file =~ m/\.jar$/ ) {
|
||||
- if ($file =~ m/\.jar$/) {
|
||||
- # if this jar contains MANIFEST.MF file
|
||||
- if (`jar tf $file | grep -e \^$MANIFEST_NAME` eq "$MANIFEST_NAME\n") {
|
||||
- # extract MANIFEST.MF file from jar to temporary directory
|
||||
- chdir $TEMPDIR;
|
||||
- `jar xf $file $MANIFEST_NAME`;
|
||||
- open(MANIFEST, "$MANIFEST_NAME");
|
||||
- chdir $cdir;
|
||||
+# this function print provides of OSGi aware files
|
||||
+sub getProvides {
|
||||
+ foreach $file (@_) {
|
||||
+ chomp($file);
|
||||
+ # we don't follow symlinks for provides
|
||||
+ next if -f $file && -r $file && -l $file;
|
||||
+ $file =~ s/[^[:print:]]//g;
|
||||
+ if ( $file =~ m/$MANIFEST_NAME$/ || $file =~ m/\.jar$/ ) {
|
||||
+ if ( $file =~ m/\.jar$/ ) {
|
||||
+ if ( `jar tf $file | grep -e \^$MANIFEST_NAME` eq "$MANIFEST_NAME\n" ) {
|
||||
+ # extract MANIFEST.MF file from jar to temporary directory
|
||||
+ chdir $TEMPDIR;
|
||||
+ `jar xf $file $MANIFEST_NAME`;
|
||||
+ open( MANIFEST, "$MANIFEST_NAME" );
|
||||
+ chdir $cdir;
|
||||
+ }
|
||||
+ } else {
|
||||
+ open( MANIFEST, "$file" );
|
||||
}
|
||||
- } else {
|
||||
- open(MANIFEST, "$file");
|
||||
- }
|
||||
- my $bundleName = "";
|
||||
- my $version = "";
|
||||
- # parse bundle name and version
|
||||
- while(<MANIFEST>) {
|
||||
- # get rid of non-print chars (some manifest files contain weird chars)
|
||||
- s/[^[:print]]//g;
|
||||
- if (m/(^Bundle-SymbolicName: )((\w|\.)+)(\;*)(.*\n)/) {
|
||||
- $bundleName = $2;
|
||||
- }
|
||||
- if (m/(^Bundle-Version: )(.*)/) {
|
||||
- $version = $2;
|
||||
- $version = fixVersion($version);
|
||||
+ my $bundleName = "";
|
||||
+ my $version = "";
|
||||
+ # parse Bundle-SymbolicName, Bundle-Version and Export-Package attributes
|
||||
+ while (<MANIFEST>) {
|
||||
+ # get rid of non-print chars (some manifest files contain weird chars)
|
||||
+ s/[^[:print]]//g;
|
||||
+ if ( m/(^(Bundle-SymbolicName): )(.*)$/ ) {
|
||||
+ $bundleName = "$3" . "\n";
|
||||
+ while (<MANIFEST>) {
|
||||
+ if ( m/^[[:upper:]][[:alpha:]]+-[[:upper:]][[:alpha:]]+: .*/ ) {
|
||||
+ $len = length $_;
|
||||
+ seek MANIFEST, $len * -1, 1;
|
||||
+ last;
|
||||
+ }
|
||||
+ $bundleName .= "$_";
|
||||
+ }
|
||||
+ $bundleName =~ s/\s+//g;
|
||||
+ $bundleName =~ s/;.*//g;
|
||||
+ }
|
||||
+ if ( m/(^Bundle-Version: )(.*)/ ) {
|
||||
+ $version = $2;
|
||||
+ }
|
||||
+ if ( m/(^(Export-Package): )(.*)$/ ) {
|
||||
+ my $bunlist = "$3" . "\n";
|
||||
+ while (<MANIFEST>) {
|
||||
+ if ( m/^[[:upper:]][[:alpha:]]+-[[:upper:]][[:alpha:]]+: .*/ ) {
|
||||
+ $len = length $_;
|
||||
+ seek MANIFEST, $len * -1, 1;
|
||||
+ last;
|
||||
+ }
|
||||
+ $bunlist .= "$_";
|
||||
+ }
|
||||
+ push @bundlelist, parsePkgString($bunlist, $file);
|
||||
+ }
|
||||
}
|
||||
- if (m/(^(Export-Package): )(.*)$/) {
|
||||
- my $bunlist = "$3"."\n";
|
||||
- while(<MANIFEST>) {
|
||||
- if (m/^[[:upper:]][[:alpha:]]+-[[:upper:]][[:alpha:]]+: .*/) {
|
||||
- $len = length $_;
|
||||
- seek MANIFEST, $len*-1 , 1;
|
||||
- last;
|
||||
- }
|
||||
- $bunlist.="$_";
|
||||
+
|
||||
+ # skip this jar if no bundle name exists
|
||||
+ if ( !$bundleName eq "" ) {
|
||||
+ if ( !$version eq "" ) {
|
||||
+ $version = parseVersion($version);
|
||||
+ push @bundlelist, { FILE => "$file", NAME => "$bundleName", VERSION => "$version" };
|
||||
+ } else {
|
||||
+ push @bundlelist, { FILE => "$file", NAME => "$bundleName", VERSION => "" };
|
||||
}
|
||||
- push @bundlelist, parsePkgString($bunlist);
|
||||
}
|
||||
- }
|
||||
- # skip this jar if no bundle name exists
|
||||
- if (! $bundleName eq "") {
|
||||
- if (! $version eq "") {
|
||||
- print "osgi(".$bundleName.") = ".$version."\n";
|
||||
- } else {
|
||||
- print "osgi(".$bundleName.")\n";
|
||||
- }
|
||||
- }
|
||||
+ }
|
||||
}
|
||||
-}
|
||||
-$list = "";
|
||||
-for $bundle (@bundlelist) {
|
||||
- $list .= "osgi(".$bundle->{NAME}.")".$bundle->{VERSION}."\n";
|
||||
-}
|
||||
-# For now we dont take Require-Bundle AND Import-Package in account
|
||||
-#print $list;
|
||||
+ if ( !$debug ) { @bundlelist = prepareOSGiBundlesList(@bundlelist); }
|
||||
+ $list = "";
|
||||
+ for $bundle (@bundlelist) {
|
||||
+ if ( !$debug ) {
|
||||
+ $list .= "osgi(" . $bundle->{NAME} . ")" . $bundle->{VERSION} . "\n";
|
||||
+ } else {
|
||||
+ $list .= $bundle->{FILE} . " osgi(" . $bundle->{NAME} . ")" . $bundle->{VERSION} . "\n";
|
||||
+ }
|
||||
+ }
|
||||
+ print $list;
|
||||
}
|
||||
|
||||
-
|
||||
-sub do_requires {
|
||||
-
|
||||
+# this function print requires of OSGi aware files
|
||||
+sub getRequires {
|
||||
foreach $file (@_) {
|
||||
-
|
||||
- next if -f $file && -r $file;
|
||||
+ next if (-f $file && -r $file);
|
||||
+ # we explicitly requires symlinked jars
|
||||
+ if (-l $file) {
|
||||
+ $file = readlink $file;
|
||||
+ if ( !$file eq "" ) {
|
||||
+ print "$file" . "\n";
|
||||
+ }
|
||||
+ next;
|
||||
+ }
|
||||
$file =~ s/[^[:print:]]//g;
|
||||
- if ($file =~ m/$MANIFEST_NAME$/ || $file =~ m/\.jar$/ ) {
|
||||
- if ($file =~ m/\.jar$/) {
|
||||
- # if this jar contains MANIFEST.MF file
|
||||
- if (`jar tf $file | grep -e \^$MANIFEST_NAME` eq "$MANIFEST_NAME\n") {
|
||||
+ if ( $file =~ m/$MANIFEST_NAME$/ || $file =~ m/\.jar$/ ) {
|
||||
+ if ( $file =~ m/\.jar$/ ) {
|
||||
+ if ( `jar tf $file | grep -e \^$MANIFEST_NAME` eq "$MANIFEST_NAME\n" ) {
|
||||
# extract MANIFEST.MF file from jar to temporary directory
|
||||
- chdir $TEMPDIR;
|
||||
- `jar xf $file $MANIFEST_NAME`;
|
||||
- open(MANIFEST, "$MANIFEST_NAME");
|
||||
+ chdir $TEMPDIR;
|
||||
+ `jar xf $file $MANIFEST_NAME`;
|
||||
+ open( MANIFEST, "$MANIFEST_NAME" );
|
||||
chdir $cdir;
|
||||
}
|
||||
- } else {
|
||||
- open(MANIFEST, "$file");
|
||||
+ } else {
|
||||
+ open( MANIFEST, "$file" );
|
||||
+ }
|
||||
+ while (<MANIFEST>) {
|
||||
+ if ( m/(^(Require-Bundle|Import-Package): )(.*)$/ ) {
|
||||
+ my $bunlist = "$3" . "\n";
|
||||
+ while (<MANIFEST>) {
|
||||
+ if (m/^[[:upper:]][[:alpha:]]+-[[:upper:]][[:alpha:]]+: .*/ ) {
|
||||
+ $len = length $_;
|
||||
+ seek MANIFEST, $len * -1, 1;
|
||||
+ last;
|
||||
+ }
|
||||
+ $bunlist .= "$_";
|
||||
+ }
|
||||
+ push @bundlelist, parsePkgString($bunlist, $file);
|
||||
+ }
|
||||
+ # we also explicitly require symlinked jars define by
|
||||
+ # Bundle-ClassPath attribut
|
||||
+ if ( m/(^(Bundle-ClassPath): )(.*)$/ ) {
|
||||
+ $bunclp = "$3" . "\n";
|
||||
+ while (<MANIFEST>) {
|
||||
+ if ( m/^[[:upper:]][[:alpha:]]+-[[:upper:]][[:alpha:]]+: .*/ ) {
|
||||
+ $len = length $_;
|
||||
+ seek MANIFEST, $len * -1, 1;
|
||||
+ last;
|
||||
+ }
|
||||
+ $bunclp .= "$_";
|
||||
+ }
|
||||
+ $bunclp =~ s/\ //g;
|
||||
+ $bunclp =~ s/\n//g;
|
||||
+ $bunclp =~ s/[^[:print:]]//g;
|
||||
+ $dir = `dirname $file`;
|
||||
+ $dir =~ s/\n//g;
|
||||
+ @jars = split /,/, $bunclp;
|
||||
+ for $jarfile (@jars) {
|
||||
+ $jarfile = "$dir\/\.\.\/$jarfile";
|
||||
+ $jarfile = readlink $jarfile;
|
||||
+ if ( !$jarfile eq "" ) {
|
||||
+ print "$jarfile" . "\n";
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
- my %reqcomp = ();
|
||||
- while(<MANIFEST>) {
|
||||
- if (m/(^(Require-Bundle|Import-Package): )(.*)$/) {
|
||||
- my $bunlist = "$3"."\n";
|
||||
- while(<MANIFEST>) {
|
||||
- if (m/^[[:upper:]][[:alpha:]]+-[[:upper:]][[:alpha:]]+: .*/) {
|
||||
- $len = length $_;
|
||||
- seek MANIFEST, $len*-1 , 1;
|
||||
- last;
|
||||
- }
|
||||
- $bunlist.="$_";
|
||||
- }
|
||||
- push @bundlelist, parsePkgString($bunlist);
|
||||
- }
|
||||
- }
|
||||
+ }
|
||||
}
|
||||
+ if ( !$debug ) { @bundlelist = prepareOSGiBundlesList(@bundlelist); }
|
||||
+ $list = "";
|
||||
+ for $bundle (@bundlelist) {
|
||||
+ # replace '=' by '>=' because qualifiers are set on provides
|
||||
+ # but not on requires.
|
||||
+ $bundle->{VERSION} =~ s/\ =/\ >=/g;
|
||||
+ if ( !$debug ) {
|
||||
+ $list .= "osgi(" . $bundle->{NAME} . ")" . $bundle->{VERSION} . "\n";
|
||||
+ } else {
|
||||
+ $list .= $bundle->{FILE} . " osgi(" . $bundle->{NAME} . ")" . $bundle->{VERSION} . "\n";
|
||||
+ }
|
||||
+ }
|
||||
+ print $list;
|
||||
}
|
||||
|
||||
-$list = "";
|
||||
-for $bundle (@bundlelist) {
|
||||
- $list .= "osgi(".$bundle->{NAME}.")".$bundle->{VERSION}."\n";
|
||||
-}
|
||||
-# For now we dont take Require-Bundle AND Import-Package in account
|
||||
-#print $list;
|
||||
+# this function print system bundles of OSGi profile files.
|
||||
+sub getSystemBundles {
|
||||
+ foreach $file (@_) {
|
||||
+ if ( -r $file && -r $file ) {
|
||||
+ print "'$file' file not found or cannot be read!";
|
||||
+ next;
|
||||
+ } else {
|
||||
+ open( PROFILE, "$file" );
|
||||
+ while (<PROFILE>) {
|
||||
+ if ( $file =~ m/\.profile$/ ) {
|
||||
+ if (m/(^(org\.osgi\.framework\.system\.packages)[=|\ ]+)(.*)$/) {
|
||||
+ $syspkgs = "$3" . "\n";
|
||||
+ while (<PROFILE>) {
|
||||
+ if (m/^[a-z]/) {
|
||||
+ $len = length $_;
|
||||
+ seek MANIFEST, $len * -1, 1;
|
||||
+ last;
|
||||
+ }
|
||||
+ $syspkgs .= "$_";
|
||||
+ }
|
||||
+ $syspkgs =~ s/\s+//g;
|
||||
+ $syspkgs =~ s/\\//g;
|
||||
+ @bundles = split /,/, $syspkgs;
|
||||
+ foreach $bundle (@bundles) {
|
||||
+ print "osgi(" . $bundle . ")\n";
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
sub parsePkgString {
|
||||
- my $bunstr = $_[0];
|
||||
- my @return;
|
||||
+ my $bunstr = $_[0];
|
||||
+ my $file = $_[1];
|
||||
+ my @return;
|
||||
$bunstr =~ s/ //g;
|
||||
- $bunstr =~ s/\n//g;
|
||||
- $bunstr =~ s/[^[:print:]]//g;
|
||||
- $bunstr =~ s/("[[:alnum:]|\-|\_|\.|\(|\)|\[|\]]+)(,)([[:alnum:]|\-|\_|\.|\(|\)|\[|\]]+")/$1 $3/g;
|
||||
- @reqcomp = split /,/g, $bunstr;
|
||||
- foreach $reqelement (@reqcomp) {
|
||||
- @reqelementfrmnt = split /;/g, $reqelement;
|
||||
- $name="";
|
||||
- $version="";
|
||||
- $name = $reqelementfrmnt[0];
|
||||
- for $i (1 .. $#reqelementfrmnt) {
|
||||
- if ($reqelementfrmnt[$i] =~ m/(^(bundle-|)version=")(.*)(")/){
|
||||
- $version = $3;
|
||||
- last;
|
||||
- }
|
||||
- }
|
||||
- $version = parseVersion($version);
|
||||
- $version = fixVersion($version);
|
||||
- # dirty fix for provides that contain " char
|
||||
+ $bunstr =~ s/\n//g;
|
||||
+ $bunstr =~ s/[^[:print:]]//g;
|
||||
+ $bunstr =~ s/("[[:alnum:]|\-|\_|\.|\(|\)|\[|\]]+)(,)([[:alnum:]|\-|\_|\.|\(|\)|\[|\]]+")/$1 $3/g;
|
||||
+ # remove uses bundle from Export-Package attribute
|
||||
+ $bunstr =~ s/uses:="[[:alnum:]|\-|\_|\.|\(|\)|\[|\]|,]+"//g;
|
||||
+ # remove optional dependencies
|
||||
+ $bunstr =~ s/,.*;resolution:=optional//g;
|
||||
+ # remove x-friends
|
||||
+ $bunstr =~ s/;x-friends:="[[:alnum:]|\-|\_|\.|\(|\)|\[|\]|,]+"//g;
|
||||
+ # remove signatures
|
||||
+ $bunstr =~ s/Name:.*SHA1-Digest:.*//g;
|
||||
+ @reqcomp = split /,/, $bunstr;
|
||||
+ foreach $reqelement (@reqcomp) {
|
||||
+ @reqelementfrmnt = split /;/, $reqelement;
|
||||
+ $name = "";
|
||||
+ $version = "";
|
||||
+ $name = $reqelementfrmnt[0];
|
||||
$name =~ s/\"//g;
|
||||
- push @return, { NAME=>"$name", VERSION=>"$version"};
|
||||
- }
|
||||
-
|
||||
- return @return;
|
||||
+ # ignore 'system.bundle'.
|
||||
+ # see http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/porting/3.3/incompatibilities.html
|
||||
+ next if ( $name =~ m/^system\.bundle$/ );
|
||||
+ for $i ( 1 .. $#reqelementfrmnt ) {
|
||||
+ if ( $reqelementfrmnt[$i] =~ m/(^(bundle-|)version=")(.*)(")/ ) {
|
||||
+ $version = $3;
|
||||
+ last;
|
||||
+ }
|
||||
+ }
|
||||
+ $version = parseVersion($version);
|
||||
+ push @return, { FILE => "$file", NAME => "$name", VERSION => "$version" };
|
||||
+ }
|
||||
+ return @return;
|
||||
}
|
||||
|
||||
sub parseVersion {
|
||||
- my $ver = $_[0];
|
||||
- if ($ver eq "") { return "";}
|
||||
- if ($ver =~ m/(^[\[|\(])(.+)\ (.+)([\]|\)]$)/) {
|
||||
- # FIXME: The right rpm match of osgi version [1,2) seems to be <= 2
|
||||
- # but when you look at the requires >= look more permssive/correct?
|
||||
- ($1 eq "\[") ? return " >= $2" : return " > $2";
|
||||
- } else {
|
||||
- return " = $ver";
|
||||
- }
|
||||
- return $ver;
|
||||
+ my $ver = $_[0];
|
||||
+ if ( $ver eq "" ) { return ""; }
|
||||
+ if ( $ver =~ m/(^[\[|\(])(.+)\ (.+)([\]|\)]$)/ ) {
|
||||
+ if ( $1 eq "\[" ) {
|
||||
+ $ver = " >= $2";
|
||||
+ } else {
|
||||
+ $ver = " > $2";
|
||||
+ }
|
||||
+ } else {
|
||||
+ $ver = " = $ver";
|
||||
+ }
|
||||
+ # we always return a full OSGi version to be able to match 1.0
|
||||
+ # and 1.0.0 as equal in RPM.
|
||||
+ ( $major, $minor, $micro, $qualifier ) = split( '\.', $ver );
|
||||
+ if ( !defined($minor) || !$minor ) {
|
||||
+ $minor = 0;
|
||||
+ }
|
||||
+ if ( !defined($micro) || !$micro ) {
|
||||
+ $micro = 0;
|
||||
+ }
|
||||
+ if ( !defined($qualifier) || !$qualifier ) {
|
||||
+ $qualifier = "";
|
||||
+ } else {
|
||||
+ $qualifier = "." . $qualifier;
|
||||
+ }
|
||||
+ $ver = $major . "." . $minor . "." . $micro . $qualifier;
|
||||
+ return $ver;
|
||||
}
|
||||
|
||||
-sub fixVersion {
|
||||
- my $version = $_[0];
|
||||
- # remove version qualifier.
|
||||
- $version =~ s/\.v.[0-9]*.*//g;
|
||||
- # We try to match RPM version, so remove last .0
|
||||
- $version =~ s/\.0$//g;
|
||||
- return $version;
|
||||
+# this function put the max version on each bundles to be able to remove
|
||||
+# duplicate deps with 'sort -u' command.
|
||||
+sub prepareOSGiBundlesList {
|
||||
+ foreach $bundle (@_) {
|
||||
+ foreach $cmp (@_) {
|
||||
+ if ( $bundle->{NAME} eq $cmp->{NAME} ) {
|
||||
+ $result = compareVersion( $bundle->{VERSION}, $cmp->{VERSION} );
|
||||
+ if ( $result < 0 ) {
|
||||
+ $bundle->{VERSION} = $cmp->{VERSION};
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ return @_;
|
||||
}
|
||||
|
||||
+# this function returns a negative integer, zero, or a positive integer if
|
||||
+# $ver1 is less than, equal to, or greater than $ver2.
|
||||
+#
|
||||
+# REMEMBER: we mimic org.osgi.framework.Version#compareTo method but
|
||||
+# *at this time* we don't take care of the qualifier part of the version.
|
||||
+sub compareVersion {
|
||||
+ my $ver1 = $_[0];
|
||||
+ my $ver2 = $_[1];
|
||||
+
|
||||
+ $ver1 = "0.0.0" if ( $ver1 eq "" );
|
||||
+ $ver2 = "0.0.0" if ( $ver2 eq "" );
|
||||
+
|
||||
+ $ver1 =~ m/([0-9]+)(\.)([0-9]+)(\.)([0-9]+)/;
|
||||
+ $major1 = $1;
|
||||
+ $minor1 = $3;
|
||||
+ $micro1 = $5;
|
||||
+
|
||||
+ $ver2 =~ m/([0-9]+)(\.)([0-9]+)(\.)([0-9]+)/;
|
||||
+ $major2 = $1;
|
||||
+ $minor2 = $3;
|
||||
+ $micro2 = $5;
|
||||
+
|
||||
+ $result = $major1 - $major2;
|
||||
+ return $result if ( $result != 0 );
|
||||
+
|
||||
+ $result = $minor1 - $minor2;
|
||||
+ return $result if ( $result != 0 );
|
||||
+
|
||||
+ $result = $micro1 - $micro2;
|
||||
+ return $result if ( $result != 0 );
|
||||
+
|
||||
+ return $result;
|
||||
+}
|
@ -1,29 +0,0 @@
|
||||
diff --git a/rpmio/rpmpgp.c b/rpmio/rpmpgp.c
|
||||
index 3819449..eb5d627 100644
|
||||
--- a/rpmio/rpmpgp.c
|
||||
+++ b/rpmio/rpmpgp.c
|
||||
@@ -638,13 +638,13 @@ static int pgpPrtSigParams(pgpTag tag, uint8_t pubkey_algo, uint8_t sigtype,
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int pgpPrtSig(pgpTag tag, const uint8_t *h, size_t hlen, pgpDig _dig)
|
||||
+static int pgpPrtSig(pgpTag tag, const uint8_t *h, size_t hlen,
|
||||
+ pgpDig _dig, pgpDigParams _digp)
|
||||
{
|
||||
uint8_t version = h[0];
|
||||
uint8_t * p;
|
||||
size_t plen;
|
||||
int rc;
|
||||
- pgpDigParams _digp = _dig ? &_dig->signature : NULL;
|
||||
|
||||
switch (version) {
|
||||
case 3:
|
||||
@@ -1170,7 +1170,7 @@ static int pgpPrtPkt(const uint8_t *pkt, size_t pleft,
|
||||
h = pkt + 1 + plen;
|
||||
switch (tag) {
|
||||
case PGPTAG_SIGNATURE:
|
||||
- rc = pgpPrtSig(tag, h, hlen, _dig);
|
||||
+ rc = pgpPrtSig(tag, h, hlen, _dig, _digp);
|
||||
break;
|
||||
case PGPTAG_PUBLIC_KEY:
|
||||
/* Get the public key fingerprint. */
|
@ -1,39 +0,0 @@
|
||||
commit 9322f737819a3d81088699b1d7fa667259245411
|
||||
Author: Panu Matilainen <pmatilai@redhat.com>
|
||||
Date: Tue May 19 10:26:50 2009 +0300
|
||||
|
||||
Don't mess up problem altNEVR in python ts.check() (rhbz#501068)
|
||||
- the use of strrchr() silently casts away the const from the problem
|
||||
set altNEVR string, which we then happily modify..
|
||||
- similar to commit 62cc76e25cdfad78ac30bb28f626b474efdecddc
|
||||
|
||||
diff --git a/python/rpmts-py.c b/python/rpmts-py.c
|
||||
index e56e001..9877fbc 100644
|
||||
--- a/python/rpmts-py.c
|
||||
+++ b/python/rpmts-py.c
|
||||
@@ -365,7 +365,7 @@ fprintf(stderr, "*** rpmts_Check(%p) ts %p cb %p\n", s, s->ts, cbInfo.cb);
|
||||
|
||||
/* XXX TODO: rpmlib >= 4.0.3 can return multiple suggested keys. */
|
||||
while ((i = rpmpsNextIterator(psi)) >= 0) {
|
||||
- const char * needsName;
|
||||
+ char * altNEVR, * needsName;
|
||||
char * byName, * byVersion, * byRelease, *byArch;
|
||||
char * needsOP, * needsVersion;
|
||||
rpmsenseFlags needsFlags, sense;
|
||||
@@ -383,7 +383,7 @@ fprintf(stderr, "*** rpmts_Check(%p) ts %p cb %p\n", s, s->ts, cbInfo.cb);
|
||||
|
||||
key = rpmProblemGetKey(p);
|
||||
|
||||
- needsName = rpmProblemGetAltNEVR(p);
|
||||
+ altNEVR = needsName = xstrdup(rpmProblemGetAltNEVR(p));
|
||||
if (needsName[1] == ' ') {
|
||||
sense = (needsName[0] == 'C')
|
||||
? RPMDEP_SENSE_CONFLICTS : RPMDEP_SENSE_REQUIRES;
|
||||
@@ -409,6 +409,7 @@ fprintf(stderr, "*** rpmts_Check(%p) ts %p cb %p\n", s, s->ts, cbInfo.cb);
|
||||
PyList_Append(list, (PyObject *) cf);
|
||||
Py_DECREF(cf);
|
||||
free(byName);
|
||||
+ free(altNEVR);
|
||||
}
|
||||
|
||||
psi = rpmpsFreeIterator(psi);
|
27
rpm.spec
27
rpm.spec
@ -11,7 +11,7 @@
|
||||
|
||||
%define rpmhome /usr/lib/rpm
|
||||
|
||||
%define rpmver 4.7.0
|
||||
%define rpmver 4.7.1
|
||||
%define snapver {nil}
|
||||
%define srcver %{rpmver}
|
||||
|
||||
@ -21,10 +21,10 @@
|
||||
Summary: The RPM package management system
|
||||
Name: rpm
|
||||
Version: %{rpmver}
|
||||
Release: 9%{?dist}
|
||||
Release: 1%{?dist}
|
||||
Group: System Environment/Base
|
||||
Url: http://www.rpm.org/
|
||||
Source0: http://rpm.org/releases/testing/%{name}-%{srcver}.tar.bz2
|
||||
Source0: http://rpm.org/releases/rpm-4.7.x/%{name}-%{srcver}.tar.bz2
|
||||
%if %{with int_bdb}
|
||||
Source1: db-%{bdbver}.tar.gz
|
||||
%endif
|
||||
@ -39,14 +39,6 @@ Patch2: rpm-4.5.90-gstreamer-provides.patch
|
||||
Patch3: rpm-4.6.0-fedora-specspo.patch
|
||||
|
||||
# Patches already in upstream
|
||||
Patch200: rpm-4.7.0-findlang-kde3.patch
|
||||
Patch201: rpm-4.7.0-prtsig.patch
|
||||
Patch202: rpm-4.7.0-python-altnevr.patch
|
||||
Patch203: rpm-4.7.0-hardlink-sizes.patch
|
||||
Patch204: rpm-4.7.0-dwarf3.patch
|
||||
Patch205: rpm-4.7.0-osgideps.patch
|
||||
Patch206: rpm-4.7.0-fp-symlink.patch
|
||||
Patch207: rpm-4.7.0-fp-findbyfile.patch
|
||||
|
||||
# These are not yet upstream
|
||||
Patch300: rpm-4.7.0-extra-provides.patch
|
||||
@ -199,15 +191,6 @@ packages on a system.
|
||||
%patch2 -p1 -b .gstreamer-prov
|
||||
%patch3 -p1 -b .fedora-specspo
|
||||
|
||||
%patch200 -p1 -b .findlang-kde3
|
||||
%patch201 -p1 -b .prtsig
|
||||
%patch202 -p1 -b .py-altnevr
|
||||
%patch203 -p1 -b .hardlink-sizes
|
||||
%patch204 -p1 -b .dwarf3
|
||||
%patch205 -p1 -b .osgideps
|
||||
%patch206 -p1 -b .fp-symlink
|
||||
%patch207 -p1 -b .fp-findbyfile
|
||||
|
||||
%patch300 -p1 -b .extra-prov
|
||||
%patch301 -p1 -b .niagara
|
||||
|
||||
@ -421,6 +404,10 @@ exit 0
|
||||
%doc doc/librpm/html/*
|
||||
|
||||
%changelog
|
||||
* Tue Jul 21 2009 Panu Matilainen <pmatilai@redhat.com> - 4.7.1-1
|
||||
- update to 4.7.1 ((http://rpm.org/wiki/Releases/4.7.1)
|
||||
- fix source url
|
||||
|
||||
* Mon Jul 20 2009 Bill Nottingham <notting@redhat.com> - 4.7.0-9
|
||||
- enable XZ support
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user