Modify

Ticket #4528 (closed defect: fixed)

Opened 4 years ago

Last modified 4 years ago

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.

Attachments

Change History

comment:1 Changed 4 years ago by kormoc

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 4 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 4 years ago by nigel

  • Owner changed from ijr to nigel
  • Status changed from new to assigned

comment:4 Changed 4 years ago by Floppe

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

comment:5 Changed 4 years ago by Floppe

It works!

comment:6 Changed 4 years ago by nigel

  • Status changed from assigned to closed
  • Resolution set to fixed

(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 4 years ago by Floppe

  • Status changed from closed to new
  • Resolution fixed deleted

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 4 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 4 years ago by kormoc

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 4 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 4 years ago by nigel

  • Status changed from new to closed
  • Resolution set to fixed

(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 4 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.

View

Add a comment

Modify Ticket

Action
as closed
The resolution will be deleted. Next status will be 'new'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.