Hi! I got the list of options from there: http://mail.perlide.org/pipermail/padre-dev/2010-June/001863.html
But I checked a compilation with
sh Configure -des -Dusethreads -Dprefix=$HOME/soft/perl/5.18.0
-Dinstallusrbinperl=n -Accflags='-pthread'
This results in
[...snip...]
Build a threading Perl? [y]
[...snip...]
--> Configure finishes it's job
--> make finishes it's job
--> Make test
-->
[...snip...]
dist/Storable/t/threads ....................................... ok
...
dist/Thread-Queue/t/01_basic .................................. ok
dist/Thread-Queue/t/02_refs ................................... ok
dist/Thread-Queue/t/03_peek ................................... ok
dist/Thread-Queue/t/04_errs ................................... ok
dist/Thread-Queue/t/05_extract ................................ ok
dist/Thread-Queue/t/06_insert ................................. ok
dist/Thread-Queue/t/07_lock ................................... ok
dist/Thread-Queue/t/08_nothreads .............................. ok
dist/Thread-Queue/t/09_ended .................................. ok
dist/Thread-Queue/t/10_timed .................................. ok
dist/Thread-Semaphore/t/01_basic .............................. ok
dist/Thread-Semaphore/t/02_errs ............................... ok
dist/Thread-Semaphore/t/03_nothreads .......................... ok
dist/Thread-Semaphore/t/04_nonblocking ........................ ok
dist/Thread-Semaphore/t/05_force .............................. ok
dist/threads-shared/t/0nothread ............................... ok
dist/threads-shared/t/av_refs ................................. ok
dist/threads-shared/t/av_simple ............................... ok
dist/threads-shared/t/blessed ................................. ok
dist/threads-shared/t/clone ................................... ok
dist/threads-shared/t/cond .................................... ok
dist/threads-shared/t/disabled ................................ ok
dist/threads-shared/t/dualvar ................................. ok
dist/threads-shared/t/hv_refs ................................. ok
dist/threads-shared/t/hv_simple ............................... ok
dist/threads-shared/t/no_share ................................ ok
dist/threads-shared/t/object2 ................................. ok
dist/threads-shared/t/object .................................. ok
dist/threads-shared/t/shared_attr ............................. ok
dist/threads-shared/t/stress .................................. ok
dist/threads-shared/t/sv_refs ................................. ok
dist/threads-shared/t/sv_simple ............................... ok
dist/threads-shared/t/utf8 .................................... ok
dist/threads-shared/t/waithires ............................... ok
dist/threads-shared/t/wait .................................... ok
dist/threads/t/basic .......................................... ok
dist/threads/t/blocks ......................................... ok
dist/threads/t/context ........................................ ok
dist/threads/t/end ............................................ ok
dist/threads/t/err ............................................ ok
dist/threads/t/exit ........................................... ok
dist/threads/t/free2 .......................................... ok
dist/threads/t/free ........................................... ok
dist/threads/t/join ........................................... ok
dist/threads/t/kill2 .......................................... ok
dist/threads/t/kill ........................................... ok
dist/threads/t/libc ........................................... ok
dist/threads/t/list ........................................... ok
dist/threads/t/no_threads ..................................... skipped
dist/threads/t/problems ....................................... ok
dist/threads/t/stack_env ...................................... ok
dist/threads/t/stack .......................................... ok
dist/threads/t/state .......................................... ok
dist/threads/t/stress_cv ...................................... ok
dist/threads/t/stress_re ...................................... ok
dist/threads/t/stress_string .................................. ok
dist/threads/t/thread ......................................... ok
[...snip...]
BUT with perl -V
config_args='-des -Doptimize=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2
-fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64
-mtune=generic -Accflags=-DPERL_USE_SAFE_PUTENV -I/usr/include/gdbm
-Aappend:libswanted=-l resolv -Dversion=5.18.0 -Dmyhostname=localhost
-Dperladmin=aka at de.ibm.com -Dcc=gcc -Dcf_by=Alex
-Dprefix=/home/akarner/soft/perl/5.18.0
-Darchname=x86_64-linux-thread-multi -Dlibpth=/usr/local/lib64 /lib64
/usr/lib64 -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles
-Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog
-Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005
-Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto
-Ud_endhostent_r_proto -Ud_sethostent_r_proto -Ud_endprotoent_r_proto
-Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto
-Dinc_version_list=none'
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
--> Config options show -Dusethreads as well as -Duseithreads but
useithreads is still undefined.
And this small script
use Config;
use Data::Dumper;
print Dumper(\%Config);
returns in excerpts:
'config_arg13' => '-Darchname=x86_64-linux-thread-multi',
'config_arg16' => '-Dusethreads',
'config_arg17' => '-Duseithreads',
...
'd_old_pthread_create_joinable' => undef,
'd_oldpthreads' => undef,
'd_pthread_atfork' => undef,
'd_pthread_attr_setscope' => 'define',
'd_pthread_yield' => undef,
...
'i_pthread' => 'define',
...
'libdb_needs_pthread' => 'N',
'old_pthread_create_joinable' => '',
'use5005threads' => undef,
'useithreads' => undef,
'usethreads' => undef,
No wonder that the Padre installation fails as it checks for
"$Config{usethreads}" being defined - but I don't understand why there is
this strange behavior, as the tests for threading succed but the specific
variables are still undefined. Any idea from your side?
Mit freundlichen Grüßen / Kind regards
Alexander Karner
From: Brian Fraser <[email protected]>
To: Alexander Karner/Germany/IBM@IBMDE,
Cc: Perl Beginners <[email protected]>
Date: 18.09.2013 22:31
Subject: Re: Compilation 5.18.0 on RHEL 6.4 fails to use threads
(?)
On Wed, Sep 18, 2013 at 10:02 AM, Alexander Karner <[email protected]> wrote:
Hi!
While I'm not a beginner with Perl it seems that I'm somewhat a beginner
if it comes to compilation:
I try to compile 5.18.0 on my RHEL 6.4 system. Primarily in order to be
able to use Padre.
This is the command to create the configuration:
Wow, those are a *lot* of options! Are you sure you need all of those?
perl generally handles most of that itself, and passing stuff like -m64
and -pthreads manually tends to break Configure's detection of some
features.
sh Configure -de \
-Doptimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
-fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' \
-Accflags='-DPERL_USE_SAFE_PUTENV -I/usr/include/gdbm -pthread' \
-Aappend:libswanted='-l resolv' \
-Dversion=5.18.0 \
-Dmyhostname=localhost \
[email protected] \
-Dcc=gcc \
-Dcf_by='Alex' \
-Dprefix=$HOME/soft/perl/5.18.0 \
-Darchname=x86_64-linux-thread-multi \
-Dlibpth='/usr/local/lib64 /lib64 /usr/lib64' \
-Duseshrplib \
-Dusethreads \
-Duseithreads \
-Duselargefiles \
-Dd_semctl_semun \
-Di_db \
-Ui_ndbm \
-Di_gdbm \
-Di_shadow \
-Di_syslog \
-Dman3ext=3pm \
-Duseperlio \
-Dinstallusrbinperl=n \
-Ubincompat5005 \
-Uversiononly \
-Dpager='/usr/bin/less -isr' \
-Dd_gethostent_r_proto \
-Ud_endhostent_r_proto \
-Ud_sethostent_r_proto \
-Ud_endprotoent_r_proto \
-Ud_setprotoent_r_proto \
-Ud_endservent_r_proto \
-Ud_setservent_r_proto \
-Dinc_version_list=none
However if I take a look at perl -V after successfull compilation I see:
Platform:
osname=linux, osvers=2.6.32-358.6.1.el6.x86_64, archname=x86_64-linux
uname='linux oc7857520232.ibm.com 2.6.32-358.6.1.el6.x86_64 #1 smp fri
mar 29 16:51:51 edt 2013 x86_64 x86_64 x86_64 gnulinux '
config_args='-des -Doptimize=-O2 -g -pipe -Wall
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
--param=ssp-buffer-size=4 -m64 -mtune=generic
-Accflags=-DPERL_USE_SAFE_PUTENV -I/usr/include/gdbm
-Aappend:libswanted=-l resolv -Dversion=5.18.0 -Dmyhostname=localhost
-Dperladmin=aka at de.ibm.com -Dcc=gcc -Dcf_by=Alex
-Dprefix=/home/akarner/soft/perl/5.18.0
-Darchname=x86_64-linux-thread-multi -Dlibpth=/usr/local/lib64 /lib64
/usr/lib64 -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles
-Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog
-Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005
-Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto
-Ud_endhostent_r_proto -Ud_sethostent_r_proto -Ud_endprotoent_r_proto
-Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto
-Dinc_version_list=none'
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
<----------------------
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=define, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
--> useithreads is still undef
And if I try to install Padre I receive a message that it requires a
threaded version of Perl.
--> Is this normal or do I miss something special at this point?
That is not normal, but I can't spot you having missed anything obvious.
Try creating a perl with just
sh Configure -des -Dusethreads
and see if that works. If it doesn't, well, something is awfully wrong
with your system! If it does, start piling up options until you find out
what breaks it, and then file a bug against perl itself sot hat no one
else has to stumble against this in the future :D
Also, you might want to use perlbrew to do all of this.
smime.p7s
Description: S/MIME Cryptographic Signature
