Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[shiftmedia-libgcrypt] new port (Windows fork of Libgcrypt) #26364

Merged
merged 31 commits into from
Aug 19, 2022
Merged
Show file tree
Hide file tree
Changes from 23 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
bc53711
[shiftmedia-libgcrypt] new port
wrobelda Aug 16, 2022
3a95a46
[shiftmedia-libgcrypt] add license
wrobelda Aug 16, 2022
1cd86d5
[shiftmedia-libgcrypt] fix formatting
wrobelda Aug 16, 2022
dd1c684
[shiftmedia-libgcrypt] add version
wrobelda Aug 16, 2022
200b401
[shiftmedia-libgcrypt] update to 1.10.1, also support UWP
wrobelda Aug 16, 2022
353a7bb
[shiftmedia-libgcrypt] update version
wrobelda Aug 16, 2022
cfb6e17
[ci.baseline.txt] restore gpg-error running on CI
wrobelda Aug 16, 2022
feffc18
[libgpg-error] add TargetPlatformMinVersion
wrobelda Aug 16, 2022
cbded1a
[libgpg-error] update versions
wrobelda Aug 16, 2022
0a57df4
[shiftmedia-libgcrypt] fix supported platform
wrobelda Aug 16, 2022
069300d
[shiftmedia-libgcrypt] fix missing Version in .pc
wrobelda Aug 16, 2022
edc8ddf
[shiftmedia-libgcrypt] update version
wrobelda Aug 16, 2022
ef97828
[shiftmedia-libgcrypt] remove leftover warning
wrobelda Aug 16, 2022
6e4c59f
[shiftmedia-libgcrypt] update version
wrobelda Aug 16, 2022
6084eec
Update shiftmedia-libgcrypt.json
Cheney-W Aug 17, 2022
3aa9557
Update libgpg-error.json
Cheney-W Aug 17, 2022
2e440ad
[shiftmedia-libgcrypt] install includes instead of moving them around…
wrobelda Aug 17, 2022
7440e82
[shiftmedia-libgcrypt] update version
wrobelda Aug 17, 2022
ad5fb08
[shiftmedia-libgcrypt] wrap paths in quotes
wrobelda Aug 18, 2022
4c1dca8
[shiftmedia-libgcrypt] support for Windows implies UWP
wrobelda Aug 18, 2022
12b6841
[shiftmedia-libgcrypt] update version
wrobelda Aug 18, 2022
1d2cb57
[shiftmedia-libgcrypt] use vcpkg_replace_string() instead of patches
wrobelda Aug 18, 2022
c7b98b5
[shiftmedia-libgcrypt] update version
wrobelda Aug 18, 2022
8a26453
[shiftmedia-libgcrypt] gpg-error already inupstream .pc as Requires.p…
wrobelda Aug 18, 2022
1375c18
[shiftmedia-libgcrypt] -L${libdir} already in upstream .pc
wrobelda Aug 18, 2022
1e3ef57
[shiftmedia-libgcrypt] update version
wrobelda Aug 18, 2022
37a4643
[shiftmedia-libgcrypt] pass OutDir as property, no need to patch
wrobelda Aug 18, 2022
bf8d8bf
[shiftmedia-libgcrypt] update version
wrobelda Aug 18, 2022
7f82cf0
[shiftmedia-libgcrypt] msbuild adds a subfolder to OutDir on UWP
wrobelda Aug 18, 2022
146c50c
[shiftmedia-libgcrypt] fix aclocal installation path
wrobelda Aug 18, 2022
1aea01b
[shiftmedia-libgcrypt] update version
wrobelda Aug 18, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions ports/libgpg-error/TargetPlatformMinVersion.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
diff --git a/SMP/libgpg-error_winrt.vcxproj b/SMP/llibgpg-error_winrt.vcxproj
index e1acf679..f9c302be 100644
--- a/SMP/libgpg-error_winrt.vcxproj
+++ b/SMP/libgpg-error_winrt.vcxproj
@@ -3,6 +3,7 @@
<PropertyGroup Label="Globals">
<ProjectGuid>{AA4A762D-A8D7-4F68-9B79-FBE63C6BE105}</ProjectGuid>
<RootNamespace>gpg-error</RootNamespace>
+ <TargetPlatformMinVersion>10.0.17200.0</TargetPlatformMinVersion>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why this specific value?

Copy link
Contributor Author

