[gentoo-portage-dev] [PATCH] repoman: Do not check for indirect inherits of deprecated eclasses
Complain only about deprecated eclasses that are inherited directly. Checking indirectly inherited eclasses is pointless since the ebuild maintainer can't really do anything about it --- it is up to the maintainer of one of the directly inherited eclasses. --- pym/repoman/checks.py | 16 1 file changed, 16 deletions(-) diff --git a/pym/repoman/checks.py b/pym/repoman/checks.py index abb9545..5f37648 100644 --- a/pym/repoman/checks.py +++ b/pym/repoman/checks.py @@ -395,11 +395,8 @@ class InheritDeprecated(LineCheck): def new(self, pkg): self._errors = [] - self._indirect_deprecated = set(eclass for eclass in \ - self.deprecated_classes if eclass in pkg.inherited) def check(self, num, line): - direct_inherits = None m = self._inherit_re.match(line) if m is not None: @@ -415,11 +412,9 @@ class InheritDeprecated(LineCheck): if replacement is None: pass elif replacement is False: - self._indirect_deprecated.discard(eclass) self._errors.append(please migrate from + \ '%s' (no replacement) on line: %d % (eclass, num + 1)) else: - self._indirect_deprecated.discard(eclass) self._errors.append(please migrate from + \ '%s' to '%s' on line: %d % \ (eclass, replacement, num + 1)) @@ -429,17 +424,6 @@ class InheritDeprecated(LineCheck): yield error del self._errors - for eclass in self._indirect_deprecated: - replacement = self.deprecated_classes[eclass] - if replacement is False: - yield please migrate from indirect + \ - inherit of '%s' (no replacement) % (eclass,) - else: - yield please migrate from indirect + \ - inherit of '%s' to '%s' % \ - (eclass, replacement) - del self._indirect_deprecated - class InheritEclass(LineCheck): Base class for checking for missing inherits, as well as excess inherits. -- 2.1.0
Re: [gentoo-portage-dev] September team meeting
-BEGIN PGP SIGNED MESSAGE- Hash: SHA256 Friends, here is the meeting summary: - -We'll merge the fakeroot patches[0]. - -Trofi's repoman patch is mostly OK as far as Michał and I are concerned. I will respond to his thread on the ML. Tom or whoever's doing repoman now needs to ACK it. So does some QA member (e.g. Tom). - -That guy's uncooperative root patch, Martin Vaeth's dynamic dependencies patch and Michael Haubenwallner's unstable eclasses stuff are all NACKed by me and Michàl. They are messy WIP patches, that either way need to go through PMS and/or QA before we do anything about them. - -Michał NACKed my autounmask patch. I don't particularly care, but I need someone to ACK it before I merge it... - -Michał's slot op patch needs to go through QA. - -We can finish pkg_pretend() even if a package dies... I'll get on that sometime. But RE [1]: this is intended behaviour. - -I ACKed all of Michał's setup.py stuff, but Brian needs to review it before Michał commits it. - -Michał is going to get his bash-completion QA check patch ready and committed at some point, and then move onto refactoring stuff there into separate files. Finally, he'll initiate a big bikeshed on the dev-ML about moving files to gx86... See the various bash completion threads he's made to dev ML and portage ML lately. There are a few of them, so it's outside of the scope of this summary. So to sum up: We're being PMS-compliant, and respectful towards QA by not doing anything. ;-) [0] https://bugs.gentoo.org/show_bug.cgi?id=489016 [1] https://bugs.gentoo.org/show_bug.cgi?id=404157 - -- Alexander berna...@gentoo.org https://secure.plaimi.net/~alexander -BEGIN PGP SIGNATURE- Version: GnuPG v2 Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iF4EAREIAAYFAlQHA0UACgkQRtClrXBQc7X8kwEAkrCN1SkIkgA5fvOuIZkbLKtB vkECFIQ99dWjSWlfhH8A/3aWQ37JrihaozbpNGmrVVEPJy0/qZZy8yKWc5QOcWWZ =x0B+ -END PGP SIGNATURE-
Re: [gentoo-portage-dev] [PATCH] repoman: warn when herd's email appears in maintaineremail section
-BEGIN PGP SIGNED MESSAGE- Hash: SHA256 On 25/07/14 00:11, Sergei Trofimovich wrote: - assert(h.known_maintainer('sping')) - assert(h.known_maintainer('sp...@gentoo.org')) + assert(h.known_maintainer('slyfox')) + assert(h.known_maintainer('sly...@gentoo.org')) assert(not h.known_maintainer('portage')) assert(h.maintainer_in_herd('zmed...@gentoo.org', 'tools-portage')) assert(not h.maintainer_in_herd('p...@gentoo.org', 'tools-portage')) + assert(h.herd_by_herd_email('hask...@gentoo.org') == 'haskell') + assert(h.herd_by_herd_email('sly...@gentoo.org') is None) + This really doesn't belong in the same patch. If you split those, the patch looks good to me. Michał said it was fine too. However, I can't merge this until Tom gives me an ACK with regards to the repoman refactor. You also need some QA member (like Tom) to ACK it. I'll merge your reworked patches as soon as you have the appropriate ACKs. - -- Alexander berna...@gentoo.org https://secure.plaimi.net/~alexander -BEGIN PGP SIGNATURE- Version: GnuPG v2 Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iF4EAREIAAYFAlQHBMwACgkQRtClrXBQc7UJJwD/YUCoq5RuZrx31z+D/Q75P6uE 97fpP01Efj3tI7cz4hwA/R/19w9aQ5ke5pnatRbAWSeQfU5UxooUXwtr6sN713XW =5KzR -END PGP SIGNATURE-
[gentoo-portage-dev] [PATCH v3] QA: Add a set of checks for bash-completion files
Add checks for common mistakes when installing bash completion files: legacy directory, incorrect naming, missing aliases, deprecated 'have' function. Changes in v2: - silenced output (error) when sourcing completion files, - faked _have() to enable all conditional completions in the tested files. Changes in v3: - missing EPREFIX. --- bin/misc-functions.sh | 124 ++ 1 file changed, 124 insertions(+) diff --git a/bin/misc-functions.sh b/bin/misc-functions.sh index e45d810..f6c3c1c 100755 --- a/bin/misc-functions.sh +++ b/bin/misc-functions.sh @@ -610,6 +610,130 @@ install_qa_check() { fi fi + # Check for correct bash-completion install path. + local syscompdir=$(pkg-config --variable=completionsdir bash-completion 2/dev/null) + : ${syscompdir:=${EPREFIX}/usr/share/bash-completion/completions} + + local instcompdir + if [[ -d ${ED}/usr/share/bash-completion/completions ]]; then + instcompdir=${ED}/usr/share/bash-completion/completions + elif [[ -d ${ED}/usr/share/bash-completion ]]; then + if [[ ${syscompdir} != ${EPREFIX}/usr/share/bash-completion ]]; then + eqawarn Bash completions were installed in legacy location. Please update + eqawarn the ebuild to get the install paths using bash-completion-r1.eclass. + eqawarn + fi + + instcompdir=${ED}/usr/share/bash-completion + fi + + # Do a few QA tests on bash completions. + if [[ -n ${instcompdir} -f ${EROOT}/usr/share/bash-completion/bash_completion ]]; then + ( + _get_completions() { + # source the file + source ${1} /dev/null + + [[ ${USED_HAVE} == yes ]] echo '__HAVE_USED__' + + # print the completed commands + while read -a args; do + [[ ${args[0]} == complete ]] || continue + # command always comes last, one per line + echo ${args[$(( ${#args[@]} - 1))]} + done (complete -p) + } + + # load the global helpers + source ${EROOT}/usr/share/bash-completion/bash_completion + + # clean up predefined completions + complete -r + + # force all completions on + _have() { + return 0 + } + + local USED_HAVE=no + # add a replacement for have() + have() { + USED_HAVE=yes + + unset -v have + _have ${1} have=yes + } + + local f c completions + local all_compls=() + local all_files=() + local qa_warnings=() + + for f in ${instcompdir}/*; do + # ignore directories and other non-files + [[ ! -f ${f} ]] continue + + # skip the common code file + # (in case we're run in /usr/share/bash-completion) + [[ ${f##*/} == bash_completion ]] continue + + completions=( $(_get_completions ${f}) ) + + if [[ ${completions[0]} == __HAVE_USED__ ]]; then + qa_warnings+=( + ${f##*/}: 'have' command is deprecated and must not be used. + ) + unset 'completions[0]' + fi + + if [[ -z ${completions[@]} ]]; then + qa_warnings+=( + ${f##*/}: does not define any completions (failed to source?). + ) + continue + fi + + for c in ${completions[@]}; do + if [[ ${c} == /* ]]; then + qa_warnings+=( + ${f##*/}: absolute paths can not be used for completions (on '${c}'). + ) + else + all_compls+=( ${c} ) +
[gentoo-portage-dev] Re: [PATCH] depgraph._add_dep: fix bug #520950
Attached is an updated patch which adds logic to account for the fact that depth is meaningless for packages that are not reachable as deep dependencies of arguments. I'm fairly confident that everything is accounted for now, so I do not anticipate any more updates to this patch unless somebody else finds a problem. -- Thanks, Zac From 8de4903151733104f43034ab1f3957a1de7f501a Mon Sep 17 00:00:00 2001 From: Zac Medico zmed...@gentoo.org Date: Wed, 3 Sep 2014 15:39:10 -0700 Subject: [PATCH] depgraph._add_dep: fix bug #520950 This handles a case which occurs when _solve_non_slot_operator_slot_conflicts calls _create_graph. In this case, ignore unsatisfied deps for installed packages only if their depth is beyond the depth requested by the user and the dep was initially unsatisfied (not broken by a slot conflict in the current graph). Since depth is meaningless for packages that are not reachable as deep dependencies of arguments, the True constant is used as the depth value for any packages added via _complete_graph. Also, any sets added via _complete_graph have their reset_depth attribute set to False. --- pym/_emerge/depgraph.py | 77 - 1 file changed, 64 insertions(+), 13 deletions(-) diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index d6cd24d..1e6a127 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -107,7 +107,7 @@ def _wildcard_set(atoms): class _frozen_depgraph_config(object): - def __init__(self, settings, trees, myopts, spinner): + def __init__(self, settings, trees, myopts, params, spinner): self.settings = settings self.target_root = settings[EROOT] self.myopts = myopts @@ -115,6 +115,7 @@ class _frozen_depgraph_config(object): if settings.get(PORTAGE_DEBUG, ) == 1: self.edebug = 1 self.spinner = spinner + self.requested_depth = params.get(deep, 0) self._running_root = trees[trees._running_eroot][root_config] self.pkgsettings = {} self.trees = {} @@ -508,7 +509,7 @@ class depgraph(object): frozen_config=None, backtrack_parameters=BacktrackParameter(), allow_backtracking=False): if frozen_config is None: frozen_config = _frozen_depgraph_config(settings, trees, - myopts, spinner) + myopts, myparams, spinner) self._frozen_config = frozen_config self._dynamic_config = _dynamic_depgraph_config(self, myparams, allow_backtracking, backtrack_parameters) @@ -2114,8 +2115,17 @@ class depgraph(object): if nested_set is None: nested_set = root_config.sets.get(s) if nested_set is not None: + # Propagate the reset_depth attribute from + # parent set to nested set. nested_arg = SetArg(arg=token, pset=nested_set, + reset_depth=arg.reset_depth, root_config=root_config) + # If a node with the same hash already exists in + # the digraph, keep the existing instance which + # may have a different reset_depth attribute + # (meaning that it corresponds to a user + # argument). + nested_arg = self._dynamic_config.digraph.get(nested_arg, nested_arg) arg_stack.append(nested_arg) if add_to_digraph: self._dynamic_config.digraph.add(nested_arg, arg, @@ -2164,9 +2174,41 @@ class depgraph(object): dep.collapsed_priority.ignored): # This is an unnecessary build-time dep. return 1 + + # NOTE: For removal actions, allow_unsatisfied is always + # True since all existing removal actions traverse all + # installed deps deeply via the _complete_graph method, + # which calls _create_graph with allow_unsatisfied = True. if allow_unsatisfied: self._dynamic_config._unsatisfied_deps.append(dep) return 1 + + # The following case occurs when + # _solve_non_slot_operator_slot_conflicts calls + # _create_graph. In this case, ignore unsatisfied deps for + # installed packages only if their depth is beyond the depth + # requested by the user and the dep was initially + # unsatisfied (not broken by a slot conflict in the current + # graph). See bug #520950. + # NOTE: The value of dep.parent.depth is guaranteed to be + # either an integer or True, with the value True indicating + # that the parent has been pulled in by the _complete_graph + # method (rather than by explicit arguments or their deep + # dependencies). These cases must be distinguished because + # depth is meaningless for packages that are not reachable + # as deep dependencies of arguments. + if (self._dynamic_config._complete_mode and +isinstance(dep.parent, Package) and +dep.parent.installed and +(dep.parent.depth is True or +(self._frozen_config.requested_depth is not True and +dep.parent.depth = self._frozen_config.requested_depth))): +inst_pkg, in_graph = \ + self._select_pkg_from_installed(dep.root, dep.atom) +if inst_pkg is None: + self._dynamic_config._initially_unsatisfied_deps.append(dep) + return 1 +
[gentoo-portage-dev] [PATCH 0 of many] New plug-in sync system
Most of you know about the plugin-sync branch of our portage.git repo. I believe it is ready for review and merge into master to become the new sync code for the future. Rather than follow this with 49 patch mails ... I produced a final git diff of all the changes. I have cleaned up and squashed the original commits to a point I do not want to squash further. This will keep enough development history for important changes for future troubleshooting if it is needed. Instead of inlining this diff like most people prefer, I have attached it. It is 4.4K+ lines long. Probably too long for many email clients. Plus opeing it in an editor will allow the editors syntax highlighting to make code review easier. I have fully rebased the code on the current master (commit 582cb806f88 QA patch) and pushed it to both our gentoo repo and our github gentoo/portage repo. For those that wish to review it using githubs interface. You have that option too. Thank you to all those that contributed to the code and testing. -- Brian Dolbec dolsen diff --git a/bin/emerge-webrsync b/bin/emerge-webrsync index 2f0689c..43f92b6 100755 --- a/bin/emerge-webrsync +++ b/bin/emerge-webrsync @@ -501,8 +501,8 @@ main() { # This is a sanity check to help prevent people like funtoo users # from accidentally wiping out their git tree. - if [[ -n ${repo_sync_type} ${repo_sync_type} != rsync ]] ; then - echo The current sync-type attribute of repository 'gentoo' is not set to 'rsync': 2 + if [ [ -n ${repo_sync_type} ] [ ${repo_sync_type} != rsync -o ${repo_sync_type} != websync ] ] ; then + echo The current sync-type attribute of repository 'gentoo' is not set to 'rsync' or 'websync': 2 echo 2 echo sync-type=${repo_sync_type} 2 echo 2 diff --git a/cnf/repos.conf b/cnf/repos.conf index 8c657da..1ca98ca 100644 --- a/cnf/repos.conf +++ b/cnf/repos.conf @@ -5,3 +5,4 @@ main-repo = gentoo location = /usr/portage sync-type = rsync sync-uri = rsync://rsync.gentoo.org/gentoo-portage +auto-sync = yes diff --git a/man/emaint.1 b/man/emaint.1 index 8356299..f02bc68 100644 --- a/man/emaint.1 +++ b/man/emaint.1 @@ -37,6 +37,9 @@ Perform package move updates for binary packages located in \fBPKGDIR\fR. .BR moveinst Perform package move updates for installed packages. .TP +.BR sync +Perform sync actions on specified repositories. +.TP .BR world Fix problems in the \fIworld\fR file. .SH DEFAULT OPTIONS @@ -46,7 +49,7 @@ Check for any problems that may exist. (all commands) .TP .B \-f, \-\-fix Fix any problems that may exist. (not all commands) -.SH OPTIONS +.SH OPTIONS logs command .TP .B \-C, \-\-clean Cleans the logs from \fBPORT_LOGDIR\fR (logs command only) @@ -58,6 +61,16 @@ OPTION (logs command only) .B \-t NUM, \-\-time NUM Changes the minimum age \fBNUM\fR (in days) of the logs to be listed or deleted. (logs command only) +.SH OPTIONS sync command +.TP +.B \-a, \-\-auto +Sync repositories which have its auto\-sync setting set yes, true. (sync command only) +.TP +.B \-A, \-\-allrepos +Sync all repositories which have a sync\-uri specified. (sync command only) +.TP +.B \-r, \-\-repo REPO +Sync the repository specified. (sync command only) .SH REPORTING BUGS Please report bugs via http://bugs.gentoo.org/ .SH AUTHORS diff --git a/man/emerge.1 b/man/emerge.1 index e32bb43..f197984 100644 --- a/man/emerge.1 +++ b/man/emerge.1 @@ -240,7 +240,7 @@ the package name. \fBTake caution\fR as the descriptions are also matched as regular expressions. .TP .BR \-\-sync -Updates repositories, for which sync\-type and sync\-uri attributes are +Updates repositories, for which auto\-sync, sync\-type and sync\-uri attributes are set in repos.conf. See \fBportage\fR(5) for more information. The \fBPORTAGE_SYNC_STALE\fR variable configures warnings that are shown when emerge \-\-sync has not @@ -251,6 +251,12 @@ The emerge \-\-sync action will revert local changes (e.g. modifications or additions of files) inside repositories synchronized using rsync. \fBNOTE:\fR +The emerge \-\-sync command is a compatibility command. Sync operations are +now performed using the the new emaint sync module. This new emaint sync module +has greater functionality and flexibility. Please refer to \fBemaint(1)\fR for +more information about sync operations. + +\fBNOTE:\fR The \fBemerge\-webrsync\fR program will download the entire portage tree as a tarball, which is much faster than emerge \-\-sync for first time syncs. diff --git a/man/portage.5 b/man/portage.5 index e399f0f..efafc27 100644 --- a/man/portage.5 +++ b/man/portage.5 @@ -818,6 +818,16 @@ When 'force = aliases' attribute is not set, \fBegencache\fR(1), since operations performed by these tools are inherently \fBnot\fR \fIsite\-specific\fR. .TP +.B auto\-sync +This setting determines if the repo will be synced during \fBemerge \-\-sync\fR or +\fBemaint sync \-\-auto\fR runs. This allows for repositories to be synced only when +desired via \fBemaint sync \-\-repo
Re: [gentoo-portage-dev] September team meeting
-BEGIN PGP SIGNED MESSAGE- Hash: SHA512 On Wed, 03 Sep 2014 14:02:13 +0200 Alexander Berntsen berna...@gentoo.org wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA256 Friends, here is the meeting summary: - -We'll merge the fakeroot patches[0]. - -Trofi's repoman patch is mostly OK as far as Michał and I are concerned. I will respond to his thread on the ML. Tom or whoever's doing repoman now needs to ACK it. So does some QA member (e.g. Tom). - -That guy's uncooperative root patch, Martin Vaeth's dynamic dependencies patch and Michael Haubenwallner's unstable eclasses stuff are all NACKed by me and Michàl. They are messy WIP patches, that either way need to go through PMS and/or QA before we do anything about them. - -Michał NACKed my autounmask patch. I don't particularly care, but I need someone to ACK it before I merge it... Sorry, I will probably ack your recent one, but I'm not sure which it is atm... I don't think I saw your latest enough/don't remember it atm. - -Michał's slot op patch needs to go through QA. - -We can finish pkg_pretend() even if a package dies... I'll get on that sometime. But RE [1]: this is intended behaviour. - -I ACKed all of Michał's setup.py stuff, but Brian needs to review it before Michał commits it. I've tested the heck out of it. I have edited the ebuild and gotten everything working for catalyst. I believe Michal has a few more man pages to get version updated by setup.py. With those done, it should be good to go. - -Michał is going to get his bash-completion QA check patch ready and committed at some point, and then move onto refactoring stuff there into separate files. Finally, he'll initiate a big bikeshed on the dev-ML about moving files to gx86... See the various bash completion threads he's made to dev ML and portage ML lately. There are a few of them, so it's outside of the scope of this summary. Done and merged. So to sum up: We're being PMS-compliant, and respectful towards QA by not doing anything. ;-) s/not doing anything./not doing much. ;-) [0] https://bugs.gentoo.org/show_bug.cgi?id=489016 [1] https://bugs.gentoo.org/show_bug.cgi?id=404157 - -- Alexander berna...@gentoo.org Let's see if we can get another release out the weekend of Sept 13-14 So, how about another meeting for finalizing that Next Wednesday/Thursday? But hopefully not in the early UTC hours. Any time after 1300 UTC will work best. It is Europe evening/early night. Early morning N.A Pacific which works for me. Seems that's when we a all on IRC at the same time most days. - -- Brian Dolbec dolsen -BEGIN PGP SIGNATURE- Version: GnuPG v2.0 iQF8BAEBCgBmBQJUB77aXxSAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQ4Njg4RkQxQ0M3MUMxQzA0RUFFQTQyMzcy MjE0RDkwQTAxNEYxN0NCAAoJECIU2QoBTxfLu/AH/0BtyFbP9FbsbuE2bt5HdzEm EsIY9Fv8GkSUeqTDZ9yhAhzgAvTez5WGsPUT60SBnqsqYhVNvuKNomlf4HRCAYDB YLwHZQJscl9owQNbWDQ3FhuKTRc1kzLNAR30jNjwImRaH65w1h7UCCA3fKkqpcTE VyAIqUhGe7nQx7h7AulcRnifKoFhKM78OSHU+QkU2jMa1WlGjPBUpeylS7MEdomm M+/z/HcgI8WNSAWXna0Hagtm0m3EbNamPw4MyzjV0CQYcGAajRotrjCe3EP+IGzJ j81/nzP3yiyI75uxvdgLnciQSLD1yMhvdBJKWL7j2axpIOVJQCXn6GFKRBCnlAg= =ASrk -END PGP SIGNATURE-
Re: [gentoo-portage-dev] [PATCH 0 of many] New plug-in sync system
On Wed, 3 Sep 2014 17:35:40 -0700 Brian Dolbec dol...@gentoo.org wrote: Most of you know about the plugin-sync branch of our portage.git repo. I believe it is ready for review and merge into master to become the new sync code for the future. Rather than follow this with 49 patch mails ... I produced a final git diff of all the changes. I have cleaned up and squashed the original commits to a point I do not want to squash further. This will keep enough development history for important changes for future troubleshooting if it is needed. Instead of inlining this diff like most people prefer, I have attached it. It is 4.4K+ lines long. Probably too long for many email clients. Plus opeing it in an editor will allow the editors syntax highlighting to make code review easier. I have fully rebased the code on the current master (commit 582cb806f88 QA patch) and pushed it to both our gentoo repo and our github gentoo/portage repo. For those that wish to review it using githubs interface. You have that option too. Thank you to all those that contributed to the code and testing. fixed: bracket spacing (spotted by mrueg) diff --git a/bin/emerge-webrsync b/bin/emerge-webrsync index 2f0689c..43f92b6 100755 --- a/bin/emerge-webrsync +++ b/bin/emerge-webrsync @@ -501,8 +501,8 @@ main() { # This is a sanity check to help prevent people like funtoo users # from accidentally wiping out their git tree. - if [[ -n ${repo_sync_type} ${repo_sync_type} != rsync ]] ;then - echo The current sync-type attribute of repository 'gentoo' is not set to 'rsync': 2 + if [ [ -n ${repo_sync_type} ] [ ${repo_sync_type} != rsync -o ${repo_sync_type} != websync ] ] ; then + echo The current sync-type attribute of repository 'gentoo' is not set to 'rsync' or 'websync': 2 echo 2 -- Brian Dolbec dolsen