LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   Building wine on Slackware64 (https://www.linuxquestions.org/questions/slackware-14/building-wine-on-slackware64-728668/)

JanZamoyski 05-26-2009 02:59 PM

Building wine on Slackware64
 
Hello,

As you all probably know, the initial version of Slackware64 didn't support the gcc multilib option and thus compiling of 32-bit based applications was impossible out of the box.

I thought that I will end up with the chroot solution, but then I've spotted the Slackware64 changelog update (the 25th of May), which could save me from the chroot.

But again compiling wine with updated packages failed and there's still the '--disable-multilib' option specified when asking compiler:

Code:

gcc -m32 -v
So is it possible to compile wine with the latest slackware64 update?

Best Regards,
A.

kingbeowulf 05-26-2009 11:32 PM

Re: Building wine on Slackware64
 
You may need a few extra items. Run over to http://www.slamd64.com/download and in particular check out the slamd64/slackware64-current directory. There are a number of packages for the a, d, l, n, x series. From the readme:

Quote:

This directory contains the start of 32-bit compatibility packages for
Slackware64-current.

Tested with:
- Skype (dynamic build)
- RTCW: ET
- Wine (built withs script from builds.slamd64.com)

Slamd64's c/ set isn't quite right for this purpose; my goal with these
packages is to add 32-bit compatibility as unobtrusively as possible.
...
Enjoy.

ponce 05-27-2009 02:18 AM

best news ever (Enemy Territory on 64 bit desktop)!
tnx Fred, youdaman! :D

an' tnx also to beowulf have let us know :)

finally I can install slack64 at home.

samac 05-27-2009 04:08 AM

Just tried a compile after adding the compatibility libraries on Fred's site. I got the following error in the config.log created in the slackbuild build directory.
Quote:

gcc (GCC) 4.3.3
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:2734: $? = 0
configure:2741: gcc -v >&5
Reading specs from /usr/lib64/gcc/x86_64-slackware-linux/4.3.3/specs
Target: x86_64-slackware-linux
Configured with: ../gcc-4.3.3/configure --prefix=/usr --libdir=/usr/lib64 --enable-shared --enable-bootstrap --enable-languages=ada,c,c++,fortran,java,objc --enable-threads=posix --enable-checking=release --with-system-zlib --disable-libunwind-exceptions --enable-__cxa_atexit --enable-libssp --with-gnu-ld --verbose --disable-multilib --target=x86_64-slackware-linux --build=x86_64-slackware-linux --host=x86_64-slackware-linux
Thread model: posix
gcc version 4.3.3 (GCC)
configure:2745: $? = 0
configure:2752: gcc -V >&5
gcc: '-V' option must have argument
configure:2756: $? = 1
configure:2779: checking for C compiler default output file name
configure:2801: gcc -O2 -march=i486 -mtune=i686 conftest.c >&5
conftest.c:1: error: CPU you selected does not support x86-64 instruction set
configure:2805: $? = 1
configure:2843: result:
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "Wine"
| #define PACKAGE_TARNAME "wine"
| #define PACKAGE_VERSION "1.1.20"
| #define PACKAGE_STRING "Wine 1.1.20"
| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
| /* end confdefs.h. */
|
| int
| main ()
| {
|
| ;
| return 0;
| }
configure:2849: error: in `/tmp/SBo/wine-1.1.20':
configure:2852: error: C compiler cannot create executables
See `config.log' for more details.
As you can see from the bold entries the slackbuild has been overruled by gcc. I specified --libdir=/usr/lib in the slackbuild, and i486 as the architecture, it also shows that it is not allowing multi-lib.

I would appreciate it if someone could suggest a way to overcome this.

samac

pwc101 05-27-2009 04:29 AM

Quote:

Originally Posted by samac (Post 3554115)
I specified --libdir=/usr/lib in the slackbuild, and i486 as the architecture, it also shows that it is not allowing multi-lib.

Hasn't this been fixed in slackware64-current?
Quote:

Originally Posted by ChangeLog
Mon May 25 17:52:56 CDT 2009
a/cryptsetup-1.0.6-x86_64-1.txz: Upgraded to cryptsetup-1.0.6.
d/binutils-2.18.50.0.9-x86_64-2.txz: Changes to enable multilib support.
Thanks to Fred Emmott.
d/gcc-4.3.3-x86_64-4.txz: Changes in specs file to enable multilib support.
Thanks to Fred Emmott.
d/gcc-g++-4.3.3-x86_64-4.txz: Recompiled.
d/gcc-gfortran-4.3.3-x86_64-4.txz: Recompiled.
d/gcc-gnat-4.3.3-x86_64-4.txz: Recompiled.
d/gcc-java-4.3.3-x86_64-4.txz: Recompiled.
d/gcc-objc-4.3.3-x86_64-4.txz: Recompiled.
xap/MPlayer-r29322-x86_64-1.txz: Upgraded to revision r29322.
isolinux/initrd.img: Rebuilt.
usb-and-pxe-installers/usbboot.img: Rebuilt.

Emphasis mine.

vinegaroon 05-27-2009 04:37 AM

Wow great to see those packages from Fred. Will try.

samac 05-27-2009 06:54 AM

pwc101

I have upgraded to these packages and the error message you see is with those packages and the entirety of Fred's work.

samac

pwc101 05-27-2009 07:10 AM

Quote:

Originally Posted by samac (Post 3554228)
pwc101

I have upgraded to these packages and the error message you see is with those packages and the entirety of Fred's work.

samac

Ah, fair enough then. Sorry, can't help further.

Alien Bob 05-27-2009 07:11 AM

You still have to specify x86_64 (not i486) as the $ARCH, even though you are building 32bit binaries by adding "-m32" to gcc.

Eric

samac 05-27-2009 09:26 AM

Quote:

You still have to specify x86_64 (not i486) as the $ARCH, even though you are building 32bit binaries by adding "-m32" to gcc.
OK Eric I will try that as my next experiment.

I managed to get it to build by not using the slackbuild with
Code:

PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig ./configure --prefix=/usr
although this gave me quite a few errors on first startup.

samac

samac 05-27-2009 09:46 AM

Quote:

Quote:
You still have to specify x86_64 (not i486) as the $ARCH, even though you are building 32bit binaries by adding "-m32" to gcc.
OK Eric I will try that as my next experiment.
WORKED

The new gcc and binutils used in conjunction with the compatibility libraries on Slamd's site, work with the wine.Slackbuild when x86_64 is used as the $ARCH. No other modification is required to the slackbuild.

Thanks Eric.

samac

Shingoshi 06-12-2009 01:51 AM

Building 64-bit, and still getting errors...
 
Quote:

Originally Posted by Alien Bob (Post 3554239)
You still have to specify x86_64 (not i486) as the $ARCH, even though you are building 32bit binaries by adding "-m32" to gcc.

Eric

No matter what I do, I can't get rid of this:
configure: error: C compiler cannot create executables


IT SEEMS I FINALLY DID GET RID OF IT. Read below:
All of these are set as well:
--build="x86_64-slackware-linux" --host="x86_64-slackware-linux" --target="x86_64-slackware-linux" CC="gcc -m64" CFLAGS="-march=x86_64 -fPIC"

I just found out that "-march=x86_64 -fPIC" is incorrect. It needs to be set here as x86-64
Once I changed that, I was able to finally run configure without further errors.

I just want anyone who reads this to see that multilib is still disabled:

Target: x86_64-slackware-linux
Configured with: ../gcc-4.3.3/configure --prefix=/usr --libdir=/usr/lib64 --enable-shared --enable-bootstrap --enable-languages=ada,c,c++,fortran,java,objc --enable-threads=posix --enable-checking=release --with-system-zlib --disable-libunwind-exceptions --enable-__cxa_atexit --enable-libssp --with-gnu-ld --verbose --disable-multilib --target=x86_64-slackware-linux --build=x86_64-slackware-linux --host=x86_64-slackware-linux

And that's with the latest version of gcc (reinstalled just to make sure).
/pub/packages/slapt-get/./slackware64/d/gcc-4.3.3-x86_64-4.txz

Even with finally getting configure to run (after all of these failed attempts), it is still obvious here that the build won't be multilib.
CORRECTION REQUIRED: --enable-multilib has to set in configure for every build.

Shingoshi

Alien Bob 06-12-2009 03:44 AM

That --disable-multilib has nothing to do with the fact that gcc would not "support" a multilib environment. It only means that the gcc build will not produce the 32bit compilers, only the 64bit compilers. There is a difference!

If you look at the gcc.SlackBuild which Fred Emmott published as part of his 32bit compatibility set for Slackware64 at ftp://anorien.warwick.ac.uk/slamd64/.../gcc-compat32/ you will see that he uses "--enable-multilib" which will result in the 32bit compilers being built. The extra binaries that get produced are the only effect from adding "--enable-multilib".

It was stated nowhere that slackware64 would be able to compile 32bit software out of the box. You will need to install additional packages.

Eric

Lufbery 06-12-2009 07:28 AM

Quote:

Originally Posted by Alien Bob (Post 3571475)

It was stated nowhere that slackware64 would be able to compile 32bit software out of the box. You will need to install additional packages.

Eric

...and my hope is that the folks who are figuring out how to do that will graciously make their work available at Slackbuilds.org. :)

