[med-svn] [Git][med-team/dssp][upstream] New upstream version 4.0.4

Maarten L. Hekkelman (@mhekkel-guest) gitlab at salsa.debian.org
Sun Feb 13 09:36:58 GMT 2022



Maarten L. Hekkelman pushed to branch upstream at Debian Med / dssp


Commits:
7b81fa34 by Maarten L. Hekkelman at 2022-02-13T10:23:20+01:00
New upstream version 4.0.4
- - - - -


8 changed files:

- CMakeLists.txt
- changelog
- + cmake/VersionString.cmake
- src/dssp.cpp
- src/dssp.hpp
- src/mkdssp.cpp
- − src/revision.hpp.in
- test/unit-test.cpp


Changes:

=====================================
CMakeLists.txt
=====================================
@@ -25,7 +25,7 @@
 cmake_minimum_required(VERSION 3.15)
 
 # set the project name
-project(mkdssp VERSION 4.0.2 LANGUAGES CXX)
+project(mkdssp VERSION 4.0.4 LANGUAGES CXX)
 
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
 
@@ -55,7 +55,7 @@ if(NOT "$ENV{CCP4}" STREQUAL "")
 	list(PREPEND CMAKE_MODULE_PATH "${CCP4}/Lib")
 	list(APPEND CMAKE_PREFIX_PATH ${CCP4})
 	if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
-		set(CMAKE_PREFIX_PATH ${CCP4})
+		set(CMAKE_INSTALL_PREFIX ${CCP4})
 	endif()
 endif()
 
@@ -81,19 +81,6 @@ if(MSVC)
 		message(STATUS "The library and auxiliary files will be installed in $ENV{LOCALAPPDATA}/${PROJECT_NAME}")
 		set(CMAKE_INSTALL_PREFIX "$ENV{LOCALAPPDATA}/${PROJECT_NAME}" CACHE PATH "..." FORCE)
 	endif()
-
-	# Find out the processor type for the target
-	if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "AMD64")
-		set(COFF_TYPE "x64")
-	elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i386")
-		set(COFF_TYPE "x86")
-	elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "ARM64")
-		set(COFF_TYPE "arm64")
-	else()
-		message(FATAL_ERROR "Unsupported or unknown processor type ${CMAKE_SYSTEM_PROCESSOR}")
-	endif()	
-
-	set(COFF_SPEC "--coff=${COFF_TYPE}")
 endif()
 
 if(UNIX AND NOT APPLE)
@@ -101,39 +88,26 @@ if(UNIX AND NOT APPLE)
 	if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
 		message(WARNING "The library and auxiliary files will be installed in $ENV{HOME}/.local")
 		set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/.local" CACHE PATH "..." FORCE)
+
+		# libcifpp will be there as well, likely
+		list(PREPEND CMAKE_PREFIX_PATH "$ENV{HOME}/.local")
 	endif()
 endif()
 
 # Create a revision file, containing the current git version info
-
-find_package(Git)
-if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
-	include(GetGitRevisionDescription)
-    get_git_head_revision(REFSPEC COMMITHASH)
-
-	# Generate our own version string
-	git_describe_working_tree(BUILD_VERSION_STRING --match=build --dirty)
-else()
-    message(WARNING "Git not found, cannot set version info")
-
-    SET(BUILD_VERSION_STRING ${PROJECT_VERSION})
-endif()
-
-# generate version.h
-include_directories(${CMAKE_BINARY_DIR} PRIVATE)
-string(TIMESTAMP BUILD_DATE_TIME "%Y-%m-%d" UTC)
-configure_file("${CMAKE_SOURCE_DIR}/src/revision.hpp.in" "${CMAKE_BINARY_DIR}/revision.hpp" @ONLY)
+include(VersionString)
+write_version_header()
 
 # Optionally use mrc to create resources
-find_program(MRC mrc HINTS "$ENV{LOCALAPPDATA}/bin"  "$ENV{LOCALAPPDATA}/mrc" "${CMAKE_INSTALL_PREFIX}/../mrc" "/usr/local/bin")
+find_package(Mrc)
 
-if(MRC)
+if(MRC_FOUND)
 	option(USE_RSRC "Use mrc to create resources" ON)
 else()
 	message(WARNING "Not using resources since mrc was not found")
 endif()
 
-if(USE_RSRC STREQUAL "ON")
+if(USE_RSRC)
 	set(USE_RSRC 1)
 
 	message("Using resources compiled with ${MRC}")
