RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson
Root: /v/rpm/cvs Email: jbj@rpm5.org
Module: rpm Date: 22-Sep-2007 19:40:54
Branch: HEAD Handle: 2007092218405400
Modified files:
rpm CHANGES build.c
Log:
- don't punish monkeys who insist on "My Widdle .spec" naming.
- permit -ta spec file extraction from zip/lzo/lzma compressed balls.
- add %{?__tar_wildcards} to pass Fedora automated regression tests.
- use %{__tar} with -ta builds to assist morons who cannot set PATH.
Summary:
Revision Changes Path
1.1637 +4 -0 rpm/CHANGES
2.108 +20 -19 rpm/build.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.1636 -r1.1637 CHANGES
--- rpm/CHANGES 22 Sep 2007 16:06:05 -0000 1.1636
+++ rpm/CHANGES 22 Sep 2007 17:40:54 -0000 1.1637
@@ -1,4 +1,8 @@
4.5 -> 5.0:
+ - jbj: don't punish monkeys who insist on "My Widdle .spec" naming.
+ - jbj: permit -ta spec file extraction from zip/lzo/lzma compressed balls.
+ - jbj: add %{?__tar_wildcards} to pass Fedora automated regression tests.
+ - jbj: use %{__tar} with -ta builds to assist morons who cannot set PATH.
- jbj: add %{mkstemp: ... } macro primitive.
- rse: fix po/POTFILES.in and tools/Makefile.am to reflect recent changes (fixes "make dist", too)
- rpm.org: cleanup main() definitions in tests and tools
@@ .
patch -p0 <<'@@ .'
Index: rpm/build.c
============================================================================
$ cvs diff -u -r2.107 -r2.108 build.c
--- rpm/build.c 22 Sep 2007 16:06:05 -0000 2.107
+++ rpm/build.c 22 Sep 2007 17:40:54 -0000 2.108
@@ -126,48 +126,49 @@
const char * specDir;
char * tmpSpecFile;
char * cmd, * s;
- rpmCompressedMagic res = COMPRESSED_OTHER;
- /*@observer@*/ static const char *zcmds[] =
- { "cat", "gunzip", "bunzip2", "cat" };
+ int xx;
specDir = rpmGetPath("%{_specdir}", NULL);
tmpSpecFile = (char *) rpmGetPath(_specfn, NULL);
- (void) isCompressed(arg, &res);
+ cmd = rpmExpand("%{uncompress:", arg, "} | %{__tar} -xOvf - %{?__tar_wildcards} ", "Specfile", " 2>&1 > '", tmpSpecFile, "'", NULL);
- cmd = alloca(strlen(arg) + 50 + strlen(tmpSpecFile));
- sprintf(cmd, "%s < %s | tar xOvf - Specfile 2>&1 > %s",
- zcmds[res & 0x3], arg, tmpSpecFile);
- if (!(fp = popen(cmd, "r"))) {
+ if ((fp = popen(cmd, "r")) == NULL) {
rpmError(RPMERR_POPEN, _("Failed to open tar pipe: %m\n"));
- specDir = _free(specDir);
+ cmd = _free(cmd);
tmpSpecFile = _free(tmpSpecFile);
+ specDir = _free(specDir);
return 1;
}
- if ((!fgets(buf, sizeof(buf) - 1, fp)) || !strchr(buf, '/')) {
+ s = fgets(buf, sizeof(buf) - 1, fp);
+ if (!s || !*s || strstr(s, ": Not found in archive")) {
/* Try again */
(void) pclose(fp);
+ cmd = _free(cmd);
- sprintf(cmd, "%s < %s | tar xOvf - \\*.spec 2>&1 > %s",
- zcmds[res & 0x3], arg, tmpSpecFile);
+ cmd = rpmExpand("%{uncompress:", arg, "} | %{__tar} -xOvf - %{?__tar_wildcards} ", "\\*.spec", " 2>&1 > '", tmpSpecFile, "'", NULL);
if (!(fp = popen(cmd, "r"))) {
rpmError(RPMERR_POPEN, _("Failed to open tar pipe: %m\n"));
- specDir = _free(specDir);
+ cmd = _free(cmd);
tmpSpecFile = _free(tmpSpecFile);
+ specDir = _free(specDir);
return 1;
}
- if (!fgets(buf, sizeof(buf) - 1, fp)) {
+ s = fgets(buf, sizeof(buf) - 1, fp);
+ if (!s || !*s || strstr(s, ": Not found in archive")) {
/* Give up */
rpmError(RPMERR_READ, _("Failed to read spec file from %s\n"),
arg);
- (void) unlink(tmpSpecFile);
- specDir = _free(specDir);
+ xx = unlink(tmpSpecFile);
+ cmd = _free(cmd);
tmpSpecFile = _free(tmpSpecFile);
+ specDir = _free(specDir);
return 1;
}
}
(void) pclose(fp);
+ cmd = _free(cmd);
cmd = s = buf;
while (*cmd != '\0') {
@@ -183,13 +184,13 @@
specURL = s = alloca(strlen(specDir) + strlen(cmd) + 5);
sprintf(s, "%s/%s", specDir, cmd);
- res = rename(tmpSpecFile, s);
+ xx = Rename(tmpSpecFile, s);
specDir = _free(specDir);
- if (res) {
+ if (xx) {
rpmError(RPMERR_RENAME, _("Failed to rename %s to %s: %m\n"),
tmpSpecFile, s);
- (void) unlink(tmpSpecFile);
+ xx = Unlink(tmpSpecFile);
tmpSpecFile = _free(tmpSpecFile);
return 1;
}
@@ .
Received on Sat Sep 22 19:40:54 2007