Regards,

-Drew

ponce 06-12-2009 10:34 AM

but Fred has published it already with sources and slackbuilds on his site, the link of a mirror is over here :)
or you mean you would like to see it moved on slackbuilds.org?

Shingoshi 06-12-2009 03:06 PM

I need to be certain here...
 
Quote:

Originally Posted by Alien Bob (Post 3571475)
That --disable-multilib has nothing to do with the fact that gcc would not "support" a multilib environment. It only means that the gcc build will not produce the 32bit compilers, only the 64bit compilers. There is a difference!

If you look at the gcc.SlackBuild which Fred Emmott published as part of his 32bit compatibility set for Slackware64 at ftp://anorien.warwick.ac.uk/slamd64/.../gcc-compat32/ you will see that he uses "--enable-multilib" which will result in the 32bit compilers being built. The extra binaries that get produced are the only effect from adding "--enable-multilib".

It was stated nowhere that slackware64 would be able to compile 32bit software out of the box. You will need to install additional packages.

Eric

Alien Bob,
Thanks for the explanation.

Since the Slackware64 gcc was created with --disable-multilib, does that mean any of the following is true:
We cannot create...
1.) A new 64-bit compiler with multilib?
.........Can we (re)build our own 64-bit compilers to build 32-bit compilers?
2.) The additional packages that are required for 32-bit builds?
3.) Applications for 64-bit which are multilib?

