Skip to content

Commit 8dedd74

Browse files
authored
Windows on ARM: can now handle remote files.
2 parents 60013e2 + 99c8e5b commit 8dedd74

File tree

9 files changed

+42
-53
lines changed

9 files changed

+42
-53
lines changed

src/3rdparty/OpenSSL/CMakeLists.txt

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,42 +26,42 @@ if(LIBOPENCOR_PREBUILT_OPENSSL)
2626
if(INTEL_MODE)
2727
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
2828
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
29-
14cfbd7462e67547681ae2aa541c43942b550f40)
29+
ac4440ae3dba3415322fc833bef87b8b4d1b082b)
3030
else()
3131
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
3232
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
33-
58a58fbb31ea4c3df0988081e04142d2b7e94116)
33+
cd571c829ce744dbfc82bb1998f4d566b289cf93)
3434
endif()
3535
else()
3636
if(INTEL_MODE)
3737
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
3838
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
39-
3dc66349cd5e9d0e98a375b646644196c646effb)
39+
ed9489d5ed226ed79ac2d1042a4a22bcdc899a8c)
4040
else()
4141
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
4242
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
43-
4fe185f053abc7aa4eceb9fe5bde1c292aee7f4c)
43+
dec6518c275c9f72aeeea068328ac86f0b87fb82)
4444
endif()
4545
endif()
4646
elseif(APPLE)
4747
if(INTEL_MODE)
4848
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
4949
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
50-
dc50c2a300b6b72d63559af6994f46d7897cb8ad)
50+
67f37a19f38abf06220619074ee880ca63b4a804)
5151
else()
5252
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
5353
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
54-
57506aeacc82ef50f2acf4723da1fecc3e6e9b3f)
54+
8c5d0afbbd2dfe2120502b728e8e5e9ff8f69ecc)
5555
endif()
5656
else()
5757
if(INTEL_MODE)
5858
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
5959
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
60-
8b85efd5977077fafa194ae29fd6d9c6ca15c9b5)
60+
934a9c39cd923b2466f83066952b17295b8dadf5)
6161
else()
6262
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
6363
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
64-
b4b0b49976ca19f04310fbdee5474daf928833a1)
64+
cc6a2de4b58b0b717e0684534c17ba5c90e6e7ab)
6565
endif()
6666
endif()
6767
else()
@@ -105,13 +105,29 @@ else()
105105
list(APPEND CONFIG_OPTIONS "-Wa,--noexecstack")
106106
endif()
107107

