Kigyókkal táncoló...

Vagy valami ilyesmi... ahhoz, hogy a latin táncok egyik jeles képviselőjét fordíthassam, egy veszélyes kígyó is kellene az AIX-omba. (Ha nagyon filozofikus alkat lennék, most még a python2 vs python3 kérdésén is elgondolkoznék, de most ezt passzolom, és maradok a python=python2 egyenletnél)


$ ./configure --help >help.configure
./configure[16]: python:  not found

Szerk: mondjuk a Python nem is volna Python, ha nem használná önmagát a saját fordításához, így aztán amikor azt keresem, hogy hol jött be a zavaró tényező (esetünkben egy -L/usr/local/lib, amikor nekem -L/usr/local/lib64 van), akkor nem elég csak a Makefile-okat átnézni, hanem mindenféle dist.py szerű fájlokban is kell vadászni...

Szerk: kicsit pontosabban: ./python -E ./setup.py $quiet build

Hozzászólások

Megnéztem neked, Fedorán a 4.4.2-es samba fordításához 2.7.11-es python-devel dukál, ha jól látom.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Még hiányzik a rendszeredből a pulseaudio, a systemd, meg az avahi. Ja, és a freedesktop.org összes létfontosságú kihagyhatatlan csomagja is.

(Hát igen, a Winuxhoz vezető út is jószándékkal van kikövezve. Lehet, hogy nemsokára a bekapcsológomb sem bekapcsolni fogja a gépet, csak elindít egy 'power' nevű varázslót, ami 10-15 képernyőn keresztül elvezet a tényleges bekapcsoláshoz.)

Az igazsághoz tartozik, hogy a fejlesztés kezdeti fázisaiban volt velük probléma rendesen, különösen a pulseaudioval. Az a gyanúm, hogy a waylanddal is pont ugyanígy lesz. Az elején kínlódás, majd később egy jól működő valami.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Persze, meg kezdetben a kde4 is katasztrófa volt, állítólag (múlt hétig nálam hosszabb távon kimaradt, azóta meg semmi bajom vele) a kde5 szintén, csak utólag ezeket marha nehéz leküzdeni. Hány éves poén az "Ez már a KDE4"? :)

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

Csak annyi lett volna a sirámom, amikor fel szeretnék telepíteni egy bloatware-t (lásd: chromium), akkor magával ránt még 10 ilyen bloated baromságot.

