From 5f6ef65695ed3ae0ba118872f884594173f09dc8 Mon Sep 17 00:00:00 2001 From: Robin Mills Date: Mon, 17 Sep 2018 10:28:09 +0100 Subject: [PATCH] Update PROJECT_VERSION & add install() commands for CPack - Version updated to 0.27.0.1. - Release notes for MacOS-X Package, Linux, CYGWIN, win64 and msvc - Redmine Release Notes Updated. --- CMakeLists.txt | 3 +- cmake/packaging.cmake | 45 ++++- license.txt | 339 +++++++++++++++++++++++++++++++++ releasenotes/CYGWIN/ReadMe.txt | 41 ++++ releasenotes/Darwin/ReadMe.txt | 40 ++++ releasenotes/Linux/ReadMe.txt | 42 ++++ releasenotes/MinGW/ReadMe.txt | 40 ++++ releasenotes/msvc/ReadMe.txt | 50 +++++ releasenotes/releasenotes.txt | 214 +++++++++++++++++++++ src/exiv2.cpp | 4 +- test/exiv2-test.sh | 3 +- 11 files changed, 815 insertions(+), 6 deletions(-) create mode 100644 license.txt create mode 100644 releasenotes/CYGWIN/ReadMe.txt create mode 100644 releasenotes/Darwin/ReadMe.txt create mode 100644 releasenotes/Linux/ReadMe.txt create mode 100644 releasenotes/MinGW/ReadMe.txt create mode 100644 releasenotes/msvc/ReadMe.txt create mode 100644 releasenotes/releasenotes.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index f4ed27af..af365d90 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,7 @@ cmake_minimum_required( VERSION 3.3.2 ) + project(exiv2 - VERSION 0.27.0.0 + VERSION 0.27.0.1 LANGUAGES CXX C ) diff --git a/cmake/packaging.cmake b/cmake/packaging.cmake index 50bf8e2a..342a3463 100644 --- a/cmake/packaging.cmake +++ b/cmake/packaging.cmake @@ -3,6 +3,49 @@ set(CPACK_PACKAGE_CONTACT "Luis Díaz Más ") set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) set(CPACK_SOURCE_GENERATOR TBZ2) -set(CPACK_SOURCE_IGNORE_FILES "build.*;\.git/;test;third-party;") +set(CPACK_SOURCE_IGNORE_FILES "build.*;\.git/;\.DS_Store/;test;third-party;") + +## ----------------------------------------------- +## TODO: Luis will rewrite this ----------------- +if ( MINGW ) + set (PACKNAME MinGW) +elseif ( MSVC ) + set (PACKNAME msvc) +else() + set (PACKNAME ${CMAKE_SYSTEM_NAME}) # Darwin or Linux or CYGWIN +endif() + +if ( CYGWIN OR MINGW ) + set(CPACK_GENERATOR TGZ) # MinGW/Cygwin use .tar.gz +elseif ( MSVC ) + set(CPACK_GENERATOR ZIP) # use .zip - less likely to damage bin/exiv2.dll permissions +else() + set(CPACK_GENERATOR TGZ) # Linux or MacOS-X: use .tar.gz (works with tar xzf bundle.tar.gz) +endif() + +set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${PACKNAME}) + +# https://stackoverflow.com/questions/17495906/copying-files-and-including-them-in-a-cpack-archive +install(DIRECTORY "${PROJECT_SOURCE_DIR}/samples/" DESTINATION "samples") +install(DIRECTORY "${PROJECT_SOURCE_DIR}/contrib/" DESTINATION "contrib") + +# Copy top level documents (eg README.md) +# https://stackoverflow.com/questions/21541707/cpack-embed-text-files +set( DOCS + README-CMAKE.md + README-CONAN.md + README.md + license.txt +) +foreach(doc ${DOCS}) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${doc} DESTINATION .) +endforeach() + +# Copy releasenotes.txt and appropriate ReadMe.txt (eg releasenotes/${PACKNAME}/ReadMe.txt) +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/releasenotes/${PACKNAME}/ReadMe.txt DESTINATION .) +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/releasenotes/releasenotes.txt DESTINATION .) + +## TODO: End ----------------- +## ----------------------------------------------- include (CPack) diff --git a/license.txt b/license.txt new file mode 100644 index 00000000..d159169d --- /dev/null +++ b/license.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/releasenotes/CYGWIN/ReadMe.txt b/releasenotes/CYGWIN/ReadMe.txt new file mode 100644 index 00000000..6421d472 --- /dev/null +++ b/releasenotes/CYGWIN/ReadMe.txt @@ -0,0 +1,41 @@ +Structure of the bundle: +------------------------ + +bin/exiv2 exiv2 and sample applications +bin/cygexiv2-0.dll DLL +lib/libexiv2.dll.a and libxmp.a link libraries +include/exiv2/ include files +share/ man pages +samples/ sample code +contrib/Qt Qt code and notes +samples/exifprint.cpp sample code + +ReadMe.txt This file +license.txt GPLv2.0 Software License +releasenotes.txt +README-CMAKE.md +README.md +README-CONAN.md + +To run exiv2 from the bundle +---------------------------- +$ cd +$ env LD_LIBRARY_PATH="$PWD/bin:$LD_LIBRARY_PATH" bin/exiv2 + +To build samples/exiftool.cpp from the bundle +--------------------------------------------- +$ g++ -std=c++98 samples/exifprint.cpp -L$PWD/lib -I$PWD/include -lexiv2 -o exifprint +$ env LD_LIBRARY_PATH="$PWD/lib:$LD_LIBRARY_PATH" ./exifprint + +To install for use by all users +------------------------------- +$ for i in bin lib include/exiv2 ; do cp -R $i /usr/local/$i ; done + +To compile and link your own code using installed library and include files +--------------------------------------------------------------------------- +$ g++ -std=c++98 samples/exifprint.cpp -I/usr/include -I/usr/local/include -L/usr/local/lib -lexiv2 -o exifprint +$ ./exifprint --version +exiv2=0.27.0 +... +xmlns=xmpidq:http://ns.adobe.com/xmp/Identifier/qual/1.0/ +$ diff --git a/releasenotes/Darwin/ReadMe.txt b/releasenotes/Darwin/ReadMe.txt new file mode 100644 index 00000000..74171b94 --- /dev/null +++ b/releasenotes/Darwin/ReadMe.txt @@ -0,0 +1,40 @@ +Structure of the bundle: +------------------------ + +bin/exiv2 exiv2 and sample applications +lib/libexiv2.27.0.1.dylib shared library +include/exiv2/ include files +share/ man pages +samples/ sample code +contrib/Qt Qt code and notes +samples/exifprint.cpp sample code + +ReadMe.txt This file +license.txt GPLv2.0 Software License +releasenotes.txt +README-CMAKE.md +README.md +README-CONAN.md + +To run exiv2 from the bundle +---------------------------- +$ cd +$ env DYLD_LIBRARY_PATH="$PWD/lib:$DYLD_LIBRARY_PATH" bin/exiv2 + +To build samples/exiftool.cpp from the bundle +--------------------------------------------- +$ g++ -std=c++98 samples/exifprint.cpp -L$PWD/lib -I$PWD/include -lexiv2 -o exifprint +$ env DYLD_LIBRARY_PATH="$PWD/lib:$DYLD_LIBRARY_PATH" ./exifprint + +To install for use by all users +------------------------------- +$ for i in bin lib include/exiv2 ; do sudo cp -R $i /usr/local/$i ; done + +To compile and link your own code using installed library and include files +--------------------------------------------------------------------------- +$ g++ -std=c++98 samples/exifprint.cpp -I/usr/local/include -L/usr/local/lib -lexiv2 -o exifprint +$ ./exifprint --version +exiv2=0.27.0 +... +xmlns=xmpidq:http://ns.adobe.com/xmp/Identifier/qual/1.0/ +$ diff --git a/releasenotes/Linux/ReadMe.txt b/releasenotes/Linux/ReadMe.txt new file mode 100644 index 00000000..3e6f5f1c --- /dev/null +++ b/releasenotes/Linux/ReadMe.txt @@ -0,0 +1,42 @@ +This is to be written for Linux from contrib/buildserver/dailyReadMe.txt + +Structure of the bundle: +------------------------ + +bin/exiv2 exiv2 and sample applications +lib/libexiv2.so.0.27.0.1 shared library +include/exiv2/ include files +share/ man pages +samples/ sample code +contrib/Qt Qt code and notes +samples/exifprint.cpp sample code + +ReadMe.txt This file +license.txt GPLv2.0 Software License +releasenotes.txt +README-CMAKE.md +README.md +README-CONAN.md + +To run exiv2 from the bundle +---------------------------- +$ cd +$ env LD_LIBRARY_PATH="$PWD/lib:$LD_LIBRARY_PATH" bin/exiv2 + +To build samples/exiftool.cpp from the bundle +--------------------------------------------- +$ g++ -std=c++98 samples/exifprint.cpp -L$PWD/lib -I$PWD/include -lexiv2 -o exifprint +$ env LD_LIBRARY_PATH="$PWD/lib:$LD_LIBRARY_PATH" ./exifprint + +To install for use by all users +------------------------------- +$ for i in bin lib include ; do sudo cp -R $i /usr/local/$i ; done + +To compile and link your own code using installed library and include files +--------------------------------------------------------------------------- +$ g++ -std=c++98 samples/exifprint.cpp -I/usr/local/include -L/usr/local/lib -lexiv2 -o exifprint +$ ./exifprint --version +exiv2=0.27.0 +... +xmlns=xmpidq:http://ns.adobe.com/xmp/Identifier/qual/1.0/ +$ diff --git a/releasenotes/MinGW/ReadMe.txt b/releasenotes/MinGW/ReadMe.txt new file mode 100644 index 00000000..634fccc6 --- /dev/null +++ b/releasenotes/MinGW/ReadMe.txt @@ -0,0 +1,40 @@ +Structure of the bundle: +------------------------ + +bin/exiv2 exiv2 and sample applications +lib/libexiv2.27.0.1.dylib shared library +include/exiv2/ include files +share/ man pages +samples/ sample code +contrib/Qt Qt code and notes +samples/exifprint.cpp sample code + +ReadMe.txt This file +license.txt GPLv2.0 Software License +releasenotes.txt +README-CMAKE.md +README.md +README-CONAN.md + +To run exiv2 from the bundle +---------------------------- +$ cd +$ env LD_LIBRARY_PATH="$PWD/lib:$LD_LIBRARY_PATH" bin/exiv2 + +To build samples/exiftool.cpp from the bundle +--------------------------------------------- +$ g++ -std=c++98 samples/exifprint.cpp -L$PWD/lib -I$PWD/include -lexiv2 -o exifprint +$ env LD_LIBRARY_PATH="$PWD/lib:$LD_LIBRARY_PATH" ./exifprint + +To install for use by all users +------------------------------- +$ for i in bin lib include ; do sudo cp -R $i /usr/local/$i ; done + +To compile and link your own code using installed library and include files +--------------------------------------------------------------------------- +$ g++ -std=c++98 samples/exifprint.cpp -I/usr/local/include -L/usr/local/lib -lexiv2 -o exifprint +$ ./exifprint --version +exiv2=0.27.0 +... +xmlns=xmpidq:http://ns.adobe.com/xmp/Identifier/qual/1.0/ +$ diff --git a/releasenotes/msvc/ReadMe.txt b/releasenotes/msvc/ReadMe.txt new file mode 100644 index 00000000..0066da42 --- /dev/null +++ b/releasenotes/msvc/ReadMe.txt @@ -0,0 +1,50 @@ +MSVC 2017 Release DLL Bundle +---------------------------- + +Structure of the bundle: +------------------------ + +bin/exiv2 exiv2 and sample applications +bin/libexiv2.dll and libcurl.dll dlls +include/exiv2/ include files +lib/exiv2.lib (and xmp.lib) link libraries +share/ man pages +samples/ sample code +contrib/Qt Qt code and notes +samples/exifprint.cpp sample code + +ReadMe.txt This file +license.txt GPLv2.0 Software License +releasenotes.txt +README-CMAKE.md +README.md +README-CONAN.md + ++----------------------------------------------------------------------------+ +| Caution: Use a Windows unzip utility such as 7z or winzip | +| Cygwin unzip utilities can result in incorrect security with bin/exiv2.dll | ++----------------------------------------------------------------------------+ + +To run exiv2.exe from the bundle: +c:\temp> cd \bin +c:\temp\exiv2-0.27.0.1-msvc\bin> exiv2 + +Add the bin to your PATH: +c:\temp\exiv2-0.27.0.1-msvc\bin>set PATH=%CD%;%PATH% + + +To compile and link your own code: + ++----------------------------------------------------------------------------+ +| Caution: You must use the same version of Visual Studio as the build | +| You will need to use the "Visual Studio Command Prompt" | +| or initialise the DOS environment by calling vcvarsall.bat | ++----------------------------------------------------------------------------+ + +c:\temp> cd exiv2-0.27.0.1-msvc +c:\temp\exiv2-0.27.0.1-msvc> cl /EHsc -Iinclude /MD samples\exifprint.cpp /link lib\exiv2.lib +c:\temp\exiv2-0.27.0.1-msvc> exifprint --version +exiv2=0.27.0 +... +xmlns=xmpidq:http://ns.adobe.com/xmp/Identifier/qual/1.0/ +c:\temp\exiv2-0.27.0.1-msvc> diff --git a/releasenotes/releasenotes.txt b/releasenotes/releasenotes.txt new file mode 100644 index 00000000..15b0ab97 --- /dev/null +++ b/releasenotes/releasenotes.txt @@ -0,0 +1,214 @@ +Exiv2 v0.27 RC1 (exiv2 v0.27.0.1) +--------------------------------- + +GM will be v0.27.0.0 Scheduled: December 2018 +RC2 will be v0.27.0.2 Scheduled: November 2018 + +I have to thank Luis and Dan for their huge contribution to make this release. + +I'd also like to thank Henri, Shridar, Ben, Michal, Phil and Freddy for their contributions. If I've forgotten somebody, please let me know so I can add your name to this acknowledgement. + +The headline features are: +1) Many security fixes +2) New CMake build infrastructure +3) New conan support to build dependencies +4) New test harness +5) Support for Adobe XMPsdk 2016 +6) Many bug fixes + +With Exiv2 v0.27, Team Exiv2 will offer "Long Term Support" and intend to 'dot' releases with security features and (some) critical fixes. + +Focus of Exiv2 v0.28 +-------------------- + +Exiv2 moves into the future with Exiv2 v0.28. +The code will be "modernised to C++11 and later". +Users of Elderly compilers such as GCC4 and Visual Studio (<2015) will be supported with 'dot' releases. +To use Exiv2 v0.28, applications must be built with"modern" build systems such as GCC 7+ and Visual Studio 2015 and later. + +Known Issues on Redmine for v0.27 +--------------------------------- + +The following issues on Redmine are unresolved and require additional work. +With the exception of #1270, work-arounds have been provided for most of those issues. + +http://dev.exiv2.org/projects/exiv2/issues + +#1346 Assertion failure in Exiv2::Internal::CiffComponent::doRead() in libexiv2 +#1345 Assertion Failure (SIGABRT) in Exiv2:RafImage::readMetadata() in Libexiv2 +#1341 Date/Time Original not modified for NEFs +#1340 Infinite loop bugs in Libexiv2 Exiv2::Image::printIFDStructure() +#1324 Pentax Makernote written twice +#1306 Lens TAMRON SP 15-30mm F/2.8 Di VC USD A012 is not properly recognised +#1304 Lens missing Tamron SP 90mm f/2.8 Di Macro 1:1 VC USD F017 +#1270 Using libexiv2.a/.lib in multhreaded app segfaults. + +Resolved Issues on Redmine for v0.27 +------------------------------------ + +53 issues have been 'closed' +List of 'closed' issue to be added for GM + +* Build: (7) + - 0001362: Fix Clang build + (David Carlos Manuelda) + - 0001358: Unsuccessful build (Win7, MSVC2015, amd64_x86) + (Andreas Martin) + - 0001356: Small patch to configure.py + (Sridhar Boovaraghavan) + - 0001329: Error during cmake with gcc version parsing + (Maxime Daisy) + - 0001299: exiv2-0.26-trunk.tar.gz changed on download server + (Jonathan Riddell) + - 0001270: Using libexiv2.a/.lib in multhreaded app segfaults. + (Ben Touchette) + - 0001237: Report CMake/MinGW issues to Kitware + +* Camera: (1) + - 0001352: Support camera Canon M100 + (Daniel Zucchetto) + +* Duplicate: (1) + - 0001307: exiv2: tiffvisitor.cpp:1299: virtual void Exiv2::Internal::TiffReader::visitDirectory(Exiv2::Internal::TiffDirectory*): Assertion `tc.get()' failed. + (Henri Salo) + +* Exif: (6) + - 0001320: It is a heap-buffer-overflow in Exiv2::Jp2Image::readMetadata (jp2image.cpp:277) + (Zhu Liu) + - 0001319: It is a heap-buffer-overflow in Exiv2::us2Data (types.cpp:346) + (Zhu Liu) + - 0001318: Invalid memory address dereference in Exiv2::StringValueBase::read ( in value.cpp:302) + (Zhu Liu) + - 0001317: It is a heap-buffer-overflow in Exiv2::s2Data (types.cpp:383) + (Zhu Liu) + - 0001316: It is a heap-buffer-overflow in Exiv2::l2Data (types.cpp:398) + (Zhu Liu) + - 0001315: Invalid memory address dereference in Exiv2::DataValue::read (value.cpp:193) + (Zhu Liu) + +* Image format: (5) + - 0001353: Segmentation fault in the software exiv2 when the function Exiv2::tEXtToDataBuf() is finished + (chung-yi lin) + - 0001346: Assertion failure in Exiv2::Internal::CiffComponent::doRead() in libexiv2 + (Sanjay Rawat) + - 0001345: Assertion Failure (SIGABRT) in Exiv2:RafImage::readMetadata() in Libexiv2 + (Sanjay Rawat) + - 0001338: Exiv2 aborted (crashed) with "Error in `exiv2': free(): invalid next size (fast)" + (Sanjay Rawat) + - 0001334: Version 0.26 is returns unwanted data when the key value is received from RW2 files (Panasonic DMC-GF6 camera) + (Alex Stepanov) + +* Insufficient information: (1) + - 0001347: Segfault in Digikam when saving/loading certain TIFF images + (V Engmark) + +* Lens: (15) + - 0001361: Wrongly identified Canon 2x extender as 1.4x extender with Tamron lens + (Simon Harhues) + - 0001355: New lens Tamron 100-400mm F/4.5-6.3 Di VC USD + (Christian Touzé) + - 0001351: Add lens: Sigma 120-300mm f/2.8 G VR + (Nikolai Försterling) + - 0001348: patch: add Tamron SP AF 150-600mm F/5-6.3 VC USD G2 (A022) for Nikon + (Mike Romanov) + - 0001339: Panasonic DMC-TZ70 lens not detected + (Tim Stahel) + - 0001336: Support for AF-P DX NIKKOR 10-20mm f/4.5-5.6G VR + (Šarūnas Burdulis) + - 0001335: Missing Nikon lense + (Niels Hansen) + - 0001333: New Lens: Tamron SP 24-70mm F/2.8 Di VC USD G2 (A032) + (LP Tech) + - 0001332: Recognise Tamron 18-200mm F/3.5-6.3 DiII VC B018 on Canon bodies + (Šarūnas Burdulis) + - 0001328: Sigma 18-300mm is wrongly reported as a Canon 75-300mm + (Jean-Luc Jean-Luc Coulon) + - 0001327: Two Sigma 24-70mm f/2.8 IF EX DG HSM lens definitions ?? + (Philippe Dussart-Desart) + - 0001326: Tamron 100-300mm f/5-6.3 MACRO 1:4 + (Albert Jasinski) + - 0001323: Add lens "Sigma 18-300mm f/3.5-6.3 DC Macro OS HS" for Canon ID 197 + (Ronny Heidenreich) + - 0001306: the lens TAMRON SP 15-30mm F/2.8 Di VC USD A012 is not properly recognised + (rene ernenwein) + - 0001304: Lens missing Tamron SP 90mm f/2.8 Di Macro 1:1 VC USD F017 + (Matze G) + +* Metadata: (7) + - 0001341: Date/Time Original not modified for NEFs + (Jean-Luc CECCOLI) + - 0001340: Infinite loop bugs in Libexiv2 Exiv2::Image::printIFDStructure() + (Sanjay Rawat) + - 0001325: Crash in exiv2 - Nikon1MakerNote::printBarValue (nikonnm.cpp) + (Thibaud Mouton) + - 0001322: Exception in PentaxMakerNote::printShutterCount, source: pentaxmn.cpp + (Norbert Wagner) + - 0001321: Invalid memory address dereference in Exiv2::getULong(types.cpp:246) + (Zhu Liu) + - 0001301: New lens: Sigma 18-35mm f/1.8 DC HSM Art for Canon + (Alexander Steffen) + - 0001300: New lens: Canon EF-S 35mm f/2.8 Macro IS STM + (Alexander Steffen) + +* Makernote: (2) + - 0001343: Irix 15mm f/2.4 on Nikon + (Ben Perston) + - 0001324: Pentax Makernote written twice + (Dominique Nerriec) + +* Miscellaneous: (2) + - 0001314: it is a stack-overflow vulnerability in Exiv2::Internal::stringFormat[abi:cxx11] ( in image.cpp:975 ) + (Zhu Liu) + - 0001305: Segmentation fault on certain image + (Oleg Antonyan) + +* Not-a-bug: (5) + - 0001364: New lens Tamron SP 24-70mm F/2.8 Di VC USD G2 + (Mikko Pantsar) + - 0001350: Add lens: AF-S DX Nikkor 18-140mm + (Nikolai Försterling) + - 0001349: Add lens: Sigma 50-100mm F1.8 DC HSM | A + (Nikolai Försterling) + - 0001344: Unknown metadata + (luv zeng) + - 0001331: exiv2 fails to delete bulk of metadata in jpeg + (Denis-Carl Robidoux) + +* Tools: (1) + - 0001303: #1 Use 'releases' feature on GitHub + +* Tiff parser: (3) + - 0001360: exiv2 can't read metadata from tiff file (tiff directory length is too large) + (T Modes) + - 0001359: This does not look like a TIFF image + (jaeho jung) + - 0001330: Crash in Exiv2::TiffImage::readMetadata + (Tobias E.) + +* Website: (2) + - 0001308: Move directory /website to svn://dev.exiv2.org/svn/team/website + - 0001302: Use sha256 Checksums on Downloads and Archive pages of the web site. + +* Xmp: (3) + - 0001354: Inconsistency with long XMP namespaces (e.g. 'Iptc4xmpExt') + (Jens Georg) + - 0001278: XMP SDK Split + (Ben Touchette) + - 0000941: Upgrade xmpsdk source to Adobe's current version + + + + +Known Issues on GitHub for v0.27 +--------------------------------- + +To be written. + +Closed Issues on GitHub for v0.27 +--------------------------------- + +To be written. + +Robin Mills +robin@clanmills.com +2018-09-18 diff --git a/src/exiv2.cpp b/src/exiv2.cpp index 35e3ca8e..b4950734 100644 --- a/src/exiv2.cpp +++ b/src/exiv2.cpp @@ -216,9 +216,7 @@ void Params::cleanup() void Params::version(bool verbose,std::ostream& os) const { - bool b64 = sizeof(void*)==8; - const char* sBuild = b64 ? "(64 bit build)" : "(32 bit build)" ; - os << EXV_PACKAGE_STRING << " " << sBuild << "\n"; + os << EXV_PACKAGE_STRING << std::endl; if ( Params::instance().greps_.empty() ) { os << "\n" << _("This program is free software; you can redistribute it and/or\n" diff --git a/test/exiv2-test.sh b/test/exiv2-test.sh index f951bc52..cf7182c4 100755 --- a/test/exiv2-test.sh +++ b/test/exiv2-test.sh @@ -65,7 +65,8 @@ diffargs="-w --text $diffargs" echo tmp/ echo echo "Exiv2 version ------------------------------------------------------------" - runTest exiv2 -u -V | sed '1 s, (.. bit build)$, (__ bit build),' + # Tweak this to avoid a maintenance headache with test/data/exiv2-test.out + runTest exiv2 -u -V | sed -E -e 's#^exiv2.*$#exiv2 0.27.0.0 (__ bit build)#' echo echo "Exiv2 help ---------------------------------------------------------------" runTest exiv2 -u -h