- Upgrade to 1.16 (#448286, #999377)

- Tight run-time dependencies between sub-packages via %{?_isa}
- Added patch for spelling mistakes in popt man page (#675567)
This commit is contained in:
Robert Scheck 2013-11-24 18:58:29 +01:00
parent 84622f6e36
commit 5bf4c7fd86
9 changed files with 202 additions and 324 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
popt-1.13.tar.gz
/popt-1.16.tar.gz

View File

@ -1,121 +0,0 @@
diff -up popt-1.13/popt.c.alias-equal-arg popt-1.13/popt.c
--- popt-1.13/popt.c.alias-equal-arg 2007-12-11 20:04:06.000000000 +0200
+++ popt-1.13/popt.c 2011-06-14 11:57:21.000000000 +0300
@@ -308,8 +308,9 @@ static int handleExec(/*@special@*/ popt
/* Only one of longName, shortName may be set at a time */
static int handleAlias(/*@special@*/ poptContext con,
- /*@null@*/ const char * longName, char shortName,
- /*@exposed@*/ /*@null@*/ const char * nextCharArg)
+ /*@null@*/ const char * longName, size_t longNameLen,
+ char shortName,
+ /*@exposed@*/ /*@null@*/ const char * nextArg)
/*@uses con->aliases, con->numAliases, con->optionStack, con->os,
con->os->currAlias, con->os->currAlias->option.longName @*/
/*@modifies con @*/
@@ -319,9 +320,11 @@ static int handleAlias(/*@special@*/ pop
int i;
if (item) {
- if (longName && (item->option.longName &&
- !strcmp(longName, item->option.longName)))
+ if (longName && item->option.longName
+ && longNameLen == strlen(item->option.longName)
+ && !strncmp(longName, item->option.longName, longNameLen))
return 0;
+ else
if (shortName && shortName == item->option.shortName)
return 0;
}
@@ -331,10 +334,14 @@ static int handleAlias(/*@special@*/ pop
for (i = con->numAliases - 1; i >= 0; i--) {
item = con->aliases + i;
- if (longName && !(item->option.longName &&
- !strcmp(longName, item->option.longName)))
- continue;
- else if (shortName != item->option.shortName)
+ if (longName) {
+ if (item->option.longName == NULL)
+ continue;
+ if (longNameLen != strlen(item->option.longName))
+ continue;
+ if (strncmp(longName, item->option.longName, longNameLen))
+ continue;
+ } else if (shortName != item->option.shortName)
continue;
break;
}
@@ -343,8 +350,8 @@ static int handleAlias(/*@special@*/ pop
if ((con->os - con->optionStack + 1) == POPT_OPTION_DEPTH)
return POPT_ERROR_OPTSTOODEEP;
- if (nextCharArg && *nextCharArg)
- con->os->nextCharArg = nextCharArg;
+ if (longName == NULL && nextArg && *nextArg)
+ con->os->nextCharArg = nextArg;
con->os++;
con->os->next = 0;
@@ -352,8 +359,20 @@ static int handleAlias(/*@special@*/ pop
con->os->nextArg = NULL;
con->os->nextCharArg = NULL;
con->os->currAlias = con->aliases + i;
- rc = poptDupArgv(con->os->currAlias->argc, con->os->currAlias->argv,
- &con->os->argc, &con->os->argv);
+ { const char ** av;
+ int ac = con->os->currAlias->argc;
+ /* Append --foo=bar arg to alias argv array (if present). */
+ if (longName && nextArg && *nextArg) {
+ int i;
+ av = alloca((ac + 1 + 1) * sizeof(*av));
+ for (i = 0; i < ac; i++)
+ av[i] = con->os->currAlias->argv[i];
+ av[ac++] = nextArg;
+ av[ac] = NULL;
+ } else
+ av = con->os->currAlias->argv;
+ rc = poptDupArgv(ac, av, &con->os->argc, &con->os->argv);
+ }
con->os->argb = NULL;
return (rc ? rc : 1);
@@ -795,13 +814,6 @@ int poptGetNextOpt(poptContext con)
else
singleDash = 1;
- /* XXX aliases with arg substitution need "--alias=arg" */
- if (handleAlias(con, optString, '\0', NULL))
- continue;
-
- if (handleExec(con, optString, '\0'))
- continue;
-
/* Check for "--long=arg" option. */
for (oe = optString; *oe && *oe != '='; oe++)
{};
@@ -809,6 +821,15 @@ int poptGetNextOpt(poptContext con)
if (*oe == '=')
longArg = oe + 1;
+ /* XXX aliases with arg substitution need "--alias=arg" */
+ if (handleAlias(con, optString, optStringLen, '\0', longArg)) {
+ longArg = NULL;
+ continue;
+ }
+
+ if (handleExec(con, optString, '\0'))
+ continue;
+
opt = findOption(con->options, optString, optStringLen, '\0', &cb, &cbData,
singleDash);
if (!opt && !singleDash)
@@ -834,7 +855,7 @@ int poptGetNextOpt(poptContext con)
con->os->nextCharArg = NULL;
- if (handleAlias(con, NULL, *origOptString, origOptString + 1))
+ if (handleAlias(con, NULL, 0, *origOptString, origOptString + 1))
continue;
if (handleExec(con, NULL, *origOptString)) {

View File

@ -1,70 +0,0 @@
Kludge poptBadOption() to return something semi-meaningful on exec alias fail
- poptBadOption() is totally unaware of exec alias failures, and
will return either the first argument or last option, giving
wonderfully misleading error messages (#697435, #710267).
- Remember execvp() first argument on failure and return that
from poptBadOption() if present to give the user a reasonable
clue what exactly went wrong.
diff -up popt-1.13/popt.c.execfail popt-1.13/popt.c
--- popt-1.13/popt.c.execfail 2012-08-02 16:08:34.762315304 +0300
+++ popt-1.13/popt.c 2012-08-02 16:11:41.352683721 +0300
@@ -186,6 +186,7 @@ poptContext poptGetContext(const char *
con->flags = flags;
con->execs = NULL;
con->numExecs = 0;
+ con->execFail = NULL;
con->finalArgvAlloced = argc * 2;
con->finalArgv = calloc( con->finalArgvAlloced, sizeof(*con->finalArgv) );
con->execAbsolute = 1;
@@ -234,6 +235,7 @@ void poptResetContext(poptContext con)
con->nextLeftover = 0;
con->restLeftover = 0;
con->doExec = NULL;
+ con->execFail = _free(con->execFail);
if (con->finalArgv != NULL)
for (i = 0; i < con->finalArgvCount; i++) {
@@ -468,6 +470,7 @@ if (_popt_debug)
/*@-nullstate@*/
rc = execvp(argv[0], (char *const *)argv);
/*@=nullstate@*/
+ con->execFail = xstrdup(argv[0]);
exit:
if (argv) {
@@ -1194,11 +1197,19 @@ int poptAddItem(poptContext con, poptIte
const char * poptBadOption(poptContext con, unsigned int flags)
{
struct optionStackEntry * os = NULL;
+ const char *badOpt = NULL;
- if (con != NULL)
- os = (flags & POPT_BADOPTION_NOALIAS) ? con->optionStack : con->os;
+ if (con != NULL) {
+ /* Stupid hack to return something semi-meaningful from exec failure */
+ if (con->execFail) {
+ badOpt = con->execFail;
+ } else {
+ os = (flags & POPT_BADOPTION_NOALIAS) ? con->optionStack : con->os;
+ badOpt = os->argv[os->next - 1];
+ }
+ }
- return (os != NULL && os->argv != NULL ? os->argv[os->next - 1] : NULL);
+ return badOpt;
}
const char * poptStrerror(const int error)
diff -up popt-1.13/poptint.h.execfail popt-1.13/poptint.h
--- popt-1.13/poptint.h.execfail 2012-08-02 16:08:34.000000000 +0300
+++ popt-1.13/poptint.h 2012-08-02 16:12:35.796500122 +0300
@@ -78,6 +78,7 @@ struct poptContext_s {
/*@owned@*/ /*@null@*/
poptItem execs;
int numExecs;
+ char * execFail;
/*@only@*/ /*@null@*/
const char ** finalArgv;
int finalArgvCount;

View File

@ -1,119 +0,0 @@
Patch by Jeff Johnson <jbj@rpm5.org> for popt >= 1.13, which reverts all POPT_fprintf()
usage cases to avoid broken umlauts in --help output at some non-UTF8 locales. It should
not break anything, just restore the behaviour of popt 1.12 again to not introduce a new
regression. Clueless modified by Robert Scheck <robert@rpm5.org> to hide the last found
two locale regression as well.
--- popt-1.13/popthelp.c 2007-11-04 16:46:25.000000000 +0100
+++ popt-1.13/popthelp.c.popt_fprintf 2007-12-30 22:10:24.000000000 +0100
@@ -281,7 +281,6 @@
char * left;
size_t nb = maxLeftCol + 1;
int displaypad = 0;
- int xx;
/* Make sure there's more than enough room in target buffer. */
if (opt->longName) nb += strlen(opt->longName);
@@ -406,9 +405,9 @@
}
if (help)
- xx = POPT_fprintf(fp," %-*s ", (int)(maxLeftCol+displaypad), left);
+ fprintf(fp," %-*s ", (int)(maxLeftCol+displaypad), left);
else {
- xx = POPT_fprintf(fp," %s\n", left);
+ fprintf(fp," %s\n", left);
goto out;
}
@@ -428,18 +427,19 @@
if (ch == help) break; /* give up */
while (ch > (help + 1) && _isspaceptr(ch))
ch = POPT_prev_char (ch);
- ch++;
+ ch = POPT_next_char(ch);
sprintf(format, "%%.%ds\n%%%ds", (int) (ch - help), (int) indentLength);
/*@-formatconst@*/
- xx = POPT_fprintf(fp, format, help, " ");
+ fprintf(fp, format, help, " ");
/*@=formatconst@*/
help = ch;
- while (_isspaceptr(help) && *help) help++;
+ while (_isspaceptr(help) && *help)
+ help = POPT_next_char(help);
helpLength = strlen(help);
}
- if (helpLength) xx = POPT_fprintf(fp, "%s\n", help);
+ if (helpLength) fprintf(fp, "%s\n", help);
help = NULL;
out:
@@ -553,7 +553,6 @@
{
const struct poptOption * opt;
const char *sub_transdom;
- int xx;
if (table == poptAliasOptions) {
itemHelp(fp, con->aliases, con->numAliases, columns, NULL);
@@ -577,7 +576,7 @@
sub_transdom = translation_domain;
if (opt->descrip)
- xx = POPT_fprintf(fp, "\n%s\n", D_(sub_transdom, opt->descrip));
+ fprintf(fp, "\n%s\n", D_(sub_transdom, opt->descrip));
singleTableHelp(con, fp, opt->arg, columns, sub_transdom);
}
@@ -767,7 +766,7 @@
translation_domain = (const char *)opt->arg;
} else if ((opt->argInfo & POPT_ARG_MASK) == POPT_ARG_INCLUDE_TABLE) {
if (done) {
- int i;
+ int i = done->nopts;
if (done->opts != NULL)
for (i = 0; i < done->nopts; i++) {
const void * that = done->opts[i];
--- popt-1.13/poptint.c 2007-11-04 16:56:24.000000000 +0100
+++ popt-1.13/poptint.c.popt_fprintf 2007-12-30 22:10:24.000000000 +0100
@@ -124,6 +124,18 @@
}
}
+char *
+POPT_next_char (const char *str)
+{
+ char *p = (char *)str;
+
+ while (1) {
+ p++;
+ if ((*p & 0xc0) != (char)0x80)
+ return (char *)p;
+ }
+}
+
int
POPT_fprintf (FILE* stream, const char *format, ...)
{
--- popt-1.13/poptint.h 2007-12-11 19:02:29.000000000 +0100
+++ popt-1.13/poptint.h.popt_fprintf 2007-12-30 22:10:24.000000000 +0100
@@ -144,11 +144,14 @@
#endif
#endif
+char *POPT_prev_char (/*@returned@*/ const char *str)
+ /*@*/;
+
+char *POPT_next_char (/*@returned@*/ const char *str)
+ /*@*/;
+
int POPT_fprintf (FILE* stream, const char *format, ...)
/*@globals fileSystem @*/
/*@modifies stream, fileSystem @*/;
-char *POPT_prev_char (/*@returned@*/ const char *str)
- /*@*/;
-
#endif

71
popt-1.16-execfail.patch Normal file
View File

@ -0,0 +1,71 @@
Patch by Panu Matilainen <pmatilai@redhat.com> for popt <= 1.16 which kludges
poptBadOption() to return something semi-meaningful on exec alias fail:
- poptBadOption() is totally unaware of exec alias failures, and will return
either the first argument or last option, giving wonderfully misleading error
messages (#697435, #710267).
- Remember execvp() first argument on failure and return that from
poptBadOption() if present to give the user a reasonable clue what exactly
went wrong.
This patch was proposed to upstream: http://rpm5.org/community/popt-devel/0264.html
--- popt-1.16/popt.c 2010-01-19 01:39:10.000000000 +0100
+++ popt-1.16/popt.c.execfail 2013-11-24 15:50:06.000000000 +0100
@@ -192,6 +192,7 @@
con->flags = flags;
con->execs = NULL;
con->numExecs = 0;
+ con->execFail = NULL;
con->finalArgvAlloced = argc * 2;
con->finalArgv = calloc( (size_t)con->finalArgvAlloced, sizeof(*con->finalArgv) );
con->execAbsolute = 1;
@@ -236,6 +237,7 @@
con->nextLeftover = 0;
con->restLeftover = 0;
con->doExec = NULL;
+ con->execFail = _free(con->execFail);
if (con->finalArgv != NULL)
for (i = 0; i < con->finalArgvCount; i++) {
@@ -564,6 +566,7 @@
/*@-nullstate@*/
rc = execvp(argv[0], (char *const *)argv);
/*@=nullstate@*/
+ con->execFail = xstrdup(argv[0]);
exit:
if (argv) {
@@ -1697,11 +1700,19 @@
const char * poptBadOption(poptContext con, unsigned int flags)
{
struct optionStackEntry * os = NULL;
+ const char *badOpt = NULL;
- if (con != NULL)
- os = (flags & POPT_BADOPTION_NOALIAS) ? con->optionStack : con->os;
+ if (con != NULL) {
+ /* Stupid hack to return something semi-meaningful from exec failure */
+ if (con->execFail) {
+ badOpt = con->execFail;
+ } else {
+ os = (flags & POPT_BADOPTION_NOALIAS) ? con->optionStack : con->os;
+ badOpt = os->argv[os->next - 1];
+ }
+ }
- return (os != NULL && os->argv != NULL ? os->argv[os->next - 1] : NULL);
+ return badOpt;
}
const char * poptStrerror(const int error)
--- popt-1.16/poptint.h 2010-01-19 01:39:10.000000000 +0100
+++ popt-1.16/poptint.h.execfail 2013-11-24 15:50:38.000000000 +0100
@@ -132,6 +132,7 @@
/*@owned@*/ /*@null@*/
poptItem execs;
int numExecs;
+ char * execFail;
/*@only@*/ /*@null@*/
poptArgv finalArgv;
int finalArgvCount;

66
popt-1.16-man-page.patch Normal file
View File

@ -0,0 +1,66 @@
Patch by John Bradshaw <john@johnbradshaw.org> for popt <= 1.16 which fixes some
spelling mistakes in popt man page.
See https://bugzilla.redhat.com/show_bug.cgi?id=675567 for further details, please.
This patch was proposed to upstream: http://rpm5.org/community/popt-devel/0263.html
Upstream already corrected some issues with http://rpm5.org/cvs/chngview?cn=16879
and solved the last ones with http://rpm5.org/cvs/chngview?cn=17375 now. Thus popt
1.17 should make this patch completely obsolete.
--- popt-1.16/popt.3 2009-07-25 20:52:36.000000000 +0200
+++ popt-1.16/popt.3.man-page 2013-11-24 15:59:58.000000000 +0100
@@ -200,7 +200,7 @@
.RB "This macro includes another option table (via " POPT_ARG_INCLUDE_TABLE
; see below) in the main one which provides the table entries for these
.RB "arguments. When " --usage " or " --help " are passed to programs which
-use popt's automatical help, popt displays the appropriate message on
+use popt's automatic help, popt displays the appropriate message on
stderr as soon as it finds the option, and exits the program with a
return code of 0. If you want to use popt's automatic help generation in
a different way, you need to explicitly add the option entries to your programs
@@ -210,7 +210,7 @@
the argument will not be shown in help output.
.sp
If the \fIargInfo\fR value is bitwise or'd with \fBPOPT_ARGFLAG_SHOW_DEFAULT\fR,
-the inital value of the arg will be shown in help output.
+the initial value of the arg will be shown in help output.
.sp
The final structure in the table should have all the pointer values set
.RB "to " NULL " and all the arithmetic values set to 0, marking the "
@@ -233,7 +233,7 @@
contain a overall description of the option table being included.
.sp
The other special option table entry type tells popt to call a function (a
-callback) when any option in that table is found. This is especially usefull
+callback) when any option in that table is found. This is especially useful
when included option tables are being used, as the program which provides
the top-level option table doesn't need to be aware of the other options
which are provided by the included table. When a callback is set for
@@ -473,7 +473,7 @@
.TP
.B POPT_ERROR_BADNUMBER
A conversion from a string to a number (int or long) failed due
-to the string containing nonnumeric characters. This occurs when
+to the string containing non-numeric characters. This occurs when
.BR poptGetNextOpt() " is processing an argument of type "
.BR POPT_ARG_INT ", " POPT_ARG_SHORT ", " POPT_ARG_LONG ", " POPT_ARG_LONGLONG ", "
.RB POPT_ARG_FLOAT ", or " POPT_ARG_DOUBLE "."
@@ -517,7 +517,7 @@
applications. When an error is detected from most of the functions,
an error message is printed along with the error string from
.BR poptStrerror() ". When an error occurs during argument parsing, "
-code similiar to the following displays a useful error message:
+code similar to the following displays a useful error message:
.sp
.nf
fprintf(stderr, "%s: %s\\n",
@@ -608,7 +608,7 @@
.RI "an " argv "-style array, some programs need to parse strings that "
are formatted identically to command lines. To facilitate this, popt
provides a function that parses a string into an array of strings,
-using rules similiar to normal shell parsing.
+using rules similar to normal shell parsing.
.sp
.nf
.B "#include <popt.h>"

31
popt-1.16-pkgconfig.patch Normal file
View File

@ -0,0 +1,31 @@
Patch by Robert Scheck <robert@fedoraproject.org> for popt <= 1.16 which changes
$(pkgconfigdir) on 64 bit systems from /usr/lib/pkgconfig to /usr/lib64/pkgconfig.
Using $(libdir)/pkgconfig rather $(prefix)/lib/pkgconfig seems to be common when
searching on the Internet. This patch however is not really compliant with Fedora
/%{_lib} vs. %{_libdir} handling before the UsrMove with Fedora 17. Alternatively
--with-pkgconfigdir or similar should be implemented.
This patch was proposed to upstream: http://rpm5.org/community/popt-devel/0265.html
--- popt-1.16/Makefile.in 2010-05-04 22:55:59.000000000 +0200
+++ popt-1.16/Makefile.in.pkgconfig 2013-11-24 15:06:43.000000000 +0100
@@ -370,7 +370,7 @@
libpopt_la_SOURCES = popt.c poptparse.c poptconfig.c popthelp.c poptint.c
libpopt_la_LDFLAGS = -no-undefined @LTLIBINTL@ @LTLIBICONV@ \
$(am__append_1)
-pkgconfigdir = $(prefix)/lib/pkgconfig
+pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = popt.pc
man_MANS = popt.3
BUILT_SOURCES = popt.pc # popt.lcd
--- popt-1.16/Makefile.am 2010-05-04 22:55:54.000000000 +0200
+++ popt-1.16/Makefile.am.pkgconfig 2013-11-24 15:02:21.000000000 +0100
@@ -47,7 +47,7 @@
libpopt_la_SOURCES = popt.c poptparse.c poptconfig.c popthelp.c poptint.c
libpopt_la_LDFLAGS = -no-undefined @LTLIBINTL@ @LTLIBICONV@
-pkgconfigdir = $(prefix)/lib/pkgconfig
+pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = popt.pc
if HAVE_LD_VERSION_SCRIPT

View File

@ -1,14 +1,14 @@
Summary: C library for parsing command line parameters
Name: popt
Version: 1.13
Release: 15%{?dist}
Version: 1.16
Release: 1%{?dist}
License: MIT
Group: System Environment/Libraries
URL: http://www.rpm5.org/
Source: http://www.rpm5.org/files/%{name}/%{name}-%{version}.tar.gz
Patch1: popt-1.13-popt_fprintf.patch
Patch2: popt-1.13-alias-equal-arg.patch
Patch3: popt-1.13-execfail.patch
Patch0: popt-1.16-pkgconfig.patch
Patch1: popt-1.16-execfail.patch
Patch2: popt-1.16-man-page.patch
BuildRequires: gettext
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@ -25,7 +25,7 @@ shell-like rules.
%package devel
Summary: Development files for the popt library
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Requires: %{name}%{?_isa} = %{version}-%{release}, pkgconfig
%description devel
The popt-devel package includes header files and libraries necessary
@ -35,7 +35,7 @@ API documentation of the popt library, too.
%package static
Summary: Static library for parsing command line parameters
Group: Development/Libraries
Requires: %{name}-devel = %{version}-%{release}
Requires: %{name}-devel%{?_isa} = %{version}-%{release}
%description static
The popt-static package includes static libraries of the popt library.
@ -43,18 +43,23 @@ Install it if you need to link statically with libpopt.
%prep
%setup -q
%patch1 -p1 -b .popt_fprintf
%patch2 -p1 -b .alias-equal-arg
%patch3 -p1 -b .execfail
%patch0 -p1 -b .pkgconfig
%patch1 -p1 -b .execfail
%patch2 -p1 -b .man-page
%build
%if 0%{?fedora} < 17 && 0%{?rhel} < 7
%configure --libdir=/%{_lib}
%else
%configure
%endif
make %{?_smp_mflags}
%install
rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT install
%if 0%{?fedora} < 17 && 0%{?rhel} < 7
# Move libpopt.{so,a} to %{_libdir}
rm -f $RPM_BUILD_ROOT/%{_lib}/libpopt.{la,so}
pushd $RPM_BUILD_ROOT/%{_lib}
@ -62,6 +67,10 @@ mkdir -p $RPM_BUILD_ROOT%{_libdir}
ln -sf ../../%{_lib}/$(ls libpopt.so.?.?.?) $RPM_BUILD_ROOT%{_libdir}/libpopt.so
popd
mv -f $RPM_BUILD_ROOT/%{_lib}/libpopt.a $RPM_BUILD_ROOT%{_libdir}/libpopt.a
mv -f $RPM_BUILD_ROOT/%{_lib}/pkgconfig $RPM_BUILD_ROOT%{_libdir}/pkgconfig
%else
rm -f $RPM_BUILD_ROOT/%{_libdir}/libpopt.la
%endif
# Multiple popt configurations are possible
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/popt.d
@ -79,23 +88,33 @@ make check
%postun -p /sbin/ldconfig
%files -f %{name}.lang
%defattr(-,root,root)
%defattr(-,root,root,-)
%doc CHANGES COPYING
%{_sysconfdir}/popt.d
%if 0%{?fedora} < 17 && 0%{?rhel} < 7
/%{_lib}/libpopt.so.*
%else
%{_libdir}/libpopt.so.*
%endif
%files devel
%defattr(-,root,root)
%defattr(-,root,root,-)
%doc README
%{_libdir}/libpopt.so
%{_libdir}/pkgconfig/%{name}.pc
%{_includedir}/popt.h
%{_mandir}/man3/popt.3*
%files static
%defattr(-,root,root)
%defattr(-,root,root,-)
%{_libdir}/libpopt.a
%changelog
* Sun Nov 24 2013 Robert Scheck <robert@fedoraproject.org> 1.16-1
- Upgrade to 1.16 (#448286, #999377)
- Tight run-time dependencies between sub-packages via %%{?_isa}
- Added patch for spelling mistakes in popt man page (#675567)
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.13-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild

View File

@ -1 +1 @@
b5c47ce0185c83f947953c77000533bf popt-1.13.tar.gz
3743beefa3dd6247a73f8f7a32c14c33 popt-1.16.tar.gz