You are not logged in.
Good morning,
I am having some issues in regards to building a package from the AUR: https://aur.archlinux.org/packages/intel-opencl-sdk/
If I understand correctly this is a 64 bit package, so I made sure that my processor has the LM flag. Also I have checked which kernel I am running:
>$ uname -m
x86_64
When I start building the package it comes up with an error saying:
==> ERROR: intel-opencl-sdk is not available for the 'i686' architecture.
Note that many packages may need a line added to their PKGBUILD
such as arch=('i686').
So I went in to the PKGBUILD and changed the line x86_64 to i686. This seemed to started the build, but it does stop working rather soon, giving me the following error:
==> Tidying install...
-> Purging unwanted files...
-> Compressing man and info pages...
-> Stripping unneeded symbols from binaries and libraries...
strip:./opt/intel/opencl-sdk/libOclCpuBackEnd.so: File format not recognized
/usr/bin/fakeroot: line 181: 846 User defined signal 1 FAKEROOTKEY=$FAKEROOTKEY LD_LIBRARY_PATH="$PATHS" LD_PRELOAD="$LIB" "$@"
So I do not know where it is going wrong, although it also sounds that my install of Arch might be a bit dodgy as he does not want to build the package with the x86_64 setting ...
Could somebody shed some light on this matter?
Last edited by ruurdkrekt (2013-04-04 11:09:00)
Offline
/etc/makepkg.conf, what do you have set for CARCH and for the --march build flags?
Offline
Builds fine here: you do have [multilib] enabled?
Moving to AUR issues...
Offline
/etc/makepkg.conf, what do you have set for CARCH and for the --march build flags?
Ah right, something weird is going on. CARCH and the -march flag point to i686.
Is it wise to just change these values, or will this seriously brake my system?
#########################################################################
# ARCHITECTURE, COMPILE FLAGS
#########################################################################
CARCH="i686"
CHOST="i686-pc-linux-gnu"
#-- Compiler and Linker Flags
# -march (or -mcpu) builds exclusively for an architecture
# -mtune optimizes for an architecture, but builds for whole processor family
CFLAGS="-march=i686 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2"
CXXFLAGS="-march=i686 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2"
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro"
#-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2"
Offline
Since your kernel is x86_64, I would change them. Unless, of course, all of the other packages on your system are i686.
Offline
Builds fine here: you do have [multilib] enabled?
No I do not have multilib enabled, however in /etc/pacman.conf the Architecture = i686.
So
Since your kernel is x86_64, I would change them. Unless, of course, all of the other packages on your system are i686.
I do believe all my other packages are i686.
Is there still a way to just compile this one package by changing the -march and CARCH flags to x64 and then change these flags back? Or will this never work out?
Offline
No, it's going to need 64 bit versions of the libs it links to. If you want to use this package, you're going to have to reinstall all of your packages. Probably easiest to start from scratch, to be honest.
Last edited by Scimmia (2013-04-04 08:34:15)
Offline
No, it's going to need 64 bit versions of the libs it links to. If you want to use this package, you're going to have to reinstall all of your packages. Probably easiest to start from scratch, to be honest.
So is it possible to update the dependencies to 64bit and then build this package?
When I change /etc/pacman.conf to take x86_64 architecture packages:
Architecture = x86_64
And I change the flags of /etc/makepkg.conf to x86_64:
CARCH="x86_64"
CHOST="x86_64-unknown-linux-gnu"
CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2"
CXXFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2"
Then when I do pacman -S llvm then it will say:
error: failed to prepare transaction (package architecture is not valid)
:: package llvm-3.2-5-i686 does not have a valid architecture
However I did put everything to x86_64, so where does he get the i686 from?
Offline
In regards to my last question, I turned [multilib] on in /etc/pacman.conf and now I can install x64 packages just fine.
However, I installed all the dependencies for Intel-OpenCL-SDK in x86_64 and I am still getting the same error as I had in the beginning:
patching file usr/lib64/OpenCL/vendors/intel/iocgui64.sh
==> Tidying install...
-> Purging unwanted files...
-> Compressing man and info pages...
-> Stripping unneeded symbols from binaries and libraries...
strip:./opt/intel/opencl-sdk/libOclCpuBackEnd.so: File format not recognized
/usr/bin/fakeroot: line 181: 12242 User defined signal 1 FAKEROOTKEY=$FAKEROOTKEY LD_LIBRARY_PATH="$PATHS" LD_PRELOAD="$LIB" "$@"
Does anybody know why this is still happening?
Offline
Probably because the program doing the stripping is 32 bit.
Seriously, you've now made a total mess of your system, with 32 bit and 64 bit libs scattered everywhere. Good luck.
Last edited by Scimmia (2013-04-04 10:54:35)
Offline
You have a valid point here.
I will just leave it as is now and when I have some spare time I will just reinstall the whole system.
Thanks for your help
Offline