Epeg is a jpeg thumbnail library - I'll talk about it more another day (if I like it). Libepeg installed nicely through Darwin Ports but the perl interface wouldn't compile. Compiling gives the following errors:
mysys$ perl Makefile.PLWARNING: Setting ABSTRACT via file 'Epeg.pm' failed at /opt/local/lib/perl5/5.8.8/ExtUtils/MakeMaker.pm line 615Writing Makefile for Image::Epegmysys$ make/usr/bin/gcc-4.0 -c -I/opt/local/include -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/opt/local/include -O3 -DVERSION=\"0.07\" -DXS_VERSION=\"0.07\" "-I/opt/local/lib/perl5/5.8.8/darwin-2level/CORE" Epeg.cEpeg.xs:20:37: error: /usr/local/include/Epeg.h: No such file or directoryEpeg.c: In function 'XS_Image__Epeg__epeg_file_open':Epeg.c:95: error: 'Epeg_Image' undeclared (first use in this function)Epeg.c:95: error: (Each undeclared identifier is reported only onceEpeg.c:95: error: for each function it appears in.)Epeg.c:95: error: 'RETVAL' undeclared (first use in this function)Epeg.xs:73: error: parse error before ')' tokenEpeg.c: In function 'XS_Image__Epeg__epeg_memory_open':Epeg.c:117: error: 'Epeg_Image' undeclared (first use in this function)Epeg.c:117: error: 'RETVAL' undeclared (first use in this function)Epeg.xs:84: error: parse error before ')' tokenEpeg.c: In function 'XS_Image__Epeg__epeg_size_get':Epeg.c:138: error: 'Epeg_Image' undeclared (first use in this function)Epeg.c:138: error: 'img' undeclared (first use in this function)Epeg.xs:93: warning: ISO C90 forbids mixed declarations and codeEpeg.c:145: error: parse error before ')' tokenEpeg.c: In function 'XS_Image__Epeg__epeg_decode_size_set':Epeg.c:170: error: 'Epeg_Image' undeclared (first use in this function)Epeg.c:170: error: 'img' undeclared (first use in this function)Epeg.c:171: warning: ISO C90 forbids mixed declarations and codeEpeg.c:176: error: parse error before ')' tokenEpeg.c: In function 'XS_Image__Epeg__epeg_decode_colorspace_set':Epeg.c:198: error: 'Epeg_Image' undeclared (first use in this function)Epeg.c:198: error: 'img' undeclared (first use in this function)Epeg.c:199: warning: ISO C90 forbids mixed declarations and codeEpeg.c:203: error: parse error before ')' tokenEpeg.c: In function 'XS_Image__Epeg__epeg_comment_get':Epeg.c:225: error: 'Epeg_Image' undeclared (first use in this function)Epeg.c:225: error: 'img' undeclared (first use in this function)Epeg.c:226: warning: ISO C90 forbids mixed declarations and codeEpeg.c:231: error: parse error before ')' tokenEpeg.xs:121: warning: assignment makes pointer from integer without a castEpeg.c: In function 'XS_Image__Epeg__epeg_comment_set':Epeg.c:254: error: 'Epeg_Image' undeclared (first use in this function)Epeg.c:254: error: 'img' undeclared (first use in this function)Epeg.c:255: warning: ISO C90 forbids mixed declarations and codeEpeg.c:259: error: parse error before ')' tokenEpeg.c: In function 'XS_Image__Epeg__epeg_quality_set':Epeg.c:281: error: 'Epeg_Image' undeclared (first use in this function)Epeg.c:281: error: 'img' undeclared (first use in this function)Epeg.c:282: warning: ISO C90 forbids mixed declarations and codeEpeg.c:286: error: parse error before ')' tokenEpeg.c: In function 'XS_Image__Epeg__epeg_get_data':Epeg.c:309: error: 'Epeg_Image' undeclared (first use in this function)Epeg.c:309: error: 'img' undeclared (first use in this function)Epeg.xs:146: warning: ISO C90 forbids mixed declarations and codeEpeg.c:318: error: parse error before ')' tokenEpeg.xs:154: warning: pointer targets in passing argument 1 of 'Perl_newSVpv' differ in signednessEpeg.c: In function 'XS_Image__Epeg__epeg_write_file':Epeg.c:352: error: 'Epeg_Image' undeclared (first use in this function)Epeg.c:352: error: 'img' undeclared (first use in this function)Epeg.c:353: warning: ISO C90 forbids mixed declarations and codeEpeg.c:360: error: parse error before ')' tokenEpeg.c: In function 'XS_Image__Epeg__epeg_close':Epeg.c:385: error: 'Epeg_Image' undeclared (first use in this function)Epeg.c:385: error: 'img' undeclared (first use in this function)Epeg.c:389: error: parse error before ')' tokenmake: *** [Epeg.o] Error 1
Hmmm.... I scratch my head for awhile, then dug into the Makefile.PL looking for answers. You'll notice right away that the library directory is hard coded to /usr/local... I changed this, I commented this out - neither fixes the problem. I changed this back. I ran 'perl Makefile.PL' and looked in the Epeg.c file for answers. The epeg.h has its path hard coded as /usr/local/include... I tried changing this to the correct path - nada. I tried removing the path all together just leaving the header name (like it should be) - nada, still broke. Finally, I dug into Epeg.xs.... ahhhh, yes. Removing the include path from the Epeg.h header line and rerunning 'perl Makefile.PL' fixes the problem. Cheers.

 

Add to My Yahoo!

Add to Google

Subscribe with Bloglines

Austin Gilbert/Male/26-30. Lives in United States/Oklahoma/Tulsa/Midtown, speaks English. Spends 40% of daytime online. Uses a Fast (128k-512k) connection. And likes computer science/photography.
This is my blogchalk: United States, Oklahoma, Tulsa, Midtown, English, Austin Gilbert, Male, 26-30, computer science, photography.

Perl Module Image::Epeg won't compile on Mac OS X
2006/06/08