From 77ed341f9fa24185a1540b2bd4f32e45c9f7c4cb Mon Sep 17 00:00:00 2001
From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com>
Date: Wed, 16 Aug 2023 01:54:30 +0200
Subject: [PATCH] [pmdk] msbuild (#33161)
* pmdk msbuild
* v db
* devendor getopt from pmdk
* v db
---
ports/pmdk/portfile.cmake | 49 +++----
ports/pmdk/remove_getopt.patch | 233 +++++++++++++++++++++++++++++++++
ports/pmdk/vcpkg.json | 11 +-
versions/baseline.json | 2 +-
versions/p-/pmdk.json | 5 +
5 files changed, 267 insertions(+), 33 deletions(-)
create mode 100644 ports/pmdk/remove_getopt.patch
diff --git a/ports/pmdk/portfile.cmake b/ports/pmdk/portfile.cmake
index 6d60acbf99e1e5..9701c4cb79a686 100644
--- a/ports/pmdk/portfile.cmake
+++ b/ports/pmdk/portfile.cmake
@@ -1,54 +1,41 @@
vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY ONLY_DYNAMIC_CRT)
-set(PMDK_VERSION "1.12.0")
-
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO pmem/pmdk
REF 73d8f958e855904dc0776a7d77d0f0d3698a65b1 #v1.12.0
SHA512 ffe77796c9028478985ca98e4162a671e3e7f580faa46b31d0dcf8c5e97aa6478044efdf7ad238285044f18f754a20a4e2a1b5992c7b9cffa709884eb62007ab
HEAD_REF master
+ PATCHES "remove_getopt.patch"
)
+file(REMOVE "${SOURCE_PATH}/src/windows/getopt" "${SOURCE_PATH}/src/test/getopt")
+
# Build only the selected projects
-vcpkg_build_msbuild(
- PROJECT_PATH ${SOURCE_PATH}/src/PMDK.sln
+vcpkg_msbuild_install(
+ SOURCE_PATH "${SOURCE_PATH}"
+ PROJECT_SUBPATH src/PMDK.sln
TARGET "Solution Items\\libpmem,Solution Items\\libpmemlog,Solution Items\\libpmemblk,Solution Items\\libpmemobj,Solution Items\\libpmempool,Solution Items\\Tools\\pmempool"
- OPTIONS /p:SRCVERSION=${PMDK_VERSION}
+ OPTIONS /p:SRCVERSION=${VERSION}
+ ADDITIONAL_LIBS getopt.lib
)
-set(DEBUG_ARTIFACTS_PATH ${SOURCE_PATH}/src/x64/Debug)
-set(RELEASE_ARTIFACTS_PATH ${SOURCE_PATH}/src/x64/Release)
+set(DEBUG_ARTIFACTS_PATH "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/src/x64/Debug")
+set(RELEASE_ARTIFACTS_PATH "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/src/x64/Release")
# Install header files
-file(GLOB HEADER_FILES ${SOURCE_PATH}/src/include/*.h)
-file(INSTALL ${HEADER_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/include)
-file(GLOB HEADER_FILES ${SOURCE_PATH}/src/include/libpmemobj/*.h)
-file(INSTALL ${HEADER_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/include/libpmemobj)
+file(GLOB HEADER_FILES "${SOURCE_PATH}/src/include/*.h")
+file(INSTALL ${HEADER_FILES} DESTINATION "${CURRENT_PACKAGES_DIR}/include")
+file(GLOB HEADER_FILES "${SOURCE_PATH}/src/include/libpmemobj/*.h")
+file(INSTALL ${HEADER_FILES} DESTINATION "${CURRENT_PACKAGES_DIR}/include/libpmemobj")
# Remove unneeded header files
-file(REMOVE ${CURRENT_PACKAGES_DIR}/include/libvmmalloc.h)
-file(REMOVE ${CURRENT_PACKAGES_DIR}/include/librpmem.h)
-
-# Install libraries (debug)
-file(GLOB LIB_DEBUG_FILES ${DEBUG_ARTIFACTS_PATH}/libs/libpmem*.lib)
-file(INSTALL ${LIB_DEBUG_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
-file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/lib/libpmemcommon.lib)
-file(GLOB LIB_DEBUG_FILES ${DEBUG_ARTIFACTS_PATH}/libs/libpmem*.dll)
-file(INSTALL ${LIB_DEBUG_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
-
-# Install libraries (release)
-file(GLOB LIB_RELEASE_FILES ${RELEASE_ARTIFACTS_PATH}/libs/libpmem*.lib)
-file(INSTALL ${LIB_RELEASE_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
-file(REMOVE ${CURRENT_PACKAGES_DIR}/lib/libpmemcommon.lib)
-file(GLOB LIB_RELEASE_FILES ${RELEASE_ARTIFACTS_PATH}/libs/libpmem*.dll)
-file(INSTALL ${LIB_RELEASE_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
+file(REMOVE "${CURRENT_PACKAGES_DIR}/include/libvmmalloc.h")
+file(REMOVE "${CURRENT_PACKAGES_DIR}/include/librpmem.h")
# Install tools (release only)
-file(INSTALL ${RELEASE_ARTIFACTS_PATH}/libs/pmempool.exe DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
+file(INSTALL "${RELEASE_ARTIFACTS_PATH}/libs/pmempool.exe" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}")
vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/pmdk)
-vcpkg_copy_pdbs()
-
-file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/ports/pmdk/remove_getopt.patch b/ports/pmdk/remove_getopt.patch
new file mode 100644
index 00000000000000..45912a87478de8
--- /dev/null
+++ b/ports/pmdk/remove_getopt.patch
@@ -0,0 +1,233 @@
+diff --git a/src/PMDK.sln b/src/PMDK.sln
+index d8220c159..1959a7a59 100644
+--- a/src/PMDK.sln
++++ b/src/PMDK.sln
+@@ -239,8 +239,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "obj_alloc", "test\obj_alloc
+ EndProject
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pmempool_info", "test\pmempool_info\pmempool_info.vcxproj", "{42CCEF95-5ADD-460C-967E-DD5B2C744943}"
+ EndProject
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "getopt", "test\getopt\getopt.vcxproj", "{433F7840-C597-4950-84C9-E4FF7DF6A298}"
+-EndProject
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sys", "sys", "{45027FC5-4A32-47BD-AC5B-66CC7616B1D2}"
+ ProjectSection(SolutionItems) = preProject
+ windows\include\sys\file.h = windows\include\sys\file.h
+@@ -538,8 +538,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "obj_tx_flow", "test\obj_tx_
+ EndProject
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "srcversion", "windows\srcversion\srcversion.vcxproj", "{901F04DB-E1A5-4A41-8B81-9D31C19ACD59}"
+ EndProject
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "getopt", "windows\getopt\getopt.vcxproj", "{9186EAC4-2F34-4F17-B940-6585D7869BCD}"
+-EndProject
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "libpmemlog", "libpmemlog", "{91C30620-70CA-46C7-AC71-71F3C602690E}"
+ EndProject
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "obj_realloc", "test\obj_realloc\obj_realloc.vcxproj", "{91E19AEB-7B75-43E0-B8B4-D2BB60D839EA}"
+@@ -2183,7 +2181,6 @@ Global
+ {3ED56E55-84A6-422C-A8D4-A8439FB8F245} = {BD6CC700-B36B-435B-BAF9-FC5AFCD766C9}
+ {42B97D47-F800-4100-BFA2-B3AC357E8B6B} = {63C9B3F8-437D-4AD9-B32D-D04AE38C35B6}
+ {42CCEF95-5ADD-460C-967E-DD5B2C744943} = {59AB6976-D16B-48D0-8D16-94360D3FE51D}
+- {433F7840-C597-4950-84C9-E4FF7DF6A298} = {B870D8A6-12CD-4DD0-B843-833695C2310A}
+ {45027FC5-4A32-47BD-AC5B-66CC7616B1D2} = {9A8482A7-BF0C-423D-8266-189456ED41F6}
+ {46629F21-089C-4205-B2F8-E01748ECE517} = {A14A4556-9092-430D-B9CA-B2B1223D56CB}
+ {46B82069-10BE-432A-8D93-F4D995148555} = {4C291EEB-3874-4724-9CC2-1335D13FF0EE}
+@@ -2284,7 +2281,6 @@ Global
+ {8D75FA1A-EC74-4F88-8AC1-CE3F98E4D828} = {63C9B3F8-437D-4AD9-B32D-D04AE38C35B6}
+ {8E374371-30E1-4623-8755-2A2F3742170B} = {63C9B3F8-437D-4AD9-B32D-D04AE38C35B6}
+ {901F04DB-E1A5-4A41-8B81-9D31C19ACD59} = {95FAF291-03D1-42FC-9C10-424D551D475D}
+- {9186EAC4-2F34-4F17-B940-6585D7869BCD} = {95FAF291-03D1-42FC-9C10-424D551D475D}
+ {91C30620-70CA-46C7-AC71-71F3C602690E} = {0CC6D525-806E-433F-AB4A-6CFD546418B1}
+ {91E19AEB-7B75-43E0-B8B4-D2BB60D839EA} = {63C9B3F8-437D-4AD9-B32D-D04AE38C35B6}
+ {9233FC80-B51C-4A89-AF58-5AE86C068F6A} = {A14A4556-9092-430D-B9CA-B2B1223D56CB}
+diff --git a/src/benchmarks/pmembench.vcxproj b/src/benchmarks/pmembench.vcxproj
+index ac9b3569e..906a50269 100644
+--- a/src/benchmarks/pmembench.vcxproj
++++ b/src/benchmarks/pmembench.vcxproj
+@@ -29,9 +29,6 @@
+
+ {cf9a0883-6334-44c7-ac29-349468c78e27}
+
+-
+- {9186eac4-2f34-4f17-b940-6585d7869bcd}
+-
+
+
+
+@@ -205,10 +202,10 @@
+
+
+
+- $(SolutionDir)\core;$(SolutionDir)\examples\libpmemobj\hashmap;$(SolutionDir)\examples\libpmemobj\map;$(SolutionDir)\examples\libpmemobj\tree_map;$(SolutionDir)\common;$(SolutionDir)\test\unittest;$(SolutionDir)\windows\include;$(SolutionDir)\libpmemobj\;$(SolutionDir)\include;$(SolutionDir)\libpmemblk;$(SolutionDir)\windows\getopt;$(IncludePath)
++ $(SolutionDir)\core;$(SolutionDir)\examples\libpmemobj\hashmap;$(SolutionDir)\examples\libpmemobj\map;$(SolutionDir)\examples\libpmemobj\tree_map;$(SolutionDir)\common;$(SolutionDir)\test\unittest;$(SolutionDir)\windows\include;$(SolutionDir)\libpmemobj\;$(SolutionDir)\include;$(SolutionDir)\libpmemblk;$(IncludePath)
+
+
+- $(SolutionDir)\core;$(SolutionDir)\examples\libpmemobj\hashmap;$(SolutionDir)\examples\libpmemobj\map;$(SolutionDir)\examples\libpmemobj\tree_map;$(SolutionDir)\common;$(SolutionDir)\test\unittest;$(SolutionDir)\windows\include;$(SolutionDir)\libpmemobj\;$(SolutionDir)\include;$(SolutionDir)\libpmemblk;$(SolutionDir)\windows\getopt;$(IncludePath)
++ $(SolutionDir)\core;$(SolutionDir)\examples\libpmemobj\hashmap;$(SolutionDir)\examples\libpmemobj\map;$(SolutionDir)\examples\libpmemobj\tree_map;$(SolutionDir)\common;$(SolutionDir)\test\unittest;$(SolutionDir)\windows\include;$(SolutionDir)\libpmemobj\;$(SolutionDir)\include;$(SolutionDir)\libpmemblk;$(IncludePath)
+
+
+
+diff --git a/src/test/bttdevice/bttdevice.vcxproj b/src/test/bttdevice/bttdevice.vcxproj
+index bfcc74064..05cd8c15d 100644
+--- a/src/test/bttdevice/bttdevice.vcxproj
++++ b/src/test/bttdevice/bttdevice.vcxproj
+@@ -72,9 +72,6 @@
+
+ {9e9e3d25-2139-4a5d-9200-18148ddead45}
+
+-
+- {9186eac4-2f34-4f17-b940-6585d7869bcd}
+-
+
+ {ce3f2dfb-8470-4802-ad37-21caf6cb2681}
+
+diff --git a/src/test/libpmempool_api_win/libpmempool_test_win.vcxproj b/src/test/libpmempool_api_win/libpmempool_test_win.vcxproj
+index 73cb7c0b2..ba87422ea 100644
+--- a/src/test/libpmempool_api_win/libpmempool_test_win.vcxproj
++++ b/src/test/libpmempool_api_win/libpmempool_test_win.vcxproj
+@@ -64,9 +64,6 @@
+
+ {9e9e3d25-2139-4a5d-9200-18148ddead45}
+
+-
+- {9186eac4-2f34-4f17-b940-6585d7869bcd}
+-
+
+ {ce3f2dfb-8470-4802-ad37-21caf6cb2681}
+
+diff --git a/src/test/tools/cmpmap/cmpmap.vcxproj b/src/test/tools/cmpmap/cmpmap.vcxproj
+index 5a502106c..fc0b07bb0 100644
+--- a/src/test/tools/cmpmap/cmpmap.vcxproj
++++ b/src/test/tools/cmpmap/cmpmap.vcxproj
+@@ -17,9 +17,6 @@
+
+ {9e9e3d25-2139-4a5d-9200-18148ddead45}
+
+-
+- {9186eac4-2f34-4f17-b940-6585d7869bcd}
+-
+
+
+
+diff --git a/src/test/tools/ddmap/ddmap.vcxproj b/src/test/tools/ddmap/ddmap.vcxproj
+index 0824e2bb2..d80e82da3 100644
+--- a/src/test/tools/ddmap/ddmap.vcxproj
++++ b/src/test/tools/ddmap/ddmap.vcxproj
+@@ -17,9 +17,6 @@
+
+ {9e9e3d25-2139-4a5d-9200-18148ddead45}
+
+-
+- {9186eac4-2f34-4f17-b940-6585d7869bcd}
+-
+
+
+
+diff --git a/src/test/tools/gran_detecto/gran_detecto.vcxproj b/src/test/tools/gran_detecto/gran_detecto.vcxproj
+index abbe5bfb9..316a39c20 100644
+--- a/src/test/tools/gran_detecto/gran_detecto.vcxproj
++++ b/src/test/tools/gran_detecto/gran_detecto.vcxproj
+@@ -90,9 +90,6 @@
+
+ {f596c36c-5c96-4f08-b420-8908af500954}
+
+-
+- {9186eac4-2f34-4f17-b940-6585d7869bcd}
+-
+
+
+
+diff --git a/src/test/tools/pmemalloc/pmemalloc.vcxproj b/src/test/tools/pmemalloc/pmemalloc.vcxproj
+index d84b87416..c1f910710 100644
+--- a/src/test/tools/pmemalloc/pmemalloc.vcxproj
++++ b/src/test/tools/pmemalloc/pmemalloc.vcxproj
+@@ -26,9 +26,6 @@
+
+ {9e9e3d25-2139-4a5d-9200-18148ddead45}
+
+-
+- {9186eac4-2f34-4f17-b940-6585d7869bcd}
+-
+
+
+
+diff --git a/src/test/tools/pmemdetect/pmemdetect.vcxproj b/src/test/tools/pmemdetect/pmemdetect.vcxproj
+index 1c4cfd70c..10f472eb4 100644
+--- a/src/test/tools/pmemdetect/pmemdetect.vcxproj
++++ b/src/test/tools/pmemdetect/pmemdetect.vcxproj
+@@ -93,9 +93,6 @@
+
+ {9e9e3d25-2139-4a5d-9200-18148ddead45}
+
+-
+- {9186eac4-2f34-4f17-b940-6585d7869bcd}
+-
+
+ {ce3f2dfb-8470-4802-ad37-21caf6cb2681}
+
+diff --git a/src/test/tools/pmemobjcli/pmemobjcli.vcxproj b/src/test/tools/pmemobjcli/pmemobjcli.vcxproj
+index 092ad91f7..0c13bb915 100644
+--- a/src/test/tools/pmemobjcli/pmemobjcli.vcxproj
++++ b/src/test/tools/pmemobjcli/pmemobjcli.vcxproj
+@@ -20,9 +20,6 @@
+
+ {9e9e3d25-2139-4a5d-9200-18148ddead45}
+
+-
+- {9186eac4-2f34-4f17-b940-6585d7869bcd}
+-
+
+
+
+diff --git a/src/test/tools/pmemspoil/pmemspoil.vcxproj b/src/test/tools/pmemspoil/pmemspoil.vcxproj
+index 0d7718e01..5eba7d1f7 100644
+--- a/src/test/tools/pmemspoil/pmemspoil.vcxproj
++++ b/src/test/tools/pmemspoil/pmemspoil.vcxproj
+@@ -32,9 +32,6 @@
+
+ {9e9e3d25-2139-4a5d-9200-18148ddead45}
+
+-
+- {9186eac4-2f34-4f17-b940-6585d7869bcd}
+-
+
+
+
+diff --git a/src/test/tools/pmemwrite/pmemwrite.vcxproj b/src/test/tools/pmemwrite/pmemwrite.vcxproj
+index f4e4a229f..efc80865f 100644
+--- a/src/test/tools/pmemwrite/pmemwrite.vcxproj
++++ b/src/test/tools/pmemwrite/pmemwrite.vcxproj
+@@ -26,9 +26,6 @@
+
+ {9e9e3d25-2139-4a5d-9200-18148ddead45}
+
+-
+- {9186eac4-2f34-4f17-b940-6585d7869bcd}
+-
+
+
+
+diff --git a/src/test/tools/sparsefile/sparsefile.vcxproj b/src/test/tools/sparsefile/sparsefile.vcxproj
+index 76710038b..481bb9332 100644
+--- a/src/test/tools/sparsefile/sparsefile.vcxproj
++++ b/src/test/tools/sparsefile/sparsefile.vcxproj
+@@ -21,9 +21,6 @@
+
+ {492baa3d-0d5d-478e-9765-500463ae69aa}
+
+-
+- {9186eac4-2f34-4f17-b940-6585d7869bcd}
+-
+
+
+ {3EC30D6A-BDA4-4971-879A-8814204EAE31}
+diff --git a/src/tools/pmempool/pmempool.vcxproj b/src/tools/pmempool/pmempool.vcxproj
+index 120fe35b6..65709ed92 100644
+--- a/src/tools/pmempool/pmempool.vcxproj
++++ b/src/tools/pmempool/pmempool.vcxproj
+@@ -77,9 +77,6 @@
+
+ {9e9e3d25-2139-4a5d-9200-18148ddead45}
+
+-
+- {9186eac4-2f34-4f17-b940-6585d7869bcd}
+-
+
+
+
diff --git a/ports/pmdk/vcpkg.json b/ports/pmdk/vcpkg.json
index ae45ff2d1fea12..be90b7e4b05fe7 100644
--- a/ports/pmdk/vcpkg.json
+++ b/ports/pmdk/vcpkg.json
@@ -1,8 +1,17 @@
{
"name": "pmdk",
"version": "1.12.0",
+ "port-version": 1,
"description": "Persistent Memory Development Kit",
"homepage": "https://github.com/pmem/pmdk",
"license": "BSD-3-Clause",
- "supports": "!(arm | x86)"
+ "supports": "!(arm | x86)",
+ "dependencies": [
+ "getopt",
+ {
+ "name": "vcpkg-msbuild",
+ "host": true,
+ "platform": "windows"
+ }
+ ]
}
diff --git a/versions/baseline.json b/versions/baseline.json
index 5e6873552220c0..a79b946fca4f2a 100644
--- a/versions/baseline.json
+++ b/versions/baseline.json
@@ -6422,7 +6422,7 @@
},
"pmdk": {
"baseline": "1.12.0",
- "port-version": 0
+ "port-version": 1
},
"pngpp": {
"baseline": "0.2.10",
diff --git a/versions/p-/pmdk.json b/versions/p-/pmdk.json
index 89f2fd7103d4a6..6146f7169b3449 100644
--- a/versions/p-/pmdk.json
+++ b/versions/p-/pmdk.json
@@ -1,5 +1,10 @@
{
"versions": [
+ {
+ "git-tree": "5dc7f0e5a4d6348ac49617010105730775580f78",
+ "version": "1.12.0",
+ "port-version": 1
+ },
{
"git-tree": "a5b1d48503eab5f709ccc7cb62630817275f93e5",
"version": "1.12.0",