LINUX.ORG.RU

Не получается пропатчить proftpd в дженте.


0

0

Качаю http://home.h01.itscom.net/para/software/misc/proftpd-iconv/pack/proftpd-1.2.10-
iconv.patch.gz
Добавляю в ебилд 
...
src_compile() {
        epatch ${FILESDIR}/${PV}/proftpd-1.2.10-iconv.patch.gz

        local modules myconf

        modules="mod_ratio:mod_readme"
        use pam && modules="${modules}:mod_auth_pam"
        use tcpd && modules="${modules}:mod_wrap"
        use shaper && modules="${modules}:mod_shaper"
...

Далее делаю новый дайджест и запускаю емердж. Но вот только оно не 
собирается. 

i686-pc-linux-gnu-gcc -Llib  -o proftpd src/main.o src/timers.o src/sets.o src/pool.o src/regexp.o src/dirtree.o src/support.o src/netaddr.o src/inet.o src/child.o src/log.o src/xferlog.o src/bindings.o src/netacl.o src/class.o src/scoreboard.o src/help.o src/feat.o src/netio.o src/response.o src/ident.o src/data.o src/modules.o src/auth.o src/fsio.o src/mkhome.o src/ctrls.o src/event.o modules/mod_core.o modules/mod_xfer.o modules/mod_auth_unix.o  modules/mod_auth.o modules/mod_ls.o modules/mod_log.o modules/mod_site.o modules/mod_ctrls.o modules/mod_cap.o modules/mod_sql_mysql.o modules/mod_sql.o modules/mod_tls.o modules/mod_wrap.o modules/mod_auth_pam.o modules/mod_readme.o modules/mod_ratio.o  modules/module_glue.o -lsupp -lcrypt  -Llib/libcap -lcap  -lm -lz -lmysqlclient  -lssl -lcrypto  -lwrap -lnsl  -lpam
src/netio.o: In function `pr_netio_printf':
netio.c:(.text+0xc3b): undefined reference to `local2remote'
modules/mod_ls.o: In function `sendline':
mod_ls.c:(.text+0x682): undefined reference to `local2remote'
collect2: ld returned 1 exit status
make: *** [proftpd] Error 1

!!! ERROR: net-ftp/proftpd-1.2.10-r5 failed.
!!! Function src_compile, Line 126, Exitcode 2
!!! compile problem
!!! If you need support, post the topmost build error, NOT this status message.

Может кто подскажет что можно сделать?

Заранее спасибо!!!
★★★★★
Ответ на: комментарий от cyclon

> я пробовал без gz, т.е. просто patch, но получаю тотже результат.

т.е. я хотел сказать, что пробовал распакованный gzip патч

cyclon ★★★★★
() автор топика

Можно не патчить proftpd вообще (кроме обработки telnet-символов), а просто сделать обработчики для libc, "перехватывающие" все вызовы функций, работающих с именами файлов. Подключать затем полученную библиотеку при помощи LD_PRELOAD. У меня таким образом proftpd работает без проблем одновременно в 3х кодировках - cp1251, koi8-r, utf-8 на разных tcp-портах при системной локали koi8-r. Так может работать и любой другой ftp-сервер.

Sorcerer ★★★★★
()
Ответ на: комментарий от Sorcerer

Ну если ты знаешь как то пожалуйсто, но я лично не в курсе как это замутить, дык что остаётся только патчить.

cyclon ★★★★★
() автор топика
Ответ на: комментарий от cyclon

Попробуй это:

http://irc.unilans.ru/fnc.tar.bz2

Оно довольно сырое, но функции, нужные мне, выполняет. Работает и тестировалось в основном у меня на FreeBSD, но также когда-то запускалось и в Linux. Только Makefile подредактировать не забудь.

Sorcerer ★★★★★
()
Ответ на: комментарий от Sorcerer

В fnc.c нужно заменить

#ifndef LF_ENABLED

на

#ifdef MEDIUMFILE

А то у тебя даже не скомпилируется.

Sorcerer ★★★★★
()
Ответ на: комментарий от Deleted

fnc.c: In function `filename_decode':
fnc.c:137: warning: passing arg 2 of `iconv' from incompatible pointer type
fnc.c: In function `dirent_encode':
fnc.c:159: warning: passing arg 2 of `iconv' from incompatible pointer type
fnc.c: At top level:
fnc.c:460: error: conflicting types for 'readlink'
/usr/include/unistd.h:740: error: previous declaration of 'readlink' was here
fnc.c:460: error: conflicting types for 'readlink'
/usr/include/unistd.h:740: error: previous declaration of 'readlink' was here
fnc.c: In function `readlink':
fnc.c:505: warning: passing arg 2 of `iconv' from incompatible pointer type
make: *** [libs] Ошибка 1

cyclon ★★★★★
() автор топика
Ответ на: комментарий от cyclon

Замени "int bufsiz" на "size_t bufsiz" на этой строке, а также на строке 49.

Sorcerer ★★★★★
()
Ответ на: комментарий от Deleted

gcc-3.4.4, короче поскольку у мя джента, попытка поставить libiconv через емердж не получилось.

ЗЫ: попробовал поставить proftpd руками и наложить патч, то собрать 
так же не получилось, как я понял, мэйк файл почему то не обрабатывает
mod_codconv, т.е. при линковке обьектников mod_codconv.o не обрабаывается

make[1]: Entering directory `/root/proftpd-1.2.10/lib/libcap'
=> making cap_names.c from <linux/capability.h>
cc -O2 -Wall -Llib  _makenames.c -o _makenames
./_makenames > cap_names.h
cc -O2 -Wall -c cap_alloc.c -o cap_alloc.o
cc -O2 -Wall -c cap_proc.c -o cap_proc.o
cc -O2 -Wall -c cap_extint.c -o cap_extint.o
cc -O2 -Wall -c cap_flag.c -o cap_flag.o
cc -O2 -Wall -c cap_text.c -o cap_text.o
cc -O2 -Wall -c cap_sys.c -o cap_sys.o
ar rcu libcap.a cap_alloc.o cap_proc.o cap_extint.o cap_flag.o cap_text.o cap_sys.o
make[1]: Leaving directory `/root/proftpd-1.2.10/lib/libcap'
gcc -Llib  -o proftpd src/main.o src/timers.o src/sets.o src/pool.o src/regexp.o src/dirtree.o src/support.o src/netaddr.o src/inet.o src/child.o src/log.o src/xferlog.o src/bindings.o src/netacl.o src/class.o src/scoreboard.o src/help.o src/feat.o src/netio.o src/response.o src/ident.o src/data.o src/modules.o src/auth.o src/fsio.o src/mkhome.o src/ctrls.o src/event.o modules/mod_core.o modules/mod_xfer.o modules/mod_auth_unix.o modules/mod_auth_file.o modules/mod_auth.o modules/mod_ls.o modules/mod_log.o modules/mod_site.o modules/mod_cap.o modules/mod_auth_pam.o  modules/module_glue.o -lsupp -lcrypt  -Llib/libcap -lcap  -lpam
src/netio.o: In function `pr_netio_printf':
netio.c:(.text+0xc3b): undefined reference to `local2remote'
modules/mod_ls.o: In function `sendline':
mod_ls.c:(.text+0x682): undefined reference to `local2remote'
collect2: ld returned 1 exit status
make: *** [proftpd] Ошибка 1

cyclon ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.