Bug List: (This bug is not in your last search results)   Show last search results      Search page      Enter new bug
Bug#: 36546
Alias:
Product:
Component:
Status: RESOLVED
Resolution: TEST-REQUEST
Assigned To: Gentoo KDE team <kde@gentoo.org>
Hardware:
OS:
Version:
Priority:
Severity:
Reporter: Mikael Rosbacke <rosbacke@nada.kth.se>
Add CC:
CC:
Remove selected CCs
URL:
Summary:
Status Whiteboard:
Keywords:

Filename Description Type Creator Created Size Actions
patch.txt File with patch to modify the ebuild file. patch Mikael Rosbacke 2003-12-29 10:38 0000 707 bytes Details | Diff
amd64-configure-hack.diff File to place in 'files' patch Mikael Rosbacke 2003-12-29 10:41 0000 915 bytes Details | Diff
Create a New Attachment (proposed patch, testcase, etc.) View All

Bug 36546 depends on: 36545 Show dependency tree
Bug 36546 blocks:
Votes: 0    Show votes for this bug    Vote for this bug

Additional Comments: (this is where you put emerge --info)


Not eligible to see or edit group visibility for this bug.






View Bug Activity   |   Format For Printing   |   XML   |   Clone This Bug


Description:   Opened: 2003-12-26 12:22 0000
Currently kdevelop-2.1.5 does not build on the amd64 platform. Two reasons:
1. There is an error in the source-code. (See bug #36545)
2. The configure script can not find qt and kde libraries due to the lib64 extension.

The configure scripts detects the /lib64 directory and assumes _all_ lib-directories should be named lib64. This is currently not the case for qt and kde and configure fails to find the right directory.
My patch add a new search path to the configure script to allow it to find the qt and kde libraries with the old names.

Apply this patch to kdevelop-2.1.5.ebuild:
--- /usr/portage/dev-util/kdevelop/kdevelop-2.1.5.ebuild        2003-03-13 11:24
:51.000000000 +0100
+++ kdevelop-2.1.5.ebuild       2003-12-26 21:05:38.936647544 +0100
@@ -15,7 +15,7 @@
        mirror://gentoo/$PN-2.1.3-qt-templates.tar.gz"

 LICENSE="GPL-2"
-KEYWORDS="x86 ppc"
+KEYWORDS="x86 ppc amd64"

 newdepend ">=kde-base/kdebase-3
        >=dev-util/kdoc-2.0_alpha24
@@ -45,6 +45,15 @@
        mv q*.tar.gz ${S}/kdevelop/templates/
        cd ${S}
        epatch ${FILESDIR}/${P}-gentoo.diff
+
+       #This adds the extra search paths needed to find kde & qt dir
+       #it should be removed once kde and qt start using lib64 as
+       #library names (MR)
+       if [ "${ARCH}" = "amd64" ]
+       then
+               epatch ${FILESDIR}/amd64-configure-hack.diff
+       fi
+       #end amd64 fix
 }

 src_compile() {


Also, create a new file 'files/amd64-configure-hack.diff' containing this patch:
--- configure.orig	2003-01-20 02:26:01.000000000 +0100
+++ configure	2003-12-26 20:23:49.353468994 +0100
@@ -21550,6 +21550,12 @@
     ac_qt_libraries="$withval"
        kde_qt_libs_given=yes
 
+# Ugly workaround
+else
+    ac_qt_libraries="$QTDIR/lib"
+       kde_qt_libs_given=yes    
+# End ugly.
+
 fi;
 
 if test "${ac_cv_have_qt+set}" = set; then
@@ -22395,6 +22401,7 @@
 kde_libdirs="/usr/lib/kde/lib${kdelibsuff} /usr/local/kde/lib${kdelibsuff} /usr/kde/lib${kdelibsuff} /usr/lib${kdelibsuff}/kde /usr/lib${kdelibsuff}/kde3 /usr/lib${kdelibsuff} /usr/X11R6/lib${kdelibsuff} /usr/local/lib${kdelibsuff} /opt/kde3/lib${kdelibsuff} /opt/kde/lib${kdelibsuff} /usr/X11R6/kde/lib${kdelibsuff}"
 test -n "$KDEDIR" && kde_libdirs="$KDEDIR/lib${kdelibsuff} $KDEDIR $kde_libdirs"
 kde_libdirs="$ac_kde_libraries $libdir $kde_libdirs"
+kde_libdirs="$kde_libdirs ${KDEDIR}/lib"
 
 kde_libdir=NO
 for i in $kde_libdirs;



This should allow amd64 to build kdevelop.

--- Mikael R


Reproducible: Always
Steps to Reproduce:
1.
2.
3.



Portage 2.0.49-r15 (default-amd64-1.4, gcc-3.3.2, glibc-2.3.2-r9, 
2.6.0-gentoo) 
================================================================= 
System uname: 2.6.0-gentoo x86_64 4 
Gentoo Base System version 1.4.3.12 
ACCEPT_KEYWORDS="amd64" 
AUTOCLEAN="yes" 
CFLAGS="-O3" 
CHOST="x86_64-pc-linux-gnu" 
COMPILER="gcc3" 
CONFIG_PROTECT="/etc /var/qmail/control /usr/kde/2/share/config /usr/kde/3/share/config /usr/X11R6/lib/X11/xkb /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/ /usr/share/config" 
CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d" 
CXXFLAGS="" 
DISTDIR="/usr/portage/distfiles" 
FEATURES="sandbox ccache autoaddcvs" 
GENTOO_MIRRORS="ftp://gentoo.linux.no/pub/gentoo/ 
ftp://trumpetti.atm.tut.fi/gentoo/ http://ds.thn.htu.se/linux/gentoo" 
MAKEOPTS="-j2" 
PKGDIR="/usr/portage/packages" 
PORTAGE_TMPDIR="/var/tmp" 
PORTDIR="/usr/portage" 
PORTDIR_OVERLAY="" 
SYNC="rsync://rsync.gentoo.org/gentoo-portage" 
USE="amd64 oss 3dnow apm avi crypt encode foomaticdb gif gpm gtk2 jpeg gnome 
libg++ mikmod mmx mpeg ncurses nls pdflib png quicktime sdl slang spell sse 
truetype xml2 xmms xv zlib alsa gdbm berkdb readline arts tetex X tcpd pam 
libwww ssl perl python esd imlib oggvorbis gtk qt kde motif opengl acpi cdr 
cups dvd dvdr emacs freetype multilib ppds radeon samba usb --cups --java 
--qt"

------- Comment #1 From Mikael Rosbacke 2003-12-29 10:38:43 0000 -------
Created an attachment (id=22805) [details]
File with patch to modify the ebuild file.

The patch for the ebuild supplied as an attachment. 
To apply patch:

cd /usr/portage/dev-util/kdevelop
cat patch.txt | patch -p0

------- Comment #2 From Mikael Rosbacke 2003-12-29 10:41:02 0000 -------
Created an attachment (id=22806) [details]
File to place in 'files'

This file should be placed in the kdevelop/files.

------- Comment #3 From Jörg Spanke 2004-01-05 11:28:09 0000 -------
*** Bug 37200 has been marked as a duplicate of this bug. ***

------- Comment #4 From Caleb Tennis 2004-01-06 11:17:38 0000 -------
i'm looking into this, i promise.  however, it's not correct to patch
'configure' as it is a script that gets generated and can possibly be
overwritten.  it's better to patch configure.in.in, or pass an argument to
configure (like --enable-libsuffix).

------- Comment #5 From Jörg Spanke 2004-01-06 11:32:38 0000 -------
I tried to disable the libsuffix with
--disable-libsuffix
but I didn't do the trick (or I made some mistake). 
I guess it would be even better to add a /lib64 to all /lib directories.

------- Comment #6 From Mikael Rosbacke 2004-01-06 14:08:38 0000 -------
Ok. I can give my line of thinking before choosing this type of approach.
I'm not really sure of how lib, lib32 and lib64 is supposed to be used, but I guess lib64 is for 64-bit, lib32 for 32 bit and lib is only used when you don't care if the library is 32 or 64 bit.
Further, I guess that in the long run, the amd64 system will use the lib32 and lib64 for the two types of libraries (that is in Utopia at least.) so the right thing would be to put qt and kde in lib64 given these assumptions. 
I'm running Xfree 4.3.902 and it installs in lib64 so i guess this is the way to go.
So a fix should probably gracefully try to search lib64 before it tries the old lib path.
I think the best thing would be to ask the kdevelop team to fix this so it can build cleanly when the next version is released. But until then, we need to do something.
I tried to fix it with arguments to configure and it works for qt but not for kde. Rather than having two different ways for qt and kde, I choose to try to do them both the same way.
Changing configure.in.in requires the ebuild to rerun autoconf. I wasn't prepared to implement that so I changed configure.
Any idea's, comments, suggestion how this should be handled are welcome, it will surely come up again in other applications.

------- Comment #7 From Jörg Spanke 2004-01-06 23:49:14 0000 -------
I think there are a few things to consider:
http://dev.gentoo.org/~brad_mssw/amd64-tech-notes.html
describes in:
<cite>
The 32bit Environment

The emulation libraries will create the /emul/linux/x86 directory and install most of the appropriate libraries you will need to run pre-compiled 32bit applications. It will also create 2 symlinks, /lib32, and /usr/lib32 which point back to the proper /emul directories. It will also create a symlink in /lib to ld-linux.so.2 from /emul/linux/x86/lib/ld-linux.so.2, as the 64bit variant is known as ld-linux-x86-64.so.2.
</cite>
I guess that is the reason for /lib32 etc.
Another advice comes from http://www.x86-64.org/lists/discuss/msg02621.html:
<cite>
Libraries are in /lib64

64bit libraries are in */lib64 instead of */lib. Makefiles that
install libraries must be changed for this. Also the common
-L/usr/X11R6/lib compile flag or a similar flag for the Qt library
must be changed to reference */lib64.
</cite>
Only question is, if this is handled via symlink, because the "old" */lib has got no special meaning and all 64 bit libraries can be stored there or if every 64 bit library should be stored in */lib64.

I am just wondering that this hasn't been discussed before, because on the long run there will be only 64 bit libraries on a 64 bit system. Only if an 32 bit emulation is required there should be a /lib32.

Where are the system architects who decides about such naming conventions, e.g. Linux Standard Base (LSB)?
How is this handled on IA64?  

------- Comment #8 From Caleb Tennis 2004-01-07 05:01:15 0000 -------
Hopefully one of these cc'ed 64 bit folks can help us out with this and the few
other bugs that want /lib64 directories.

------- Comment #9 From Aron Griffis (RETIRED) 2004-01-07 06:06:35 0000 -------
Both ia64 and alpha use simple "lib" for 64-bit libraries.  "lib64" should
never be used for anything on these architectures.

In the case of alpha, 32-bit binaries are never supported so the decision was
made early in the Linux/Alpha port to refrain from lib64.  I'm referring to the
original Linux/Alpha port, not the Gentoo port, though we continue to follow
the established standard.

In the case of ia64, 32-bit ia32 binaries are supported by the architecture. 
Nonetheless, Mosberger made the decision when doing the Linux/IA-64 kernel port
to use "lib" for 64-bit libraries and "lib32" (or something similar) for 32-bit
libraries since it's highly discouraged to use the chip's ia32 mode.  The
reason I say "something similar" is becauase it actually can be decided at the
distribution level.  For Gentoo we haven't decided what to use yet for 32-bit
libraries on ia64 because we haven't attempted to support ia32 binaries yet.

------- Comment #10 From Mikael Rosbacke 2004-01-14 12:18:35 0000 -------
After some mailing on the amd64 list it seems clear that 'lib' is the correct
name of the directory. I have managed to get kdevelop to compile by using the
option "--enable-libsuffix=''" to configure. This means we can scrap the
patches given before.
However, I have not managed to give this argument to 'kde_src_compile' in the
ebuild file.

------- Comment #11 From Mikael Rosbacke 2004-01-14 13:28:23 0000 -------
I think I finally nailed this one. replace src_compile() with the following.

src_compile() {
	export myconf="--enable-libsuffix=" kde_src_compile myconf
	kde_src_compile configure
	kde_src_compile make
	cd ${WORKDIR}/c_cpp_reference-2.0.2_for_KDE_3.0
	econf --with-qt-dir=/usr/qt/3
	emake
}

Note that I hav'nt tested this with any other platform than amd64. But it works for me.

------- Comment #12 From Aron Griffis (RETIRED) 2004-01-14 19:19:04 0000 -------
> export myconf="--enable-libsuffix=" kde_src_compile myconf

I don't think this statement is doing what you think.  This instructs bash to put three shell variables into the environment of subprocesses: myconf (with the value "--enable-libsuffix=", kde_src_compile, and myconf.. again).

Considering that kde_src_compile is a function that runs in the same shell session, there's really no reason to export myconf at all, in fact it should be a local function variable so that it doesn't survive past src_compile.  You should just do:

src_compile() {
	local myconf="--enable-libsuffix="
        kde_src_compile myconf
	kde_src_compile configure
	kde_src_compile make
	cd ${WORKDIR}/c_cpp_reference-2.0.2_for_KDE_3.0
	econf --with-qt-dir=/usr/qt/3
	emake
}

------- Comment #13 From Mikael Rosbacke 2004-01-15 01:13:39 0000 -------
True. It work fine. 
I thought 'kde_src_compile' was running as a separate sub-process, therefore the export. Using local seems like a cleaner solution. A new suggestion:

src_compile() {
        local myconf="--enable-libsuffix="
        kde_src_compile all
        cd ${WORKDIR}/c_cpp_reference-2.0.2_for_KDE_3.0
        econf --with-qt-dir=/usr/qt/3
        emake
}

Bug List: (This bug is not in your last search results)   Show last search results      Search page      Enter new bug