Manapság már csak bloat nélkül is csak nc-vel lehet böngészni a HTTP-t. ;-(

Nem célom megalakítani az AFM-et, de nem is használok GNU/Linuxot.

Eddig csak kígyó volt a történetben, most viszont a 'waf' nevű komponens (bár szerintem az egy kutyaeledel-márka) lázadozik:


[ 475/3329] Compiling lib/util/time.c
In file included from ../lib/replace/system/time.h:31:0,
                 from ../lib/util/time.c:25:
../lib/util/time.c: In function 'clock_gettime_mono':
../lib/replace/system/time.h:84:32: error: missing binary operator before token "10"
 #define CUSTOM_CLOCK_MONOTONIC CLOCK_MONOTONIC
                                ^
../lib/util/time.c:63:5: note: in expansion of macro 'CUSTOM_CLOCK_MONOTONIC'
 #if CUSTOM_CLOCK_MONOTONIC != CLOCK_REALTIME
     ^
Waf: Leaving directory `/usr/local/src/samba-4.4.2/bin'
Build failed:  -> task failed (err #1): 
        {task: cc time.c -> time_13.o}
make: *** [all] Error 1

Szerk: csak a /usr/include/time.h-t kellett megahaxolni... najó, nem, azért ekkora tapló még én sem vagyok;)


/* time.h */

#ifndef _H_TIME

/* ezt a file-t a /usr/local/include-be kellene installálni,
   lehetőleg nem felülírva vele semmit,
   a samba fordítása megakad a CLOCK_ értékeken...
 */

#include_next <time.h>

#undef CLOCK_REALTIME
#undef CLOCK_MONOTONIC
#undef CLOCK_PROCESS_CPUTIME_ID
#undef CLOCK_THREAD_CPUTIME_ID

#define CLOCK_REALTIME           9
#define CLOCK_MONOTONIC          10
#define CLOCK_PROCESS_CPUTIME_ID 11
#define CLOCK_THREAD_CPUTIME_ID  12

#endif

Tovább a lenini... sambai/pythoni/waffi úton


../lib/tdb/tools/tdbtool.c:39:12: error: 'disable_lock' redeclared as different kind of symbol
 static int disable_lock;
            ^
In file included from /usr/include/sys/gfs.h:13:0,
                 from /usr/include/sys/vfs.h:24,
                 from ../lib/replace/system/filesys.h:48,
                 from ../lib/tdb/tools/tdbtool.c:26:
/usr/include/sys/lock_def.h:312:5: note: previous declaration of 'disable_lock' was here
 int disable_lock(int,simple_lock_t);
     ^
Waf: Leaving directory `/usr/local/src/samba-4.4.2/bin'
Build failed:  -> task failed (err #1):.
<------>{task: cc tdbtool.c -> tdbtool_11.o}
make: *** [all] Error 1

Szia! Szintén szeretnék egy saját Samba-t fordítani és dettó ugyanezzel a hibával áll le a fordítás. Az előző bejegyzésednél még megírtad a megoldást, azon ugyanúgy továbbléptem, de erre ötletem sincs.
Szóval ezen a ponton hogyan tovább? Mit kell csinálni ezzel a "static int disable_lock" error-al?

Amúgy végülis sikerült lefordítani?

(Én gcc-4.8.3-1 -el próbálkozom egy AIX 7.1-en. Samba 4.6.0 a forrás, de a 4.5.6-al ugyanitt áll le a fordítás.)

Köszi előre is!

Python már megvan? Az is egy szép szenvedés, de messze nem akkora, mint a Samba

No mindegy, azt ajánlanám, hogy mindig legyen egy script, ami magában foglalja a configure+make-t, mégpedig azért, hogy később is nyoma legyen annak, hogy végül is mi történt. És ha már, akkor a bash-t is bele kellene kavarni, annak van egy jó kis 'pipefail' opciója, pl:


#!/usr/local/bin/bash # ha nem ott van, akkor symlink-et neki

export PATH="/usr/local/bin:$PATH"

make distclean

set -e
set -o pipefail

./configure <milliárd opció> 2>&1 | tee log.configure

sed_repl 's/disable_lock/my_disable_Lock/g' lib/tdb/tools/tdbtool.c

make all 2>&1 | tee log.make.all

make install 2>&1 | tee log.make.install

Namostan ez természetesen nem fog így működni, például, mert kell hozzá a /usr/local/bin/sed_repl
Aztán meg azért, mert még ezermilliárd nyomora lesz szegénynek.

No, hát a sed_repl nélkül is megy a dolog, hiszen csak beleküldtem a sima sed-el cserélt részt egy másik fájlba, aztán átnevezés. Ezen tovább is lép, végül itt áll le a compile (pedig azért elég sokáig eljut):


...
[3182/3652] Linking default/nsswitch/nsstest
ld: 0706-012 The -h flag is not recognized.
ld: 0706-005 Cannot find or open file: libroken-samba4.so.19
ld:open(): No such file or directory
collect2: error: ld returned 255 exit status
ld: 0711-224 WARNING: Duplicate symbol: ._GLOBAL__DI
ld: 0711-224 WARNING: Duplicate symbol: ._GLOBAL__DD
ld: 0711-224 WARNING: Duplicate symbol: global destructors keyed to 65535_0___dso_handle
ld: 0711-224 WARNING: Duplicate symbol: .__init_aix_libgcc_cxa_atexit
ld: 0711-224 WARNING: Duplicate symbol: .global destructors keyed to 65535_0___dso_handle
ld: 0711-224 WARNING: Duplicate symbol: __dso_handle
ld: 0711-224 WARNING: Duplicate symbol: __init_aix_libgcc_cxa_atexit
ld: 0711-224 WARNING: Duplicate symbol: _GLOBAL__DI
ld: 0711-224 WARNING: Duplicate symbol: _GLOBAL__DD
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
ld: 0711-224 WARNING: Duplicate symbol: global destructors keyed to 65535_0___dso_handle
ld: 0711-224 WARNING: Duplicate symbol: .__init_aix_libgcc_cxa_atexit
ld: 0711-224 WARNING: Duplicate symbol: .global destructors keyed to 65535_0___dso_handle
ld: 0711-224 WARNING: Duplicate symbol: __dso_handle
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
Waf: Leaving directory `/usr/src/samba-4.6.0/bin'
Build failed:
-> task failed (err #1):
{task: cc_link talloc_1.o -> libtalloc.so}
-> task failed (err #1):
{task: cc_link check_1.o,error_1.o,tdb_1.o,traverse_1.o,freelistcheck_1.o,lock_1.o,dump_1.o,freelist_1.o,io_1.o,open_1.o,transaction_1.o,hash_1.o,summary_1.o,rescue_1.o,mutex_1.o -> libtdb.so}
-> task failed (err #1):
{task: cc_link base64_3.o,ct_3.o,hex_3.o,bswap_3.o,dumpdata_3.o,emalloc_3.o,ecalloc_3.o,getarg_3.o,get_window_size_3.o,getdtablesize_3.o,h_errno_3.o,issuid_3.o,net_read_3.o,net_write_3.o,parse_time_3.o,parse_units_3.o,vis_3.o,strlwr_3.o,strsep_copy_3.o,strsep_3.o,strupr_3.o,strpool_3.o,estrdup_3.o,erealloc_3.o,simple_exec_3.o,strcollect_3.o,rtbl_3.o,rand_3.o,cloexec_3.o,xfree_3.o,replace_3.o,closefrom_3.o,resolve_3.o,socket_3.o,roken_gethostby_3.o,strerror_r_3.o -> libroken-samba4.so}
make: The error code from the last command is 1.

Stop.

Ezzel mit tehetek? Nagyon köszi előre is! :)

Szervusz, azt hiszem, írtam is ebben a topikban, hogy a -Wl,-h,libvalami.so.N az a DT_SONAME beállítására való Gnu/Linux-ban, ami AIX-ban nincs. Tehát valahonnan ki kell szedni valamit -- részleteket most nem tudok, de érdekességképpen (oké: elrettentésképpen) beidézhetem a sajt fordító-scriptemet:
http://web.axelero.hu/lzsiga/samba-4.4.6-64.do.all.txt
http://web.axelero.hu/lzsiga/samba-4.4.4-gcc.txt

Ilyenkor kezd el a felhasználó arra gondolni, hogy milyen jó is lenne, ha nem a "waf" intim titka lenne, hogy mi is volt az a parancs, aminek során fellépett a hiba


[2932/3329] Linking default/lib/util/libutil-setid-samba4.so
[2933/3329] Linking default/lib/talloc/libtalloc.so
ld: 0706-012 The -h flag is not recognized.
ld: 0706-005 Cannot find or open file: libtalloc.so.2
<------>ld:open(): No such file or directory
collect2: error: ld returned 255 exit status
Waf: Leaving directory `/usr/local/src/samba-4.4.2/bin'
Build failed:  -> task failed (err #1):.
<------>{task: cc_link talloc_1.o -> libtalloc.so}
make: *** [all] Error 1

Következő ötlet:


find . -name Makefile -print | while read M; do
    sed_repl 's/$(WAF)/$(WAF) -v/g
              s/$(WAF) -v -v/$(WAF) -v/g
             ' "$M"
done

No ezt bírta kitermelni magából:


12:44:45 runner /usr/local/bin/gcc
    default/lib/talloc/talloc_1.o
    -o /usr/local/src/samba-4.4.2/bin/default/lib/talloc/libtalloc.so
    -maix64.
    -L/usr/local/lib64
    -lcpotlas -lpthreads
    -Wl,-brtl,-bnortllib,-blibpath:/usr/local/lib64:/usr/lib
    -lpthread
    -shared
    -Wl,-brtl,-bexpfull
    -Wl,-h,libtalloc.so.2
    -Ldefault/lib/replace
    -L/usr/local/lib
    -lreplace-samba4
    -lrt
    -lbsd
    -lnsl

Ja, hogy a GNU linker tud ilyen opciót, és a '-soname' szinonímája. Törpös. Persze AIX-on nincs ilyesmi.


17:53:15 runner /usr/local/bin/gcc default/lib/tevent/tevent_1.o default/lib/tevent/tevent_debug_1.o default/
lib/tevent/tevent_fd_1.o default/lib/tevent/tevent_immediate_1.o default/lib/tevent/tevent_queue_1.o default/
lib/tevent/tevent_req_1.o default/lib/tevent/tevent_select_1.o default/lib/tevent/tevent_poll_1.o default/lib
/tevent/tevent_threads_1.o default/lib/tevent/tevent_signal_1.o default/lib/tevent/tevent_standard_1.o defaul
t/lib/tevent/tevent_timed_1.o default/lib/tevent/tevent_util_1.o default/lib/tevent/tevent_wakeup_1.o -o /usr
/local/src/samba-4.4.2/bin/default/lib/tevent/libtevent.so -maix64 -L/usr/local/lib64 -lcpotlas -lpthreads -W
l,-brtl,-bnortllib,-blibpath:/usr/local/lib64:/usr/lib -lpthread -shared -Wl,-brtl,-bexpfull -Ldefault/lib/re
place -Ldefault/lib/talloc -L/usr/local/lib -ltalloc -lreplace-samba4 -lrt -lbsd -lnsl
ld: 0711-224 WARNING: Duplicate symbol: ._GLOBAL__DI
ld: 0711-224 WARNING: Duplicate symbol: ._GLOBAL__DD
ld: 0711-224 WARNING: Duplicate symbol: global destructors keyed to 65535_0___dso_handle
ld: 0711-224 WARNING: Duplicate symbol: .__init_aix_libgcc_cxa_atexit
ld: 0711-224 WARNING: Duplicate symbol: .global destructors keyed to 65535_0___dso_handle
ld: 0711-224 WARNING: Duplicate symbol: __dso_handle
ld: 0711-224 WARNING: Duplicate symbol: __init_aix_libgcc_cxa_atexit
ld: 0711-224 WARNING: Duplicate symbol: _GLOBAL__DI
ld: 0711-224 WARNING: Duplicate symbol: _GLOBAL__DD
ld: 0711-224 WARNING: Duplicate symbol: .memcpy
ld: 0711-224 WARNING: Duplicate symbol: memcpy
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
ld: 0711-317 ERROR: Undefined symbol: ._talloc_pooled_object
collect2: error: ld returned 8 exit status

Szerk: a szokásos eset: van régről egy /usr/local/lib64/libtalloc.so, amire előbb bukik rá, mint a frissen készült /bin/default/lib/talloc/libtalloc.so-ra.

"Mindennap új varázslat!"


06:17:39 runner /home/projects/mini/bin/gyogy/gcc -mtune=native -maix64 -std=c99 -pthread -DSTATEDIR="/v
ar/lib/samba" -DSCRIPTSBINDIR="/usr/local/src/samba-4.4.2/source4/scripting/bin" -DPAMMODULESDIR="/usr/l
ocal/lib64/security" -DWINBINDD_SOCKET_DIR="/var/run/samba/winbindd" -DPRIVATE_DIR="/usr/local/etc/samba
" -DSETUPDIR="/usr/local/src/samba-4.4.2/source4/setup" -DPIDDIR="/var/run" -DPKGCONFIGDIR="${LIBDIR}/pk
gconfig" -DDATADIR="/usr/local/share" -DCACHEDIR="/var/cache/samba" -DSBINDIR="/usr/local/src/samba-4.4.
2/bin" -DNCALRPCDIR="/var/run/samba/ncalrpc" -DLMHOSTSFILE="/usr/local/etc/samba/lmhosts" -DLOCKDIR="/va
r/run/sambalocks" -DPYTHONARCHDIR="/usr/local/src/samba-4.4.2/bin/python" -DPERL_LIB_INSTALL_DIR="/usr/l
ocal/share/perl5" -DLOGFILEBASE="/var/log/samba" -DPYTHONDIR="/usr/local/src/samba-4.4.2/bin/python" -DP
ERL_ARCH_INSTALL_DIR="/usr/local/lib64/perl5" -DNTP_SIGND_SOCKET_DIR="/var/lib/samba/ntp_signd" -DCONFIG
FILE="/usr/local/etc/samba/smb.conf" -DSOCKET_DIR="/var/run/samba" -DMODULESDIR="/usr/local/src/samba-4.
4.2/bin/modules" -DWINBINDD_PRIVILEGED_SOCKET_DIR="/var/lib/samba/winbindd_privileged" -DLIBDIR="/usr/lo
cal/lib64" -DLOCALEDIR="/usr/local/share/locale" -DNMBDSOCKETDIR="/var/run/samba/nmbd" -DINCLUDEDIR="/us
r/local/include/samba-4.0" -DCODEPAGEDIR="/usr/local/src/samba-4.4.2/codepages" -DPRIVATELIBDIR="/usr/lo
cal/lib64/samba" -DPRIVILEGED_SOCKET_DIR="/var/lib/samba" -DLIBEXECDIR="/usr/local/libexec" -DSMB_PASSWD
_FILE="/usr/local/etc/samba/smbpasswd" -DBINDIR="/usr/local/src/samba-4.4.2/bin" -DCONFIGDIR="/usr/local
/etc/samba" -fPIC -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DSTATIC_DYNCONFIG_MODULES=NULL -DSTATIC_DYNCO
NFIG_MODULES_PROTO=extern void __DYNCONFIG_dummy_module_proto(void) -MD -D__UNIX__ -D__unix__ -DUSE_LOCA
L_NL_LANGINFO -DUSE_LOCAL_ISPRINT -D_GNU_SOURCE -D_XOPEN_SOURCE=500 -D_ALL_SOURCE -D_LARGEFILE_SOURCE -D
_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_THREAD_SAFE -I/usr/local/include -Idefault/
dynconfig -I../dynconfig -Idefault/include/public -I../include/public -Idefault/source4 -I../source4 -Id
efault/lib -I../lib -Idefault/source4/lib -I../source4/lib -Idefault/source4/include -I../source4/includ
e -Idefault/include -I../include -Idefault/lib/replace -I../lib/replace -Idefault -I.. -I/usr/local/incl
ude -D_SAMBA_BUILD_=4 -DHAVE_CONFIG_H=1 -D_ALL_SOURCE=1 -D_GNU_SOURCE=1 -D_XOPEN_SOURCE_EXTENDED=1 ../dy
nconfig/dynconfig.c -c -o default/dynconfig/dynconfig_1.o
<command-line>:0:9: error: expected expression before '/' token
../dynconfig/dynconfig.c:46:26: note: in definition of macro 'DEFINE_DYN_CONFIG_PARAM'

Például ezt sem értem:


[2938/3327] Linking default/lib/tevent/-tevent.so

Tényleg -tevent.so nevű fájlt szeretne?

Szerk: megnéztem linux-on, ott ilyen:


# readelf -d ./-tevent.so 

Dynamic section at offset 0x4c10 contains 31 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libtevent.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libtalloc.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libpython2.7.so.1.0]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000f (RPATH)              Library rpath: [/local/usr/local/src/samba-4.4.2/bin/shared:/local/usr/local/src/samba-4.4.2/bin/shared/private]

AIX-on ilyen lett:


INDEX  PATH                          BASE                MEMBER              
0      /usr/local/lib64:/usr/lib
1      /usr/local/lib64              libgcc_s.a          shr.o
2      /usr/local/lib64              libiconv.so.2
3      /usr/local/lib64              libintl.so.8
4      /usr/local/lib64              libpython2.7.so.1
5      /usr/local/src/samba-4.4.2/bin/default/lib/replace/.libs libreplace-samba4.so.0
6      /usr/local/src/samba-4.4.2/bin/default/lib/talloc/.libs libtalloc.so.0
7      /usr/local/src/samba-4.4.2/bin/default/lib/tevent/.libs libtevent.so.0
8      /usr/local/lib64              libcpotlas.so.1
9      /usr/lib                      libpthreads.a       shr_xpg5_64.o
10     /usr/lib                      libc.a              shr_64.o

Valamint:


Linking default/source3/libsamba-cluster-support-samba4.so
...
ld: 0711-317 ERROR: Undefined symbol: .lp__ctdbd_socket

linuxon nézve, a kérdeses szimbóleumot a 'libsmbconf.so' exportálja, és a 'libsamba-cluster-support-samba4.so' importálja. Sajnos a 'make' során az importőr előbb van, mint az exportőr... linuxon ez még el is csúszna...

Természetesen, ha ez egy make-alapú rendszer lenne, akkor tudnék valamit tákolni, de ez itt egy egyéni fejlesztésű csodarendszer...

Szerk: de könnyen lehet, hogy a két komponens kölcsönösen hivatkozik egymásra...

Szerk: Tegyük fel, hogy a végére azért keletkezik egy /usr/local/lib64/libsmbconf.so.0 nevű fájl, tehát egy ilyesmit kellene tákolni:


$ cat libsmbconf.exp
#! /usr/local/lib64/libsmbconf.so.0
lp__ctdbd_socket

Nem lenne egyszerűbb simán felrakni egy Linuxot? :)

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

Te most egy GNU/AIX-et csinálsz? :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Mondjuk... Speciel ez a Samba-3.6.25 -> 4.4.2 váltás nem jött volna létre ha nincs a badlock... (Itten néztem de nem láttam 3.6.25-nél újabbat, ebből gondoltam hogy nincs más lehetőség, mint a 4.4.2)

Szerk: Közben eszembe jutott, hogy mi van, ha az én régi verzióm nem is érintett, és akkor potyára szenvedek az újjal... de érintett, itt azt írják.