Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
With git headers removed from portage, how to track changes?
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Portage & Programming
View previous topic :: View next topic  
Author Message
srcshelton
n00b
n00b


Joined: 10 Apr 2004
Posts: 22
Location: Cambridge

PostPosted: Tue Mar 14, 2017 8:52 pm    Post subject: With git headers removed from portage, how to track changes? Reply with quote

With git '$Id$' headers removed from every file in the portage tree, how are overlay maintainers intended to track changes to ebuilds and dependent files?

Historically, this has been easy - pull the portage tree from https://github.com/gentoo/gentoo.git with a top-level '.gitattributes' containing:

Code:
/virtual/*/*.ebuild                     ident
/*-*/*/*.ebuild                         ident
/*-*/*/files/**                         ident
/*-*/*/metadata.xml                     ident
/eclass/*.eclass                        ident
/eclass/tests/*.sh                      ident
/header.txt                             ident
/licenses/*                             ident
/profiles/desc/*.desc                   ident
/profiles/license_groups                ident
/profiles/**/make.*                     ident
/profiles/**/package.*                  ident
/profiles/**/packages.build             ident
/profiles/**/packages                   ident
/profiles/**/profile.bashrc             ident
/profiles/**/README                     ident
/profiles/**/use.*                      ident
/scripts/*.sh                           ident
/skel.ebuild                            ident
/skel.metadata.xml                      ident


... which would cause git to expand '$Id$' lines in headers to an object hash which was stable across rebases/force-pushes, and only altered when the content of an ebuild or file had actually changed. A simple script could then compare the 'Id' header within the overlay to the 'Id' header in the portage tree to find all updates.

Now, however, since Council vote: CVS headers and git expansion has been implemented (was the git 'Id' line really causing that much of a problem?), there appears to be no good way to actually track changes beyond keeping two copies of the portage tree - which is obviously awkward for a 1.1GB repo!

The limitations are:
  • The repo's history frequently diverges, so commit IDs are unstable and cannot be used;
  • Maintaining changes to ebuilds as patches would make updates fragile and unreasonably difficult to manage;
  • As mentioned, the repo is too large to practically maintain two copies and diff them;
  • ebuilds, eblits, and items in FILESDIR regularly change without any bump to any version specified in their filename;
  • Maintaining a recursive local copy of the contents of only modified/updated ebuilds is potentially the least bad solution, but still makes keeping changes in sync much more difficult and error-prone than previously;
  • The best option may now be to keep a local copy of the Manifest file from the official repo and to diff this with the original - at least meaning that only one additional file must be maintained, but again it means adding extraneous data to the overlay repo, or omitting the data necessary to maintain the overlay from version-control and disallowing updatable checkouts.

Does anyone else maintain an overlay which contains modified ebuilds from the main Gentoo ebuild repository? If so, how do you approach keeping your ebuilds synchronised with the upstream repo?

Thanks in advance,

Stuart
Back to top
View user's profile Send private message
srcshelton
n00b
n00b


Joined: 10 Apr 2004
Posts: 22
Location: Cambridge

PostPosted: Tue Mar 14, 2017 10:27 pm    Post subject: Reply with quote

... except that a whole load of ebuilds (e.g. https://github.com/gentoo/gentoo/tree/master/x11-libs/gdk-pixbuf-loader-webp at random, but it looks as if 528 packages are potentially affected as-of 61b861a) are missing Manifest files entirely in the main tree - so digests would have to be generated on the client side, slowing the process and increasing the chance that either changes are missed or false-positives occur.
Back to top
View user's profile Send private message
szatox
Advocate
Advocate


Joined: 27 Aug 2013
Posts: 3135

PostPosted: Tue Mar 14, 2017 10:43 pm    Post subject: Reply with quote

Just a shot in the dark: perhaps it would be a good idea to use git's branches feature?
Run a full clone rather than shallow one, create a local branch, modify ebuilds as needed and then use that local branch as an overlay?
You can then stay on sync by merging gentoo-maintained branch into your local branch after pulling it.

You will want to use a dedicated partition for this (tuned for small files) or even squash it. The latter looks particularly promising, since git repo tends to be append-only so you can gradually grow that squashfs without ever again rebuilding it from scratch to trim old versions - this is assuming you only squash .git directory and ignore working directory, as invoking checkout will populate it anyway.

I don't know if it fits your case, but I am successfully using this bifurcated approach to git-based deployments (branch provided by developers + deployment branch with local settings and top secret passwords :lol: ), and having played with squashfs a bit I expect those 2 tools to go along pretty well.
Back to top
View user's profile Send private message
srcshelton
n00b
n00b


Joined: 10 Apr 2004
Posts: 22
Location: Cambridge

PostPosted: Tue Mar 14, 2017 10:51 pm    Post subject: Reply with quote

I also push my overlay to overlays.gentoo.org, so pushing the entire portage tree with some modifications isn't an option: it must be possible to push the changes only. I'm sure that this could be achieved with some sequence which involves a complex git-filter command, but this appears to be a significantly non-trivial option.

(I'm also not entirely sure how well a branch which is regularly merged with the 'master' branch of the Gentoo repo would work, given that history re-writing regularly occurs)
Back to top
View user's profile Send private message
srcshelton
n00b
n00b


Joined: 10 Apr 2004
Posts: 22
Location: Cambridge

PostPosted: Tue Mar 14, 2017 11:42 pm    Post subject: Reply with quote

Okay - I hadn't realised that Manifest files in the main repo only contain 'DIST' hashes, whilst overlay repos also contain hashes for every ebuild and file (amongst others) too. Firstly that means that the 528 main-repo ebuilds without a Manifest aren't incorrect, they're simply ebuilds which don't rely on additional files or sources. Secondly, since even running 'ebuild ... digest' will only create 'DIST' entries, then Manifest files cannot be used to tell whether ebuild contents have changed. This is unfortunate, since it means that there now appears to be no method using any element of Gentoo-provided infrastructure directly to keep overlays in sync with the main repo :(
Back to top
View user's profile Send private message
ct85711
Veteran
Veteran


Joined: 27 Sep 2005
Posts: 1791

PostPosted: Wed Mar 15, 2017 12:34 am    Post subject: Reply with quote

One part you are forgetting is that git tracks changes from all commits by default. Each commit keeps track of all changes (modifications, moving, deletion, new files, and renaming) for that commit. Now there may be a command to look up the commits on your copy of the repo, but I do not know what it is right now. If you use your browser and view the git log for the package in question, it shows you all of the commits and the commit message. Clicking on the commit title (same line the author is on) will bring up the full commit message and the diff contents showing exactly what changed when it was accepted into the tree.

Note, portage's default setting when you sync is to only grab the most current commit, not the entire history (to save hd space, and amount downloaded). If you wish want to change that, you need to change clone-depth (used to be sync-depth) to change amount of commit history you download (default is 1, 0 means all).
Back to top
View user's profile Send private message
Hu
Moderator
Moderator


Joined: 06 Mar 2007
Posts: 21631

PostPosted: Wed Mar 15, 2017 1:24 am    Post subject: Reply with quote

srcshelton: either I do not understand your use case or you are seriously underestimating Git's capabilities. As ct85711 says, Git is designed for tracking changes. Given a repository with full history, you can find all commits which touch a file, path, or set of files/paths. You can filter commits based on what was written in the log message. You can, with some limitations, search for commits that add/remove particular strings in the managed files. You can filter commits to a particular range of history, such as "from the last time I merged with this branch to now."

You twice mentioned history being rewritten. Generally, published history should not be rewritten specifically because it makes it difficult for downstream users to use Git to track that history. Rewriting unpublished history is fine. If users see only an exported tree representing the finished product, they never know whether you rewrote history on the way.

Pushing your overlay to another server could be expensive the first time if the repository into which you push has never seen portage.git history before. After that, it will be cheap, because Git pushes only the blobs that the peer lacks. All the historical blobs will still be on the peer from your prior push and will not be resent. You might have meant here that you want your overlay not to include any files which are unmodified relative to Gentoo Portage. If so, disregard this paragraph.

Based on your last paragraph in the opening post, it looks like your requirements are:
  • Publish only files changed by the overlay maintainer, not files which are identical to those in Gentoo Portage
  • Quickly locate the changed files for publication
  • (Maybe) Publish full overlay history, so readers can see what the overlay maintainer changed over time
Is this correct and complete? Do you have other requirements I did not recognize? Solving for the first two is easy. Including the third one is a bit messier.
Back to top
View user's profile Send private message
ct85711
Veteran
Veteran


Joined: 27 Sep 2005
Posts: 1791

PostPosted: Wed Mar 15, 2017 1:55 am    Post subject: Reply with quote

One other thing I will put out, the commit ID's is an hash value, so in general no 2 commits should ever collide (ie a collision). More often, people use the shorthand on dealing with the commit ID because it's easier than writing the full thing out. This site explains more about git's commit ID https://www.perforce.com/blog/140723/working-git-commit-ids.

As for branches, it is intended so that you can do some work on the git tree independent from the master tree's changes. When you merge the branch back into the master tree, all of the commits done in the branch is added to the master tree (you often need to rebase your branch before merging, as the branch started off at the point you made the branch and does not include any changes in the master tree since then). Branches are great when you want to work on some new time and not risk screwing up every one else's work. Once you done, you merge and your changes gets added onto the master tree, moving it's location (and other people will rebase as they need to, to incorporate anything new on their work).
Back to top
View user's profile Send private message
srcshelton
n00b
n00b


Joined: 10 Apr 2004
Posts: 22
Location: Cambridge

PostPosted: Wed Mar 15, 2017 9:19 am    Post subject: Reply with quote

ct85711 wrote:
Note, portage's default setting when you sync is to only grab the most current commit, not the entire history (to save hd space, and amount downloaded). If you wish want to change that, you need to change clone-depth (used to be sync-depth) to change amount of commit history you download (default is 1, 0 means all).


This, I must admit, I had missed - I had assumed that a full clone was default and a shallow clone was optional rather than vice-versa. Having said that, my understanding is also that this is fragile, and that performing a pull on a shallow clone caused all history (... from that point?) to be pulled in, effectively converting a shallow clone permanently into a full clone? I've reset and pulled so many times that, unless the portage sync module active strips deeper history, I suspect that my local copy is now a full clone regardless...

In any case, I've now set 'sync-depth', so hopefully the divergences in history will now stop...
Back to top
View user's profile Send private message
srcshelton
n00b
n00b


Joined: 10 Apr 2004
Posts: 22
Location: Cambridge

PostPosted: Wed Mar 15, 2017 9:27 am    Post subject: Reply with quote

Hu wrote:
Pushing your overlay to another server could be expensive the first time if the repository into which you push has never seen portage.git history before. After that, it will be cheap, because Git pushes only the blobs that the peer lacks. All the historical blobs will still be on the peer from your prior push and will not be resent. You might have meant here that you want your overlay not to include any files which are unmodified relative to Gentoo Portage. If so, disregard this paragraph.


Yeah - exactly: if you look at the repos pulled-in by 'layman', none include the full tree... that would be incredibly inefficient!

Hu wrote:
Based on your last paragraph in the opening post, it looks like your requirements are:
  • Publish only files changed by the overlay maintainer, not files which are identical to those in Gentoo Portage
  • Quickly locate the changed files for publication
  • (Maybe) Publish full overlay history, so readers can see what the overlay maintainer changed over time
Is this correct and complete? Do you have other requirements I did not recognize? Solving for the first two is easy. Including the third one is a bit messier.


It's the third which is really the issue... but it's not necessarily a question of how to present the files, but more of how to detect a change in A when A -> A'', given that the ideal is to store only A' (e.g. an upstream ebuild or file is changed without any alteration of filename, and now without '$Id$' expansion). It's not ideal to store the original ebuild/file separately or to store a diff/patch - and git history may or may not be stable, but a single commit may also affect the entire tree (see 61b861a) - although I admit this is rare, large-scale changes are not entirely unheard of.

I suspect that the easiest solution will actually be to separately checksum the contents of every package directory included in the overlay and store the result in the overlay package's files directory - but this does mean re-calculating the checksums in the upstream repo every time a modification-check is run, which is hugely expensive compared to extracting and comparing the expanded Id :(
Back to top
View user's profile Send private message
ct85711
Veteran
Veteran


Joined: 27 Sep 2005
Posts: 1791

PostPosted: Wed Mar 15, 2017 3:38 pm    Post subject: Reply with quote

I will admit that I know no knowledge around layman, as I don't use any others repos outside the main tree. As such, I don't know if the clone-depth will apply in layman or not; you may need to look through its documentation to see if it has it's own independent git configuration.

From doing a quick search, it appears changing the clone-depth is retroactive, meaning it will grab the old commit history you don't have too.

One thing to remember is that each git tree is independent of each other. This means the repos you pull from layman is independent of portage's main tree (which should be easy to see, considering those repos are stored in a different place than gentoo's tree)
Back to top
View user's profile Send private message
szatox
Advocate
Advocate


Joined: 27 Aug 2013
Posts: 3135

PostPosted: Wed Mar 15, 2017 7:26 pm    Post subject: Reply with quote

Quote:
but more of how to detect a change in A when A -> A'', given that the ideal is to store only A' (e.g. an upstream ebuild or file is changed without any alteration of filename, and now without '$Id$' expansion).

There is a tool that can do that. It's called git.
Hint:
Code:
git log [-p] --follow </path/to/file/of/interest>


Obviously, you need a full copy to use that command. Working directory alone (shallow copy) is flattened, so you have no history to track.
Quote:
(I'm also not entirely sure how well a branch which is regularly merged with the 'master' branch of the Gentoo repo would work, given that history re-writing regularly occurs)
You can rewrite history before publishing your commits, but it's not so easy once you publish your branch.
Back to top
View user's profile Send private message
srcshelton
n00b
n00b


Joined: 10 Apr 2004
Posts: 22
Location: Cambridge

PostPosted: Wed Mar 15, 2017 8:05 pm    Post subject: Reply with quote

szatox wrote:
Quote:
but more of how to detect a change in A when A -> A'', given that the ideal is to store only A' (e.g. an upstream ebuild or file is changed without any alteration of filename, and now without '$Id$' expansion).

There is a tool that can do that. It's called git.
Hint:
Code:
git log [-p] --follow </path/to/file/of/interest>


Apologies, the '->' wasn't indicating a rename (although if it had then you're right, the '--follow' option would certainly be appropriate), but was instead intended to indicate a change/transformation - in this case, A is modified by an overlay maintainer to become A' and stored separately, but then A is itself updated upstream to now have content A''. Given that files no longer contain uniquely identifying hashes and filenames are, in this instance, unchanged, how can the new A'' state be identified in order to affect a similar (or otherwise) change in A'?

Recall that the necessary end-state is that the repo, which must remain manageable (e.g. something which can be updated and added to over time - not a fragile end-state which can only be reverted in order to alter content), must only contain the modified packages, and any new packages added out-of-tree (and only metadata pertaining to these). It should not contain any package from the main repo which is unmodified. Constantly rebasing a commit which deletes all unmodified packages strikes me as unwieldy, and would lead to git metadata size outstripping the actual data size of the repo by magnitudes.

For this reason, I believe that the overlay repo must be a distinct and separate repo from the main Gentoo repo. This makes the question more along the lines of 'what is minimal and least-expensive to generate data available to tell when a file in a different repo has changed' rather than more directly how to use various git features. Candidates would appear to be recording of manual checksums, snapshotting pre-calculated checksums, or saving the current git commit hash. All of these require external metadata, and the latter has questions as to its stability.

P.S. I've just noticed that files beneath metadata/md5-cache could be used to determine changes in the ebuild files themselves by direct comparison without having to perform a checksum, although the original sum would still need to be recorded in the overlay repo and this doesn't help to detect changes in data beneath the 'files' directory for each package...
Back to top
View user's profile Send private message
srcshelton
n00b
n00b


Joined: 10 Apr 2004
Posts: 22
Location: Cambridge

PostPosted: Wed Mar 15, 2017 8:21 pm    Post subject: Reply with quote

... although '/usr/bin/egencache --repo gentoo --write-timestamp --update' takes over 13 hours to complete on the system from which it runs, so can really only be run weekly at most :(

On the other hand, taking an md5sum of every file in the overlay repo takes... just under 20 seconds.
Back to top
View user's profile Send private message
ct85711
Veteran
Veteran


Joined: 27 Sep 2005
Posts: 1791

PostPosted: Wed Mar 15, 2017 9:05 pm    Post subject: Reply with quote

All file changes in the repo are logged in the commit, this includes the files directory and it's contents.

Git is tracking everything in the repo tree, minus the directories that is marked to exclude. So any changes you do, git is going to complain about until you commit them into your tree. This will stop git from syncing as it will see those changes that out has no clue about.
Back to top
View user's profile Send private message
szatox
Advocate
Advocate


Joined: 27 Aug 2013
Posts: 3135

PostPosted: Wed Mar 15, 2017 10:46 pm    Post subject: Reply with quote

Quote:
in this case, A is modified by an overlay maintainer to become A' and stored separately, but then A is itself updated upstream to now have content A''. Given that files no longer contain uniquely identifying hashes and filenames are, in this instance, unchanged, how can the new A'' state be identified in order to affect a similar (or otherwise) change in A'?

Either you completely miss the point of using git or I completely missed your expectations.
Time to take a step back and try again, with more details:

1) Git does not store files. It stores the history of changes.
All git repos start with the very same initial state: an empty directory.
You then create a file, add it, and commit a change -> you have just patched the initial state (empty directory) with a new file that has <content>. Your commit is named by its hash and contains a reference to earlier state and the difference you applied. Committing a change also alters HEAD, so it will now reference your commit - this is your history's anchor to reality.

2) Checking out from git repo is like folding a linked list. When you start, you only know HEAD element. HEAD points you to the first (most recent) element. This element is incomplete, but it points you to another element, one step earlier. This element is either inital state (empty directory) or another incomplete element that references its parent. Rinse and repeat.
Once you reach the inital commit, you're done with backtracking. You know the initial state, and you know all changes made throughout the history, so you can reply them to recover state from any commit you are interested in.

3) A, A' and A" are not files. They are points in file's history. In your example point (version) A' located in forked branch depends on _version_ A. If you alter the file A to make it A", then BOTH, version A' and version A" will depend on A.
This means A' does not give a shit about A" - at least it doesn't until you merge the branches. You can rebase your fork to make A' depend on A" instead of A. You can merge A" into A' to create A"' with the very same content rebased A' would have. Which one is better depends mostly on the granularity of history you are interested in. Rebase will keep all commits along the way. Merge will flatten a part of history into a single commit.
Back to top
View user's profile Send private message
Hu
Moderator
Moderator


Joined: 06 Mar 2007
Posts: 21631

PostPosted: Thu Mar 16, 2017 1:14 am    Post subject: Reply with quote

Since Git tracks the digest of every version of every file it manages, you can get that digest for any point in history, without needing to checkout those points and run an external tool. I think the flow you want is:
  • git clone $gentoo_portage
  • cp $gentoo_portage/category/package/package-1.0.ebuild $overlay/category/package/
  • cd $overlay
  • git init .
  • git add .
  • git commit -m 'Import package-1.0.ebuild from Gentoo Portage commit abc123' # Useful, but not absolutely necessary, to identify the HEAD of $gentoo_portage in this message
Time passes. One or both sides make changes to package-1.0.ebuild. For completeness, we will pretend that nobody (except Git itself) records which side(s) changed, so now we need to derive that information. To see local changes, git log -- category/package/package-1.0.ebuild. To see remote changes, we need to know the most recent common ancestor. Since this exercise intentionally does not have an actual common ancestor commit, we must fake it. In the good case, someone recorded the most recent Gentoo Portage commit ID in a Git log message. If so, then look up that ID, cd to $gentoo_portage, and run git log $recorded_id.. -- category/package/package-1.0.ebuild. If not, then we need to derive that by examining history. Run git log --raw --no-abbrev -- category/package/package-1.0.ebuild in both repositories. Find the most recent commit on the Gentoo Portage side where the shown hash matches one from the overlay side. That is the commit in Gentoo Portage when the overlay's ebuild matched the one in main Portage, either because Gentoo incorporated all changes from the overlay or because the overlay was synchronized from Gentoo. That commit is $recorded_id, which can then be used to see what Gentoo has done since that point.
Back to top
View user's profile Send private message
srcshelton
n00b
n00b


Joined: 10 Apr 2004
Posts: 22
Location: Cambridge

PostPosted: Fri Mar 17, 2017 9:33 am    Post subject: Reply with quote

Last night, my checkout of the Portage mirror was up to date and in sync. Overnight, cron invokes 'emaint sync'. This morning I see:

Code:
$ git status
On branch master
Your branch is behind 'origin/master' by 313 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   app-admin/filebeat/Manifest
        modified:   app-admin/logstash-bin/Manifest
        deleted:    app-admin/logstash-bin/logstash-bin-5.2.0.ebuild
        modified:   app-benchmarks/i7z/i7z-93_p20131012.ebuild
        modified:   app-benchmarks/stress/stress-1.0.4-r1.ebuild
        modified:   app-benchmarks/sysbench/Manifest
        modified:   app-benchmarks/sysbench/sysbench-9999.ebuild
        modified:   app-crypt/gpgme/Manifest
        deleted:    app-crypt/gpgme/gpgme-1.5.5.ebuild
        modified:   app-crypt/gpgme/gpgme-1.8.0-r2.ebuild
        modified:   app-crypt/quickcrypt/quickcrypt-0.9.2b-r1.ebuild
        deleted:    app-crypt/quickcrypt/quickcrypt-0.9.2b.ebuild
        modified:   app-editors/gedit-plugins/gedit-plugins-3.20.0.ebuild
        modified:   app-editors/gedit-plugins/gedit-plugins-3.22.0.ebuild
        modified:   app-editors/gedit/gedit-3.20.2.ebuild
        modified:   app-editors/gedit/gedit-3.22.0.ebuild
        modified:   app-editors/neovim/neovim-0.1.4.ebuild
        modified:   app-editors/vile/vile-9.8r.ebuild
        modified:   app-emulation/virtualbox-additions/Manifest
        deleted:    app-emulation/virtualbox-additions/virtualbox-additions-5.1.14.ebuild
        modified:   app-emulation/virtualbox-bin/Manifest
        deleted:    app-emulation/virtualbox-bin/virtualbox-bin-5.1.14.112924.ebuild
        modified:   app-emulation/virtualbox-extpack-oracle/Manifest
        deleted:    app-emulation/virtualbox-extpack-oracle/virtualbox-extpack-oracle-5.1.14.112924.ebuild
        modified:   app-emulation/virtualbox-guest-additions/Manifest
        deleted:    app-emulation/virtualbox-guest-additions/virtualbox-guest-additions-5.1.14.ebuild
        modified:   app-emulation/virtualbox-modules/Manifest
        deleted:    app-emulation/virtualbox-modules/virtualbox-modules-5.1.14.ebuild
        modified:   app-emulation/virtualbox/Manifest
        deleted:    app-emulation/virtualbox/virtualbox-5.1.14.ebuild
        modified:   app-laptop/laptop-mode-tools/Manifest
        deleted:    app-laptop/laptop-mode-tools/laptop-mode-tools-1.66.ebuild
        deleted:    app-laptop/laptop-mode-tools/laptop-mode-tools-1.69.2.ebuild
        modified:   app-laptop/laptop-mode-tools/laptop-mode-tools-1.70.ebuild
        modified:   app-leechcraft/lcpackgen/Manifest
        modified:   app-misc/chkcrontab/Manifest
        modified:   app-misc/chkcrontab/metadata.xml
        modified:   app-misc/elasticsearch/Manifest
        modified:   app-misc/mc/mc-4.8.18-r1.ebuild
        modified:   app-misc/neofetch/neofetch-3.0.1.ebuild
        modified:   app-portage/gentoolkit/gentoolkit-0.3.3.ebuild
        modified:   app-text/iso-codes/Manifest
        deleted:    app-text/iso-codes/iso-codes-3.70.ebuild
        modified:   app-text/iso-codes/iso-codes-3.74.ebuild
        modified:   app-text/libwps/Manifest
        deleted:    app-text/rarian/rarian-0.8.1-r2.ebuild
        modified:   app-text/rarian/rarian-0.8.1-r3.ebuild
        modified:   dev-cpp/commoncpp2/commoncpp2-1.8.1-r3.ebuild
        modified:   dev-cpp/libxmlpp/Manifest
        deleted:    dev-cpp/libxmlpp/libxmlpp-3.0.0.ebuild
        modified:   dev-cpp/libxmlpp/libxmlpp-3.0.1.ebuild
        modified:   dev-db/mariadb/mariadb-10.0.30.ebuild
        modified:   dev-db/mysqltuner/Manifest
        modified:   dev-db/mysqltuner/metadata.xml
        modified:   dev-java/cssparser/Manifest
        modified:   dev-lang/php/Manifest
        modified:   dev-libs/appstream-glib/Manifest
        deleted:    dev-libs/appstream-glib/appstream-glib-0.6.3.ebuild
        modified:   dev-libs/appstream-glib/appstream-glib-0.6.7.ebuild
        modified:   dev-libs/boost/boost-1.62.0-r1.ebuild
        modified:   dev-libs/geoip/geoip-1.6.9-r1.ebuild
        modified:   dev-libs/gmime/gmime-2.6.23.ebuild
        modified:   dev-libs/injeqt/Manifest
        modified:   dev-libs/libbsd/libbsd-0.8.3.ebuild
        modified:   dev-libs/libevdev/Manifest
        deleted:    dev-libs/libevdev/libevdev-1.4.4.ebuild
        deleted:    dev-libs/libevdev/libevdev-1.5.2.ebuild
        deleted:    dev-libs/libevdev/libevdev-1.5.4.ebuild
        deleted:    dev-libs/libevdev/libevdev-1.5.5.ebuild
        modified:   dev-libs/libevdev/libevdev-1.5.6.ebuild
        modified:   dev-libs/libgdata/Manifest
        deleted:    dev-libs/libgdata/libgdata-0.17.5.ebuild
        modified:   dev-libs/libgdata/libgdata-0.17.6.ebuild
        modified:   dev-libs/libinput/Manifest
        deleted:    dev-libs/libinput/libinput-1.6.1.ebuild
        modified:   dev-libs/libinput/libinput-1.6.2.ebuild
        modified:   dev-libs/libunique/libunique-1.1.6-r2.ebuild
        modified:   dev-libs/libunique/libunique-3.0.2-r1.ebuild
        modified:   dev-libs/libwacom/Manifest
        deleted:    dev-libs/libwacom/libwacom-0.18.ebuild
        deleted:    dev-libs/libwacom/libwacom-0.22.ebuild
        deleted:    dev-libs/libwacom/libwacom-0.23.ebuild
        modified:   dev-libs/libxslt/libxslt-1.1.29-r1.ebuild
        modified:   dev-libs/link-grammar/link-grammar-5.3.11.ebuild
        modified:   dev-libs/sway/Manifest
        modified:   dev-libs/sway/metadata.xml
        deleted:    dev-libs/sway/sway-0.10.ebuild
        modified:   dev-libs/tinyxml/tinyxml-2.6.2-r2.ebuild
        modified:   dev-libs/wayland-protocols/Manifest
        deleted:    dev-libs/wayland-protocols/wayland-protocols-1.3.ebuild
        deleted:    dev-libs/wayland-protocols/wayland-protocols-1.4.ebuild
        deleted:    dev-libs/wayland-protocols/wayland-protocols-1.5.ebuild
        modified:   dev-libs/wayland-protocols/wayland-protocols-1.7.ebuild
        modified:   dev-libs/wayland/Manifest
        deleted:    dev-libs/wayland/wayland-1.11.0.ebuild
        modified:   dev-libs/wayland/wayland-1.12.0.ebuild
        deleted:    dev-libs/wayland/wayland-1.7.0.ebuild
        deleted:    dev-libs/wayland/wayland-1.9.0.ebuild
        modified:   dev-libs/wlc/Manifest
        modified:   dev-libs/wlc/metadata.xml
        deleted:    dev-libs/wlc/wlc-0.0.5.ebuild
        deleted:    dev-libs/wlc/wlc-0.0.6.ebuild
        modified:   dev-lua/busted/busted-2.0_rc12_p1.ebuild
        modified:   dev-lua/dkjson/dkjson-2.5.ebuild
        modified:   dev-lua/lua-term/lua-term-0.3.ebuild
        modified:   dev-lua/lua_cliargs/lua_cliargs-3.0_p1.ebuild
        modified:   dev-lua/luassert/luassert-1.7.9.ebuild
        modified:   dev-lua/luasystem/luasystem-0.2.0_p0.ebuild
        modified:   dev-lua/mediator_lua/mediator_lua-1.1.2_p0.ebuild
        modified:   dev-lua/mpack/mpack-1.0.4.ebuild
        modified:   dev-lua/penlight/penlight-1.3.2.ebuild
        modified:   dev-lua/say/say-1.3_p1.ebuild
        modified:   dev-perl/Net-CUPS/Net-CUPS-0.630.0.ebuild
        modified:   dev-perl/Net-SSLeay/Manifest
        deleted:    dev-perl/Net-SSLeay/Net-SSLeay-1.720.0-r1.ebuild
        modified:   dev-perl/glib-perl/glib-perl-1.324.0.ebuild
        modified:   dev-python/PyContracts/PyContracts-1.7.9.ebuild
        modified:   dev-python/PyQt4/PyQt4-4.12.ebuild
        modified:   dev-python/PyQt5/PyQt5-5.7.1.ebuild
        modified:   dev-python/anyjson/anyjson-0.3.3-r1.ebuild
        modified:   dev-python/coverage/coverage-4.1.ebuild
        modified:   dev-python/coverage/coverage-4.2.ebuild
        modified:   dev-python/decorator/decorator-4.0.11.ebuild
        modified:   dev-python/dill/dill-0.2.5.ebuild
        modified:   dev-python/elasticsearch-py/Manifest
        deleted:    dev-python/elasticsearch-py/elasticsearch-py-2.4.0.ebuild
        deleted:    dev-python/elasticsearch-py/elasticsearch-py-5.0.0.ebuild
        modified:   dev-python/enum34/enum34-1.1.6.ebuild
        modified:   dev-python/functools32/functools32-3.2.3.ebuild
        modified:   dev-python/ipython_genutils/Manifest
        modified:   dev-python/jsonschema/jsonschema-2.5.1-r2.ebuild
        modified:   dev-python/mako/mako-1.0.3.ebuild
        modified:   dev-python/nbsphinx/Manifest
        modified:   dev-python/neovim-python-client/Manifest
        modified:   dev-python/nose-cover3/nose-cover3-0.1.0-r1.ebuild
        modified:   dev-python/numpydoc/numpydoc-0.6.0.ebuild
        modified:   dev-python/py-amqp/py-amqp-1.4.9.ebuild
        modified:   dev-python/py-amqp/py-amqp-2.1.4.ebuild
        modified:   dev-python/pyro/Manifest
        modified:   dev-python/pytest-shutil/Manifest
        modified:   dev-python/pytest-virtualenv/Manifest
        modified:   dev-python/python-discid/Manifest
        modified:   dev-python/python-keystoneclient/Manifest
        modified:   dev-python/rfc3986/rfc3986-0.3.1.ebuild
        modified:   dev-python/serpent/Manifest
        modified:   dev-python/serpent/serpent-1.12.ebuild
        modified:   dev-python/sip/sip-4.19.1.ebuild
        modified:   dev-python/six/six-1.10.0.ebuild
        modified:   dev-python/strict-rfc3339/strict-rfc3339-0.6.ebuild
        modified:   dev-python/vcversioner/vcversioner-2.16.0.0.ebuild
        modified:   dev-python/webcolors/webcolors-1.5.ebuild
        modified:   dev-python/wheel/wheel-0.29.0.ebuild
        modified:   dev-qt/qtlocation/qtlocation-5.6.2.ebuild
        modified:   dev-ruby/simplecov/Manifest
        modified:   dev-ruby/uglifier/Manifest
        modified:   dev-tex/biber/Manifest
        deleted:    dev-tex/biber/biber-2.4.ebuild
        deleted:    dev-tex/biber/files/biber-2.1-drop-mozilla-ca.patch
        modified:   dev-tex/biblatex/Manifest
        deleted:    dev-tex/biblatex/biblatex-3.3.ebuild
        deleted:    dev-tex/biblatex/biblatex-3.4.ebuild
        modified:   dev-util/boost-build/boost-build-1.62.0-r1.ebuild
        modified:   dev-util/cmake/cmake-3.7.2.ebuild
        modified:   dev-util/drone/Manifest
        deleted:    dev-util/drone/drone-0.5.0_pre20170224.ebuild
        modified:   dev-util/gtk-builder-convert/gtk-builder-convert-2.24.31-r1.ebuild
        modified:   dev-util/splint/splint-3.1.2-r1.ebuild
        modified:   dev-vcs/tortoisehg/Manifest
        modified:   games-puzzle/sgt-puzzles/sgt-puzzles-20170228.ebuild
        modified:   games-strategy/freeorion/Manifest
        deleted:    games-strategy/freeorion/files/freeorion-0.4.5-boost-1.61.patch
        deleted:    games-strategy/freeorion/freeorion-0.4.5-r1.ebuild
        deleted:    games-strategy/freeorion/freeorion-0.4.5.ebuild
        modified:   games-strategy/freeorion/metadata.xml
        modified:   gnome-base/dconf/dconf-0.26.0-r1.ebuild
        modified:   gnome-base/gnome-common/gnome-common-3.18.0-r1.ebuild
        modified:   gnome-base/nautilus/Manifest
        modified:   gnome-base/nautilus/metadata.xml
        deleted:    kde-apps/kdeedu-meta/kdeedu-meta-16.12.3.ebuild
        modified:   media-gfx/gphoto2/gphoto2-2.5.11.ebuild
        modified:   media-libs/libepoxy/Manifest
        deleted:    media-libs/libepoxy/libepoxy-1.2.ebuild
        deleted:    media-libs/libepoxy/libepoxy-1.3.1.ebuild
        modified:   media-libs/libepoxy/libepoxy-1.4.1.ebuild
        modified:   media-libs/libgphoto2/libgphoto2-2.5.12.ebuild
        modified:   media-libs/libv4l/libv4l-1.10.1.ebuild
        modified:   media-libs/mesa/Manifest
        deleted:    media-libs/mesa/files/mesa-12.0-sysmacros.patch
        deleted:    media-libs/mesa/mesa-11.2.2.ebuild
        deleted:    media-libs/mesa/mesa-12.0.1.ebuild
        deleted:    media-libs/mesa/mesa-12.0.6.ebuild
        modified:   media-libs/mesa/mesa-13.0.5.ebuild
        modified:   media-libs/zimg/Manifest
        deleted:    media-libs/zimg/zimg-2.3.ebuild
        modified:   media-libs/zimg/zimg-9999.ebuild
        modified:   media-plugins/swh-lv2/Manifest
        modified:   media-sound/pulseaudio/pulseaudio-10.0.ebuild
        modified:   media-video/vlc/vlc-2.2.4-r1.ebuild
        modified:   net-analyzer/wireshark/wireshark-2.2.5.ebuild
        modified:   net-dns/dnssec-root/dnssec-root-20150403.ebuild
        modified:   net-dns/ldns-utils/ldns-utils-1.6.17.ebuild
        modified:   net-dns/libidn2/libidn2-0.16-r1.ebuild
        modified:   net-dns/openresolv/openresolv-3.8.1.ebuild
        modified:   net-dns/unbound/unbound-1.5.10.ebuild
        modified:   net-firewall/firehol/Manifest
        deleted:    net-firewall/firehol/files/firehol-2.0.2-autosave.patch
        deleted:    net-firewall/firehol/firehol-2.0.3-r1.ebuild
        modified:   net-firewall/firehol/firehol-3.1.3-r1.ebuild
        modified:   net-firewall/firehol/firehol-3.1.3.ebuild
        modified:   net-fs/docker-volume-netshare/Manifest
        modified:   net-im/kadu/Manifest
        modified:   net-im/slack-bin/Manifest
        modified:   net-libs/libgadu/Manifest
        modified:   net-libs/neon/neon-0.30.2.ebuild
        modified:   net-libs/nodejs/Manifest
        modified:   net-libs/rb_libtorrent/rb_libtorrent-1.1.2.ebuild
        modified:   net-misc/iprange/iprange-1.0.3.ebuild
        modified:   net-misc/lksctp-tools/lksctp-tools-1.0.16.ebuild
        modified:   net-misc/streamlink/Manifest
        deleted:    net-misc/streamlink/streamlink-0.3.2.ebuild
        modified:   net-misc/tigervnc/tigervnc-1.7.1-r2.ebuild
        modified:   net-misc/youtube-viewer/Manifest
        modified:   net-misc/youtube-viewer/youtube-viewer-9999.ebuild
        modified:   net-nntp/pan/pan-0.141.ebuild
        modified:   net-wireless/spectools/spectools-2016.01.1.ebuild
        modified:   profiles/arch/arm/use.mask
        modified:   profiles/arch/ia64/package.use.mask
        modified:   profiles/arch/powerpc/package.use.stable.mask
        modified:   profiles/base/package.use.mask
        modified:   profiles/base/package.use.stable.mask
        modified:   profiles/package.mask
        modified:   profiles/prefix/windows/cygwin/package.mask
        modified:   sci-electronics/xcircuit/Manifest
        deleted:    sci-electronics/xcircuit/xcircuit-3.8.77.ebuild
        deleted:    sci-electronics/xcircuit/xcircuit-3.8.81.ebuild
        modified:   sci-libs/cxsparse/cxsparse-3.1.2-r1.ebuild
        modified:   sci-libs/suitesparseconfig/suitesparseconfig-4.2.1-r1.ebuild
        modified:   sys-apps/diffutils/diffutils-3.5.ebuild
        modified:   sys-apps/man2html/man2html-1.6g.ebuild
        modified:   sys-apps/portage/Manifest
        deleted:    sys-apps/portage/portage-2.2.26.ebuild
        deleted:    sys-apps/portage/portage-2.3.1.ebuild
        deleted:    sys-apps/portage/portage-2.3.2.ebuild
        modified:   sys-auth/docker_auth/Manifest
        modified:   sys-auth/pam_mount/pam_mount-2.16.ebuild
        modified:   sys-cluster/mpich/mpich-3.2-r1.ebuild
        modified:   sys-cluster/nova/Manifest
        modified:   sys-firmware/amdgpu-ucode/Manifest
        deleted:    sys-firmware/amdgpu-ucode/amdgpu-ucode-20160628.ebuild
        modified:   sys-firmware/radeon-ucode/Manifest
        deleted:    sys-firmware/radeon-ucode/radeon-ucode-20160628.ebuild
        modified:   sys-fs/cryptsetup/Manifest
        modified:   sys-kernel/ck-sources/ck-sources-4.10.0.ebuild
        modified:   sys-kernel/ck-sources/ck-sources-4.10.1.ebuild
        modified:   sys-kernel/ck-sources/ck-sources-4.10.2.ebuild
        modified:   sys-kernel/ck-sources/ck-sources-4.9.12.ebuild
        modified:   sys-kernel/ck-sources/ck-sources-4.9.13.ebuild
        modified:   sys-kernel/ck-sources/ck-sources-4.9.14.ebuild
        modified:   sys-kernel/vanilla-sources/Manifest
        deleted:    sys-kernel/vanilla-sources/vanilla-sources-3.16.41.ebuild
        deleted:    sys-kernel/vanilla-sources/vanilla-sources-3.2.86.ebuild
        modified:   sys-libs/binutils-libs/binutils-libs-2.27.ebuild
        modified:   sys-libs/libutempter/Manifest
        deleted:    sys-libs/libutempter/libutempter-1.1.5-r1.ebuild
        deleted:    sys-libs/libutempter/libutempter-1.1.5.ebuild
        deleted:    sys-libs/libutempter/libutempter-1.1.6-r1.ebuild
        modified:   sys-libs/libutempter/libutempter-1.1.6-r2.ebuild
        deleted:    sys-libs/libutempter/libutempter-1.1.6.ebuild
        modified:   www-apps/drupal/Manifest
        deleted:    www-apps/drupal/drupal-8.2.5.ebuild
        deleted:    www-apps/drupal/drupal-8.2.6.ebuild
        modified:   www-apps/nanoc/Manifest
        modified:   www-client/opera-beta/Manifest
        deleted:    www-client/opera-beta/opera-beta-44.0.2510.401.ebuild
        modified:   x11-apps/intel-gpu-tools/Manifest
        deleted:    x11-apps/intel-gpu-tools/intel-gpu-tools-1.12.ebuild
        modified:   x11-apps/intel-gpu-tools/metadata.xml
        modified:   x11-apps/radeontop/Manifest
        deleted:    x11-apps/radeontop/radeontop-0.9.ebuild
        modified:   x11-apps/radeontop/radeontop-9999.ebuild
        modified:   x11-apps/scripts/scripts-1.0.1-r1.ebuild
        modified:   x11-apps/sessreg/Manifest
        deleted:    x11-apps/sessreg/files/sessreg-1.1.0-gcc-5.patch
        deleted:    x11-apps/sessreg/sessreg-1.0.8.ebuild
        deleted:    x11-apps/sessreg/sessreg-1.1.0.ebuild
        modified:   x11-apps/sessreg/sessreg-1.1.1.ebuild
        modified:   x11-apps/xauth/Manifest
        modified:   x11-apps/xauth/xauth-1.0.10.ebuild
        deleted:    x11-apps/xauth/xauth-1.0.9-r1.ebuild
        deleted:    x11-apps/xauth/xauth-1.0.9-r2.ebuild
        modified:   x11-apps/xbiff/xbiff-1.0.3.ebuild
        modified:   x11-apps/xconsole/Manifest
        deleted:    x11-apps/xconsole/xconsole-1.0.6.ebuild
        modified:   x11-apps/xconsole/xconsole-1.0.7.ebuild
        modified:   x11-apps/xdbedizzy/xdbedizzy-1.1.0.ebuild
        modified:   x11-apps/xeyes/xeyes-1.1.1.ebuild
        modified:   x11-apps/xf86dga/xf86dga-1.0.3.ebuild
        modified:   x11-apps/xmore/xmore-1.0.2.ebuild
        modified:   x11-base/xorg-drivers/xorg-drivers-1.19.ebuild
        modified:   x11-base/xorg-server/xorg-server-1.18.4.ebuild
        modified:   x11-base/xorg-server/xorg-server-1.19.2.ebuild
        modified:   x11-base/xorg-server/xorg-server-1.19.3.ebuild
        modified:   x11-base/xorg-server/xorg-server-9999.ebuild
        modified:   x11-drivers/xf86-input-evdev/Manifest
        deleted:    x11-drivers/xf86-input-evdev/xf86-input-evdev-2.10.3.ebuild
        deleted:    x11-drivers/xf86-input-evdev/xf86-input-evdev-2.10.4.ebuild
        modified:   x11-drivers/xf86-input-evdev/xf86-input-evdev-2.10.5.ebuild
        deleted:    x11-drivers/xf86-input-evdev/xf86-input-evdev-2.9.1.ebuild
        deleted:    x11-drivers/xf86-input-evdev/xf86-input-evdev-2.9.2.ebuild
        modified:   x11-drivers/xf86-input-joystick/Manifest
        deleted:    x11-drivers/xf86-input-joystick/xf86-input-joystick-1.6.2.ebuild
        modified:   x11-drivers/xf86-input-joystick/xf86-input-joystick-1.6.3.ebuild
        modified:   x11-drivers/xf86-input-keyboard/Manifest
        deleted:    x11-drivers/xf86-input-keyboard/xf86-input-keyboard-1.8.1.ebuild
        modified:   x11-drivers/xf86-input-keyboard/xf86-input-keyboard-1.9.0.ebuild
        modified:   x11-drivers/xf86-input-libinput/Manifest
        deleted:    x11-drivers/xf86-input-libinput/xf86-input-libinput-0.14.0.ebuild
        deleted:    x11-drivers/xf86-input-libinput/xf86-input-libinput-0.23.0.ebuild
        modified:   x11-drivers/xf86-input-libinput/xf86-input-libinput-0.24.0.ebuild
        modified:   x11-drivers/xf86-input-mouse/Manifest
        deleted:    x11-drivers/xf86-input-mouse/files/xf86-input-mouse-1.8.1-gcc46-workaround.patch
        deleted:    x11-drivers/xf86-input-mouse/xf86-input-mouse-1.8.1.ebuild
        deleted:    x11-drivers/xf86-input-mouse/xf86-input-mouse-1.9.1.ebuild
        modified:   x11-drivers/xf86-input-mouse/xf86-input-mouse-1.9.2.ebuild
        modified:   x11-drivers/xf86-input-synaptics/Manifest
        deleted:    x11-drivers/xf86-input-synaptics/xf86-input-synaptics-1.8.2.ebuild
        deleted:    x11-drivers/xf86-input-synaptics/xf86-input-synaptics-1.8.3.ebuild
        modified:   x11-drivers/xf86-input-vmmouse/Manifest
        deleted:    x11-drivers/xf86-input-vmmouse/files/xf86-input-vmmouse-13.0.0-add-missing-include.patch
        deleted:    x11-drivers/xf86-input-vmmouse/xf86-input-vmmouse-13.0.0-r1.ebuild
        deleted:    x11-drivers/xf86-input-vmmouse/xf86-input-vmmouse-13.1.0.ebuild
        modified:   x11-drivers/xf86-input-wacom/Manifest
        deleted:    x11-drivers/xf86-input-wacom/xf86-input-wacom-0.24.0.ebuild
        deleted:    x11-drivers/xf86-input-wacom/xf86-input-wacom-0.29.0.ebuild
        deleted:    x11-drivers/xf86-input-wacom/xf86-input-wacom-0.30.0.ebuild
        deleted:    x11-drivers/xf86-input-wacom/xf86-input-wacom-0.31.0.ebuild
        deleted:    x11-drivers/xf86-input-wacom/xf86-input-wacom-0.32.0.ebuild
        deleted:    x11-drivers/xf86-input-wacom/xf86-input-wacom-0.33.0.ebuild
        modified:   x11-drivers/xf86-video-amdgpu/Manifest
        deleted:    x11-drivers/xf86-video-amdgpu/xf86-video-amdgpu-1.1.0.ebuild
        deleted:    x11-drivers/xf86-video-amdgpu/xf86-video-amdgpu-1.1.2.ebuild
        modified:   x11-drivers/xf86-video-amdgpu/xf86-video-amdgpu-9999.ebuild
        modified:   x11-drivers/xf86-video-ati/Manifest
        deleted:    x11-drivers/xf86-video-ati/xf86-video-ati-7.5.0.ebuild
        deleted:    x11-drivers/xf86-video-ati/xf86-video-ati-7.6.1.ebuild
        deleted:    x11-drivers/xf86-video-ati/xf86-video-ati-7.7.0.ebuild
        deleted:    x11-drivers/xf86-video-ati/xf86-video-ati-7.7.1.ebuild
        modified:   x11-drivers/xf86-video-chips/Manifest
        deleted:    x11-drivers/xf86-video-chips/xf86-video-chips-1.2.6.ebuild
        modified:   x11-drivers/xf86-video-glint/Manifest
        deleted:    x11-drivers/xf86-video-glint/files/xf86-video-glint-1.2.8-remove-mibstore_h.patch
        deleted:    x11-drivers/xf86-video-glint/xf86-video-glint-1.2.7.ebuild
        deleted:    x11-drivers/xf86-video-glint/xf86-video-glint-1.2.8-r1.ebuild
        deleted:    x11-drivers/xf86-video-glint/xf86-video-glint-1.2.8.ebuild
        modified:   x11-drivers/xf86-video-i740/Manifest
        deleted:    x11-drivers/xf86-video-i740/xf86-video-i740-1.3.5.ebuild
        modified:   x11-drivers/xf86-video-intel/Manifest
        deleted:    x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.917-config-header.patch
        deleted:    x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.917-libdrm-kernel-4_0-crash.patch
        deleted:    x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.917-sna-udev-fstat.patch
        deleted:    x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.917-uxa-udev-fstat.patch
        deleted:    x11-drivers/xf86-video-intel/xf86-video-intel-2.99.917-r2.ebuild
        deleted:    x11-drivers/xf86-video-intel/xf86-video-intel-2.99.917_p20160621-r1.ebuild
        deleted:    x11-drivers/xf86-video-intel/xf86-video-intel-2.99.917_p20161206.ebuild
        modified:   x11-drivers/xf86-video-intel/xf86-video-intel-2.99.917_p20170216.ebuild
        modified:   x11-drivers/xf86-video-intel/xf86-video-intel-2.99.917_p20170313.ebuild
        modified:   x11-drivers/xf86-video-mga/Manifest
        deleted:    x11-drivers/xf86-video-mga/xf86-video-mga-1.6.2.ebuild
        deleted:    x11-drivers/xf86-video-mga/xf86-video-mga-1.6.3.ebuild
        deleted:    x11-drivers/xf86-video-mga/xf86-video-mga-1.6.4.ebuild
        modified:   x11-drivers/xf86-video-nouveau/Manifest
        deleted:    x11-drivers/xf86-video-nouveau/files/xf86-video-nouveau-1.0.11-glamor-automagic.patch
        deleted:    x11-drivers/xf86-video-nouveau/xf86-video-nouveau-1.0.12.ebuild
        modified:   x11-drivers/xf86-video-nv/Manifest
        deleted:    x11-drivers/xf86-video-nv/files/xf86-video-nv-2.1.20-remove-mibstore_h.patch
        deleted:    x11-drivers/xf86-video-nv/xf86-video-nv-2.1.20-r1.ebuild
        modified:   x11-drivers/xf86-video-omap/Manifest
        deleted:    x11-drivers/xf86-video-omap/xf86-video-omap-0.4.2.ebuild
        deleted:    x11-drivers/xf86-video-omap/xf86-video-omap-0.4.3.ebuild
        deleted:    x11-drivers/xf86-video-omap/xf86-video-omap-0.4.4.ebuild
        modified:   x11-drivers/xf86-video-openchrome/Manifest
        deleted:    x11-drivers/xf86-video-openchrome/files/xf86-video-openchrome-0.3.3-glibc-2.20.patch
        deleted:    x11-drivers/xf86-video-openchrome/xf86-video-openchrome-0.3.3.ebuild
        deleted:    x11-drivers/xf86-video-openchrome/xf86-video-openchrome-0.4.0.ebuild
        modified:   x11-drivers/xf86-video-qxl/Manifest
        deleted:    x11-drivers/xf86-video-qxl/xf86-video-qxl-0.1.3.ebuild
        deleted:    x11-drivers/xf86-video-qxl/xf86-video-qxl-0.1.4-r1.ebuild
        deleted:    x11-drivers/xf86-video-qxl/xf86-video-qxl-0.1.4.ebuild
        modified:   x11-drivers/xf86-video-r128/Manifest
        deleted:    x11-drivers/xf86-video-r128/xf86-video-r128-6.10.0.ebuild
        deleted:    x11-drivers/xf86-video-r128/xf86-video-r128-6.10.1.ebuild
        deleted:    x11-drivers/xf86-video-r128/xf86-video-r128-6.9.2.ebuild
        modified:   x11-drivers/xf86-video-savage/Manifest
        deleted:    x11-drivers/xf86-video-savage/xf86-video-savage-2.3.8.ebuild
        modified:   x11-drivers/xf86-video-siliconmotion/Manifest
        deleted:    x11-drivers/xf86-video-siliconmotion/xf86-video-siliconmotion-1.7.8.ebuild
        modified:   x11-drivers/xf86-video-sis/Manifest
        deleted:    x11-drivers/xf86-video-sis/xf86-video-sis-0.10.7.ebuild
        deleted:    x11-drivers/xf86-video-sis/xf86-video-sis-0.10.8.ebuild
        modified:   x11-drivers/xf86-video-sisusb/Manifest
        deleted:    x11-drivers/xf86-video-sisusb/files/xf86-video-sisusb-0.9.6-remove-mibstore_h.patch
        deleted:    x11-drivers/xf86-video-sisusb/xf86-video-sisusb-0.9.5.ebuild
        deleted:    x11-drivers/xf86-video-sisusb/xf86-video-sisusb-0.9.6-r1.ebuild
        deleted:    x11-drivers/xf86-video-sisusb/xf86-video-sisusb-0.9.6.ebuild
        modified:   x11-drivers/xf86-video-tdfx/Manifest
        deleted:    x11-drivers/xf86-video-tdfx/xf86-video-tdfx-1.4.6.ebuild
        modified:   x11-drivers/xf86-video-trident/Manifest
        deleted:    x11-drivers/xf86-video-trident/xf86-video-trident-1.3.7.ebuild
        modified:   x11-drivers/xf86-video-virtualbox/Manifest
        deleted:    x11-drivers/xf86-video-virtualbox/xf86-video-virtualbox-5.1.14.ebuild
        modified:   x11-libs/cairo/Manifest
        deleted:    x11-libs/cairo/cairo-1.14.2.ebuild
        deleted:    x11-libs/cairo/cairo-1.14.6.ebuild
        modified:   x11-libs/cairo/cairo-1.14.8.ebuild
        modified:   x11-libs/cairo/metadata.xml
        modified:   x11-libs/gtk+/gtk+-2.24.31-r1.ebuild
        modified:   x11-libs/gtkglext/gtkglext-1.2.0-r4.ebuild
        modified:   x11-libs/libICE/Manifest
        deleted:    x11-libs/libICE/libICE-1.0.8-r1.ebuild
        modified:   x11-libs/libICE/libICE-1.0.9-r1.ebuild
        deleted:    x11-libs/libICE/libICE-1.0.9.ebuild
        modified:   x11-libs/libX11/Manifest
        deleted:    x11-libs/libX11/libX11-1.6.4.ebuild
        modified:   x11-libs/libX11/libX11-1.6.5.ebuild
        modified:   x11-libs/libXdmcp/Manifest
        deleted:    x11-libs/libXdmcp/libXdmcp-1.1.1-r1.ebuild
        modified:   x11-libs/libXdmcp/libXdmcp-1.1.2-r1.ebuild
        deleted:    x11-libs/libXdmcp/libXdmcp-1.1.2.ebuild
        modified:   x11-libs/libXfont/Manifest
        deleted:    x11-libs/libXfont/libXfont-1.5.1.ebuild
        modified:   x11-libs/libXfont/libXfont-1.5.2.ebuild
        modified:   x11-libs/libXfont2/libXfont2-2.0.1.ebuild
        modified:   x11-libs/libXi/Manifest
        deleted:    x11-libs/libXi/libXi-1.7.8.ebuild
        modified:   x11-libs/libXi/libXi-1.7.9.ebuild
        modified:   x11-libs/libdrm/Manifest
        deleted:    x11-libs/libdrm/files/libdrm-2.4.58-solaris.patch
        deleted:    x11-libs/libdrm/files/libdrm-2.4.68-sysmacros.patch
        deleted:    x11-libs/libdrm/libdrm-2.4.59.ebuild
        deleted:    x11-libs/libdrm/libdrm-2.4.65.ebuild
        deleted:    x11-libs/libdrm/libdrm-2.4.68.ebuild
        deleted:    x11-libs/libdrm/libdrm-2.4.70.ebuild
        deleted:    x11-libs/libdrm/libdrm-2.4.73.ebuild
        deleted:    x11-libs/libdrm/libdrm-2.4.74.ebuild
        modified:   x11-libs/libdrm/libdrm-2.4.75.ebuild
        modified:   x11-libs/libxcb/Manifest
        deleted:    x11-libs/libxcb/files/libxcb-1.11-xevie-xprint_removal.patch
        deleted:    x11-libs/libxcb/files/libxcb-1.9.1-conflicting-types-for-xcb_ge_event_t.patch
        deleted:    x11-libs/libxcb/files/libxcb-1.9.1-list-object-has-no-attribute-lenfield_name.patch
        deleted:    x11-libs/libxcb/files/xcb-rebuilder.sh
        deleted:    x11-libs/libxcb/libxcb-1.10.ebuild
        deleted:    x11-libs/libxcb/libxcb-1.11-r1.ebuild
        deleted:    x11-libs/libxcb/libxcb-1.11.1.ebuild
        deleted:    x11-libs/libxcb/libxcb-1.11.ebuild
        modified:   x11-libs/libxcb/libxcb-1.12-r2.ebuild
        deleted:    x11-libs/libxcb/libxcb-1.12.ebuild
        deleted:    x11-libs/libxcb/libxcb-1.9.1-r1.ebuild
        deleted:    x11-libs/libxcb/libxcb-1.9.1.ebuild
        deleted:    x11-libs/libxcb/libxcb-1.9.3-r1.ebuild
        deleted:    x11-libs/libxcb/libxcb-1.9.3.ebuild
        modified:   x11-libs/vte/vte-0.28.2-r208.ebuild
        modified:   x11-misc/colord/colord-1.3.4.ebuild
        deleted:    x11-misc/lndir/lndir-1.0.3.ebuild
        modified:   x11-misc/xbitmaps/xbitmaps-1.1.1-r1.ebuild
        deleted:    x11-misc/xbitmaps/xbitmaps-1.1.1.ebuild
        modified:   x11-misc/xkeyboard-config/Manifest
        deleted:    x11-misc/xkeyboard-config/xkeyboard-config-2.14.ebuild
        deleted:    x11-misc/xkeyboard-config/xkeyboard-config-2.16.ebuild
        deleted:    x11-misc/xkeyboard-config/xkeyboard-config-2.17.ebuild
        deleted:    x11-misc/xkeyboard-config/xkeyboard-config-2.18.ebuild
        deleted:    x11-misc/xkeyboard-config/xkeyboard-config-2.19.ebuild
        modified:   x11-misc/xkeyboard-config/xkeyboard-config-2.20.ebuild
        modified:   x11-misc/xpad/metadata.xml
        modified:   x11-misc/xpad/xpad-4.2.ebuild
        modified:   x11-proto/presentproto/Manifest
        deleted:    x11-proto/presentproto/presentproto-1.0.ebuild
        modified:   x11-proto/presentproto/presentproto-1.1.ebuild
        modified:   x11-proto/xproto/Manifest
        deleted:    x11-proto/xproto/xproto-7.0.27.ebuild
        deleted:    x11-proto/xproto/xproto-7.0.28.ebuild
        deleted:    x11-proto/xproto/xproto-7.0.29.ebuild
        modified:   x11-proto/xproto/xproto-7.0.31.ebuild
        modified:   x11-terms/xterm/Manifest
        deleted:    x11-terms/xterm/xterm-314.ebuild
        deleted:    x11-terms/xterm/xterm-320.ebuild
        deleted:    x11-terms/xterm/xterm-325.ebuild
        deleted:    x11-terms/xterm/xterm-326.ebuild
        modified:   x11-terms/xterm/xterm-327.ebuild
        modified:   x11-themes/gnome-themes-standard/gnome-themes-standard-3.20.2-r1.ebuild
        modified:   x11-themes/gtk-engines-adwaita/gtk-engines-adwaita-3.20.2.ebuild
        modified:   xfce-base/xfwm4/Manifest

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        app-admin/filebeat/filebeat-5.2.2.ebuild
        app-admin/logstash-bin/logstash-bin-5.2.1.ebuild
        app-benchmarks/i7z/files/gcc5.patch
        app-benchmarks/sysbench/sysbench-1.0.4.ebuild
        app-emulation/virtualbox-additions/virtualbox-additions-5.0.36.ebuild
        app-emulation/virtualbox-additions/virtualbox-additions-5.1.18.ebuild
        app-emulation/virtualbox-bin/virtualbox-bin-5.0.36.114008.ebuild
        app-emulation/virtualbox-bin/virtualbox-bin-5.1.18.114002.ebuild
        app-emulation/virtualbox-extpack-oracle/virtualbox-extpack-oracle-5.0.36.114008.ebuild
        app-emulation/virtualbox-extpack-oracle/virtualbox-extpack-oracle-5.1.18.114002.ebuild
        app-emulation/virtualbox-guest-additions/virtualbox-guest-additions-5.0.36.ebuild
        app-emulation/virtualbox-guest-additions/virtualbox-guest-additions-5.1.18.ebuild
        app-emulation/virtualbox-modules/virtualbox-modules-5.0.36.ebuild
        app-emulation/virtualbox-modules/virtualbox-modules-5.1.18.ebuild
        app-emulation/virtualbox/virtualbox-5.0.36.ebuild
        app-emulation/virtualbox/virtualbox-5.1.18.ebuild
        app-leechcraft/lcpackgen/lcpackgen-1.3.1.ebuild
        app-misc/chkcrontab/chkcrontab-1.7.ebuild
        app-misc/elasticsearch/elasticsearch-5.2.2.ebuild
        app-misc/elasticsearch/files/elasticsearch.init8
        app-text/libwps/libwps-0.4.6.ebuild
        dev-db/mysqltuner/mysqltuner-1.6.18.ebuild
        dev-java/cssparser/cssparser-0.9.22.ebuild
        dev-lang/php/php-7.0.17.ebuild
        dev-libs/injeqt/injeqt-1.1.0.ebuild
        dev-libs/sway/sway-0.12.1.ebuild
        dev-libs/wlc/wlc-0.0.8.ebuild
        dev-python/elasticsearch-py/elasticsearch-py-5.2.0.ebuild
        dev-python/ipython_genutils/ipython_genutils-0.2.0.ebuild
        dev-python/nbsphinx/nbsphinx-0.2.13.ebuild
        dev-python/neovim-python-client/neovim-python-client-0.1.13.ebuild
        dev-python/pyro/pyro-4.56.ebuild
        dev-python/pytest-shutil/pytest-shutil-1.2.8.ebuild
        dev-python/pytest-virtualenv/pytest-virtualenv-1.2.7.ebuild
        dev-python/python-discid/python-discid-1.1.1.ebuild
        dev-python/python-keystoneclient/python-keystoneclient-3.5.1.ebuild
        dev-python/serpent/serpent-1.19.ebuild
        dev-ruby/simplecov/simplecov-0.14.0.ebuild
        dev-ruby/uglifier/uglifier-3.1.7.ebuild
        dev-tex/biblatex/biblatex-3.7.ebuild
        dev-util/drone/drone-0.5.0.ebuild
        dev-vcs/tortoisehg/tortoisehg-4.1.1.ebuild
        games-strategy/freeorion/files/freeorion-0.4.6-boost-1.62.patch
        games-strategy/freeorion/files/freeorion.envd
        games-strategy/freeorion/freeorion-0.4.6.ebuild
        gnome-base/nautilus/nautilus-3.22.3.ebuild
        kde-apps/kdeedu-meta/kdeedu-meta-16.12.3-r1.ebuild
        media-gfx/opentoonz/
        media-libs/zimg/zimg-2.5.ebuild
        media-plugins/swh-lv2/swh-lv2-1.0.16.ebuild
        media-sound/supercollider/
        net-fs/docker-volume-netshare/docker-volume-netshare-0.33_p20170209.ebuild
        net-im/kadu/kadu-4.3.ebuild
        net-im/slack-bin/slack-bin-2.5.2.ebuild
        net-libs/libgadu/libgadu-1.12.2.ebuild
        net-libs/nodejs/nodejs-7.7.3.ebuild
        net-misc/streamlink/streamlink-0.4.0.ebuild
        net-misc/youtube-viewer/youtube-viewer-3.2.5.ebuild
        profiles/arch/hppa/package.use.stable.mask
        sci-electronics/xcircuit/xcircuit-3.8.83.ebuild
        sci-electronics/xcircuit/xcircuit-3.9.62.ebuild
        sys-apps/portage/portage-2.3.5.ebuild
        sys-auth/docker_auth/docker_auth-1.2_p20170227.ebuild
        sys-cluster/ceph/ceph-10.2.5-r5.ebuild
        sys-cluster/ceph/ceph-10.2.6-r1.ebuild
        sys-cluster/ceph/files/ceph.confd-r2
        sys-cluster/ceph/files/ceph.initd-r4
        sys-cluster/nova/nova-15.0.1.ebuild
        sys-fs/cryptsetup/cryptsetup-1.7.4.ebuild
        sys-kernel/vanilla-sources/vanilla-sources-3.16.42.ebuild
        sys-kernel/vanilla-sources/vanilla-sources-3.2.87.ebuild
        www-apps/drupal/drupal-8.2.7.ebuild
        www-apps/nanoc/nanoc-4.6.4.ebuild
        www-client/opera-beta/opera-beta-44.0.2510.849.ebuild
        x11-apps/radeontop/radeontop-1.0.ebuild
        x11-drivers/xf86-video-amdgpu/xf86-video-amdgpu-1.3.0.ebuild
        x11-drivers/xf86-video-ati/xf86-video-ati-7.9.0.ebuild
        x11-drivers/xf86-video-virtualbox/xf86-video-virtualbox-5.0.36.ebuild
        x11-drivers/xf86-video-virtualbox/xf86-video-virtualbox-5.1.18.ebuild
        x11-libs/libXpresent/
        x11-misc/lightdm-kde/lightdm-kde-0.3.2.1-r2.ebuild
        xfce-base/xfwm4/xfwm4-4.12.4.ebuild
        xfce-base/xfwm4/xfwm4-4.13.0.ebuild


It took 2.58 seconds to enumerate untracked files. 'status -uno'
may speed it up, but you have to be careful not to forget to add
new files yourself (see 'git help status').
no changes added to commit (use "git add" and/or "git commit -a")


... and this is not unusual, unfortunately - in this case, 'master' can still be fast-forwarded, but the result is equally likely to be a divergent history with a different number of commits between the unmodified local checkout and upstream.. Once the above files are removed locally (after a reset back to a common ancestor has been performed, when required), I am then able to pull and be brought back up to date.

By any reckoning, this renders useless any hashes stored last night pertaining to any of those files specified above as modified, deleted, or untracked - and so for this reason a solution is required which doesn't rely on the consistency over time of the commit hashes in the upstream repo. Sadly.

Or maybe I am missing something obvious here... ?
Back to top
View user's profile Send private message
ct85711
Veteran
Veteran


Joined: 27 Sep 2005
Posts: 1791

PostPosted: Fri Mar 17, 2017 5:19 pm    Post subject: Reply with quote

Quote:
Untracked files:
(use "git add <file>..." to include in what will be committed)


As I said in my earlier post, git is very sensitive on all changes done in the git repo. You can NOT just go modify anything in the git repo (this includes other programs doing it too) without telling git about the changes. Git is not like rsync which will simply ignore anything you change and overwrite/delete your changes. Now you get the fun part of deciding what to do to fix it. You can always add/commit these changes to your git tree, in which case git has been told about the changes and will would attempt to sync. One note on this option, you may run into an issue where it can it will have a conflict on applying the changes when you sync, in which you get to figure out how to handle that.

The other option is to tell git to perform a hard reset on the tree and will remove all of your changes. Then you can sync and not run into any issues.

An optional third option, you could commit all the changes into a separate branch. In this your changes are saved in that branch, but it will be more work involved in keeping that branch synced up to the main (often referred as the master branch). I am not an expert on dealing with branches yet, so you will have to do some research on dealing with this.
Back to top
View user's profile Send private message
srcshelton
n00b
n00b


Joined: 10 Apr 2004
Posts: 22
Location: Cambridge

PostPosted: Fri Mar 17, 2017 7:08 pm    Post subject: Reply with quote

To be clear, none of the above changes were of my doing - they are the result of divergence in the repo history which occurred overnight last night and demonstrate that commit hashes are, in this case, unstable and therefore not useful in determining when changes have occurred.

(Or, at least, a non-matching hash certainly indicates a potential change, but there will be a whole host of false-positives in addition)

In any case, metadata would still need to be stored in order to know what the original state of the file was, so I've decided to simply MD5 each file in each package directory which also exists in the overlay, and then write this to a new, per-package 'files/Manifest.gentoo' file in the overlay, which can be updated after each successful upstream pull and used to detect changes irrespective of the git index state. If anyone's interested, I can post a gist of the script.
Back to top
View user's profile Send private message
szatox
Advocate
Advocate


Joined: 27 Aug 2013
Posts: 3135

PostPosted: Fri Mar 17, 2017 7:26 pm    Post subject: Reply with quote

You have silently dismissed several good hints already and you're not even willing share anything more of your point of view than purely emotional "portage in git sucks".
Fine, you are a free man. This means you can just as well suffer from your ignorance.
Back to top
View user's profile Send private message
ct85711
Veteran
Veteran


Joined: 27 Sep 2005
Posts: 1791

PostPosted: Fri Mar 17, 2017 8:23 pm    Post subject: Reply with quote

Here's the thing, if there is an issue about broken/divergent history in git; this would be a very significant issue. Considering I'm not finding any recent or old bug reports or comments from anyone else about this kind of issue on the web, it leads me to believe it's something on your side. From what I was seeing on searching, the usual breaks is due to conversion from one version control software to another or due to someone resetting (which is effectively rollback some changes). Considering several companies use git for their software development, including the linux kernel, would surely have by now encounter an issue like this.

Now the least likely cause, could potentially be your hd, but I'm assuming you'd have noticed something like that... The next least option I can see, is maybe an incomplete download of the histories on your previous sync, but I'd consider than an unlikely situation. So, the only other options I know of is something with your sync scripts or some other package/program messing around in portage's tree.
Back to top
View user's profile Send private message
Hu
Moderator
Moderator


Joined: 06 Mar 2007
Posts: 21631

PostPosted: Sat Mar 18, 2017 12:45 am    Post subject: Reply with quote

srcshelton wrote:
Last night, my checkout of the Portage mirror was up to date and in sync. Overnight, cron invokes 'emaint sync'. This morning I see:
Your chosen sync method for emaint sync is to run git pull --ff-only, correct?
srcshelton wrote:
... and this is not unusual, unfortunately - in this case, 'master' can still be fast-forwarded, but the result is equally likely to be a divergent history with a different number of commits between the unmodified local checkout and upstream..
By definition, fast-forward cannot cause divergent history. Fast forward is only permitted when one end is a strict ancestor of the other, and the older end has no commits that are absent in the newer end. If any commits would be lost by resetting the HEAD pointer to the new end, then the merge is, by definition, not a fast-forward. Since Git is offering to perform a fast-forward, we can conclude that HEAD points to a commit that is strictly an ancestor of Gentoo's current tip.

From that, we can then infer that all files changed/deleted/added since the most recent commit were changed by you (or, as you later reiterated, a script running on your behalf) outside of the control of Git. This is likely to cause you trouble sooner or later, since it introduces changes without introducing the commits that log those changes.
srcshelton wrote:
To be clear, none of the above changes were of my doing - they are the result of divergence in the repo history which occurred overnight last night and demonstrate that commit hashes are, in this case, unstable and therefore not useful in determining when changes have occurred.
I think this is a terminology problem. If the Git commit hashes were unstable, there would be a huge outcry. I have worked on Git repositories where someone reset history in the way you assert has occurred. It caused a mess that caught the attention of every contributor who synced during the window before someone forced history back to where it was supposed to be (and then enabled a post-commit hook to prevent anyone ever doing that again). If someone were rewinding Gentoo's Portage history, Gentoo developers would be raising a huge fuss.
srcshelton wrote:
In any case, metadata would still need to be stored in order to know what the original state of the file was, so I've decided to simply MD5 each file in each package directory which also exists in the overlay, and then write this to a new, per-package 'files/Manifest.gentoo' file in the overlay, which can be updated after each successful upstream pull and used to detect changes irrespective of the git index state. If anyone's interested, I can post a gist of the script.
I think this is the wrong solution. You are welcome to use it, but I think you are making more work for yourself. In particular, your approach loses any ability to selectively integrate (with proper attribution) changes from Gentoo into your working copy. Git could do this for you if you followed the flow I described above. Instead, you will need to do it manually.

If you want to pursue this further, please tell us, starting from a system with no Gentoo Portage tree, the exact steps you followed. If you use wrapper scripts like emaint, tell us exactly what commands it runs on your behalf.
Back to top
View user's profile Send private message
Ant P.
Watchman
Watchman


Joined: 18 Apr 2009
Posts: 6920

PostPosted: Sat Mar 18, 2017 6:00 pm    Post subject: Reply with quote

srcshelton wrote:
they are the result of divergence in the repo history which occurred overnight last night and demonstrate that commit hashes are, in this case, unstable and therefore not useful in determining when changes have occurred.

Well yes, because you're expecting to rely on a hack that fills in CVS $Id$ headers (which are in the process of being removed) and complaining when they don't work in git. Stop doing that and learn to use actual git.
Back to top
View user's profile Send private message
pjp
Administrator
Administrator


Joined: 16 Apr 2002
Posts: 20067

PostPosted: Tue Mar 28, 2017 3:27 am    Post subject: Reply with quote

Split off portage git pull: up to date (not recognizing changes).
_________________
Quis separabit? Quo animo?
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Portage & Programming All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum