LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   slackware64 13.37 alpine.SlackBuild fails when trying to rebuild package (https://www.linuxquestions.org/questions/slackware-14/slackware64-13-37-alpine-slackbuild-fails-when-trying-to-rebuild-package-905702/)

haxwithaxe 09-29-2011 08:00 PM

slackware64 13.37 alpine.SlackBuild fails when trying to rebuild package
 
I'm trying to recompile alpine with passfile support (--with-passfile) and i can't get it to successfully make. the source package seems to have the libdir variable hard coded at some point to be /usr/lib instead of /usr/lib64.
there is an ominous comment block in the slackbuild:
# This seems to ignore sysconfdir and libdir, so it's pretty useless to try them.
# Brute-force it.
# Eric says: no! Use configure parameters.
#zcat $CWD/alpine.config.h.diff.gz | patch -p1 --verbose || exit 1

which would seem to be helpful but neither the configure options nor the patch help. i spent 2 days trying to find all the places where it could possibly go wrong and failed repeatedly.
any help would be appreciated :)

Daedra 09-29-2011 09:16 PM

We'll according to what you posted the patch itself is commented out so it is not getting applied to the build. Did you uncomment the patch line to enable it? if not then do this...

there is an ominous comment block in the slackbuild:
# This seems to ignore sysconfdir and libdir, so it's pretty useless to try them.
# Brute-force it.
# Eric says: no! Use configure parameters.
#zcat $CWD/alpine.config.h.diff.gz | patch -p1 --verbose || exit 1

Change it to look like this then rerun the build.

there is an ominous comment block in the slackbuild:
# This seems to ignore sysconfdir and libdir, so it's pretty useless to try them.
# Brute-force it.
# Eric says: no! Use configure parameters.
zcat $CWD/alpine.config.h.diff.gz | patch -p1 --verbose || exit 1

andrewthomas 09-29-2011 09:48 PM

I don't see what the problem is.

Did you edit the slackbuild and add

Code:

--with-passfile=FILENAME
                          Password cache file (NOT secure, NOT recommended)

with a valid path for FILENAME?

For example,

Code:

# Configure:
CFLAGS="$SLKCFLAGS" \
./configure \
  --prefix=/usr \
  --mandir=/usr/man \
  --with-ssl-dir=/usr \
  --with-ssl-certs-dir=/etc/ssl/certs \
  --with-c-client-target=slx \
  --with-system-pinerc=/etc/pine.conf \
  --with-system-fixed-pinerc=/etc/pine.conf.fixed \
  --disable-debug \
  --with-debug-level=0 \
  --without-tcl \
  --program-prefix= \
  --program-suffix= \
  --with-passfile=/etc/alpine-passfile.conf \
  --build=$ARCH-slackware-linux

I just did that as a test and the package built fine.

haxwithaxe 09-30-2011 10:17 PM

i had already done all that unfortunately :/
@Daedra: the patch doesn't help.
@andrewthomas: i did edit the slackbuild just as you described.

the steps i took were:
1) edit the slackbuild straight from the source repo to have the "--with-passfile=.pine.pwd" and try building (failed)
2) uncomment the patch and try rebuilding. (failed)
3) adding --libdir=/usr/lib64 to the configure options and trying to rebuild (failed)
4) try to find every instance of "/lib" in the build system and replace it with "/lib64" (several ways including find+sed and manually(bad idea)) and try to rebuild (failed)
5) posted here

andrewthomas 09-30-2011 10:50 PM

What is the full path to the pine.pwd file?

You did not state it in your configuration.

At this point, I don't know what to tell you.

I built this package on both x86 and x86_64 with the --passfile configuration option, and it built properly both times.

dive 09-30-2011 11:21 PM

"--with-passfile=.pine.pwd" is a bit ambiguous. Try /etc/pine.pwd maybe?

haxwithaxe 10-01-2011 12:12 AM

Quote:

Originally Posted by dive (Post 4486906)
"--with-passfile=.pine.pwd" is a bit ambiguous. Try /etc/pine.pwd maybe?

it's dieing during make because it is looking for *some* libraries in "/usr/lib" and "/lib" instead of "/usr/lib64" or "/lib64". i don't think the name i chose (i happened to use what i found in the docs) should be affecting where it looks for libraries.

haxwithaxe 10-01-2011 12:45 AM

here is the entire process i used. i just tried it on my laptop with the exact same results i got on my office desktop. (sorry for the handmade diff :P)
Code:

hax@slacktop:~/alpine-build$ files=`wget -q http://mirrors.dotsrc.org/slackware/slackware64-13.37/source/n/alpine/ -O - | head -n21 | tail -n12 | sed -e 's/<\/a>.*$//' -e 's/^.*>//'`

hax@slacktop:~/alpine-build$ for i in $files ;do wget -q http://mirrors.dotsrc.org/slackware/slackware64-13.37/source/n/alpine/$i ;done

hax@slacktop:~/alpine-build$ chmod a+x alpine.SlackBuild

hax@slacktop:~/alpine-build$ vim alpine.SlackBuild
lines 86-88
line 86 == --program-suffix= \
line 87 ++ --with-passfile=.pine.pwd \
line 88 == --build=$ARCH-slackware-linux
lines 92-94
line 92 == # Eric: says: no! Use configure parameters.
line 93 ++ zcat $CWD/alpine.tech-notes.txt.diff.gz | patch -p1 --verbose || exit 1
line 93 -- #zcat $CWD/alpine.tech-notes.txt.diff.gz | patch -p1 --verbose || exit 1
line 94 == <blank line>

hax@slacktop:~/alpine-build$ sudo ./alpine.SlackBuild
<snip>
make[3]: Entering directory `/tmp/alpine-2.00/pico'
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT attach.o -MD -MP -MF .deps/attach.Tpo -c -o attach.o attach.c
mv -f .deps/attach.Tpo .deps/attach.Po
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT basic.o -MD -MP -MF .deps/basic.Tpo -c -o basic.o basic.c
mv -f .deps/basic.Tpo .deps/basic.Po
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT bind.o -MD -MP -MF .deps/bind.Tpo -c -o bind.o bind.c
mv -f .deps/bind.Tpo .deps/bind.Po
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT browse.o -MD -MP -MF .deps/browse.Tpo -c -o browse.o browse.c
mv -f .deps/browse.Tpo .deps/browse.Po
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT buffer.o -MD -MP -MF .deps/buffer.Tpo -c -o buffer.o buffer.c
mv -f .deps/buffer.Tpo .deps/buffer.Po
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT composer.o -MD -MP -MF .deps/composer.Tpo -c -o composer.o composer.c
mv -f .deps/composer.Tpo .deps/composer.Po
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT display.o -MD -MP -MF .deps/display.Tpo -c -o display.o display.c
mv -f .deps/display.Tpo .deps/display.Po
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT file.o -MD -MP -MF .deps/file.Tpo -c -o file.o file.c
mv -f .deps/file.Tpo .deps/file.Po
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT fileio.o -MD -MP -MF .deps/fileio.Tpo -c -o fileio.o fileio.c
mv -f .deps/fileio.Tpo .deps/fileio.Po
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT line.o -MD -MP -MF .deps/line.Tpo -c -o line.o line.c
mv -f .deps/line.Tpo .deps/line.Po
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT pico.o -MD -MP -MF .deps/pico.Tpo -c -o pico.o pico.c
mv -f .deps/pico.Tpo .deps/pico.Po
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT random.o -MD -MP -MF .deps/random.Tpo -c -o random.o random.c
mv -f .deps/random.Tpo .deps/random.Po
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT region.o -MD -MP -MF .deps/region.Tpo -c -o region.o region.c
mv -f .deps/region.Tpo .deps/region.Po
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT search.o -MD -MP -MF .deps/search.Tpo -c -o search.o search.c
mv -f .deps/search.Tpo .deps/search.Po
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT window.o -MD -MP -MF .deps/window.Tpo -c -o window.o window.c
mv -f .deps/window.Tpo .deps/window.Po
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT word.o -MD -MP -MF .deps/word.Tpo -c -o word.o word.c
mv -f .deps/word.Tpo .deps/word.Po
rm -f libpico.a
/usr/bin/ar cru libpico.a attach.o basic.o bind.o browse.o buffer.o composer.o display.o file.o fileio.o line.o pico.o random.o region.o search.o window.o word.o
ranlib libpico.a
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.c
mv -f .deps/main.Tpo .deps/main.Po
gcc -std=gnu99 -DHAVE_CONFIG_H  -I../include -I/usr/include  -pthread -O2 -fPIC -MT utf8stub.o -MD -MP -MF .deps/utf8stub.Tpo -c -o utf8stub.o utf8stub.c
mv -f .deps/utf8stub.Tpo .deps/utf8stub.Po
/bin/sh ../libtool --tag=CC  --mode=link gcc -std=gnu99 -pthread -O2 -fPIC  -L/usr/lib  -o pico main.o utf8stub.o ../c-client/utf8.o libpico.a osdep/libpicoosd.a ../pith/osdep/libpithosd.a ../pith/charconv/libpithcc.a  -lldap  -lncurses -llber -lssl
mkdir .libs
gcc -std=gnu99 -pthread -O2 -fPIC -o pico main.o utf8stub.o ../c-client/utf8.o  -L/usr/lib libpico.a osdep/libpicoosd.a ../pith/osdep/libpithosd.a ../pith/charconv/libpithcc.a /usr/lib/libldap.so /usr/lib/libsasl2.so -ldl -lcrypto -lncurses /usr/lib/liblber.so -lresolv -lssl -Wl,--rpath -Wl,/usr/lib -Wl,--rpath -Wl,/usr/lib
/usr/lib/libldap.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[3]: *** [pico] Error 1
make[3]: Leaving directory `/tmp/alpine-2.00/pico'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/tmp/alpine-2.00/pico'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/alpine-2.00'
make: *** [all] Error 2


dive 10-01-2011 01:05 AM

Hmm I see the problem. If you can't manually fix that /usr/lib by sedding I don't know what to suggest. For some reason it's either not picking up that you are using x86_64 or something is hardcoded into it.

Daedra 10-01-2011 01:21 AM

Quote:

Originally Posted by haxwithaxe (Post 4486019)
I'm trying to recompile alpine with passfile support (--with-passfile) and i can't get it to successfully make. the source package seems to have the libdir variable hard coded at some point to be /usr/lib instead of /usr/lib64.
there is an ominous comment block in the slackbuild:
# This seems to ignore sysconfdir and libdir, so it's pretty useless to try them.
# Brute-force it.
# Eric says: no! Use configure parameters.
#zcat $CWD/alpine.config.h.diff.gz | patch -p1 --verbose || exit 1

which would seem to be helpful but neither the configure options nor the patch help. i spent 2 days trying to find all the places where it could possibly go wrong and failed repeatedly.
any help would be appreciated :)

Just out of curiosity are you using Alien Bob's Multilib packages.

haxwithaxe 10-01-2011 02:14 AM

Quote:

Originally Posted by Daedra (Post 4486956)
Just out of curiosity are you using Alien Bob's Multilib packages.

yes i'm using his multilib packages.
my next move before my buddy told me to ask for help was to move /usr/lib and put a copy of /usr/lib64 in it's place (it worked once for a similar problem).

andrewthomas 10-01-2011 06:32 AM

Quote:

Originally Posted by haxwithaxe (Post 4486996)
yes i'm using his multilib packages.
my next move before my buddy told me to ask for help was to move /usr/lib and put a copy of /usr/lib64 in it's place (it worked once for a similar problem).

I don't know about that approach.

haxwithaxe 10-01-2011 06:35 AM

Quote:

Originally Posted by andrewthomas (Post 4487104)
I don't know about that approach.

On my Gentoo multilib install all the files are in /usr/lib64 and /usr/lib is a symbolic link to /usr/lib64.

in multilib slackware64 (with alienbob's setup at least) the 32bit libs are in /usr/lib and the 64bit libs are in /usr/lib64.
actually i think it would be a tad smarter to make a pure 64bit slackware vm to use for building things like this :/

andrewthomas 10-01-2011 07:07 AM

Quote:

Originally Posted by haxwithaxe (Post 4487105)
actually i think it would be a tad smarter to make a pure 64bit slackware vm to use for building things like this :/

You are correct.

adamk75 10-01-2011 09:23 AM

You can likely get the build to work by temporarily renaming /usr/lib to /usr/lib32

Adam

Daedra 10-01-2011 01:38 PM

I have had this problem before on some packages. Make will pick up libraries in /usr/lib instead of /usr/lib64, adding these lines to the buildscript has fixed it for me.

if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
SLKLDFLAGS=""; LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
SLKLDFLAGS=""; LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
SLKLDFLAGS="-L/usr/lib64"; LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
SLKLDFLAGS=""; LIBDIRSUFFIX=""
fi

Then a little farther down add this

CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
LDFLAGS="$SLKLDFLAGS" \


From the SBo FAQ
I have problems compiling with my unofficial and unsupported multilib setup.

If you are using multilib packages from somewhere and also have some 32bit packages installed, then you might run into problems with the build process trying to link 32bit libraries instead of 64bit libraries. If this occurs, it can probably be solved by placing the following line:
LDFLAGS="-L/usr/lib${LIBDIRSUFFIX}" \
after the lines for CFLAGS and CXXFLAGS passed to the configure script. In other words, make it look something like this:
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
LDFLAGS="-L/usr/lib${LIBDIRSUFFIX}" \
./configure \
Beyond that, you are on your own. This is an unsupported setup.

haxwithaxe 10-01-2011 02:28 PM

[Solved]slackware64-13-37 alpine.SlackBuild fails when trying to rebuild package
 
/me stabs alienbob's multilib stuff in the troat <_<
yeah ... it compiles just fine on a pure 64bit slackware64-13.37 install :/

ponce 10-01-2011 05:12 PM

hey hax, have you seen when latest alpine's sources have been released? I'll tell you, more than 3 years ago.
does alienbob have to patch for you all the unmaintained sources that doesn't support multilib?
maybe it's more reasonable that you go hunt yourself for patches (if they exist elsewhere) for the stuff you need to compile on your multilib install, or you can just use (like you have done, I think should have been no sweat) a pure 64 one (or a virtual machine).

I think it's evident why this setup is basically unsupported for building software and should not be a big issue too, or it's just me?

Daedra 10-01-2011 09:36 PM

Also did you try adding the lines I suggested to the build? Adding those two lines solves this problem almost all the time.

ReaperX7 10-02-2011 05:01 AM

Don't blame AlienBOB's Multilib packaging so I'd advise you to not point fingers.

Slackware doesn't ship with multilib for a reason. That reason is because Slackware doesn't use precompiled packages and uses SlackBuilds for source compiles instead. Because using multilib increases the workload administrators have to do, it's up to you the user to properly configure your system.

haxwithaxe 10-04-2011 02:47 PM

I wasn't being serious about being angry with alienbob this is only the second thing related to multilib that i've had trouble with since switching back to slackware (there's about 10^52 more things to go wrong before i get into ubuntu territory :P).

ponce 10-04-2011 03:44 PM

sorry, I misunderstood :D


All times are GMT -5. The time now is 02:29 PM.