Shingoshi

Alien Bob 06-12-2009 04:03 PM

You can build all of those with just the tools available in Slackware64. Or, if that is too much work, you install the packages which Fred Emmott already compiled and for which I posted the URL several times already... he did not use anything else than a bare slackware64.

Eric

Shingoshi 06-12-2009 04:31 PM

Alien Bob,
Thanks again. I just needed the first part of your answer. I already knew where the Slamd64 tools were. I just wanted to make that we can build them ourselves from scratch.

Thanks,
Shingoshi

Lufbery 06-12-2009 07:24 PM

Quote:

Originally Posted by poncez (Post 3571848)
but Fred has published it already with sources and slackbuilds on his site, the link of a mirror is over here :)
or you mean you would like to see it moved on slackbuilds.org?

The latter, so I can use sbopkg to get it. :)

This, of course, is not meant to take anything away from the great work that Fred has done.

Regards,

-Drew

Shingoshi 06-12-2009 11:27 PM

Will Slackware64's gcc (and any other relevant packages) ever be built with --enable-multilib, so that users won't have to (re)build their own gcc (and other packages as well) in order to build 32-bit compilers/packages?

Shingoshi

ponce 06-13-2009 02:03 AM

sorry Shingoshi but Bob told you already, you don't have to build anything "in order to build 32-bit compilers/packages" :)
Quote:

Originally Posted by Alien Bob (Post 3572162)
you install the packages which Fred Emmott already compiled and for which I posted the URL several times already


Shingoshi 06-13-2009 02:24 AM

It was simply a matter of independence...
 
Quote:

Originally Posted by poncez (Post 3572464)
sorry Shingoshi but Bob told you already, you don't have to build anything "in order to build 32-bit compilers/packages" :)

I was simply wondering if Slackware x86_64 would be independent from needing packages installed from another distribution to have full 32-bit compatibility. I don't think this situation has ever existed before. To rely on external packages seems to be pivotal in development. I know that there are various solutions for running Gnome on Slackware. But those solutions were never officially supported.

To be certain, this is a new situation:
Quote:

Originally Posted by Alien Bob (Post 3571475)
That --disable-multilib has nothing to do with the fact that gcc would not "support" a multilib environment. It only means that the gcc build will not produce the 32bit compilers, only the 64bit compilers. There is a difference!

If you look at the gcc.SlackBuild which Fred Emmott published as part of his 32bit compatibility set for Slackware64 at ftp://anorien.warwick.ac.uk/slamd64/.../gcc-compat32/ you will see that he uses "--enable-multilib" which will result in the 32bit compilers being built. The extra binaries that get produced are the only effect from adding "--enable-multilib".

It was stated nowhere that slackware64 would be able to compile 32bit software out of the box. You will need to install additional packages.

Eric

And those packages won't be Slackware's. Will all of the packages previously released from Slamd64, now "going to" be compiled on Slackware64? I remember discussions about software from other distributions not being fully compatible.

Shingoshi

Edit: As I sometimes do, I made a mistake and omitted two words. They are shown in quotation marks above. I knew the current packages were compiled on Slackware64. That has been clearly repeated. What I intended to know was whether that situation is (ongoing) to continue into the future.

Alien Bob 06-13-2009 03:05 AM

Quote:

Originally Posted by Shingoshi (Post 3572472)
And those packages won't be Slackware's. Will all of the packages previously released from Slamd64, now be compiled on Slackware64? I remember discussions about software from other distributions not being fully compatible.

I will repeat it again then - these packages that Fred Emmott offers for download, were compiled on slackware64. So what if they are available on a slamd64 mirror?

Eric


All times are GMT -5. The time now is 05:47 AM.