[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