1 |
On Friday 24 April 2009 08:40:50 Duncan wrote: |
2 |
> Markos Chandras <hwoarang@g.o> posted |
3 |
> 200904231600.12638.hwoarang@g.o, excerpted below, on Thu, 23 Apr |
4 |
> |
5 |
> 2009 16:00:07 +0100: |
6 |
> > I asked about this on #gentoo-amd64, but I ll be quite busy and I might |
7 |
> > miss the answer. |
8 |
> |
9 |
> Looks like you got a workaround for the ebuild from another subthread, |
10 |
> tested and unmasked it, but that appears to be what it was, a |
11 |
> workaround. Nobody explored the why. |
12 |
> |
13 |
> Well, I'm not an expert by any means and the following guess is just what |
14 |
> it says on the label, a guess, without properly delving into the qmake |
15 |
> internals, but maybe this will provide a place to start exploring, for |
16 |
> you or anyone else interested. |
17 |
> |
18 |
> |
19 |
I tried to figure out why but I couldnt. I also contacted upstream but they |
20 |
were unable to help me more. The workaround is quite safe and doent causes any |
21 |
further problems :) |
22 |
> > So |
23 |
> > |
24 |
> > I have a problem with qt-creator installation on amd64 |
25 |
> > |
26 |
> > Take a look on this code |
27 |
> > |
28 |
> > linux-*-64 { |
29 |
> > IDE_LIBRARY_BASENAME = lib64 |
30 |
> > } else { |
31 |
> > IDE_LIBRARY_BASENAME = lib |
32 |
> > } |
33 |
> > |
34 |
> > According to this, when the system is amd64, libraries should be |
35 |
> > installed under lib64/ directory, else they will be installed on lib/ |
36 |
> > directory. |
37 |
> |
38 |
> Makes sense, but what is it testing there? |
39 |
> |
40 |
> The first thing that reminded me of was the CHOST/CBUILD/CTARGET set of |
41 |
> vars from the GNU make build system, with CHOST set in the (cascaded) |
42 |
> profile make.defaults (profiles/arch/amd64/make.defaults for 2008.0/amd64 |
43 |
> profile users). |
44 |
> |
45 |
> But, CHOST isn't it as the order is wrong. My CHOST is |
46 |
> x86_64-pc-linux-gnu according to emerge --info (and following the |
47 |
> cascading profiles, from the file mentioned above), and that's not going |
48 |
> to match linux-*-64 at all. Since CHOST is standardized, that can't be |
49 |
> what they're testing against. |
50 |
> |
51 |
> Well, I'm not familiar with qmake (which I got from the tarball README, |
52 |
> tho the ebuild would have had it too), and I'm not going to try to |
53 |
> explain how it gets from here to there as I don't know, but the best |
54 |
> match for the above pattern I could come up with is the following: |
55 |
> |
56 |
> 1) equery belongs qmake says it's part of the qt-core-4.5.0 package, here |
57 |
> (and also part of qt-3.3.8b-r1, but that's beside the point). |
58 |
> |
59 |
> 2) Looking at equery files qt-core, the following jumps out due to the |
60 |
> pattern, which matches the one above: |
61 |
> |
62 |
> /usr/share/qt4/mkspecs/linux-*-64 , with * being the three: ecc, c++, |
63 |
> icc . |
64 |
> |
65 |
> So, a reasonable theory might be that it's matching the mkspecs, |
66 |
> expecting a pattern similar to linux-*-64 for our case. How it comes up |
67 |
> with that is as they say, "an exercise for further research", reading up |
68 |
> on qmake, it's MAKE vars (or whatever qmake calls them), etc. |
69 |
> |
70 |
> 3) However, I found the following symlink, also from the qt-core package, |
71 |
> also of interest: |
72 |
> |
73 |
> /usr/share/qt4/mkspecs/default -> linux-g++-64 |
74 |
> |
75 |
> 4) So a further supposition, given the failure of the test above, may be |
76 |
> that it's ultimately using mkspecs/default instead of linux-g++-64 |
77 |
> specifically. If the test was on the symlink itself (not dereferenced) |
78 |
> and not on what it pointed to, that would necessarily cause it to fail |
79 |
> the match. |
80 |
> |
81 |
> So without knowing much at all about how qmake functions and where it |
82 |
> gets its config such as the bit it's testing above, that's my working |
83 |
> theory and why I'd /guess/ it's failing the match. Qt based package |
84 |
> maintainers and devs would of course be expected to know (or at least |
85 |
> know where to look up when necessary) rather more about qmake internals, |
86 |
> and be able to take it from there, proving or disproving my admittedly |
87 |
> rather badly informed /guess/. |
88 |
> |
89 |
> > The thing is that on my amd64 system, they install on lib/ directory. Do |
90 |
> > you have any ideas why it fails to pick the right directory? |
91 |
> > |
92 |
> > My features are |
93 |
> > |
94 |
> > Eternity ~ # portageq envvar FEATURES buildpkg ccache distlocks |
95 |
> > fixpackages metadata-transfer parallel-fetch preserve-libs protect-owned |
96 |
> > sandbox sfperms strict unmerge-orphans userfetch |
97 |
> > |
98 |
> > |
99 |
> > I tried to add multilib on FEATURES but it didnt solve this issue |
100 |
> |
101 |
> As others have said, on Gentoo, multilib isn't something you should be |
102 |
> messing with directly. It's part of your profile. To change it, you |
103 |
> change your profile (and deal with all that entails). Trying to do |
104 |
> otherwise, if it does anything at all, "may have unintended consequences" |
105 |
> as they say. =:^) |
106 |
|
107 |
qmake will read the QMAKESPEC variable. This variable is 'usually' set as |
108 |
/usr/share/qt4/mkspecs/default which is a symlink to the actual mkspec. So my |
109 |
symlink is right |
110 |
|
111 |
That is |
112 |
|
113 |
Eternity ~ # ls -la /usr/share/qt4/mkspecs/|grep default |
114 |
lrwxrwxrwx 1 root root 12 2009-04-23 19:33 default -> linux-g++-64 |
115 |
|
116 |
So the initial code should work flawlessly. But it doesnt. So either the .pro |
117 |
file of qt-creator is broken or our ( as in Qt team ) qmake is broken as well. |
118 |
qmake doesnt seem to read QMAKESPEC . Of course it needs further investigation |
119 |
but it is rather complicated to do this right now |
120 |
|
121 |
-- |
122 |
Markos Chandras (hwoarang) |
123 |
Gentoo Linux Developer |
124 |
Qt/KDE/Sunrise/Sound |
125 |
Web: http://hwoarang.silverarrow.gr |