108+
if(WIN32 AND NOT INTEL_MODE)
109+
#---GRY--- THE BELOW SHOULD BE REMOVED ONCE THE OpenSSL ISSUE ON WoA HAS BEEN FIXED.
110+
111+
# There is currently an issue with building OpenSSL on Windows on ARM, which results in libcurl segfaulting
112+
# whenever we try to use it. A temporary fix is to build OpenSSL without optiomisation. We can do this by
113+
# setting the CFLAGS environment variable. By default, the flags passed to the C compiler are
114+
# "/W3 /wd4090 /nologo /O2", so here we set CFLAGS to "/W3 /wd4090 /nologo". See
115+
# https://github.com/openssl/openssl/issues/26239 and
116+
# https://developercommunity.visualstudio.com/t/Openssl-crashes-on-arm64-when-built-with/10896571 for more
117+
# details.
118+
119+
string(REPLACE " " "\\ " ESCAPED_CMAKE_COMMAND ${CMAKE_COMMAND})
120+
string(REPLACE " " "\\ " ESCAPED_CFLAGS "/W3 /wd4090 /nologo")
121+
122+
set(PRE_CONFIGURE_COMMAND ${ESCAPED_CMAKE_COMMAND} -E env CFLAGS=${ESCAPED_CFLAGS})
123+
endif()
124+
108125
build_package(${PACKAGE_NAME}
109126
URL
110127
https://github.com/opencor/${PACKAGE_REPOSITORY}/archive/refs/tags/${RELEASE_TAG}.tar.gz
111128
DOWNLOAD_NO_PROGRESS ON
112129
CONFIGURE_COMMAND
113-
${PERL_EXECUTABLE} <SOURCE_DIR>/Configure ${PLATFORM} ${CONFIG_OPTIONS}
114-
${PATCH_COMMANDS}
130+
${PRE_CONFIGURE_COMMAND} ${PERL_EXECUTABLE} <SOURCE_DIR>/Configure ${PLATFORM} ${CONFIG_OPTIONS}
115131
BUILD_COMMAND
116132
${MAKE_NMAKE_COMMAND}
117133
INSTALL_COMMAND

src/3rdparty/libcurl/CMakeLists.txt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,42 +30,42 @@ if(LIBOPENCOR_PREBUILT_LIBCURL)
3030
if(INTEL_MODE)
3131
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
3232
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
33-
1a4dac12be56cc76bf6a8cca5164aae84b321b49)
33+
305e24bcead97613af21ce7d4a918ada7bd1d3d4)
3434
else()
3535
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
3636
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
37-
94794fa0d700f2a6956cc5fd8c078f1fbbd4383e)
37+
aca3a811d1f7da2af1a5824837ffff4ef464b7df)
3838
endif()
3939
else()
4040
if(INTEL_MODE)
4141
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
4242
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
43-
17c73519bb0d26e044c24f23564f9fbe9e2103f0)
43+
860c55ddf58677120c1529029df2285bfaa42703)
4444
else()
4545
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
4646
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
47-
4019e7cb2ffd8b48b8bf64aa01af5089918bae32)
47+
d703b9a75a8784102d7709a89de1b24efc7f7484)
4848
endif()
4949
endif()
5050
elseif(APPLE)
5151
if(INTEL_MODE)
5252
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
5353
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
54-
7b919a6395c708515d13529f3b3fc1727aea5811)
54+
ff199eca4533c8cb4df389d4210173e13a39e001)
5555
else()
5656
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
5757
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
58-
2b397985f476be4095515a0b7ce20549342f2c47)
58+
daacb41a209b84b6cb55f10a462d8abe68ee20df)
5959
endif()
6060
else()
6161
if(INTEL_MODE)
6262
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
6363
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
64-
63e3713ca2b882bf8acbd5eea4baafac965e2d7f)
64+
9b007722dfd1359c939b3639e1ef404ded925728)
6565
else()
6666
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
6767
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
68-
c9d42bb0debb3ba4fbf6674b2c63bffd48cc088d)
68+
078a3fbb2aa417c3100fbacba6a76354cff92494)
6969
endif()
7070
endif()
7171
else()

src/3rdparty/libssh2/CMakeLists.txt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,42 +26,42 @@ if(LIBOPENCOR_PREBUILT_LIBSSH2)
2626
if(INTEL_MODE)
2727
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
2828
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
29-
9bb69654acf8286c5d8e80eee96f40044ecd4860)
29+
88ea03697534be46a83a5e5e8341c712ae4552db)
3030
else()
3131
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
3232
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
33-
2a4e86ed8c92a023e10f0cd28cac20e8ef7b6d1e)
33+
069cc72dc18316c1471fcc02188e2ca2eeedcac5)
3434
endif()
3535
else()
3636
if(INTEL_MODE)
3737
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
3838
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
39-
3efd49014c608fae827d06673be174e7da3c6c8b)
39+
9e6b04d193b9acaaa5f1b966b48ca5efd93f7157)
4040
else()
4141
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
4242
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
43-
899a94cad3ec971efbbe32a58f464536a0a7bc6d)
43+
b009196f8eee49fc10202e018fb8efbb15ffa736)
4444
endif()
4545
endif()
4646
elseif(APPLE)
4747
if(INTEL_MODE)
4848
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
4949
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
50-
a2c883d325d1ce08ad12423b05c09ab80b451199)
50+
bbc92f3e041f37550da1c4ab9485a0b97325e9a2)
5151
else()
5252
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
5353
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
54-
2c4644536088adfda21792108ec5803f6e9354c6)
54+
b07761278c9eed1575aaa110eee9fe39896dd2ad)
5555
endif()
5656
else()
5757
if(INTEL_MODE)
5858
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
5959
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
60-
836b8519a2b3d19e1f1e3ae7f8611c6d3aa2ec5a)
60+
e750ebdaf1fe26b84097cc65ad45a287df189776)
6161
else()
6262
retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION}
6363
${PACKAGE_REPOSITORY} ${RELEASE_TAG}
64-
8560535078d3458f7eab5398b565f286e4610d43)
64+
32bf276760631c274c690e3df0e0671536aa39c0)
6565
endif()
6666
endif()
6767
else()

