Skip to content

Commit

Permalink
patch 5.4.1 canonically
Browse files Browse the repository at this point in the history
codemeta.json
  • Loading branch information
scivision committed Nov 16, 2021
1 parent 08adc76 commit 5278e7a
Show file tree
Hide file tree
Showing 9 changed files with 137 additions and 49 deletions.
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ if(NOT is_multi_config AND NOT (CMAKE_BUILD_TYPE OR DEFINED ENV{CMAKE_BUILD_TYPE
set(CMAKE_BUILD_TYPE Release CACHE STRING "Release default")
endif()

file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/VERSION PROJECT_VERSION
REGEX "^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)" LIMIT_INPUT 16 LENGTH_MAXIMUM 16 LIMIT_COUNT 1)
file(READ ${CMAKE_CURRENT_LIST_DIR}/codemeta.json _j)
string(JSON PROJECT_VERSION GET ${_j} version)

project(MUMPS
LANGUAGES C Fortran
Expand Down
1 change: 0 additions & 1 deletion VERSION

This file was deleted.

66 changes: 66 additions & 0 deletions cmake/PatchFile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# use GNU Patch from any platform
#
# Functions
# ---------
#
# patch_file(in_file patch_file)
# Apply patch_file to in_file via GNU Patch.

if(WIN32)
find_package(Msys)
if(MSYS_INSTALL_PATH)
find_program(PATCH
NAMES patch
HINTS ${MSYS_INSTALL_PATH}
PATH_SUFFIXES bin usr/bin
)
endif()

if(NOT PATCH)
find_program(WSL NAMES wsl)
endif()
else()
find_program(PATCH NAMES patch)
endif()


function(patch_file in_file patch_file out_file)

if(PATCH)
execute_process(COMMAND ${PATCH} ${in_file} --input=${patch_file} --output=${out_file}
TIMEOUT 15
COMMAND_ERROR_IS_FATAL ANY
)
elseif(WSL)
execute_process(COMMAND ${WSL} wslpath ${in_file}
TIMEOUT 5
OUTPUT_VARIABLE in_wsl
COMMAND_ERROR_IS_FATAL ANY
OUTPUT_STRIP_TRAILING_WHITESPACE
)

execute_process(COMMAND ${WSL} wslpath ${patch_file}
TIMEOUT 5
OUTPUT_VARIABLE patch_wsl
COMMAND_ERROR_IS_FATAL ANY
OUTPUT_STRIP_TRAILING_WHITESPACE
)

execute_process(COMMAND ${WSL} wslpath ${out_file}
TIMEOUT 5
OUTPUT_VARIABLE out_wsl
COMMAND_ERROR_IS_FATAL ANY
OUTPUT_STRIP_TRAILING_WHITESPACE
)

execute_process(COMMAND ${WSL} patch ${in_wsl} --input=${patch_wsl} --output=${out_wsl}
TIMEOUT 15
COMMAND_ERROR_IS_FATAL ANY
)
else()
message(FATAL_ERROR "Could not find patch program")
endif()
endfunction(patch_file)


patch_file(${in_file} ${patch_file} ${out_file})
4 changes: 0 additions & 4 deletions cmake/get_mumps.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,6 @@ if(NOT mumps_POPULATED)
FetchContent_Populate(mumps)
endif()

if(MUMPS_UPSTREAM_VERSION VERSION_EQUAL 5.4.0 OR MUMPS_UPSTREAM_VERSION VERSION_EQUAL 5.4.1)
include(${CMAKE_CURRENT_LIST_DIR}/mumps_patch.cmake)
endif()

# --- dynamic shared library
set(CMAKE_INSTALL_NAME_DIR ${CMAKE_INSTALL_PREFIX}/lib)
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib)
9 changes: 9 additions & 0 deletions cmake/mumps_io.c.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
@@ -13,7 +13,7 @@
* https://cecill.info/licences/Licence_CeCILL-C_V1-en.html)
*
*/
-#include "mumps_io.h"
+#include "mumps_io_patched.h"
#include "mumps_io_basic.h"
#include "mumps_io_err.h"
#include "mumps_c_types.h"
File renamed without changes.
40 changes: 0 additions & 40 deletions cmake/mumps_patch.cmake

This file was deleted.

23 changes: 23 additions & 0 deletions codemeta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
"@type": "SoftwareSourceCode",
"license": "https://spdx.org/licenses/CECILL-C.html",
"codeRepository": "https://github.com/scivision/mumps",
"contIntegration": "https://github.com/scivision/mumps/actions",
"dateModified": "2021-11-16",
"downloadUrl": "https://github.com/scivision/mumps/releases",
"issueTracker": "https://github.com/scivision/mumps/issues",
"name": "MUMPS",
"version": "5.4.1.8",
"identifier": "10.1145/3242094",
"description": "MUltifrontal Massively Parallel sparse direct Solver",
"applicationCategory": "linear algebra",
"developmentStatus": "active",
"keywords": [
"sparse direct solver"
],
"programmingLanguage": [
"Fortran",
"C"
]
}
39 changes: 37 additions & 2 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ $<$<VERSION_GREATER_EQUAL:${MUMPS_UPSTREAM_VERSION},4.9>:mumps_size.c>
"$<$<VERSION_GREATER_EQUAL:${MUMPS_UPSTREAM_VERSION},5.2>:mumps_config_file_C.c;mumps_thread_affinity.c;sol_common.F>"
$<$<VERSION_GREATER_EQUAL:${MUMPS_UPSTREAM_VERSION},5.3>:ana_blk.F>
$<$<VERSION_GREATER_EQUAL:${MUMPS_UPSTREAM_VERSION},5.4>:mumps_register_thread.c>
mumps_common.c mumps_io.c mumps_io_basic.c mumps_io_thread.c mumps_io_err.c
mumps_common.c mumps_io_basic.c mumps_io_thread.c mumps_io_err.c # mumps_io.c
"$<$<AND:$<BOOL:${scotch}>,$<VERSION_GREATER_EQUAL:${MUMPS_UPSTREAM_VERSION},5.1>>:mumps_scotch.c;mumps_scotch64.c;mumps_scotch_int.c;mumps_metis.c;mumps_metis64.c;mumps_metis_int.c>"
)

