[gentoo-portage-dev] [PATCH] repoman: Do not check for indirect inherits of deprecated eclasses

2014-09-03 Thread Michał Górny
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

2014-09-03 Thread Alexander Berntsen
-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

2014-09-03 Thread Alexander Berntsen
-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

2014-09-03 Thread Michał Górny
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

2014-09-03 Thread Zac Medico
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

2014-09-03 Thread Brian Dolbec

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

2014-09-03 Thread Brian Dolbec
-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

2014-09-03 Thread Brian Dolbec
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