@wrobelda wrobelda Aug 17, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is what I saw in the CI logs used as a minimum required when comparing against – then empty – TargetPlatformMinVersion value.
That having said, I did not test anything less than that, to be frank.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, after doing a little digging, it seems as though this change would be fine. I believe TargetPlatformMinVersion is used to determine the fallback framework and the package format. I believe that setting TargetPlatformMinVersion to 10.0.17200.0 would result in the fallback framework being .NET Framework 4.6.1 and the packaging format being msix, none of which matters for our purposes.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks a lot for checking that.

</PropertyGroup>
<ImportGroup Label="PropertySheets">
<Import Project="smp_winrt.props" />
1 change: 1 addition & 0 deletions ports/libgpg-error/portfile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ if(VCPKG_TARGET_IS_WINDOWS)
PATCHES
outdir.patch
runtime.patch
TargetPlatformMinVersion.patch
)

if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
Expand Down
2 changes: 1 addition & 1 deletion ports/libgpg-error/vcpkg.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "libgpg-error",
"version": "1.42",
"port-version": 3,
"port-version": 4,
"description": "A common dependency of all GnuPG components",
"homepage": "https://gnupg.org/software/libgpg-error/index.html",
"supports": "!(windows & (arm | arm64))"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any chance that this may fix arm or arm64?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://github.com/ShiftMediaProject/libgpg-error/blob/master/SMP/libgpg-error.vcxproj doesn't support arm/arm64 platforms, so that can't work ("The specified solution configuration "ReleaseDLLWinRT|arm" is invalid").

That having said, I was close (#20447) to getting libgpg-error build natively, but didn't find time to finish it. Wanted to resume work on it, actually, but help would most likely be needed and appreciated :)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, just wanted to be sure it was considered since our CI does not validate supports expressions

Expand Down
108 changes: 108 additions & 0 deletions ports/shiftmedia-libgcrypt/portfile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
set(PACKAGE_VERSION_MAJOR 1)
set(PACKAGE_VERSION_MINOR 10)
set(PACKAGE_VERSION_PATCH 1)
set(PACKAGE_VERSION ${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}.${PACKAGE_VERSION_PATCH})

vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO ShiftMediaProject/libgcrypt
REF libgcrypt-${PACKAGE_VERSION}
SHA512 6da8225ec73c51562cd76a0c0abc19506a7378750ed2a9ea45f03df3c8d7cf500840459deb9b0a694a5602fe77ee2b0dd5b2e37376745233350b0f218dff4f1c
HEAD_REF master
)

if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
set(CONFIGURATION_RELEASE ReleaseDLL)
set(CONFIGURATION_DEBUG DebugDLL)
else()
set(CONFIGURATION_RELEASE Release)
set(CONFIGURATION_DEBUG Debug)
endif()

if(VCPKG_TARGET_IS_UWP)
string(APPEND CONFIGURATION_RELEASE WinRT)
string(APPEND CONFIGURATION_DEBUG WinRT)
endif()

if(VCPKG_CRT_LINKAGE STREQUAL "static")
set(RuntimeLibraryExt "")
else()
set(RuntimeLibraryExt "DLL")
endif()

# patch output library file path and name; inject RuntimeLibrary property to control CRT linkage
foreach(PROPS IN ITEMS
"${SOURCE_PATH}/SMP/smp_deps.props"
"${SOURCE_PATH}/SMP/smp_winrt_deps.props")
vcpkg_replace_string(
"${PROPS}"
[=[_winrt</TargetName>]=]
[=[</TargetName>]=]
)
vcpkg_replace_string(
"${PROPS}"
[=[<TargetName>lib$(RootNamespace)]=]
[=[<TargetName>$(RootNamespace)]=]
)
vcpkg_replace_string(
"${PROPS}"
[=[<OutDir>$(ProjectDir)..\..\..\msvc\</OutDir>]=]
[=[<OutDir>$(ProjectDir)..\msvc\</OutDir>]=]
)
vcpkg_replace_string(
"${PROPS}"
[=[</TreatSpecificWarningsAsErrors>]=]
[=[</TreatSpecificWarningsAsErrors><RuntimeLibrary>$(RuntimeLibrary)</RuntimeLibrary>]=]
)
endforeach()

# patch gpg-error library file name
foreach(VCXPROJ IN ITEMS
"${SOURCE_PATH}/SMP/libgcrypt.vcxproj"
"${SOURCE_PATH}/SMP/libgcrypt_winrt.vcxproj")
vcpkg_replace_string(
"${VCXPROJ}"
"_winrt.lib"
".lib"
)
vcpkg_replace_string(
"${VCXPROJ}"
"libgpg-error"
"gpg-error"
)
endforeach()

