Closed thorstenkampe closed 10 years ago
If you don't have TCGETS and TIOCGETA available, you can try to build yafc against OpenSSL.
configure
succeeded after installing the devel
packages for libssh
, openssl
and readline
. Unfortunately make
now fails:
make all-recursive
make[1]: Entering directory '/cygdrive/f/yafc-1.3.4'
Making all in doc
make[2]: Entering directory '/cygdrive/f/yafc-1.3.4/doc'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/cygdrive/f/yafc-1.3.4/doc'
Making all in po
make[2]: Entering directory '/cygdrive/f/yafc-1.3.4/po'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/cygdrive/f/yafc-1.3.4/po'
make[2]: Entering directory '/cygdrive/f/yafc-1.3.4'
depbase=`echo src/main.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -std=gnu99 -DLOCALEDIR=\"/usr/local/share/locale\" -DSYSCONFDIR=\"/usr/local/etc\" -DHAVE_CONFIG_H -I. -I./src -I./lib -I./src/ftp -I./src/libmhe -I/usr/include -I/usr/include -I/usr/include -g -O2 -MT src/main.o -MD -MP -MF $depbase.Tpo -c -o src/main.o src/main.c &&\
mv -f $depbase.Tpo $depbase.Po
In file included from src/main.c:13:0:
src/syshdr.h:165:21: error: redefinition of typedef 'rl_completion_func_t' with different type
typedef CPPFunction rl_completion_func_t;
^
In file included from /usr/include/readline/readline.h:36:0,
from src/syshdr.h:136,
from src/main.c:13:
/usr/include/readline/rltypedefs.h:51:16: note: previous declaration of 'rl_completion_func_t' was here
typedef char **rl_completion_func_t PARAMS((const char *, int, int));
^
Makefile:831: recipe for target 'src/main.o' failed
make[2]: *** [src/main.o] Error 1
make[2]: Leaving directory '/cygdrive/f/yafc-1.3.4'
Makefile:874: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/cygdrive/f/yafc-1.3.4'
Makefile:562: recipe for target 'all' failed
make: *** [all] Error 2
Which version of readline is this? Looks like #38 again.
libreadline-devel 6.2-1
The readline patch fixes the readline issue. Further during compilation I get:
src/ftp/socket.c: In Funktion »sock_clearerr_in«:
src/ftp/socket.c:195:33: Fehler: dem Makro »clearerr« wurden 2 Argumente übergeben, aber es nimmt nur 1
sockp->clearerr(sockp, false);
^
src/ftp/socket.c: In Funktion »sock_clearerr_out«:
src/ftp/socket.c:201:32: Fehler: dem Makro »clearerr« wurden 2 Argumente übergeben, aber es nimmt nur 1
sockp->clearerr(sockp, true);
^
The error means that the macro was called with two arguments but it only accepts one.
Does 1361111 help?
Yes, compilation works fine now. Unfortunately, make install-strip
results in
make[4]: Entering directory '/cygdrive/f/yafc-1.3.4'
/usr/bin/mkdir -p '/usr/local/bin'
/bin/sh /home/thorsten/install-sh -c -s yafc.exe '/usr/local/bin'
/bin/sh: /home/thorsten/install-sh: No such file or directory
Makefile:616: recipe for target 'install-binPROGRAMS' failed
make[4]: *** [install-binPROGRAMS] Error 127
make[4]: Leaving directory '/cygdrive/f/yafc-1.3.4'
Makefile:1176: recipe for target 'install-am' failed
make install
works fine, though.
The path to install-sh looks weird. ./autogen.sh should get you a copy of install-sh in /cygdrive/f/yafc-1.3.4/support. There is also a copy of install-sh in the tarball in the same location. I wonder where the path is coming from.
I'd consider this solved. It would be great if the requirements for Cygwin would find their way into the documentation and the patches their way into a new release.
By the way: how can I "patch" my local source directory with the updates from GitHub? I downloaded the ZIP file but there was no configure script. So I had to do all the patching manually.
If you have glib, automake and autoconf installed, you can just run ./autogen.sh from the git checkout to get configure and friends.
...and pkg-config
...
What can I do about the following error? Can I disable a feature or a package?