##// END OF EJS Templates
rebase: turn rebase revs into set before filtering obsolete...
rebase: turn rebase revs into set before filtering obsolete When the inhibit extension from mutable-history is enabled, it attempts to iterate over the rebaseset to prevent the nodes being rebased from being marked obsolete. This happens at the same time as rebase's _filterobsoleterevs function trying to iterate over the rebaseset to figure out which ones are obsolete. The two of these iterating over the same revset generatorset cause a 'generator already executing' exception. This is probably a flaw in the revset implementation, since iterating over the same set twice should be supported. This regression was introduced in 5d16ebe7b14, since it changed _filterobsoleterevs to be called before the rebaseset was turned into a set(). For now let’s just make the rebaseset an actual set again before calling that function. This was caught by the inhibit tests. The relevant call stack from test-inhibit.t: File "/tmp/hgtests.jgjrN5/install/lib/python/hgext/rebase.py", line 285, in _preparenewrebase obsrevs = _filterobsoleterevs(self.repo, rebaseset) File "/data/hgbuild/facebook-hg-rpms/mutable-history/hgext/inhibit.py", line 197, in _filterobsoleterevswrap r = orig(repo, rebasesetrevs, *args, **kwargs) File "/tmp/hgtests.jgjrN5/install/lib/python/hgext/rebase.py", line 1380, in _filterobsoleterevs return set(r for r in revs if repo[r].obsolete()) File "/tmp/hgtests.jgjrN5/install/lib/python/hgext/rebase.py", line 1380, in <genexpr> return set(r for r in revs if repo[r].obsolete()) File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/revset.py", line 3079, in _iterordered val2 = next(iter2) File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/revset.py", line 3417, in gen yield nextrev() File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/revset.py", line 3424, in _consumegen for item in self._gen: File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/revset.py", line 71, in iterate cl = repo.changelog File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/repoview.py", line 319, in changelog revs = filterrevs(unfi, self.filtername) File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/repoview.py", line 261, in filterrevs repo.filteredrevcache[filtername] = func(repo.unfiltered()) File "/data/hgbuild/facebook-hg-rpms/mutable-history/hgext/directaccess.py", line 65, in _computehidden hidden = repoview.filterrevs(repo, 'visible') File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/repoview.py", line 261, in filterrevs repo.filteredrevcache[filtername] = func(repo.unfiltered()) File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/repoview.py", line 175, in computehidden hideable = hideablerevs(repo) File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/repoview.py", line 33, in hideablerevs return obsolete.getrevs(repo, 'obsolete') File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/obsolete.py", line 1097, in getrevs repo.obsstore.caches[name] = cachefuncs[name](repo) File "/data/hgbuild/facebook-hg-rpms/mutable-history/hgext/inhibit.py", line 255, in _computeobsoleteset if getrev(n) not in blacklist: File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/revset.py", line 3264, in __contains__ return x in self._r1 or x in self._r2 File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/revset.py", line 3348, in __contains__ for l in self._consumegen(): File "/tmp/hgtests.jgjrN5/install/lib/python/mercurial/revset.py", line 3424, in _consumegen for item in self._gen: ValueError: generator already executing

File last commit:

r27788:d713fa93 default
r29610:754f6367 stable
Show More
dockerrpm
37 lines | 912 B | text/plain | TextLexer
Mads Kiilerich
dockerrpm: check that docker is running correctly before building
r22438 #!/bin/bash -e
Matt Mackall
build: initial support for in-tree autobuilding recipes
r21255
Augie Fackler
dockerlib: start extracting common functions for setting up docker...
r24968 . $(dirname $0)/dockerlib.sh
Matt Mackall
build: initial support for in-tree autobuilding recipes
r21255 BUILDDIR=$(dirname $0)
Augie Fackler
dockerlib: extract initcontainer() method...
r24969 export ROOTDIR=$(cd $BUILDDIR/..; pwd)
Matt Mackall
build: initial support for in-tree autobuilding recipes
r21255
Augie Fackler
dockerlib: start extracting common functions for setting up docker...
r24968 checkdocker
Mads Kiilerich
dockerrpm: check that docker is running correctly before building
r22438
Mads Kiilerich
dockerrpm: better handling of specification of docker name
r22439 PLATFORM="$1"
Mads Kiilerich
docker: add CentOS 5...
r22443 shift # extra params are passed to buildrpm
Mads Kiilerich
dockerrpm: better handling of specification of docker name
r22439
Augie Fackler
dockerlib: extract initcontainer() method...
r24969 initcontainer $PLATFORM
Mads Kiilerich
dockerrpm: run docker build process as the current user, not as root...
r22440
Mads Kiilerich
dockerrpm: prepare source outside docker and just run rpmbuild inside docker...
r22441 RPMBUILDDIR=$ROOTDIR/packages/$PLATFORM
Mads Kiilerich
docker: add CentOS 5...
r22443 contrib/buildrpm --rpmbuilddir $RPMBUILDDIR --prepare $*
Mads Kiilerich
dockerrpm: prepare source outside docker and just run rpmbuild inside docker...
r22441
DSHARED=/mnt/shared
$DOCKER run -u $DBUILDUSER --rm -v $RPMBUILDDIR:$DSHARED $CONTAINER \
rpmbuild --define "_topdir $DSHARED" -ba $DSHARED/SPECS/mercurial.spec --clean
Mads Kiilerich
dockerrpm: create a yum/dnf repo from the generated rpms...
r22444
$DOCKER run -u $DBUILDUSER --rm -v $RPMBUILDDIR:$DSHARED $CONTAINER \
createrepo $DSHARED
cat << EOF > $RPMBUILDDIR/mercurial.repo
# Place this file in /etc/yum.repos.d/mercurial.repo
[mercurial]
Mads Kiilerich
buildrpm: fix use of invalid $PLATFORM in mercurial.repo
r23124 name=Mercurial packages for $PLATFORM
Mads Kiilerich
dockerrpm: create a yum/dnf repo from the generated rpms...
r22444 # baseurl=file://$RPMBUILDDIR/
Mads Kiilerich
buildrpm: fix use of invalid $PLATFORM in mercurial.repo
r23124 baseurl=http://hg.example.com/build/$PLATFORM/
Mads Kiilerich
dockerrpm: create a yum/dnf repo from the generated rpms...
r22444 skip_if_unavailable=True
gpgcheck=0
enabled=1
EOF
echo
echo "Build complete - results can be found in $RPMBUILDDIR"