(trunk) cygwin: error while building

Added by Lars-Daniel Weber 11 months ago

I tried to build r4436 in cygwin (32-bit) using this howto [1] and I'm getting this error:

if test "x1" = "x1"; then cd xmpsdk/src && make xmpsdk; fi;
make[1]: Entering directory '/opt/trunk/xmpsdk/src'
make[1]: Nothing to be done for 'xmpsdk'.
make[1]: Leaving directory '/opt/trunk/xmpsdk/src'
cd src && make 
make[1]: Entering directory '/opt/trunk/src'
../libtool --mode=link clang++ -no-undefined -lpsapi -lwldap32 -lws2_32    -L../xmpsdk/src -o libexiv2.la basicio.lo bmpimage.lo canonmn.lo casiomn.lo convert.lo cr2image.lo crwimage.lo datasets.lo easyaccess.lo epsimage.lo error.lo exif.lo futils.lo fujimn.lo gifimage.lo http.lo image.lo ini.lo iptc.lo jp2image.lo jpgimage.lo makernote.lo metadatum.lo minoltamn.lo mrwimage.lo nikonmn.lo olympusmn.lo orfimage.lo panasonicmn.lo pentaxmn.lo pgfimage.lo pngimage.lo pngchunk.lo preview.lo properties.lo psdimage.lo rafimage.lo rw2image.lo samsungmn.lo sigmamn.lo sonymn.lo tags.lo tgaimage.lo tiffcomposite.lo tiffimage.lo tiffvisitor.lo types.lo value.lo version.lo webpimage.lo xmp.lo xmpsidecar.lo  -rpath /usr/local/lib -version-info 14:0:0 -lintl -liconv -lz     -lexpat -lxmpsdk
libtool: link: rm -fr  .libs/libexiv2.dll.a .libs/libexiv2.lax
libtool: link: clang++ -shared -nostdlib /usr/lib/gcc/i686-pc-cygwin/5.4.0/crtbeginS.o  .libs/basicio.o .libs/bmpimage.o .libs/canonmn.o .libs/casiomn.o .libs/convert.o .libs/cr2image.o .libs/crwimage.o .libs/datasets.o .libs/easyaccess.o .libs/epsimage.o .libs/error.o .libs/exif.o .libs/futils.o .libs/fujimn.o .libs/gifimage.o .libs/http.o .libs/image.o .libs/ini.o .libs/iptc.o .libs/jp2image.o .libs/jpgimage.o .libs/makernote.o .libs/metadatum.o .libs/minoltamn.o .libs/mrwimage.o .libs/nikonmn.o .libs/olympusmn.o .libs/orfimage.o .libs/panasonicmn.o .libs/pentaxmn.o .libs/pgfimage.o .libs/pngimage.o .libs/pngchunk.o .libs/preview.o .libs/properties.o .libs/psdimage.o .libs/rafimage.o .libs/rw2image.o .libs/samsungmn.o .libs/sigmamn.o .libs/sonymn.o .libs/tags.o .libs/tgaimage.o .libs/tiffcomposite.o .libs/tiffimage.o .libs/tiffvisitor.o .libs/types.o .libs/value.o .libs/version.o .libs/webpimage.o .libs/xmp.o .libs/xmpsidecar.o  -Wl,--whole-archive /opt/trunk/xmpsdk/src/.libs/libxmpsdk.a -Wl,--no-whole-archive  -L/opt/trunk/xmpsdk/src /usr/lib/libintl.dll.a /usr/lib/libiconv.dll.a -lz /usr/lib/libexpat.dll.a -lpsapi -lwldap32 -lws2_32 -L/usr/lib/gcc/i686-pc-cygwin/5.4.0 -L/usr/lib/gcc/i686-pc-cygwin/5.4.0/../../../../i686-pc-cygwin/lib -L/usr/lib/gcc/i686-pc-cygwin/5.4.0/../../.. -lstdc++ -lgcc_s -lgcc -lcygwin -ladvapi32 -lshell32 -luser32 -lkernel32 -lgcc_s -lgcc /usr/lib/gcc/i686-pc-cygwin/5.4.0/crtend.o    -o .libs/cygexiv2-14.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libexiv2.dll.a
libtool: link: (cd .libs/libexiv2.lax/libxmpsdk.a && ar x "/opt/trunk/xmpsdk/src/.libs/libxmpsdk.a")
make[1]: Leaving directory '/opt/trunk/src'