@@ -144,30 +118,22 @@ set(CMAKE_THREAD_PREFER_PTHREAD)
 set(THREADS_PREFER_PTHREAD_FLAG)
 find_package(Threads)
 
-set(Boost_DETAILED_FAILURE_MSG ON)
-if(NOT BUILD_SHARED_LIBS)
-	set(Boost_USE_STATIC_LIBS ON)
-endif()
+# Note: use -DBoost_USE_STATIC_LIBS=ON to use boost static libraries
 
 find_package(cifpp 2.0.0 REQUIRED)
-find_package(Boost COMPONENTS date_time)
-
-if(USE_RSRC)
-	add_custom_command(OUTPUT mkdssp_rsrc.obj
-		COMMAND ${MRC} -o mkdssp_rsrc.obj ${CIFPP_SHARE_DIR}/mmcif_pdbx_v50.dic ${COFF_SPEC}
-	)
-
-	set(DSSP_RESOURCE mkdssp_rsrc.obj)
-endif()
+find_package(Boost COMPONENTS date_time program_options)
 
 add_executable(mkdssp
 	${PROJECT_SOURCE_DIR}/src/dssp.cpp
 	${PROJECT_SOURCE_DIR}/src/dssp.hpp
-	${PROJECT_SOURCE_DIR}/src/mkdssp.cpp
-	${DSSP_RESOURCE})
+	${PROJECT_SOURCE_DIR}/src/mkdssp.cpp)
 