tests/api/file/basictests.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ TEST(BasicFileTest, urlBasedLocalFile)
9696
EXPECT_EQ_ISSUES(file, EXPECTED_NON_EXISTING_FILE_ISSUES);
9797
}
9898

99-
#ifdef GHA_NOT_WINDOWS_ON_ARM
10099
TEST(BasicFileTest, remoteFile)
101100
{
102101
auto file = libOpenCOR::File::create(libOpenCOR::REMOTE_FILE);
@@ -107,7 +106,6 @@ TEST(BasicFileTest, remoteFile)
107106
EXPECT_EQ(file->path(), libOpenCOR::REMOTE_FILE);
108107
EXPECT_FALSE(file->contents().empty());
109108
}
110-
#endif
111109

112110
TEST(BasicFileTest, localVirtualFile)
113111
{
@@ -129,7 +127,6 @@ TEST(BasicFileTest, localVirtualFile)
129127
EXPECT_EQ_ISSUES(file, EXPECTED_UNKNOWN_FILE_ISSUES);
130128
}
131129

132-
#ifdef GHA_NOT_WINDOWS_ON_ARM
133130
TEST(BasicFileTest, remoteVirtualFile)
134131
{
135132
auto file = libOpenCOR::File::create(libOpenCOR::IRRETRIEVABLE_REMOTE_FILE);
@@ -149,9 +146,7 @@ TEST(BasicFileTest, remoteVirtualFile)
149146
EXPECT_EQ(file->contents(), someUnknownContents);
150147
EXPECT_EQ_ISSUES(file, EXPECTED_UNKNOWN_FILE_ISSUES);
151148
}
152-
#endif
153149

154-
#ifdef GHA_NOT_WINDOWS_ON_ARM
155150
TEST(BasicFileTest, fileManager)
156151
{
157152
auto fileManager = libOpenCOR::FileManager::instance();
@@ -205,4 +200,3 @@ TEST(BasicFileTest, fileManager)
205200
EXPECT_EQ(fileManager.file(libOpenCOR::REMOTE_FILE), nullptr);
206201
EXPECT_EQ(fileManager.file(libOpenCOR::UNKNOWN_FILE), nullptr);
207202
}
208-
#endif

tests/api/file/coveragetests.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,10 @@ TEST(CoverageFileTest, sedmlFileWithNoParent)
4343
file->setContents(libOpenCOR::charArrayToUnsignedChars(libOpenCOR::SOME_SEDML_CONTENTS));
4444
}
4545

46-
#ifdef GHA_NOT_WINDOWS_ON_ARM
4746
TEST(CoverageFileTest, irretrievableRemoteFile)
4847
{
4948
libOpenCOR::File::create(libOpenCOR::IRRETRIEVABLE_REMOTE_FILE);
5049
}
51-
#endif
5250

5351
TEST(CoverageFileTest, sameLocalFile)
5452
{
@@ -58,15 +56,13 @@ TEST(CoverageFileTest, sameLocalFile)
5856
EXPECT_EQ(file1, file2);
5957
}
6058

61-
#ifdef GHA_NOT_WINDOWS_ON_ARM
6259
TEST(CoverageFileTest, sameRemoteFile)
6360
{
6461
auto file1 = libOpenCOR::File::create(libOpenCOR::REMOTE_FILE);
6562
auto file2 = libOpenCOR::File::create(libOpenCOR::REMOTE_FILE);
6663

6764
EXPECT_EQ(file1, file2);
6865
}
69-
#endif
7066

7167
TEST(CoverageFileTest, doNotRetrieveContents)
7268
{

tests/api/sed/basictests.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ TEST(BasicSedTest, sedmlFileWithAbsoluteCellmlFile)
7373
EXPECT_FALSE(document->hasIssues());
7474
}
7575

76-
#ifdef GHA_NOT_WINDOWS_ON_ARM
7776
TEST(BasicSedTest, sedmlFileWithRemoteCellmlFile)
7877
{
7978
auto file = libOpenCOR::File::create(libOpenCOR::resourcePath("api/sed/remote_cellml_file.sedml"));
@@ -87,7 +86,6 @@ TEST(BasicSedTest, sedmlFileWithRemoteCellmlFile)
8786

8887
EXPECT_FALSE(document->hasIssues());
8988
}
90-
#endif
9189

