Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 161362 - games-board/qgo-1.5.4: parallel install error
Summary: games-board/qgo-1.5.4: parallel install error
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Games (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Gentoo Games
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-01-10 18:13 UTC by Martin von Gagern
Modified: 2007-09-20 22:28 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments
tar.bz2 of logs from three failed builds with "File exists" errors (161362logs.tar.bz2,9.51 KB, application/octet-stream)
2007-01-10 19:54 UTC, Martin von Gagern
Details
MAKEOPTS="-j10 -d" build of qgo-1.5.2-r1 (bz2-compressed) (161362MakeDebug.txt.bz2,62.32 KB, application/octet-stream)
2007-01-10 20:40 UTC, Martin von Gagern
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Martin von Gagern 2007-01-10 18:13:32 UTC
updating qgo failed twice for me in the install phase,
with error messages like this:

/usr/bin/install: cannot create regular file `/var/tmp/portage/games-board/qgo-1.5.2-r1/image//usr/share/games/qGo/sounds/enter.wav': File exists
make[3]: *** [install-data-local] Error 1
make[3]: *** Waiting for unfinished jobs....

emerging with MAKEOPTS=-j1 works well, so it's likely a parallel build issue.
Comment 1 Jakub Moc (RETIRED) gentoo-dev 2007-01-10 18:16:48 UTC
emerge --info please. Also if you are using ~arch portage, try w/ stable one. Thanks.
Comment 2 Martin von Gagern 2007-01-10 18:55:25 UTC
(In reply to comment #1)
> emerge --info please.

Same as in attachment #105426 [details].

> Also if you are using ~arch portage,

Yes, 1.5.2-r1 is ~x86.

> try w/ stable one. Thanks.

Built latest stable (qgo-1.5.1) in a loop with -j10; failed at second iteration:

/usr/bin/install: cannot create regular file `/var/tmp/portage/games-board/qgo-1.5.1/image//usr/share/mimelnk/text/sgf.desktop': File exists
make[2]: *** [install-data-local] Error 1
make[2]: *** Waiting for unfinished jobs....
Comment 3 Jakub Moc (RETIRED) gentoo-dev 2007-01-10 19:02:39 UTC
(In reply to comment #2)
> Built latest stable (qgo-1.5.1) in a loop with -j10; failed at second
> iteration:

I meant stable portage, not stable qgo :) Why? See Bug 159355
Comment 4 Martin von Gagern 2007-01-10 19:41:02 UTC
(In reply to comment #3)
> I meant stable portage, not stable qgo :)

OK, I read hastily.

Just had a failed build on a (mostly) stable x86 system, including sys-apps/portage-2.1.1-r2, again with -j10.
It was the first loop iteration, so it seems rather easy to reproduce.

/bin/install: cannot change permissions of `/var/tmp/portage/qgo-1.5.1/image//usr/share/qGo/sounds/connect.wav': No such file or directory
make[3]: *** [install-data-local] Error 1
make[3]: *** Waiting for unfinished jobs....

In case others want to try this, here is my ebuild loop:
for ((i=1; i<=20; ++i)); do
MAKEOPTS=-j10 ebuild /usr/portage/games-board/qgo/qgo-1.5.1.ebuild \
                     clean install && continue
echo "build $i failed"
break
done
Comment 5 Jakub Moc (RETIRED) gentoo-dev 2007-01-10 19:49:26 UTC
Thanks.
Comment 6 Martin von Gagern 2007-01-10 19:54:26 UTC
Created attachment 106402 [details]
tar.bz2 of logs from three failed builds with "File exists" errors

I just had a closer look at some logs of failed builds (on my ~x86 system) and found a pattern there. Take the following example:

/usr/bin/install -c -p -m 644 ./sgf.desktop /var/tmp/portage/games-board/qgo-1.5.1/image//usr/share/mimelnk/text/
 /usr/bin/install -c -p -m 644 sgf.desktop /var/tmp/portage/games-board/qgo-1.5.1/image//usr/share/mimelnk/text//sgf.desktop
 /usr/bin/install -c -p -m 644 qgo.desktop /var/tmp/portage/games-board/qgo-1.5.1/image//usr/share/applnk/Games//qgo.desktop
/usr/bin/install: cannot create regular file `/var/tmp/portage/games-board/qgo-1.5.1/image//usr/share/mimelnk/text/sgf.desktop': File exists
make[2]: *** [install-data-local] Error 1

The file is installed once as "install ./$FILE $DIR/"
and once as "install $FILE $DIR//$FILE"

This pattern holds true for all the "File exists" errors I have here. I tarred and attached the complete logs in case you want to have a closer look.
Comment 7 Martin von Gagern 2007-01-10 20:27:11 UTC
I reran my loop on the stable x86 system. It failed at iteration 6 this time, at exactly the same point as in comment 4, again with a "No such file or directory" instead of a "File exists". So maybe there is a difference depending on portage version after all, or anyting else different in x86, but maybe it's just luck.

A few more lines of context:
/bin/install -c -p -m 644 ./connect.wav /var/tmp/portage/qgo-1.5.1/image//usr/share/qGo/sounds/
 /bin/install -c -p -m 644 connect.wav /var/tmp/portage/qgo-1.5.1/image//usr/share/qGo/sounds/connect.wav
/bin/install: cannot change permissions of `/var/tmp/portage/qgo-1.5.1/image//usr/share/qGo/sounds/connect.wav': No such file or directory
make[3]: *** [install-data-local] Error 1

So again there are two related install invocations immediately following one another. How interference between the two can lead to the stated error message I cannot begin to imagine, but I still assume that to be the cause.
Comment 8 Martin von Gagern 2007-01-10 20:40:57 UTC
Created attachment 106418 [details]
MAKEOPTS="-j10 -d" build of qgo-1.5.2-r1 (bz2-compressed)

In trying to work out what make was actually doing, I added -d to the MAKEOPTS in my ebuild loop. However I'm overwhelmed by the information right now, and have little idea what half of this means, at least at first glance. I post it here so that more eyes can have a look.

As this is almost 2M uncompressed, I had to compress it, so you have to download it to have a look.
Comment 9 Martin von Gagern 2007-01-12 12:56:57 UTC
I have looked at the log from comment #8 and I think I understand a bit more now about what is really going on.

Have a look at src/sounds/Makefile from the work dir of an already compiled qgo 1.4.2-r1 build. There seem to be two targets that install the same files, install-data-local (which mentiones each of them seperately) and install-SoundsDATA (which is a shell loop over Sounds_DATA).

I am a bit surprised that things work out when not doing the parallel build. Perhaps install only complains when the target file is touched while it is working on that very same file, so only when install calls overlap? Or maybe it's because the shell loop does no error checking, whereas make itself does.

Makefile.in looks a lot like Makefile. Makefile.am includes install-data-local, included in a section that is marked "kdevelop will overwrite this part!!!". Anyone knows what that is about? Should we perhaps have the ebuild use kdevelop, or simulate that overwriting by kdevelop, or some such? Makefile.am doesn't directly mention install-SoundsDATA, but I guess that is inferred by automake from Sounds_DATA.

Although I have the feeling I'm getting closer to the source of this problem, I don't know enough about install, automake, kdevelop and whatnot to know how best to address this. One fairly simple solution might be to change Makefile resp. Makefile.in so that install-data-am depends either on install-SoundsDATA or on install-data-local but not both. Similar for other subdirs with duplicate install targets. That'll need some test runs, though, which I don't have the time for right now. Maybe next week, unless someone else does this.
Comment 10 Tupone Alfredo gentoo-dev 2007-06-02 10:04:47 UTC
I put a fix in portage on qgo-1-5-3. Thanks
Comment 11 Martin von Gagern 2007-08-01 20:30:51 UTC
(In reply to comment #10)
> I put a fix in portage on qgo-1-5-3. Thanks

It's back in games-board/qgo-1.5.4, this time with templates/Makefile.in, resulting in errors for the target install-MimelinkDATA for me.
A short find&grep tells me that's the only Makefile.in where a install-data-am still depends on install-data-local, so probably extending your patch to cover that file as well solves the issue.

In the long run I guess it would be nice to have the issue resolved somewhere upstream. Do you know who would be responsible? The qgo devs? Kdevelop as comment #9 might suggest? Some autotools issue? As I haven't seen this happen in any other build, I'd assume qgo, but maybe you know more.
Comment 12 Mr. Bones. (RETIRED) gentoo-dev 2007-09-20 22:28:17 UTC
Should be fixed in CVS.  reopen if it fails some other way.