configure.in and setproctitle/optreset problem
От | Christoph Berg |
---|---|
Тема | configure.in and setproctitle/optreset problem |
Дата | |
Msg-id | 20121217170251.GG5618@msgid.df7cb.de обсуждение исходный текст |
Ответы |
Re: configure.in and setproctitle/optreset problem
Re: configure.in and setproctitle/optreset problem |
Список | pgsql-hackers |
We are regularly teaching PostgreSQL courses at linuxhotel.de. Starting from the course in November, PG doesn't compile anymore on their default Debian Squeeze install laptops they hand out to the participants. After ./configure && make, the error looks like this: postmaster/postmaster.o: In function `PostmasterMain': postmaster.c:(.text+0x40e2): undefined reference to `optreset' tcop/postgres.o: In function `process_postgres_switches': postgres.c:(.text+0x168c): undefined reference to `optreset' utils/misc/ps_status.o: In function `set_ps_display': ps_status.c:(.text+0xba): undefined reference to `setproctitle' collect2: error: ld returned 1 exit status make[2]: *** [postgres] Fehler 1 make[2]: Leaving directory `/home/cbe/projects/postgresql/postgresql/src/backend' This is 9.2.2, but I've seen 9.1.6 failing in the same way. The package set installed is a desktop install, plus what Debian considers to be build dependencies of postgresql-9.2, that is, libedit-dev is installed, but libreadline-dev isn't. $ egrep 'edit|readline|setproc|optreset' configure.out checking for library containing setproctitle... no checking for library containing readline... -ledit checking editline/readline.h usability... yes checking editline/readline.h presence... yes checking for editline/readline.h... yes checking editline/history.h usability... yes checking editline/history.h presence... yes checking for editline/history.h... yes checking for setproctitle... yes checking for optreset... yes I have no clue why no one else has seen this bug before, but the reason for the error seems to be that configure is invoking the setproctitle test including -ledit. libedit.so is linked to libbsd.so, which in turn contains setproctitle(), so HAVE_SETPROCTITLE is set even this is Linux, not BSD. configure.in already contains a workaround for -ledit containing a strlcpy() version, so I'd propose the attached patch to extend that workaround to setproctitle. (Patch for 9.2's configure.in, but the same moving of the two code blocks should work for head as well.) optreset seems to be a similar problem, but I'm not yet sure the patch really fixes it. (I've kind of got lost in too many configure runs...) An alternative fix would be to move the __linux__ test in front of the HAVE_SETPROCTITLE test in src/backend/utils/misc/ps_status.c. Why is -ledit (or -lreadline) being passed to the function tests anyway? Removing that would fix this as well, I guess. (I can provide more verbose configure output on request.) Christoph -- cb@df7cb.de | http://www.df7cb.de/
Вложения
В списке pgsql-hackers по дате отправления: