Thursday, February 14, 2008

fish shell compiled on cygwin

I'm trying out the fish shell in my cygwin environment. As far as I can tell this is not available as a package so I had to build it myself. Here are the steps required as best as I can recall.

1. iconv: download, configure, make, make install
2. download & unpack fish
3. remove iconv_open check from configure.ac
4. export LDFLAGS=-liconv
5. replace ARG_MAX in exec.c with _POSIX_ARG_MAX (this is optional in limits.h so I think this is a fish source code problem.)
6. configure, make, make install

2 comments:

Stephen Haberman said...

How has this worked out? Are you still using Fish in cygwin?

I'm thinking of trying it, but wondering whether its worth the trouble of compiling it myself.

Thanks.

Dave Newman said...

Tried to get this working but at the make stage of fish i got:

$ make
gcc function.o builtin.o complete.o env.o exec.o expand.o highlight.o history.o kill.o parser.o proc.o reader.o sanity.o tokenizer.o wildcard.o wgetopt.o wutil.o input.o output.o intern.o env_universal.o env_universal_common.o input_common.o event.o signal.o io.o parse_util.o common.o screen.o path.o parser_keywords.o fish.o -lncurses -rdynamic -o
fishgcc: unrecognized option `-rdynamic'
env_universal_common.o: In function `wcs2utf':
/home/Dave/fish-1.23.1/env_universal_common.c:345: undefined reference to `_libiconv_open'
/home/Dave/fish-1.23.1/env_universal_common.c:369: undefined reference to `_libiconv'
/home/Dave/fish-1.23.1/env_universal_common.c:381: undefined reference to `_libiconv_close'
env_universal_common.o: In function `read_message':
/home/Dave/fish-1.23.1/env_universal_common.c:234: undefined reference to `_libiconv_open'
/home/Dave/fish-1.23.1/env_universal_common.c:258: undefined reference to `_libiconv'
/home/Dave/fish-1.23.1/env_universal_common.c:286: undefined reference to `_libiconv_close'
/home/Dave/fish-1.23.1/env_universal_common.c:286: undefined reference to `_libiconv_close'
collect2: ld returned 1 exit status
make: *** [fish] Error 1

I've compiled and installed iconv. I did comment all the iconv stuff out of configure.ac....