Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0001566MPDBuildpublic2007-09-14 14:352010-06-05 21:15
Reportermattswell 
Assigned Tocirrus 
PrioritylowSeverityfeatureReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Versiongit 
Target VersionFixed in Version 
Summary0001566: Unable to compile under cygwin
DescriptionI have all plugins disabled, attempting to compile the core only.

System information:
Windows XP SP2
cygwin-1.5.24-2
gcc-3.4.4-3
mingw-20050502-1
MPD SVN Revision: 6887

Steps to reproduce:

1) cd to mpd source directory
2) ./autogen.sh --disable-libtool-lock --disable-shout --disable-iconv --disable-ipv6 --disable-oss --disable-alsa --disable-jack --disable-pulse --disable-fifo --disable-oggvorbis --disable-oggflac --disable-flac --disable-mp3 --disable-aac --disable-audiofile --enable-mod --disable-mpc --disable-wavpack --disable-id3 --disable-lsr --disable-aotest --disable-alsatest --disable-oggtest --disable-vorbistest --disable-libFLACtest --disable-libOggFLACtest --disable-audiofiletest --disable-libmikmodtest
3) make


Error is as follows:

source='inputStream_http.c' object='mpd-inputStream_http.o' libtool=no \
        depfile='.deps/mpd-inputStream_http.Po' tmpdepfile='.deps/mpd-inputStrea
m_http.TPo' \
        depmode=gcc3 /bin/sh ../depcomp \
        gcc -DHAVE_CONFIG_H -I. -I. -I.. -Wall -Wmissing-prototypes -g -O2 -c
 -o mpd-inputStream_http.o `test -f 'inputStream_http.c' || echo './'`inputStrea
m_http.c
inputStream_http.c: In function `initHTTPConnection':
inputStream_http.c:371: error: storage size of 'hints' isn't known
inputStream_http.c:394: warning: implicit declaration of function `getaddrinfo'
inputStream_http.c:397: warning: implicit declaration of function `gai_strerror'

inputStream_http.c:397: warning: format argument is not a pointer (arg 2)
inputStream_http.c:402: error: dereferencing pointer to incomplete type
inputStream_http.c:403: error: dereferencing pointer to incomplete type
inputStream_http.c:403: error: dereferencing pointer to incomplete type
inputStream_http.c:404: error: dereferencing pointer to incomplete type
inputStream_http.c:407: warning: implicit declaration of function `freeaddrinfo'

inputStream_http.c:414: error: dereferencing pointer to incomplete type
inputStream_http.c:414: error: dereferencing pointer to incomplete type
inputStream_http.c:371: warning: unused variable `hints'
make[3]: *** [mpd-inputStream_http.o] Error 1
make[3]: Leaving directory `/home/Matthew/mpd/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/Matthew/mpd/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/Matthew/mpd'
make: *** [all] Error 2
TagsNo tags attached.
Attached Filespatch file icon cygwin.patch [^] (1,257 bytes) 2007-12-07 08:30 [Show Content]

- Relationships
related to 0001854closedallquixotic Native win32 build 

-  Notes
(0001717)
michu (reporter)
2007-10-25 05:29

solution (tried with latest svn version)

create new file called fake_getaddrinfo.h with this content:
struct addrinfo {
        int ai_flags; /* AI_PASSIVE, AI_CANONNAME */
        int ai_family; /* PF_xxx */
        int ai_socktype; /* SOCK_xxx */
        int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
        size_t ai_addrlen; /* length of ai_addr */
        char *ai_canonname; /* canonical name for hostname */
        struct sockaddr *ai_addr; /* binary address */
        struct addrinfo *ai_next; /* next structure in linked list */
};

static int
fake_getaddrinfo(const char *hostname, struct addrinfo *ai, in_port_t port)
{
        struct hostent *he;
        struct in_addr **ap;
        struct sockaddr_in *sa_in;

        he = gethostbyname(hostname);
        if (!he)
                return (-1);
        ai->ai_family = he->h_addrtype;
        ai->ai_socktype = SOCK_STREAM;
        ai->ai_protocol = 0;
        //ai->ai_addrlen = he->h_length;
        ai->ai_addrlen = sizeof(struct sockaddr_in);
        if (NULL == (ai->ai_addr = malloc(ai->ai_addrlen)))
                return (-1);

        sa_in = (struct sockaddr_in *)ai->ai_addr;
        memset(sa_in, 0, sizeof(struct sockaddr_in));
        sa_in->sin_family = PF_INET;
        sa_in->sin_port = htons(port);
        ap = (struct in_addr **)he->h_addr_list;
        memcpy(&sa_in->sin_addr, *ap, sizeof(struct in_addr));

        ai->ai_next = NULL;
        return (0);
}

