Commit 75904005 authored by Bernhard Link's avatar Bernhard Link

Import reprepro_5.2.0.orig.tar.gz

parents ea3eecd6 16189f8f
2018-08-26 Bernhard R. Link <brlink@debian.org>
* mark .lz support as deprecated
2018-08-12 Bernhard R. Link <brlink@debian.org>
* allow to set Signed-By header via conf/distributions
* add _listcodenames command (based on work from Benjamin Drung)
* drop "FILE LOCATION" headers from Contents files
* multiple manpage fixes
(thanks to Paul Wise, Simon Kainz, Christoph Biedl)
2017-03-02 Bernhard R. Link <brlink@debian.org>
* handle .asc files in source files better
(thanks to Marc Laue)
2017-01-31 <flapflap@riseup.net>
* allow '+' character in method-URI
2016-12-28 Bernhard R. Link <brlink@debian.org>
* improve error handling when extracting .deb file contents
......
This diff is collapsed.
Updates between 5.1.1 and 5.2.0:
- mark .lz support as deprecated
- add _listcodenames command
- allow to set Signed-By header via conf/distributions
- add support for .asc files in source packages
- some documentation improvements
- allow '+' character in method-URI
Updates between 5.1.0 and 5.1.1:
- improve error handling when extracting .deb file contents
- fix many spelling mistakes
......
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
scriptversion=2012-10-14.11; # UTC
scriptversion=2018-03-07.03; # UTC
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
......@@ -17,7 +17,7 @@ scriptversion=2012-10-14.11; # UTC
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
......@@ -255,7 +255,8 @@ EOF
echo "compile $scriptversion"
exit $?
;;
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
......@@ -339,9 +340,9 @@ exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2013-05-30.07; # UTC
scriptversion=2018-03-07.03; # UTC
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
......@@ -16,7 +16,7 @@ scriptversion=2013-05-30.07; # UTC
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
......@@ -783,9 +783,9 @@ exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2014-09-12.12; # UTC
scriptversion=2018-03-11.20; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
......@@ -271,15 +271,18 @@ do
fi
dst=$dst_arg
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
# If destination is a directory, append the input filename.
if test -d "$dst"; then
if test "$is_target_a_directory" = never; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstbase=`basename "$src"`
case $dst in
*/) dst=$dst$dstbase;;
*) dst=$dst/$dstbase;;
esac
dstdir_status=0
else
dstdir=`dirname "$dst"`
......@@ -288,6 +291,11 @@ do
fi
fi
case $dstdir in
*/) dstdirslash=$dstdir;;
*) dstdirslash=$dstdir/;;
esac
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
......@@ -324,14 +332,16 @@ do
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
# $RANDOM is not portable (e.g. dash); use it when possible to
# lower collision chance
# Note that $RANDOM variable is not portable (e.g. dash); Use it
# here however when possible just to lower collision chance.
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
# As "mkdir -p" follows symlinks and we work in /tmp possibly; so
# create the $tmpdir first (and fail if unsuccessful) to make sure
# that nobody tries to guess the $tmpdir name.
# Because "mkdir -p" follows existing symlinks and we likely work
# directly in world-writeable /tmp, make sure that the '$tmpdir'
# directory is successfully created first before we actually test
# 'mkdir -p' feature.
if (umask $mkdir_umask &&
$mkdirprog $mkdir_mode "$tmpdir" &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
......@@ -434,8 +444,8 @@ do
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
dsttmp=${dstdirslash}_inst.$$_
rmtmp=${dstdirslash}_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
......@@ -500,9 +510,9 @@ do
done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
#! /bin/sh
# Common wrapper for a few potentially missing GNU programs.
scriptversion=2013-10-28.13; # UTC
scriptversion=2018-03-07.03; # UTC
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
......@@ -17,7 +17,7 @@ scriptversion=2013-10-28.13; # UTC
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
......@@ -101,9 +101,9 @@ else
exit $st
fi
perl_URL=http://www.perl.org/
flex_URL=http://flex.sourceforge.net/
gnu_software_URL=http://www.gnu.org/software
perl_URL=https://www.perl.org/
flex_URL=https://github.com/westes/flex
gnu_software_URL=https://www.gnu.org/software
program_details ()
{
......@@ -207,9 +207,9 @@ give_advice "$1" | sed -e '1s/^/WARNING: /' \
exit $st
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
This diff is collapsed.
......@@ -219,7 +219,7 @@ retvalue aptmethod_newmethod(struct aptmethodrun *run, const char *uri, const ch
method->child = -1;
method->status = ams_notstarted;
p = uri;
while (*p != '\0' && (*p == '_' || *p == '-' ||
while (*p != '\0' && (*p == '_' || *p == '-' || *p == '+' ||
(*p>='a' && *p<='z') || (*p>='A' && *p<='Z') ||
(*p>='0' && *p<='9'))) {
p++;
......
......@@ -201,6 +201,7 @@ retvalue changes_parsefileline(const char *fileline, /*@out@*/filetype *result_t
} else {
enum compression c;
const char *eoi;
bool issignature = false;
/* without those, it gets more complicated.
* It's not .deb or .udeb, so most likely a
......@@ -209,6 +210,10 @@ retvalue changes_parsefileline(const char *fileline, /*@out@*/filetype *result_t
/* if it uses a known compression, things are easy,
* so try this first: */
if (l > 4 && memcmp(versionstart + l - 4, ".asc", 4) == 0 ) {
issignature = true;
l -= 4;
}
c = compression_by_suffix(versionstart, &l);
p = versionstart + l;
......@@ -220,6 +225,9 @@ retvalue changes_parsefileline(const char *fileline, /*@out@*/filetype *result_t
} else if (l > 4 && strncmp(p-4, ".tar", 4) == 0) {
type = fe_TAR;
eoi = p - 4;
} else if (issignature) {
/* only .tar.* files are allowed to have .asc files: */
issignature = false;
} else if (l > 5 && strncmp(p-5, ".diff", 5) == 0) {
type = fe_DIFF;
eoi = p - 5;
......@@ -275,6 +283,8 @@ retvalue changes_parsefileline(const char *fileline, /*@out@*/filetype *result_t
return RET_ERROR;
}
if (issignature)
type = fe_SIG;
} else {
/* everything else is assumed to be source */
checkfilename = true;
......
......@@ -9,6 +9,7 @@ typedef enum {
fe_UNKNOWN=0,
fe_DEB, fe_UDEB,
fe_DSC, fe_DIFF, fe_ORIG, fe_TAR,
fe_SIG,
fe_ALTSRC,
fe_BYHAND, fe_LOG, fe_CHANGES,
fe_BUILDINFO
......@@ -16,7 +17,7 @@ typedef enum {
#define FE_PACKAGE(ft) ((ft) == fe_DEB || (ft) == fe_UDEB || (ft) == fe_DSC)
#define FE_BINARY(ft) ((ft) == fe_DEB || (ft) == fe_UDEB)
#define FE_SOURCE(ft) ((ft) == fe_DIFF || (ft) == fe_ORIG || (ft) == fe_TAR || (ft) == fe_DSC || (ft) == fe_UNKNOWN || (ft) == fe_ALTSRC)
#define FE_SOURCE(ft) ((ft) == fe_DIFF || (ft) == fe_ORIG || (ft) == fe_TAR || (ft) == fe_DSC || (ft) == fe_UNKNOWN || (ft) == fe_ALTSRC || (ft) == fe_SIG)
struct hash_data;
retvalue changes_parsefileline(const char * /*fileline*/, /*@out@*/filetype *, /*@out@*/char ** /*result_basename*/, /*@out@*/struct hash_data *, /*@out@*/struct hash_data *, /*@out@*/char ** /*result_section*/, /*@out@*/char ** /*result_priority*/, /*@out@*/architecture_t *, /*@out@*/char ** /*result_name*/);
......
......@@ -883,7 +883,6 @@ static retvalue changes_check(const struct distribution *distribution, const cha
havealtsrc = true;
}
}
if (havetar && !haveorig && havediff) {
fprintf(stderr,
"I don't know what to do having a .tar.gz not being a .orig.tar.gz and a .diff.gz in '%s'!\n",
......@@ -905,6 +904,36 @@ static retvalue changes_check(const struct distribution *distribution, const cha
return RET_ERROR;
}
/* check if signatures match files signed: */
for (e = changes->files ; e != NULL ; e = e->next) {
size_t el;
struct fileentry *f;
if (e->type != fe_SIG)
continue;
el = strlen(e->basename);
if (el <= 4 || memcmp(e->basename + el - 4, ".asc", 4) != 0)
continue;
for (f = changes->files ; f != NULL ; f = f->next) {
size_t fl = strlen(f->basename);
if (el != fl + 4)
continue;
if (memcmp(e->basename, f->basename, fl) != 0)
continue;
break;
}
if (f == NULL) {
fprintf(stderr,
"Signature file without file to be signed: '%s'!\n",
e->basename);
return RET_ERROR;
}
}
return r;
}
......
......@@ -825,7 +825,7 @@ retvalue config_geturl(struct configiterator *iter, const char *header, char **r
return RET_ERROR;
}
p = value;
while (*p != '\0' && (*p == '_' || *p == '-' ||
while (*p != '\0' && (*p == '_' || *p == '-' || *p == '+' ||
(*p>='a' && *p<='z') || (*p>='A' && *p<='Z') ||
(*p>='0' && *p<='9'))) {
p++;
......
This diff is collapsed.
......@@ -2,7 +2,7 @@ dnl
dnl Process this file with autoconf to produce a configure script
dnl
AC_INIT(reprepro, 5.1.1, brlink@debian.org)
AC_INIT(reprepro, 5.2.0, brlink@debian.org)
AC_CONFIG_SRCDIR(main.c)
AC_CONFIG_AUX_DIR(ac)
AM_INIT_AUTOMAKE([-Wall -Werror -Wno-portability])
......
......@@ -55,6 +55,7 @@ static retvalue distribution_free(struct distribution *distribution) {
free(distribution->butautomaticupgrades);
free(distribution->label);
free(distribution->description);
free(distribution->signed_by);
free(distribution->deb_override);
free(distribution->udeb_override);
free(distribution->dsc_override);
......@@ -398,6 +399,7 @@ CFallSETPROC(distribution, butautomaticupgrades)
CFtruthSETPROC2(distribution, readonly, readonly)
CFallSETPROC(distribution, label)
CFallSETPROC(distribution, description)
CFallSETPROC(distribution, signed_by)
CFsignwithSETPROC(distribution, signwith)
CFfileSETPROC(distribution, deb_override)
CFfileSETPROC(distribution, udeb_override)
......@@ -464,6 +466,7 @@ static const struct configfield distributionconfigfields[] = {
CF("DebIndices", distribution, deb),
CF("DebOverride", distribution, deb_override),
CF("Description", distribution, description),
CF("Signed-By", distribution, signed_by),
CF("DscIndices", distribution, dsc),
CF("DscOverride", distribution, dsc_override),
CF("FakeComponentPrefix", distribution, fakecomponentprefix),
......
......@@ -43,7 +43,7 @@ struct distribution {
* (and only for sanity checks) */
/*@null@*/char *suite, *version;
/*@null@*/char *origin, *label, *description,
*notautomatic, *butautomaticupgrades;
*notautomatic, *butautomaticupgrades, *signed_by;
/* What architectures and components are there */
struct atomlist architectures, components;
/* which update rules to use */
......
# Makefile.in generated by automake 1.15 from Makefile.am.
# Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
......@@ -264,8 +264,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
......@@ -326,7 +326,10 @@ ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
......
......@@ -122,7 +122,7 @@ This is permanent data, no cache. One has almost to regenerate the whole
repository when this is lost.
.TP
.B \-\-listdir \fIlistdir\fP
Sets the directory where downloads it downloads indices to when importing
Sets the directory where it downloads indices to when importing
from other repositories. This is temporary data and can be safely deleted
when not in an update run.
......@@ -387,6 +387,7 @@ If the program is not found or is \fBNONE\fP (all-uppercase) then uncompressing
lz files will not be possible.
The program has to accept the compressed file as stdin and write
the uncompressed file into stdout.
Note that .lz support is \fBDEPRECATED\fP and will be removed in the future.
.TP
.BI \-\-list\-max " count"
Limits the output of \fBlist\fP, \fBlistmatched\fP and \fBlistfilter\fP to the first \fIcount\fP
......@@ -920,6 +921,8 @@ copied.
.B restoresrc \fIcodename\fP \fIsnapshot\fP \fIsource-epackage\fP \fR[\fP\fIversions\fP\fR]\fP
.TP
.B restorefilter \fIdestination-codename\fP \fIsnapshot\fP \fIformula\fP
.TP
.B restorematched \fIdestination-codename\fP \fIsnapshot\fP \fIglob\fP
Like the copy commands, but do not copy from another distribution,
but from a snapshot generated with \fBgensnapshot\fP.
Note that this blindly trusts the contents of the files in your \fBdists/\fP
......@@ -1138,6 +1141,9 @@ List what compressions format can be uncompressed and how.
Use builtin or external uncompression to uncompress the specified
file of the specified format into the specified target.
.TP
.BR _listcodenames
Print - on per line - the codenames of all configured distributions.
.TP
.B _listconfidentifiers \fIidentifier\fP \fR[\fP \fIdistributions...\fP \fR]\fP
Print - one per line - all identifiers of subdatabases as derived from the
configuration.
......@@ -1241,24 +1247,32 @@ Also if a component starts with it, its directory in the dists dir
is shortened by this.
.br
So \fB
Codename: bla/updates
Suite: foo/updates
FakeComponentPrefix: updates
Components: main bad
\fP will create a Release file with \fB
Components: main bad\fP
will create a Release file with \fB
Codename: bla
Suite: foo
Components: updates/main updates/bad
\fP in it, but otherwise nothing is changed, while\fB
Components: updates/main updates/bad\fP
in it, but otherwise nothing is changed, while\fB
Codename: bla/updates
Suite: foo/updates
FakeComponentPrefix: updates
Components: updates/main updates/bad
\fP will also create a Release file with \fB
Components: updates/main updates/bad\fP
will also create a Release file with \fB
Codename: bla
Suite: foo
Components: updates/main updates/bad
\fP but the packages will actually be in the components
Components: updates/main updates/bad\fP
but the packages will actually be in the components
\fBupdates/main\fP and \fBupdates/bad\fP,
most likely causing the same file using duplicate storage space.
......@@ -1612,6 +1626,12 @@ the section (usually \fBbyhand\fP),
the priority (usually only \fB\-\fP),
the filename in the changes file and
the full filename (with processincoming in the secure TempDir).
.TP
.B Signed\-By
This optional field is simply copied into the Release files.
It is used to tell apt which keys to trust for this Release
in the future.
(see SignWith for how to tell reprepro whether and how to sign).
.SS conf/updates
.TP
.B Name
......@@ -1771,51 +1791,83 @@ See the description of the listfilter command for the semantics
of formulas.
.TP
.B FilterList\fR, \fPFilterSrcList
These take at least two arguments:
The first one is the default action when something is not found in the list,
then a list of filenames (relative to
These two options each take at least two arguments:
The first argument is the fallback (default) action.
All following arguments are treated as file names of lists.
The filenames are considered to be relative to
.B \-\-confdir\fR,
if not starting with
.BR ~/ ", " +b/ ", " +c/ " or " / " )"
in the format of dpkg \-\-get\-selections and only packages listed in
there as
.BR ~/ ", " +b/ ", " +c/ " or " / "."
Each list file consists of lines with a package name
followed by whitespaced followed by an action.
Each list may only contain a single line for a given package name.
The action to be taken is the action specified by the first file
mentioning that package.
If no list file mentions a package, the fallback action is used instead.
This format is inspired by dpkg \-\-get\-selections before multiarch
and the names of the actions likely only make sense if you imagine the
file to be the output of this command of an existing system.
For each package available in the distribution to be updated from/pulled from
this action is determined and affects the current decision what to do
to the target distribution.
(Only after all update/pull rules for a given target distribution have been
processed something is actually done).
The possible action keywords are:
.RS
.TP
.B install
or that are already there and are listed with
mark the available package to be added to the target distribution unless
the same version or a higher version is already marked as to be added/kept.
(Note that without a prior delete rule (\fB\-\fP) or \fBsupersede\fP action,
this will will never downgrade a package as the already existing version
is marked to be kept).
.TP
.B upgradeonly
will be installed. Things listed as
.B deinstall
or
.B purge
will be ignored.
Packages having
like \fBinstall\fP but will not add new packages to a distribution.
.TP
.B supersede
will not be installed but instead cause the removal of packages with strictly
smaller version (i.e. if a package would be replaced by this package if this
was
.BR install ,
it will be removed instead and no new package being installed).
Things listed with
unless the current package version is higher than the available package version,
mark the package to be deleted in the target distribution.
(Useful to remove packages in add-on distributions once they reached the base distribution).
.TP
.BR deinstall " or " purge
ignore the newly available package.
.TP
.B warning
are also ignored,
but a warning message is printed to stderr.
A package being
print a warning message to stderr if a new package/newer version is available.
Otherwise ignore the new package (like with \fBdeinstall\fP or \fBpurge\fP).
.TP
.B hold
will not be upgraded but also not downgraded or removed by previous
delete rules.
To abort the whole upgrade/pull if a package is available, use
.B error\fR.
Instead of a keyword you can also use "\fB= \fP\fIversion\fP" which
is treated like \fBinstall\fP if the version matches and like no
entry if it does not match.
the new package is ignored, but every previous decision to
downgrade or delete the package in the target distribution is reset.
.TP
.B error
abort the whole upgrade/pull if a new package/newer version is available
.TP
.B "= \fIversion\fP"
If the candidate package has the given version, behave like \fBinstall\fP.
Otherwise continue as if this list file did not mention this package
(i.e. look in the remaining list files or use the fallback action).
Only one such entry per package is currently supported and the version
is currently compared as string.
.RE
.PP
.RS
If there is both \fBFilterList\fP and \fBFilterSrcList\fP then
the first is used for \fB.deb\fP and \fB.udeb\fP and the second for
\fB.dsc\fP packages.
.PP
If there is only \fBFilterList\fP that is applied to everything.
.PP
If there is only \fBFilterSrcList\fP that is applied to everything, too,
but the source package name (and source version) is used to do the lookup.
.RE
.TP
.B OmitExtraSourceOnly
This field controls whether source packages with Extra-Source-Only
......@@ -1861,9 +1913,9 @@ The arguments of this field specify which index files reprepro
will download.
Allowed values are
.BR . ", " .gz ", " .bz2 ", " .lzma ", " .xz ", " .lz ", " .diff ", "
.BR force.gz ", " force.bz2 ", " force.lzma ", " force.xz ", "
.BR force.lz ", and " force.diff "."
.BR . ", " .gz ", " .bz2 ", " .lzma ", " .xz ", " .diff ", "
.BR force.gz ", " force.bz2 ", " force.lzma ", "
.BR force.xz ", and " force.diff "."
Reprepro will try the first supported variant in the list given:
Only compressions compiled in or for which an uncompressor was found
......@@ -2015,7 +2067,7 @@ files.
.B TempDir
A directory where the files listed in the processed .changes files
are copied into before they are read.
You can avoid some copy operatations by placing this directory
You can avoid some copy operations by placing this directory
within the same moint point the pool hierarchy
is (at least partially) in.
.TP
......
......@@ -351,6 +351,7 @@ _reprepro()
_fakeemptyfilelist\
_forget\
_listchecksums\
_listcodenames\
_listconfidentifiers\
_listdbidentifiers\
_listmd5sums\
......@@ -415,7 +416,7 @@ _reprepro()
fi
;;
collectnewchecksums|cleanlists)
collectnewchecksums|cleanlists|_listcodenames)
return 0
;;
......
......@@ -273,6 +273,7 @@ hiddencommands=(
_fakeemptyfilelist:"create an empty fake filelist cache item for a filekey"
_forget:"forget a file specified by filekey."
_listchecksums:"print a list of filekeys and their checksums"
_listcodenames:"list configured codenames"
_listconfidentifiers:"list parts of the repository in the configuration"
_listdbidentifiers:"list parts of the repository in the database"
_listmd5sums:"print a list of filekeys and their md5 hashes"
......@@ -388,7 +389,7 @@ case "$state" in
fi
;;
(cleanlists|clearvanished|dumpreferences|dumpunreferened|deleteunreferenced|_listmd5sums|_listchecksums|_addmd5sums|_addchecksums|__dumpuncompressors|transatelegacychecksums)
(cleanlists|clearvanished|dumpreferences|dumpunreferened|deleteunreferenced|_listmd5sums|_listchecksums|_addmd5sums|_addchecksums|__dumpuncompressors|transatelegacychecksums|_listcodenames)
;;
(_dumpcontents|_removereferences)
if [[ "$state" = "first argument" ]] ; then
......
......@@ -488,7 +488,6 @@ retvalue fakefilelist(const char *filekey) {
"", 1, true, false);
}
static const char header[] = "FILE LOCATION\n";
static const char separator_chars[] = "\t ";
static void filelist_writefiles(char *dir, size_t len,
......@@ -562,7 +561,6 @@ retvalue filelist_write(struct filelist_list *list, struct filetorelease *file)
if (FAILEDTOALLOC(buffer))
return RET_ERROR_OOM;
(void)release_writedata(file, header, sizeof(header) - 1);
buffer[0] = '\0';
filelist_writefiles(buffer, 0, list->root->files, file);
if (list->root->subdirs != NULL)
......
......@@ -328,7 +328,7 @@ CFSETPROC(incoming, allow) {
CFSETPROC(incoming, permit) {
CFSETPROCVARS(incoming, i, d);
static const struct constant const permitconstants[] = {
static const struct constant permitconstants[] = {
{ "unused_files", pmf_unused_files},
{ "older_version", pmf_oldpackagenewer},
{ "unlisted_binaries", pmf_unlistedbinaries},
......@@ -358,7 +358,7 @@ CFSETPROC(incoming, permit) {
CFSETPROC(incoming, cleanup) {
CFSETPROCVARS(incoming, i, d);
static const struct constant const cleanupconstants[] = {
static const struct constant cleanupconstants[] = {
{ "unused_files", cuf_unused_files},
{ "unused_buildinfo_files", cuf_unused_buildinfo_files},
{ "on_deny", cuf_on_deny},
......@@ -388,7 +388,7 @@ CFSETPROC(incoming, cleanup) {
CFSETPROC(incoming, options) {
CFSETPROCVARS(incoming, i, d);
static const struct constant const optionsconstants[] = {
static const struct constant optionsconstants[] = {
{ "limit_arch_all", iof_limit_arch_all},
{ "multiple_distributions", iof_multiple_distributions},
{ NULL, -1}
......@@ -1443,6 +1443,35 @@ static retvalue prepare_dsc(const struct incoming *i, const struct candidate *c,
r = properfilenames(&file->dsc.files.names);
if (RET_WAS_ERROR(r))
return r;
/* check if signatures match files signed: */
for (j = 0 ; j < file->dsc.files.names.count ; j++) {
int jj;
const char *afn = file->dsc.files.names.values[j];
size_t al = strlen(afn);
bool found = false;
if (al <= 4 || memcmp(afn + al - 4, ".asc", 4) != 0)
continue;
for (jj = 0 ; jj < file->dsc.files.names.count ; jj++) {
const char *fn = file->dsc.files.names.values[jj];
size_t l = strlen(fn);
if (l + 4 != al)
continue;
if (memcmp(afn, fn, l) != 0)