vcpkg_install_msbuild(
USE_VCPKG_INTEGRATION
SOURCE_PATH "${SOURCE_PATH}"
PROJECT_SUBPATH SMP/libgcrypt.sln
PLATFORM ${TRIPLET_SYSTEM_ARCH}
LICENSE_SUBPATH COPYING.LIB
RELEASE_CONFIGURATION ${CONFIGURATION_RELEASE}
DEBUG_CONFIGURATION ${CONFIGURATION_DEBUG}
SKIP_CLEAN
OPTIONS_DEBUG "/p:RuntimeLibrary=MultiThreadedDebug${RuntimeLibraryExt}"
OPTIONS_RELEASE "/p:RuntimeLibrary=MultiThreaded${RuntimeLibraryExt}"
)

get_filename_component(SOURCE_PATH_SUFFIX "${SOURCE_PATH}" NAME)
file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/${SOURCE_PATH_SUFFIX}/msvc/include" DESTINATION "${CURRENT_PACKAGES_DIR}")

set(exec_prefix "\${prefix}")
set(libdir "\${prefix}/lib")
set(includedir "\${prefix}/include")
set(LIBGCRYPT_CONFIG_LIBS "-L\${libdir} -lgcrypt -lgpg-error")
configure_file("${SOURCE_PATH}/src/libgcrypt.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/libgcrypt.pc" @ONLY)

set(exec_prefix "\${prefix}")
set(libdir "\${prefix}/lib")
set(includedir "\${prefix}/../include")
set(LIBGCRYPT_CONFIG_LIBS "-L\${libdir} -lgcryptd -lgpg-errord")
configure_file("${SOURCE_PATH}/src/libgcrypt.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/libgcrypt.pc" @ONLY)

vcpkg_fixup_pkgconfig()
vcpkg_copy_pdbs()

file(INSTALL "${SOURCE_PATH}/src/libgcrypt.m4" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}/aclocal/")

file(REMOVE "${CURRENT_PACKAGES_DIR}/lib/COPYING.LIB" "${CURRENT_PACKAGES_DIR}/debug/lib/COPYING.LIB")
11 changes: 11 additions & 0 deletions ports/shiftmedia-libgcrypt/vcpkg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"name": "shiftmedia-libgcrypt",
"version": "1.10.1",
"description": "An unofficial LibGCrypt with added custom native Visual Studio project build tools. LibGCrypt",
"homepage": "https://github.com/ShiftMediaProject/libgcrypt",
"license": "LGPL-2.1-only",
"supports": "windows",
"dependencies": [
"libgpg-error"
]
}
3 changes: 1 addition & 2 deletions scripts/ci.baseline.txt
Original file line number Diff line number Diff line change
Expand Up @@ -425,9 +425,8 @@ libgit2:x64-uwp=fail
libgo:arm-uwp=fail
libgo:x64-uwp=fail
libgo:arm64-windows=fail
# the msbuild for libgpg:x64-uwp and libgpg-error:x64-uwp are broken on VS2022 due to TargetPlatformMinVersion not existing
# the msbuild for libgpg:x64-uwp is broken on VS2022 due to TargetPlatformMinVersion not existing
libgpg:x64-uwp=fail
libgpg-error:x64-uwp=fail
libgxps:x64-windows-static=fail
libgxps:x64-windows-static-md=fail
libhdfs3:x64-linux=fail
Expand Down
6 changes: 5 additions & 1 deletion versions/baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -3674,7 +3674,7 @@
},
"libgpg-error": {
"baseline": "1.42",
"port-version": 3
"port-version": 4
},
"libgpiod": {
"baseline": "1.6.3",
Expand Down Expand Up @@ -6604,6 +6604,10 @@
"baseline": "1.5.0",
"port-version": 3
},
"shiftmedia-libgcrypt": {
"baseline": "1.10.1",
"port-version": 0
},
"shiva": {
"baseline": "1.0",
"port-version": 5
Expand Down
5 changes: 5 additions & 0 deletions versions/l-/libgpg-error.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "728a8999d1083dc72eae0612669f0c34075a3f01",
"version": "1.42",
"port-version": 4
},
{
"git-tree": "1ced42ca6160e2283326366e1c1132fe50acfb97",
"version": "1.42",
Expand Down
9 changes: 9 additions & 0 deletions versions/s-/shiftmedia-libgcrypt.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"versions": [
{
"git-tree": "0d3d916db804e721cf4afebda654430ab926d42c",
"version": "1.10.1",
"port-version": 0
}
]
}