Opened 12 years ago

Closed 12 years ago

Last modified 12 years ago

#4528 closed defect (fixed)

Changeset 15545 breaks Gentoo ebuilds

Reported by: Floppe Owned by: Nigel
Priority: minor Milestone: 0.21
Component: mythtv Version: head
Severity: medium Keywords: Gentoo
Cc: Ticket locked: no

Description

Get the following error when emerging

>>> Completed installing mythtv-0.21_pre15545 into /var/tmp/portage/media-tv/mythtv-0.21_pre15545/image/

--------------------------- ACCESS VIOLATION SUMMARY ---------------------------
LOG FILE = "/var/log/sandbox/sandbox-media-tv_-_mythtv-0.21_pre15545-4399.log"

rmdir:     /usr/include/mythtv/libmyth
symlink:   /usr/include/mythtv/libmyth
--------------------------------------------------------------------------------

I modified the ebuild and added a patch that reverts changeset 15545 and now I can emerge trunk rev 15585 with no problems.

Change History (12)

comment:1 Changed 12 years ago by Rob Smith

Aye, I can verify this bug.

Can we use $(INSTALL_ROOT)/$$(PREFIX) ?

That should fix it for the gentoo users (and other sandboxing users)

comment:2 Changed 12 years ago by Nigel

I'm not sure I understand the error (maybe provide the file /var/log/sandbox/sandbox-media-tv_-_mythtv-0.21_pre15545-4399.log ?), but instead of reverting the whole change, what about:

Index: libmyth.pro
===================================================================
--- libmyth.pro (revision 15586)
+++ libmyth.pro (working copy)
@@ -68,9 +68,7 @@
 
 # Allow both #include <blah.h> and #include <libmyth/blah.h>
 inc2.path  = $${PREFIX}/include/mythtv/libmyth
-unix:inc2.extra = rmdir $$inc2.path ; ln -s $$inc.path $$inc2.path
-# On Windows, we have to have two copies of the files
-!unix:inc2.files = $${inc.files}
+inc2.files = $${inc.files}
 
 
 using_oss {

comment:3 Changed 12 years ago by Nigel

Owner: changed from Isaac Richards to Nigel
Status: newassigned

comment:4 Changed 12 years ago by Floppe

That should work I think. Testing the patch, brb.

comment:5 Changed 12 years ago by Floppe

It works!

comment:6 Changed 12 years ago by Nigel

Resolution: fixed
Status: assignedclosed

(In [15598]) Fix for trying to rmdir a symlink. Closes #4528. Interesting that, in some situations, make creates the directory of inc2.path first.

comment:7 Changed 12 years ago by Floppe

Resolution: fixed
Status: closednew

Still not working, tested with rev 15604

>>> Completed installing mythtv-0.21_pre15604 into /var/tmp/portage/media-tv/mythtv-0.21_pre15604/image/

--------------------------- ACCESS VIOLATION SUMMARY ---------------------------
LOG FILE = "/var/log/sandbox/sandbox-media-tv_-_mythtv-0.21_pre15604-17782.log"

symlink:   /usr/include/mythtv/libmyth
--------------------------------------------------------------------------------
vdrbox ~ # cat /var/log/sandbox/sandbox-media-tv_-_mythtv-0.21_pre15604-17782.log
symlink:   /usr/include/mythtv/libmyth
vdrbox ~ #

comment:8 Changed 12 years ago by Nigel

OK, I have no idea what the problem is. It tells us that /usr/include/mythtv/libmyth is a symlink, but so what? It is meant to be a symlink. What the heck has been violated?
Is there a debug or verbose (-v) option for emerge? Does the symlink have bad permissions?

comment:9 Changed 12 years ago by Rob Smith

The issue is the install_root isn't being used.

Sandboxing is setting the install root to /var/tmp/portage/media-tv/mythtv-0.21_pre15604/image/ and so the package install all it's files into there as if that was /, and then it (portage/emerge in this case) copies it over into the real root directory, so it knows what packages own what files automagically.

You're messing with root directly, and it's kicking it back saying, we can't do that.

So it is telling us what info we need to change, so extra logging or the like isn't really needed.

comment:10 Changed 12 years ago by Nigel

Thanks for the clarification. Looking into the generated makefile, qmake automatically uses INSTALL_ROOT in the dependencies, but I don't think we can force it in the rules, because qmake sometimes munges the paths to be relative.

comment:11 Changed 12 years ago by Nigel

Resolution: fixed
Status: newclosed

(In [15614]) Always copy the installed headers to the libmyth path, because the paths for generating the symlink will not be bulletproof when using INSTALL_ROOT. Bad Qmake - no biscuit ! Closes #4528

comment:12 Changed 12 years ago by Nigel

(In [15716]) Clean a few empty dirs in 'make uninstall'. See #3623. Should be Gentoo ebuild safe (INSTALL_ROOT - see #4528), although I am not sure that would do make uninstall anyway.

Note: See TracTickets for help on using tickets.