diff options
author | Luke Shumaker <LukeShu@sbcglobal.net> | 2014-06-17 19:24:48 -0400 |
---|---|---|
committer | Luke Shumaker <LukeShu@sbcglobal.net> | 2014-06-17 19:24:48 -0400 |
commit | 827e305df0f565d7da844684290323a75bf081a6 (patch) | |
tree | 9753469d58a11b434d8da109c00a23c0e721a52d /db-list-unsigned-packages.py | |
parent | d42f5c6ab02a861ef548ae12fe403f61e2b02e4f (diff) | |
parent | 1d5db10302f0a0517c022fae4b6a66862eb7e2cf (diff) |
Merge branch 'lukeshu/archlinux+xbs+merge-parabola' into lukeshu/archlinux+xbs+db-import
Diffstat (limited to 'db-list-unsigned-packages.py')
-rwxr-xr-x | db-list-unsigned-packages.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/db-list-unsigned-packages.py b/db-list-unsigned-packages.py new file mode 100755 index 0000000..36be93a --- /dev/null +++ b/db-list-unsigned-packages.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 +# Copyright (C) 2012 Michał Masłowski <mtjm@mtjm.eu> +# +# 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 +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero 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/>. + + +""" +Output a list of repo/package-name-and-version pairs representing +unsigned packages in the database at standard input of repo named in +the first argument and specified for architectures listed in the +following arguments (usually the one of the database or any, default +is to list all). +""" + + +import sys +import tarfile + + +def main(): + """Do the job.""" + repo = sys.argv[1] + pkgarches = frozenset(name.encode("utf-8") for name in sys.argv[2:]) + with tarfile.open(fileobj=sys.stdin.buffer) as archive: + for entry in archive: + if entry.name.endswith("/desc"): + content = archive.extractfile(entry) + skip = False + is_arch = False + for line in content: + if is_arch: + is_arch = False + if pkgarches and line.strip() not in pkgarches: + skip = True # different architecture + break + if line == b"%PGPSIG%\n": + skip = True # signed + break + if line == b"%ARCH%\n": + is_arch = True + if skip: + continue + print(repo + "/" + entry.name[:-5]) + + +if __name__ == "__main__": + main() |