libtool: link: object name conflicts in archive: .libs/libexiv2.lax/libxmpsdk.a/ /opt/trunk/xmpsdk/src/.libs/libxmpsdk.a
make[1]: *** [Makefile:248: lib] Error 1
make: *** [Makefile:60: all] Error 2

Anyone with an idea?

[1] http://dev.exiv2.org/projects/exiv2/wiki/Building_on_Windows_Using_Cygwin


Replies (12)

RE: (trunk) cygwin: error while building - Added by Lars-Daniel Weber 11 months ago

Addition: cmake-variant also doesn't work

[ 51%] Linking CXX shared library ../bin/cygexiv2-14.dll
CMakeFiles/exiv2lib.dir/types.cpp.o:types.cpp:(.text+0x1c7d): undefined reference to `libintl_bindtextdomain'
CMakeFiles/exiv2lib.dir/types.cpp.o:types.cpp:(.text+0x1c97): undefined reference to `libintl_dgettext'
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/exiv2lib.dir/build.make:1583: bin/cygexiv2-14.dll]
Error 1
make[1]: *** [CMakeFiles/Makefile2:445: src/CMakeFiles/exiv2lib.dir/all] Error 2

make: *** [Makefile:128: all] Error 2

RE: (trunk) cygwin: error while building - Added by Lars-Daniel Weber 11 months ago

