From 2dac56fa282645031eb29860abc403e983a04b2d Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 17 Mar 2012 09:44:03 -0700 Subject: [PATCH] Manifest: filter file names with repoman's regex This makes Manifest generation consistent with repoman, which is necessary if repoman is going to ignore irrelevant files as requested in bug #406877. --- bin/repoman | 3 ++- pym/portage/manifest.py | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/bin/repoman b/bin/repoman index 3f16603f8..ffedf2e21 100755 --- a/bin/repoman +++ b/bin/repoman @@ -69,6 +69,8 @@ from portage import cvstree, normalize_path from portage import util from portage.exception import (FileNotFound, MissingParameter, ParseError, PermissionDenied) +from portage.manifest import _prohibited_filename_chars_re as \ + disallowed_filename_chars_re from portage.process import find_binary, spawn from portage.output import bold, create_color_func, \ green, nocolor, red @@ -85,7 +87,6 @@ util.initialize_logger() # 14 is the length of DESCRIPTION="" max_desc_len = 100 allowed_filename_chars="a-zA-Z0-9._-+:" -disallowed_filename_chars_re = re.compile(r'[^a-zA-Z0-9._\-+:]') pv_toolong_re = re.compile(r'[0-9]{19,}') bad = create_color_func("BAD") diff --git a/pym/portage/manifest.py b/pym/portage/manifest.py index da40ae117..90324eebe 100644 --- a/pym/portage/manifest.py +++ b/pym/portage/manifest.py @@ -1,8 +1,9 @@ -# Copyright 1999-2011 Gentoo Foundation +# Copyright 1999-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 import errno import io +import re import warnings import portage @@ -22,6 +23,9 @@ from portage.const import (MANIFEST1_HASH_FUNCTIONS, MANIFEST2_HASH_DEFAULTS, MANIFEST2_HASH_FUNCTIONS, MANIFEST2_IDENTIFIERS, MANIFEST2_REQUIRED_HASH) from portage.localization import _ +# Characters prohibited by repoman's file.name check. +_prohibited_filename_chars_re = re.compile(r'[^a-zA-Z0-9._\-+:]') + class FileNotInManifestException(PortageException): pass @@ -33,10 +37,14 @@ def manifest2AuxfileFilter(filename): for x in mysplit: if x[:1] == '.': return False + if _prohibited_filename_chars_re.search(x) is not None: + return False return not filename[:7] == 'digest-' def manifest2MiscfileFilter(filename): filename = filename.strip(os.sep) + if _prohibited_filename_chars_re.search(filename) is not None: + return False return not (filename in ["CVS", ".svn", "files", "Manifest"] or filename.endswith(".ebuild")) def guessManifestFileType(filename): -- 2.26.2