-target_include_directories(mkdssp PRIVATE cifpp::cifpp ${CMAKE_SOURCE_DIR}/include ${cifpp_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${CMAKE_BINARY_DIR})
-target_link_libraries(mkdssp PRIVATE cifpp::cifpp Boost::date_time ${CMAKE_THREAD_LIBS_INIT})
+target_include_directories(mkdssp PRIVATE cifpp::cifpp ${CMAKE_SOURCE_DIR}/include ${CMAKE_BINARY_DIR})
+target_link_libraries(mkdssp PRIVATE cifpp::cifpp Boost::date_time Boost::program_options)
+	
+if(USE_RSRC)
+	mrc_target_resources(mkdssp ${CIFPP_SHARE_DIR}/mmcif_pdbx_v50.dic)
+endif()
 
 install(TARGETS ${PROJECT_NAME}
     RUNTIME DESTINATION ${BIN_INSTALL_DIR}
@@ -187,14 +153,18 @@ endif()
 
 # test
 
-add_executable(unit-test ${PROJECT_SOURCE_DIR}/test/unit-test.cpp ${PROJECT_SOURCE_DIR}/src/dssp.cpp ${DSSP_RESOURCE})
+add_executable(unit-test ${PROJECT_SOURCE_DIR}/test/unit-test.cpp ${PROJECT_SOURCE_DIR}/src/dssp.cpp)
+
+if(USE_RSRC)
+	mrc_target_resources(unit-test ${CIFPP_SHARE_DIR}/mmcif_pdbx_v50.dic)
+endif()
 
 target_include_directories(unit-test PRIVATE
 	${CMAKE_CURRENT_SOURCE_DIR}/src
 	${CMAKE_CURRENT_SOURCE_DIR}/include
 )
 
-target_link_libraries(unit-test Threads::Threads cifpp::cifpp Boost::date_time)
+target_link_libraries(unit-test cifpp::cifpp Boost::date_time)
 
 if(MSVC)
 	# Specify unwind semantics so that MSVC knowns how to handle exceptions


=====================================
changelog
=====================================
@@ -1,3 +1,7 @@
+Version 4.0.4
+- New version string logic
+- Improved makefile
+
 Version 4.0.3
 - Fixed makefile
 


=====================================
cmake/VersionString.cmake
=====================================
@@ -0,0 +1,77 @@
+# SPDX-License-Identifier: BSD-2-Clause
+
+# Copyright (c) 2021 NKI/AVL, Netherlands Cancer Institute
+
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+
+# 1. Redistributions of source code must retain the above copyright notice, this
+#    list of conditions and the following disclaimer
+# 2. Redistributions in binary form must reproduce the above copyright notice,
+#    this list of conditions and the following disclaimer in the documentation
+#    and/or other materials provided with the distribution.
+
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cmake_minimum_required(VERSION 3.15)
+
+# Create a revision file, containing the current git version info, if any
+function(write_version_header)
+	include(GetGitRevisionDescription)
+	if(NOT(GIT-NOTFOUND OR HEAD-HASH-NOTFOUND))
+		git_describe_working_tree(BUILD_VERSION_STRING --match=build --dirty)
+
+		if(BUILD_VERSION_STRING MATCHES "build-([0-9]+)-g([0-9a-f]+)(-dirty)?")
+			set(BUILD_GIT_TAGREF "${CMAKE_MATCH_2}")
+			if(CMAKE_MATCH_3)
+				set(BUILD_VERSION_STRING "${CMAKE_MATCH_1}*")
+			else()
+				set(BUILD_VERSION_STRING "${CMAKE_MATCH_1}")
+			endif()
+		endif()
+	else()
+		set(BUILD_VERSION_STRING "no git info available")
+	endif()
+
+	include_directories(${CMAKE_BINARY_DIR} PRIVATE)
+	string(TIMESTAMP BUILD_DATE_TIME "%Y-%m-%dT%H:%M:%SZ" UTC)
+
+	if(ARGC GREATER 0)
+		set(VAR_PREFIX "${ARGV0}")
+	endif()
+
+	file(WRITE "${CMAKE_BINARY_DIR}/revision.hpp.in" [[// Generated revision file
+
+#pragma once
+
+#include <ostream>
+
+const char k at VAR_PREFIX@ProjectName[] = "@PROJECT_NAME@";
+const char k at VAR_PREFIX@VersionNumber[] = "@PROJECT_VERSION@";
+const char k at VAR_PREFIX@VersionGitTag[] = "@BUILD_GIT_TAGREF@";
+const char k at VAR_PREFIX@BuildInfo[] = "@BUILD_VERSION_STRING@";
+const char k at VAR_PREFIX@BuildDate[] = "@BUILD_DATE_TIME@";
+
+inline void write_version_string(std::ostream &os, bool verbose)
+{
+	os << k at VAR_PREFIX@ProjectName << " version " << k at VAR_PREFIX@VersionNumber << std::endl;
+	if (verbose)
+	{
+		os << "build: " << k at VAR_PREFIX@BuildInfo << ' ' << k at VAR_PREFIX@BuildDate << std::endl;
+		if (k at VAR_PREFIX@VersionGitTag[0] != 0)
+			os << "git tag: " << k at VAR_PREFIX@VersionGitTag << std::endl;
+	}
+}
+]])
+	configure_file("${CMAKE_BINARY_DIR}/revision.hpp.in" "${CMAKE_BINARY_DIR}/revision.hpp" @ONLY)
+endfunction()
+


=====================================
src/dssp.cpp
=====================================
@@ -40,73 +40,8 @@
 #include <cif++/Cif2PDB.hpp>
 
 #include "dssp.hpp"
-
-// --------------------------------------------------------------------
-
-namespace {
-	std::string gVersionNr, gVersionDate;
-}
-
-void load_version_info()
-{
-	const std::regex
-		rxVersionNr(R"(build-(\d+)-g[0-9a-f]{7}(-dirty)?)"),
-		rxVersionDate(R"(Date: +(\d{4}-\d{2}-\d{2}).*)"),
-		rxVersionNr2(R"(mkdssp-version: (\d+(?:\.\d+)+))");
-
 #include "revision.hpp"
 
-	struct membuf : public std::streambuf
-	{
-		membuf(char* data, size_t length)       { this->setg(data, data, data + length); }
-	} buffer(const_cast<char*>(kRevision), sizeof(kRevision));
-
-	std::istream is(&buffer);
-
-	std::string line;
-
-	while (getline(is, line))
-	{
-		std::smatch m;
-
-		if (std::regex_match(line, m, rxVersionNr))
-		{
-			gVersionNr = m[1];
-			if (m[2].matched)
-				gVersionNr += '*';
-			continue;
-		}
-
-		if (std::regex_match(line, m, rxVersionDate))
-		{
-			gVersionDate = m[1];
-			continue;
-		}
-
-		// always the first, replace with more specific if followed by the other info
-		if (std::regex_match(line, m, rxVersionNr2))
-		{
-			gVersionNr = m[1];
-			continue;
-		}
-	}
-}
-
-std::string get_version_nr()
-{
-	return gVersionNr/* + '/' + cif::get_version_nr()*/;
-}
-
-std::string get_version_date()
-{
-	return gVersionDate;
-}
-
-std::string get_version_string()
-{
-	return gVersionNr + " " + gVersionDate;
-}
-
 // --------------------------------------------------------------------
 
 std::string ResidueToDSSPLine(const mmcif::DSSP::ResidueInfo& info)
@@ -417,7 +352,7 @@ void annotateDSSP(mmcif::Structure& structure, const mmcif::DSSP& dssp, bool wri
 		}
 	}
 
-	db.add_software("dssp", "other", get_version_nr(), get_version_date());
+	db.add_software("dssp", "other", kVersionNumber, kBuildDate);
 
 	db.write(os);
 }