9290
TEST(BasicSedTest, combineArchive)
9391
{

tests/api/sed/coveragetests.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,6 @@ TEST(CoverageSedTest, sedInstanceAndSedInstanceTask)
345345
EXPECT_EQ_ISSUES(instance, EXPECTED_ISSUES);
346346
}
347347

348-
#ifdef GHA_NOT_WINDOWS_ON_ARM
349348
TEST(CoverageSedTest, sedDocument)
350349
{
351350
auto file = libOpenCOR::File::create(libOpenCOR::HTTP_REMOTE_CELLML_FILE);
@@ -357,7 +356,6 @@ TEST(CoverageSedTest, sedDocument)
357356
file = libOpenCOR::File::create(libOpenCOR::HTTP_REMOTE_COMBINE_ARCHIVE);
358357
libOpenCOR::SedDocument::create(file);
359358
}
360-
#endif
361359

362360
TEST(CoverageSedTest, solver)
363361
{

tests/api/sed/serialisetests.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -145,35 +145,29 @@ TEST(SerialiseSedTest, relativeLocalCellmlFileWithoutBasePath)
145145
EXPECT_EQ(document->serialise(), cvodeExpectedSerialisation("cellml_2.cellml"));
146146
}
147147

148-
#ifdef GHA_NOT_WINDOWS_ON_ARM
149148
TEST(SerialiseSedTest, remoteCellmlFileWithBasePath)
150149
{
151150
auto file = libOpenCOR::File::create(libOpenCOR::REMOTE_FILE);
152151
auto document = libOpenCOR::SedDocument::create(file);
153152

154153
EXPECT_EQ(document->serialise(libOpenCOR::REMOTE_BASE_PATH), cvodeExpectedSerialisation("cellml_2.cellml"));
155154
}
156-
#endif
157155

158-
#ifdef GHA_NOT_WINDOWS_ON_ARM
159156
TEST(SerialiseSedTest, remoteCellmlFileWithoutBasePath)
160157
{
161158
auto file = libOpenCOR::File::create(libOpenCOR::REMOTE_FILE);
162159
auto document = libOpenCOR::SedDocument::create(file);
163160

164161
EXPECT_EQ(document->serialise(), cvodeExpectedSerialisation("https://raw.githubusercontent.com/opencor/libopencor/master/tests/res/cellml_2.cellml"));
165162
}
166-
#endif
167163

168-
#ifdef GHA_NOT_WINDOWS_ON_ARM
169164
TEST(SerialiseSedTest, relativeRemoteCellmlFileWithBasePath)
170165
{
171166
auto file = libOpenCOR::File::create(libOpenCOR::REMOTE_FILE);
172167
auto document = libOpenCOR::SedDocument::create(file);
173168

174169
EXPECT_EQ(document->serialise(std::string(libOpenCOR::REMOTE_BASE_PATH).append("/../..")), cvodeExpectedSerialisation("tests/res/cellml_2.cellml"));
175170
}
176-
#endif
177171

178172
TEST(SerialiseSedTest, daeModel)
179173
{

tests/utils.h.in

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,6 @@ limitations under the License.
2828
#include "libopencor/issue.h"
2929
#include "libopencor/types.h"
3030

31-
#if !defined(BUILDING_ON_WINDOWS) || !defined(BUILDING_ON_ARM)
32-
//---GRY--- FOR SOME REASONS, libcurl SEGFAULTS WHEN TRYING TO DOWNLOAD A FILE USING GitHub Actions' Windows on ARM
33-
// RUNNER WHILE IT'S ALL FINE LOCALLY!? SO, THIS DEFINE IS SO THAT WE CAN DISABLE THE TESTS THAT USE libcurl
34-
// WITH A REMOTE FILE WHEN RUNNING ON Windows on ARM.
35-
# define GHA_NOT_WINDOWS_ON_ARM
36-
#endif
37-
3831
namespace libOpenCOR {
3932

4033
static constexpr auto RESOURCE_LOCATION = "@RESOURCE_LOCATION@";

0 commit comments

Comments
 (0)