static void
fake_freeaddrinfo(struct addrinfo *ai)
{
        free(ai->ai_addr);
}


now edit inputStream_http.c:
 -add #include "fake_getaddrinfo.h"
 -replace "freeaddrinfo(" with "fake_freeaddrinfo("
 -change this line:
//DEBUG(__FILE__ ": Error getting address info: %s\n", ai_strerror(error));
DEBUG(__FILE__ ": Error getting address info: %i\n", error);

that should do the trick

can anyone test this?

cheers michu / www.neophob.com
(0001718)
michu (reporter)
2007-10-25 06:16
edited on: 2007-10-25 06:16

and btw, when you are facing this errors:
$ ./mpd --no-daemon --stdout --verbose
binding to any address
flushing warning messages
done flushing warning messages
current locale is "C"
setting filesystem charset to ISO-8859-1
setFsCharset: fs charset is: ISO-8859-1
reading DB
Bad system call

an export will solve the problem

$ export CYGWIN=server

$ ./mpd --no-daemon --stdout --verbose
binding to any address
flushing warning messages
done flushing warning messages
current locale is "C"
setting filesystem charset to ISO-8859-1
setFsCharset: fs charset is: ISO-8859-1
reading DB
No "audio_output" defined in config file
Attempt to detect audio output device
Attempting to detect a oss audio device
Successfully detected a oss audio device
unable to open oss mixer "/dev/mixer"
using software volume

tadaaa! cheers michu

(0001719)
michu (reporter)
2007-10-25 07:22

but i guess there are some issues left...

interface 0: process command list returned 0
interface 0: closed
interface 0: opened from 127.0.0.1
interface 0: process command "status"
interface 0: command returned 0
interface 0: process command "play "-1""
playlist: play 0:"Daft Punk/Daft Punk Alive 2007/7. Too Long.mp3"
     13 [main] mpd 684 C:\Program Files\cygwin\home\mpx\mpd-test\mpd.exe: *** fatal error - MapViewOfFileEx (0x28990000), Win32 er
ror 6. Terminating.
      0 [main] mpd 3004 fork: child 684 - died waiting for dll loading, errno 11
player Problems fork()'ing
playlist: stop
interface 0: command returned -1

mpd crash when forking...
(0001779)
michu (reporter)
2007-11-21 06:42

The error "** fatal error - MapViewOfFileEx (0x28990000), Win32 error 6. Terminating." was an cygwin bug and has been fixed in the curren snapshot release. so mpd will run fine under cygwin...
(0001781)
qball (administrator)
2007-11-21 06:55
edited on: 2007-11-21 08:03

I removed block state from the bug, as win32 is not a supported platform.

If you want to supply a patch, please attach it as file.

(if the patch is fine, It will be commited)

(0001841)
michu (reporter)
2007-12-07 08:31

i added the cygwin patch
(0001842)
Avuton Olrich (administrator)
2007-12-07 14:32

Would you make one patch which will take care of it all? Thanks.
(0005713)
Avuton Olrich (administrator)
2010-05-29 02:22

Compiles for mingw now, if git doesn't compile for cygwin, please reopen this bug.

- Issue History
Date Modified Username Field Change
2007-09-14 14:35 mattswell New Issue
2007-09-14 14:35 mattswell Status new => assigned
2007-09-14 14:35 mattswell Assigned To => shank
2007-10-25 05:29 michu Note Added: 0001717
2007-10-25 06:16 michu Note Added: 0001718
2007-10-25 06:16 michu Note Edited: 0001718
2007-10-25 07:22 michu Note Added: 0001719
2007-11-21 06:42 michu Note Added: 0001779
2007-11-21 06:55 qball Note Added: 0001781
2007-11-21 06:55 qball Severity block => feature
2007-11-21 08:03 qball Note Edited: 0001781
2007-12-07 08:30 michu File Added: cygwin.patch
2007-12-07 08:31 michu Note Added: 0001841
2007-12-07 14:32 Avuton Olrich Note Added: 0001842
2008-10-16 03:39 cirrus Assigned To shank => cirrus
2008-10-25 13:25 Avuton Olrich Category Version - GIT => Build
2008-10-25 13:25 Avuton Olrich Product Version => git
2008-11-05 04:04 cirrus Priority normal => low
2008-12-04 05:21 cirrus Relationship added related to 0001854
2010-05-29 02:22 Avuton Olrich Note Added: 0005713
2010-05-29 02:22 Avuton Olrich Status assigned => resolved
2010-05-29 02:22 Avuton Olrich Resolution open => fixed
2010-06-05 21:15 Avuton Olrich Status resolved => closed


Copyright © 2000 - 2010 MantisBT Group
Powered by Mantis Bugtracker