=====================================
src/dssp.hpp
=====================================
@@ -29,11 +29,6 @@
 #include <cif++/Structure.hpp>
 #include <cif++/Secondary.hpp>
 
-void load_version_info();
-std::string get_version_nr();
-std::string get_version_date();
-std::string get_version_string();
-
 void writeDSSP(const mmcif::Structure& structure, const mmcif::DSSP& dssp, std::ostream& os);
 void annotateDSSP(mmcif::Structure& structure, const mmcif::DSSP& dssp, bool writeOther, std::ostream& os);
 


=====================================
src/mkdssp.cpp
=====================================
@@ -46,6 +46,7 @@
 #include <boost/iostreams/filtering_stream.hpp>
 
 #include "dssp.hpp"
+#include "revision.hpp"
 
 namespace fs = std::filesystem;
 namespace io = boost::iostreams;
@@ -115,7 +116,7 @@ int d_main(int argc, const char* argv[])
 
 	if (vm.count("version"))
 	{
-		std::cout << argv[0] << " version " << get_version_string() << std::endl;
+		write_version_string(std::cout, vm.count("verbose"));
 		exit(0);
 	}
 
@@ -242,8 +243,6 @@ int main(int argc, const char* argv[])
 #if defined(DATA_DIR)
 		cif::addDataDirectory(DATA_DIR);
 #endif
-		load_version_info();
-
 		result = d_main(argc, argv);
 	}
 	catch (const std::exception& ex)


=====================================
src/revision.hpp.in deleted
=====================================
@@ -1,5 +0,0 @@
-const char kRevision[] = R"(
-mkdssp-version: @PROJECT_VERSION@
- at BUILD_VERSION_STRING@
-Date: @BUILD_DATE_TIME@
-)";


=====================================
test/unit-test.cpp
=====================================
@@ -86,12 +86,14 @@ BOOST_AUTO_TEST_CASE(ut_dssp)
 	BOOST_CHECK(reference.eof());
 }
 
-
-BOOST_AUTO_TEST_CASE(ut_mmcif)
+BOOST_AUTO_TEST_CASE(ut_mmcif_2)
 {
 	using namespace std::literals;
+	using namespace cif::literals;
 
 	mmcif::File f("1cbs.cif.gz");
+	f.file().loadDictionary("mmcif_pdbx_v50");
+
 	mmcif::Structure structure(f, 1, mmcif::StructureOpenOptions::SkipHydrogen);
 
 	mmcif::DSSP dssp(structure, 3, true);
@@ -100,29 +102,14 @@ BOOST_AUTO_TEST_CASE(ut_mmcif)
 
 	annotateDSSP(structure, dssp, true, test);
 
-	std::ifstream reference("1cbs-dssp.cif");
-
-	BOOST_ASSERT(reference.is_open());
-
-	std::string line_t, line_r;
-
-	for (int line_nr = 1; ; ++line_nr)
-	{
-		bool done_t = not std::getline(test, line_t);
-		bool done_r = not std::getline(reference, line_r);
-
-		BOOST_CHECK_EQUAL(done_r, done_t);
-		if (done_r)
-			break;
-
-		if (line_t != line_r)
-			std::cerr << line_nr << std::endl
-					<< line_t << std::endl
-					<< line_r << std::endl;
+	mmcif::File rf("1cbs-dssp.cif");
+	mmcif::Structure rs(rf, 1, mmcif::StructureOpenOptions::SkipHydrogen);
 
-		BOOST_CHECK(line_t == line_r);
-	}
+	structure.datablock()["software"].erase("name"_key == "dssp");
+	rs.datablock()["software"].erase("name"_key == "dssp");
+	
+	// generate some output on different files:
+	cif::VERBOSE = 2;
 
-	BOOST_CHECK(test.eof());
-	BOOST_CHECK(reference.eof());
+	BOOST_CHECK(structure.datablock() == rs.datablock());
 }



View it on GitLab: https://salsa.debian.org/med-team/dssp/-/commit/7b81fa34b3c68436e2cfa9852213834d90049096

-- 
View it on GitLab: https://salsa.debian.org/med-team/dssp/-/commit/7b81fa34b3c68436e2cfa9852213834d90049096
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20220213/e5cbd390/attachment-0001.htm>


More information about the debian-med-commit mailing list