Expand All @@ -43,9 +43,10 @@ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include)
add_library(mumps_common ${COMM_SRC} ${COMM_OTHER_SRC})
target_link_libraries(mumps_common PRIVATE ${ORDERING_LIBS} ${NUMERIC_LIBS})
target_include_directories(mumps_common PUBLIC
$<BUILD_INTERFACE:${mumps_SOURCE_DIR}/include>
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR};${mumps_SOURCE_DIR}/include>"
$<INSTALL_INTERFACE:include>
)

target_compile_definitions(mumps_common PRIVATE ${ORDERING_FLAGS})
# if(WIN32)
# target_compile_definitions(mumps_common PRIVATE MUMPS_WIN32)
Expand Down Expand Up @@ -167,3 +168,37 @@ install(TARGETS MUMPS EXPORT ${PROJECT_NAME}-targets)
# this must NOT be an ALIAS or linking in other packages breaks.
add_library(MUMPS::MUMPS INTERFACE IMPORTED GLOBAL)
target_link_libraries(MUMPS::MUMPS INTERFACE MUMPS)


# --- PATCH 5.4.1
if(MUMPS_UPSTREAM_VERSION VERSION_EQUAL 5.4.0 OR MUMPS_UPSTREAM_VERSION VERSION_EQUAL 5.4.1)
file(MAKE_DIRECTORY ${mumps_BINARY_DIR}/include)

add_custom_command(
OUTPUT ${mumps_BINARY_DIR}/include/mumps_io_patched.h
COMMAND ${CMAKE_COMMAND}
-Din_file:FILEPATH=${mumps_SOURCE_DIR}/src/mumps_io.h
-Dpatch_file:FILEPATH=${PROJECT_SOURCE_DIR}/cmake/mumps_io.h.patch
-Dout_file:FILEPATH=${mumps_BINARY_DIR}/include/mumps_io_patched.h
-P ${PROJECT_SOURCE_DIR}/cmake/PatchFile.cmake
DEPENDS ${mumps_SOURCE_DIR}/src/mumps_io.h
)
add_custom_command(
OUTPUT ${mumps_BINARY_DIR}/mumps_io.c
COMMAND ${CMAKE_COMMAND}
-Din_file:FILEPATH=${mumps_SOURCE_DIR}/src/mumps_io.c
-Dpatch_file:FILEPATH=${PROJECT_SOURCE_DIR}/cmake/mumps_io.c.patch
-Dout_file:FILEPATH=${mumps_BINARY_DIR}/mumps_io.c
-P ${PROJECT_SOURCE_DIR}/cmake/PatchFile.cmake
DEPENDS ${mumps_SOURCE_DIR}/src/mumps_io.c
)
else()
configure_file(${mumps_SOURCE_DIR}/src/mumps_io.h ${mumps_BINARY_DIR}/include/mumps_io_patched.h COPYONLY)
configure_file(${mumps_SOURCE_DIR}/src/mumps_io.c ${mumps_BINARY_DIR}/mumps_io.c COPYONLY)
endif()
target_sources(mumps_common PRIVATE ${mumps_BINARY_DIR}/mumps_io.c ${mumps_BINARY_DIR}/include/mumps_io_patched.h)
target_include_directories(mumps_common BEFORE PUBLIC
$<BUILD_INTERFACE:${mumps_BINARY_DIR}/include>
$<INSTALL_INTERFACE:include>
)
# --- END PATCH 5.4.1

0 comments on commit 5278e7a

Please sign in to comment.