r3288 works ... seems like it got broke :(

RE: (trunk) cygwin: error while building - Added by Lars-Daniel Weber 11 months ago

r4242 is also broken... I need ICC support. Sorry, need to switch back to exiftool :(

RE: (trunk) cygwin: error while building - Added by Robin Mills 11 months ago

Lars-Daniel:

1 Our buildserver successfully built r4436 on Cygwin/64 last night.
http://exiv2.dyndns.org:8080/userContent/builds/Categorized/Date/2016-08-26/

2 libintl_bindtextdomain is a reference to gettext. You'll have to install the i18n libraries OR build without NLS (Natural Language Something):

$ cd exiv2dir
$ mkdir build
$ cd build
$ cmake -DEXIV2_ENABLE_NLS=OFF ..
$ make
3 I'll investigate building with Cygwin/32 later. I haven't built with Cygwin/32 for a long time. Perhaps something's broken.

RE: (trunk) cygwin: error while building - Added by Lars-Daniel Weber 11 months ago

Robin Mills wrote:

2 libintl_bindtextdomain is a reference to gettext. You'll have to install the i18n libraries OR build without NLS (Natural Language Something):[...]

You're right. Could you add this to the how-to in trac please?

3 I'll investigate building with Cygwin/32 later. I haven't built with Cygwin/32 for a long time. Perhaps something's broken.

Didn't work here:

/opt/trunk/src/canonmn.cpp:57:43: error: 'const UShortValue Exiv2::Internal::CanonMakerNote::usFFFF_' is not a static data member of 'class Exiv2::Internal::CanonMakerNote'
  const UShortValue CanonMakerNote::usFFFF_(0xffff, unsignedShort);
                                           ^
/opt/trunk/src/canonmn.cpp:58:43: error: 'const UShortValue Exiv2::Internal::CanonMakerNote::us7FFF_' is not a static data member of 'class Exiv2::Internal::CanonMakerNote'
  const UShortValue CanonMakerNote::us7FFF_(0x7fff, unsignedShort);
                                           ^
/opt/trunk/src/canonmn.cpp:59:40: error: 'const UShortValue Exiv2::Internal::CanonMakerNote::us0_' is not a static data member of 'class Exiv2::Internal::CanonMakerNote'
  const UShortValue CanonMakerNote::us0_(0, unsignedShort);
                                        ^
/opt/trunk/src/canonmn.cpp:60:41: error: 'const Exiv2::AsciiValue Exiv2::Internal::CanonMakerNote::s0x16_' is not a static data member of 'class Exiv2::Internal::CanonMakerNote'
  const AsciiValue CanonMakerNote::s0x16_("0000000000000000");
                                         ^
/opt/trunk/src/canonmn.cpp:61:40: error: 'const UShortValue Exiv2::Internal::CanonMakerNote::s_1_' is not a static data member of 'class Exiv2::Internal::CanonMakerNote'
  const UShortValue CanonMakerNote::s_1_(65535, unsignedShort); // Till bug is resolved
                                        ^
/opt/trunk/src/canonmn.cpp:62:41: error: 'const UShortValue Exiv2::Internal::CanonMakerNote::us40_' is not a static data member of 'class Exiv2::Internal::CanonMakerNote'
  const UShortValue CanonMakerNote::us40_(40, unsignedShort);
                                         ^
/opt/trunk/src/canonmn.cpp:440:137: error: 's0x16_' was not declared in this scope
   TagInfo(0x0028, "ImageUniqueID", N_("Image Unique ID"), N_("Image Unique ID"), canonId, makerTags, asciiString, -1, printValue, true, s0x16_, TagInfo::equal_to, TagInfo::String),
                                                                                                                                         ^
/opt/trunk/src/canonmn.cpp:1208:163: error: 's_1_' was not declared in this scope
         TagInfo(0x0009, "RecordMode", N_("Record Mode"), N_("Record mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsRecordMode), true, s_1_),
                                                                                                                                                                   ^
/opt/trunk/src/canonmn.cpp:1212:148: error: 'us7FFF_' was not declared in this scope
         TagInfo(0x000d, "Contrast", N_("Contrast"), N_("Contrast setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsLnh), true, us7FFF_),
                                                                                                                                                    ^
/opt/trunk/src/canonmn.cpp:1213:154: error: 'us7FFF_' was not declared in this scope
         TagInfo(0x000e, "Saturation", N_("Saturation"), N_("Saturation setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsLnh), true, us7FFF_),
                                                                                                                                                          ^
/opt/trunk/src/canonmn.cpp:1214:151: error: 'us7FFF_' was not declared in this scope
         TagInfo(0x000f, "Sharpness", N_("Sharpness"), N_("Sharpness setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsLnh), true, us7FFF_),
                                                                                                                                                       ^
/opt/trunk/src/canonmn.cpp:1215:160: error: 'us7FFF_' was not declared in this scope
         TagInfo(0x0010, "ISOSpeed", N_("ISO Speed Mode"), N_("ISO speed setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsISOSpeed), true, us7FFF_),
                                                                                                                                                                ^
/opt/trunk/src/canonmn.cpp:1218:152: error: 'us0_' was not declared in this scope
         TagInfo(0x0013, "AFPoint", N_("AF Point"), N_("AF point selected"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsAfPoint), true, us0_),
                                                                                                                                                        ^
/opt/trunk/src/canonmn.cpp:1221:132: error: 'us0_' was not declared in this scope
         TagInfo(0x0016, "LensType", N_("Lens Type"), N_("Lens type"), canonCsId, makerTags, signedShort, 1, printCsLensType, true, us0_),
                                                                                                                                    ^
/opt/trunk/src/canonmn.cpp:1225:139: error: 'us0_' was not declared in this scope
         TagInfo(0x001a, "MaxAperture", N_("Max Aperture"), N_("Max aperture"), canonCsId, makerTags, signedShort, 1, printSi0x0015, true, us0_, TagInfo::less_equal),
                                                                                                                                           ^
/opt/trunk/src/canonmn.cpp:1226:139: error: 'us0_' was not declared in this scope
         TagInfo(0x001b, "MinAperture", N_("Min Aperture"), N_("Min aperture"), canonCsId, makerTags, signedShort, 1, printSi0x0015, true, us0_, TagInfo::less_equal),
                                                                                                                                           ^
/opt/trunk/src/canonmn.cpp:1227:167: error: 's_1_' was not declared in this scope
         TagInfo(0x001c, "FlashActivity", N_("Flash Activity"), N_("Flash activity"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFlashActivity), true, s_1_),
                                                                                                                                                                       ^
/opt/trunk/src/canonmn.cpp:1231:183: error: 's_1_' was not declared in this scope
         TagInfo(0x0020, "FocusContinuous", N_("Focus Continuous"), N_("Focus continuous setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusContinuous), true, s_1_),
                                                                                                                                                                                       ^
/opt/trunk/src/canonmn.cpp:1232:150: error: 's_1_' was not declared in this scope
         TagInfo(0x0021, "AESetting", N_("AESetting"), N_("AE setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsAESetting), true, s_1_),
                                                                                                                                                      ^
/opt/trunk/src/canonmn.cpp:1233:187: error: 's_1_' was not declared in this scope
         TagInfo(0x0022, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsImageStabilization), true, s_1_),
                                                                                                                                                                                           ^
/opt/trunk/src/canonmn.cpp:1234:148: error: 'us0_' was not declared in this scope
         TagInfo(0x0023, "DisplayAperture", N_("Display Aperture"), N_("Display aperture"), canonCsId, makerTags, signedShort, 1, printValue, true, us0_),
                                                                                                                                                    ^
/opt/trunk/src/canonmn.cpp:1238:181: error: 's_1_' was not declared in this scope
         TagInfo(0x0027, "SpotMeteringMode", N_("Spot Metering Mode"), N_("Spot metering mode"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsSpotMeteringMode), true, s_1_),
                                                                                                                                                                                     ^
/opt/trunk/src/canonmn.cpp:1239:159: error: 's_1_' was not declared in this scope
         TagInfo(0x0028, "PhotoEffect", N_("Photo Effect"), N_("Photo effect"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsPhotoEffect), true, s_1_),
                                                                                                                                                               ^
/opt/trunk/src/canonmn.cpp:1241:130: error: 'us7FFF_' was not declared in this scope
         TagInfo(0x002a, "ColorTone", N_("Color Tone"), N_("Color tone"), canonCsId, makerTags, signedShort, 1, printValue, true, us7FFF_),
                                                                                                                                  ^
/opt/trunk/src/canonmn.cpp:1242:164: error: 's_1_' was not declared in this scope
         TagInfo(0x002e, "SRAWQuality", N_("SRAW Quality Tone"), N_("SRAW quality"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsSRAWQuality), true, s_1_),
                                                                                                                                                                    ^
/opt/trunk/src/canonmn.cpp:1360:142: error: 'us0_' was not declared in this scope
         TagInfo(0x0002, "ISOSpeed", N_("ISO Speed Used"), N_("ISO speed used"), canonSiId, makerTags, unsignedShort, 1, printSi0x0002, true, us0_),
                                                                                                                                              ^
/opt/trunk/src/canonmn.cpp:1362:150: error: 'us0_' was not declared in this scope
         TagInfo(0x0004, "TargetAperture", N_("Target Aperture"), N_("Target Aperture"), canonSiId, makerTags, unsignedShort, 1, printSi0x0015, true, us0_, TagInfo::less_equal),
                                                                                                                                                      ^
/opt/trunk/src/canonmn.cpp:1370:156: error: 'us0_' was not declared in this scope
         TagInfo(0x000c, "CameraTemperature", N_("Camera Temperature"), N_("Camera Temperature"), canonSiId, makerTags, unsignedShort, 1, printValue, true, us0_),
                                                                                                                                                            ^
/opt/trunk/src/canonmn.cpp:1371:155: error: 's_1_' was not declared in this scope
         TagInfo(0x000d, "FlashGuideNumber", N_("Flash Guide Number"), N_("Flash Guide Number"), canonSiId, makerTags, unsignedShort, 1, printValue, true, s_1_),
                                                                                                                                                           ^
/opt/trunk/src/canonmn.cpp:1372:143: error: 'us0_' was not declared in this scope
         TagInfo(0x000e, "AFPointUsed", N_("AF Point Used"), N_("AF point used"), canonSiId, makerTags, unsignedShort, 1, printSi0x000e, true, us0_),
                                                                                                                                               ^
/opt/trunk/src/canonmn.cpp:1379:141: error: 'us0_' was not declared in this scope
         TagInfo(0x0015, "ApertureValue", N_("Aperture Value"), N_("Aperture"), canonSiId, makerTags, unsignedShort, 1, printSi0x0015, true, us0_),
                                                                                                                                             ^
/opt/trunk/src/canonmn.cpp:1381:143: error: 'us0_' was not declared in this scope
         TagInfo(0x0017, "MeasuredEV2", N_("Measured EV 2"), N_("Measured EV 2"), canonSiId, makerTags, unsignedShort, 1, printSi0x0017, true, us0_),
                                                                                                                                               ^
/opt/trunk/src/canonmn.cpp:1385:151: error: 'us0_' was not declared in this scope
   TagInfo(0x001b, "AutoRotate", N_("Auto Rotate"), N_("Auto Rotate"), canonSiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(canonSiAutoRotate), true, us0_, TagInfo::less),
                                                                                                                                                       ^
/opt/trunk/src/canonmn.cpp:1387:131: error: 'us0_' was not declared in this scope
   TagInfo(0x001d, "SelfTimer2", N_("Self Timer 2"), N_("Self Timer 2"), canonSiId, makerTags, unsignedShort, 1, printValue, true, us0_, TagInfo::less),
                                                                                                                                   ^
/opt/trunk/src/canonmn.cpp:1537:163: error: 'us0_' was not declared in this scope
         TagInfo(0x0006, "RawJpgQuality", N_("Raw Jpg Quality"), N_("Raw Jpg Quality"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsQuality), true, us0_, TagInfo::less_equal),
                                                                                                                                                                   ^
/opt/trunk/src/canonmn.cpp:1538:156: error: 'us0_' was not declared in this scope
         TagInfo(0x0007, "RawJpgSize", N_("Raw Jpg Size"), N_("Raw Jpg Size"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsImageSize), true, us0_, TagInfo::less),
                                                                                                                                                            ^
/opt/trunk/src/canonmn.cpp:1539:169: error: 'us0_' was not declared in this scope
         TagInfo(0x0008, "NoiseReduction", N_("Noise Reduction"), N_("Noise Reduction"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonNoiseReduction), true, us0_, TagInfo::less),
                                                                                                                                                                         ^
/opt/trunk/src/canonmn.cpp:1543:161: error: 's_1_' was not declared in this scope
         TagInfo(0x000e, "FilterEffect", N_("Filter Effect"), N_("Filter Effect"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonFilterEffect), true, s_1_),
                                                                                                                                                                 ^
/opt/trunk/src/canonmn.cpp:1544:161: error: 's_1_' was not declared in this scope
         TagInfo(0x000f, "ToningEffect", N_("Toning Effect"), N_("Toning Effect"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonToningEffect), true, s_1_),
                                                                                                                                                                 ^
/opt/trunk/src/canonmn.cpp:1611:162: error: 'us0_' was not declared in this scope
         TagInfo(0x0008, "WhiteBalance", N_("WhiteBalance"), N_("White balance"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonSiWhiteBalance), true, us0_, TagInfo::less),
                                                                                                                                                                  ^
make[2]: *** [src/CMakeFiles/exiv2lib.dir/build.make:135: src/CMakeFiles/exiv2lib.dir/canonmn.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:445: src/CMakeFiles/exiv2lib.dir/all] Error 2
make: *** [Makefile:128: all] Error 2

RE: (trunk) cygwin: error while building - Added by Robin Mills 11 months ago

Apologies. The trunk was broken this morning and I'm working with Shridar to fix it. trunk is a development branch and is broken from time to time. However it's never left in a broken state for long (minutes or hours, never days).

I've successfully built/tested r4436 with Cygwin/32 in the last few minutes. Nothing much wrong here. I'm happy to talk 1-to-1 with you on Skype and we'll get this fixed.

When the build has been broken, I usually do $ make distclean after a resync of the code such as $ svn update . --revision 4436. It cleans up all manner of stuff that can cause misery. Another trick is to get a fresh copy of the code and build in a 'virgin' directory.

RE: (trunk) cygwin: error while building - Added by Lars-Daniel Weber 11 months ago

Robin Mills wrote:

I'm happy to talk 1-to-1 with you on Skype and we'll get this fixed.

I'm neither native English (very bad spoken English), nor I've got a microphone on my desktop computer ;)

I know about trunk, but the intervals between stable versions is pretty big in this project. 7 months ago, ICC profiles patch was released and should be integrated "later this year" into v0.26 stable. That's why I need trunk :)

RE: (trunk) cygwin: error while building - Added by Robin Mills 11 months ago

Oh, I usually talk 1-to-1 on the keyboard/messenger. I seldom use the web-cam or microphone.

Thanks for your suggestion about documenting how to disable NLS. I've added a new page for build tricks. http://dev.exiv2.org/projects/exiv2/wiki/Build_Tips_and_Tricks

Our release cycle is typically 12 to 18 months. Without a dedicated release engineer, I don't believe it's possible to ship more frequently. However our trunk is normally stable and is built/tested every night. You can download nightly builds here: http://exiv2.dyndns.org:8080/userContent/builds/

RE: (trunk) cygwin: error while building - Added by Lars-Daniel Weber 11 months ago

Robin Mills wrote:

You can download nightly builds here: http://exiv2.dyndns.org:8080/userContent/builds/

Didn't know these are binaries - I thought, there were logfiles only :) THANKS!

RE: (trunk) cygwin: error while building - Added by Robin Mills 11 months ago

I'm very pleased that you are working with the ICC code. I'm almost feature-complete on v0.26. Both the items remaining (#1074 and #1057) are concerned with ICC. It's great to have you using this as I update the test suite to test our ICC support.

RE: (trunk) cygwin: error while building - Added by Lars-Daniel Weber 11 months ago

Robin Mills wrote:

I'm very pleased that you are working with the ICC code. I'm almost feature-complete on v0.26. Both the items remaining (#1074 and #1057) are concerned with ICC. It's great to have you using this as I update the test suite to test our ICC support.

Hmm... I'm sorry to tell you, but ICC embegging doesn't work here (latest MSVC 2015 build).

  1. exiv2 -iC sRGB_IEC61966-2-1_black_scaled.icc test.tif
  2. cat sRGB_IEC61966-2-1_black_scaled.icc | exiv2 iC test.tif
  3. cp sRGB_IEC61966-2-1_black_scaled.icc test.icc | exiv2 -iC test.tif

1 and 2 give an error (Failed to open file (rb): No such file or directory (errno = 2)), 3 doesn't give an error, but doesn't embed the profile.

RE: (trunk) cygwin: error while building - Added by Robin Mills 11 months ago

Lars-Daniel

Yes, I discovered this a couple of days ago. It will get fixed over the weekend. A couple of days ago, I updated #1074 and said:

Mostly done. I'll have to test this, update the test suite appropriately and fix things that have still to be implemented.

You've discovered something that require attention. I can't give you a list of what's working and what is not working. I'm going to update the test suite to test each of the features involved including -iC, -pC, -dC, -eC, -ea, -iX and they have to be tested for image types: png, jpeg, tiff, webp and possibly others. And there may be changes required to some of the sample programs (such as metacopy).

Now you will appreciate why I can only release a new version every 12 to 18 months. To ensure that every feature is working correctly with every image type is time consuming. Our test suite is great at detecting changes in product behaviour. To add code to Exiv2 and the test suite is work that must be has fitted into my life, dealing with the forum and lots of other stuff.

(1-12/12)

Redmine Appliance - Powered by TurnKey Linux