mirror of
https://github.com/SChernykh/p2pool.git
synced 2024-12-22 19:39:22 +00:00
Check for Windows 7 compatibility
This commit is contained in:
parent
9a1da5b7c2
commit
c0cabc9739
2 changed files with 296 additions and 7 deletions
22
.github/workflows/c-cpp.yml
vendored
22
.github/workflows/c-cpp.yml
vendored
|
@ -405,9 +405,9 @@ jobs:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
config:
|
config:
|
||||||
- {vs: Visual Studio 16 2019, os: 2019, msbuild: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\", rx: "ON", upnp: "ON"}
|
- {vs: Visual Studio 16 2019, os: 2019, vspath: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise", rx: "ON", upnp: "ON"}
|
||||||
- {vs: Visual Studio 16 2019, os: 2019, msbuild: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\", rx: "OFF", upnp: "ON"}
|
- {vs: Visual Studio 16 2019, os: 2019, vspath: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise", rx: "OFF", upnp: "ON"}
|
||||||
- {vs: Visual Studio 16 2019, os: 2019, msbuild: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\", rx: "OFF", upnp: "OFF"}
|
- {vs: Visual Studio 16 2019, os: 2019, vspath: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise", rx: "OFF", upnp: "OFF"}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
|
@ -423,14 +423,22 @@ jobs:
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake .. -G "${{ matrix.config.vs }}" -DWITH_RANDOMX=${{ matrix.config.rx }} -DWITH_UPNP=${{ matrix.config.upnp }}
|
cmake .. -G "${{ matrix.config.vs }}" -DWITH_RANDOMX=${{ matrix.config.rx }} -DWITH_UPNP=${{ matrix.config.upnp }}
|
||||||
& "${{ matrix.config.msbuild }}msbuild" -v:m /m /p:Configuration=Release p2pool.vcxproj
|
& "${{ matrix.config.vspath }}\\MSBuild\\Current\\Bin\\amd64\\msbuild" -v:m /m /p:Configuration=Release p2pool.vcxproj
|
||||||
|
|
||||||
|
- name: Check Windows 7 compatibility
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
call "${{ matrix.config.vspath }}\\VC\\Auxiliary\\Build\\vcvarsall.bat" amd64
|
||||||
|
dumpbin /IMPORTS build/Release/p2pool.exe > 1.txt
|
||||||
|
findstr /R /C:"^ *[0-9A-F][0-9A-F]* [a-zA-Z][a-zA-Z0-9]*$" 1.txt > 2.txt
|
||||||
|
python tests/src/check_win7.py 2.txt
|
||||||
|
|
||||||
- name: Run RandomX tests
|
- name: Run RandomX tests
|
||||||
if: matrix.config.rx == 'ON'
|
if: matrix.config.rx == 'ON'
|
||||||
run: |
|
run: |
|
||||||
build/Release/p2pool.exe --test
|
build/Release/p2pool.exe --test
|
||||||
cd build/external/src/RandomX
|
cd build/external/src/RandomX
|
||||||
& "${{ matrix.config.msbuild }}msbuild" -v:m /m /p:Configuration=Release randomx-tests.vcxproj
|
& "${{ matrix.config.vspath }}\\MSBuild\\Current\\Bin\\amd64\\msbuild" -v:m /m /p:Configuration=Release randomx-tests.vcxproj
|
||||||
Release/randomx-tests.exe
|
Release/randomx-tests.exe
|
||||||
|
|
||||||
- name: Build tests
|
- name: Build tests
|
||||||
|
@ -439,7 +447,7 @@ jobs:
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake .. -G "${{ matrix.config.vs }}"
|
cmake .. -G "${{ matrix.config.vs }}"
|
||||||
& "${{ matrix.config.msbuild }}msbuild" -v:m /m /p:Configuration=Debug p2pool_tests.vcxproj
|
& "${{ matrix.config.vspath }}\\MSBuild\\Current\\Bin\\amd64\\msbuild" -v:m /m /p:Configuration=Debug p2pool_tests.vcxproj
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: |
|
run: |
|
||||||
|
@ -450,7 +458,7 @@ jobs:
|
||||||
- name: Archive binary
|
- name: Archive binary
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: p2pool-msbuild-${{ matrix.config.os }}-randomx-${{ matrix.config.rx }}-upnp-${{ matrix.config.upnp }}.exe
|
name: p2pool-vs-${{ matrix.config.os }}-randomx-${{ matrix.config.rx }}-upnp-${{ matrix.config.upnp }}.exe
|
||||||
path: build/Release/p2pool.exe
|
path: build/Release/p2pool.exe
|
||||||
|
|
||||||
build-macos:
|
build-macos:
|
||||||
|
|
281
tests/src/check_win7.py
Normal file
281
tests/src/check_win7.py
Normal file
|
@ -0,0 +1,281 @@
|
||||||
|
# This file is part of the Monero P2Pool <https://github.com/SChernykh/p2pool>
|
||||||
|
# Copyright (c) 2021-2023 SChernykh <https://github.com/SChernykh>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, version 3.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
allowedAPIs = {
|
||||||
|
"getaddrinfo",
|
||||||
|
"freeaddrinfo",
|
||||||
|
"WSAPoll",
|
||||||
|
"WSACreateEvent",
|
||||||
|
"WSACloseEvent",
|
||||||
|
"WSARecvFrom",
|
||||||
|
"WSASend",
|
||||||
|
"WSARecv",
|
||||||
|
"WSADuplicateSocketW",
|
||||||
|
"WSASocketW",
|
||||||
|
"WSAIoctl",
|
||||||
|
"getnameinfo",
|
||||||
|
"WSASocketA",
|
||||||
|
"GetAdaptersAddresses",
|
||||||
|
"GetBestInterface",
|
||||||
|
"DnsFree",
|
||||||
|
"LoadLibraryExW",
|
||||||
|
"RtlPcToFileHeader",
|
||||||
|
"RtlUnwindEx",
|
||||||
|
"GetCPInfo",
|
||||||
|
"GetStringTypeW",
|
||||||
|
"GetDriveTypeW",
|
||||||
|
"DecodePointer",
|
||||||
|
"EncodePointer",
|
||||||
|
"FreeLibraryAndExitThread",
|
||||||
|
"SystemTimeToTzSpecificLocalTime",
|
||||||
|
"CreateThread",
|
||||||
|
"LCMapStringEx",
|
||||||
|
"ExitThread",
|
||||||
|
"GetModuleHandleExW",
|
||||||
|
"SetStdHandle",
|
||||||
|
"FlsFree",
|
||||||
|
"FlsSetValue",
|
||||||
|
"FlsGetValue",
|
||||||
|
"SetFilePointer",
|
||||||
|
"SetEndOfFile",
|
||||||
|
"UnmapViewOfFile",
|
||||||
|
"GetLastError",
|
||||||
|
"FlushViewOfFile",
|
||||||
|
"CreateFileA",
|
||||||
|
"CloseHandle",
|
||||||
|
"CreateFileMappingA",
|
||||||
|
"MapViewOfFile",
|
||||||
|
"FlushFileBuffers",
|
||||||
|
"GetStdHandle",
|
||||||
|
"WriteConsoleA",
|
||||||
|
"SetConsoleMode",
|
||||||
|
"GetConsoleMode",
|
||||||
|
"FormatMessageA",
|
||||||
|
"SetThreadPriority",
|
||||||
|
"GetCurrentThread",
|
||||||
|
"SetThreadPriorityBoost",
|
||||||
|
"IsDebuggerPresent",
|
||||||
|
"Sleep",
|
||||||
|
"RaiseException",
|
||||||
|
"InitializeCriticalSection",
|
||||||
|
"EnterCriticalSection",
|
||||||
|
"LeaveCriticalSection",
|
||||||
|
"DeleteCriticalSection",
|
||||||
|
"QueryPerformanceCounter",
|
||||||
|
"QueryPerformanceFrequency",
|
||||||
|
"GetTickCount",
|
||||||
|
"FreeLibrary",
|
||||||
|
"GetProcAddress",
|
||||||
|
"LoadLibraryA",
|
||||||
|
"SetHandleInformation",
|
||||||
|
"WaitForSingleObject",
|
||||||
|
"GetCurrentThreadId",
|
||||||
|
"TryEnterCriticalSection",
|
||||||
|
"GetCurrentProcessId",
|
||||||
|
"GetHandleInformation",
|
||||||
|
"SetLastError",
|
||||||
|
"CreateIoCompletionPort",
|
||||||
|
"GetQueuedCompletionStatusEx",
|
||||||
|
"InitializeSRWLock",
|
||||||
|
"ReleaseSRWLockExclusive",
|
||||||
|
"ReleaseSRWLockShared",
|
||||||
|
"AcquireSRWLockExclusive",
|
||||||
|
"AcquireSRWLockShared",
|
||||||
|
"InitOnceExecuteOnce",
|
||||||
|
"GetTickCount64",
|
||||||
|
"GetModuleHandleW",
|
||||||
|
"SetFileCompletionNotificationModes",
|
||||||
|
"WideCharToMultiByte",
|
||||||
|
"DuplicateHandle",
|
||||||
|
"TryAcquireSRWLockShared",
|
||||||
|
"InitializeConditionVariable",
|
||||||
|
"WakeConditionVariable",
|
||||||
|
"WakeAllConditionVariable",
|
||||||
|
"SleepConditionVariableCS",
|
||||||
|
"SetEvent",
|
||||||
|
"ReleaseSemaphore",
|
||||||
|
"CreateEventA",
|
||||||
|
"GetCurrentProcess",
|
||||||
|
"ResumeThread",
|
||||||
|
"TlsAlloc",
|
||||||
|
"TlsGetValue",
|
||||||
|
"TlsSetValue",
|
||||||
|
"TlsFree",
|
||||||
|
"GetNativeSystemInfo",
|
||||||
|
"CreateSemaphoreA",
|
||||||
|
"GetFileType",
|
||||||
|
"PostQueuedCompletionStatus",
|
||||||
|
"CreateFileW",
|
||||||
|
"ResetEvent",
|
||||||
|
"QueueUserWorkItem",
|
||||||
|
"GetFileAttributesExW",
|
||||||
|
"UnregisterWait",
|
||||||
|
"GetNumberOfConsoleInputEvents",
|
||||||
|
"ReadConsoleInputW",
|
||||||
|
"ReadConsoleW",
|
||||||
|
"WriteConsoleW",
|
||||||
|
"FillConsoleOutputCharacterW",
|
||||||
|
"FillConsoleOutputAttribute",
|
||||||
|
"GetConsoleCursorInfo",
|
||||||
|
"SetConsoleCursorInfo",
|
||||||
|
"GetConsoleScreenBufferInfo",
|
||||||
|
"SetConsoleCursorPosition",
|
||||||
|
"SetConsoleTextAttribute",
|
||||||
|
"WriteConsoleInputW",
|
||||||
|
"ReadFile",
|
||||||
|
"WriteFile",
|
||||||
|
"ConnectNamedPipe",
|
||||||
|
"SetNamedPipeHandleState",
|
||||||
|
"PeekNamedPipe",
|
||||||
|
"CreateNamedPipeW",
|
||||||
|
"CancelIoEx",
|
||||||
|
"CancelSynchronousIo",
|
||||||
|
"SwitchToThread",
|
||||||
|
"LocalFree",
|
||||||
|
"GetNamedPipeHandleStateA",
|
||||||
|
"GetNamedPipeClientProcessId",
|
||||||
|
"GetNamedPipeServerProcessId",
|
||||||
|
"MultiByteToWideChar",
|
||||||
|
"SetConsoleCtrlHandler",
|
||||||
|
"SetErrorMode",
|
||||||
|
"GetQueuedCompletionStatus",
|
||||||
|
"CreateDirectoryW",
|
||||||
|
"FindClose",
|
||||||
|
"FindFirstFileW",
|
||||||
|
"FindNextFileW",
|
||||||
|
"RtlUnwind",
|
||||||
|
"GetFileAttributesW",
|
||||||
|
"GetFileInformationByHandle",
|
||||||
|
"GetFileSizeEx",
|
||||||
|
"GetFinalPathNameByHandleW",
|
||||||
|
"GetFullPathNameW",
|
||||||
|
"RemoveDirectoryW",
|
||||||
|
"SetFilePointerEx",
|
||||||
|
"SetFileTime",
|
||||||
|
"DeviceIoControl",
|
||||||
|
"GetSystemInfo",
|
||||||
|
"GetSystemTimeAsFileTime",
|
||||||
|
"ReOpenFile",
|
||||||
|
"CopyFileW",
|
||||||
|
"MoveFileExW",
|
||||||
|
"CreateHardLinkW",
|
||||||
|
"GetFileInformationByHandleEx",
|
||||||
|
"CreateSymbolicLinkW",
|
||||||
|
"CancelIo",
|
||||||
|
"DebugBreak",
|
||||||
|
"GetCurrentDirectoryW",
|
||||||
|
"TerminateProcess",
|
||||||
|
"GetExitCodeProcess",
|
||||||
|
"UnregisterWaitEx",
|
||||||
|
"LCMapStringW",
|
||||||
|
"GetLongPathNameW",
|
||||||
|
"ReadDirectoryChangesW",
|
||||||
|
"GetEnvironmentStringsW",
|
||||||
|
"FreeEnvironmentStringsW",
|
||||||
|
"SetEnvironmentVariableW",
|
||||||
|
"GetModuleFileNameW",
|
||||||
|
"FileTimeToSystemTime",
|
||||||
|
"GetModuleHandleA",
|
||||||
|
"LoadLibraryExA",
|
||||||
|
"GetStartupInfoW",
|
||||||
|
"FormatMessageW",
|
||||||
|
"InitializeCriticalSectionEx",
|
||||||
|
"GetSystemDirectoryA",
|
||||||
|
"WaitForSingleObjectEx",
|
||||||
|
"GetEnvironmentVariableA",
|
||||||
|
"SleepEx",
|
||||||
|
"VerSetConditionMask",
|
||||||
|
"VerifyVersionInfoW",
|
||||||
|
"VirtualProtect",
|
||||||
|
"VirtualFree",
|
||||||
|
"VirtualAlloc",
|
||||||
|
"GetLargePageMinimum",
|
||||||
|
"HeapFree",
|
||||||
|
"HeapAlloc",
|
||||||
|
"GetProcessHeap",
|
||||||
|
"FlsAlloc",
|
||||||
|
"SleepConditionVariableSRW",
|
||||||
|
"GetExitCodeThread",
|
||||||
|
"InitializeSListHead",
|
||||||
|
"CreateEventW",
|
||||||
|
"InitializeCriticalSectionAndSpinCount",
|
||||||
|
"IsProcessorFeaturePresent",
|
||||||
|
"SetUnhandledExceptionFilter",
|
||||||
|
"UnhandledExceptionFilter",
|
||||||
|
"RtlVirtualUnwind",
|
||||||
|
"RtlLookupFunctionEntry",
|
||||||
|
"SetFileAttributesW",
|
||||||
|
"GetConsoleOutputCP",
|
||||||
|
"ExitProcess",
|
||||||
|
"GetCommandLineA",
|
||||||
|
"GetCommandLineW",
|
||||||
|
"GetDateFormatW",
|
||||||
|
"GetTimeFormatW",
|
||||||
|
"CompareStringW",
|
||||||
|
"GetLocaleInfoW",
|
||||||
|
"IsValidLocale",
|
||||||
|
"GetUserDefaultLCID",
|
||||||
|
"EnumSystemLocalesW",
|
||||||
|
"HeapReAlloc",
|
||||||
|
"HeapSize",
|
||||||
|
"FindFirstFileExW",
|
||||||
|
"IsValidCodePage",
|
||||||
|
"GetACP",
|
||||||
|
"GetOEMCP",
|
||||||
|
"GetTimeZoneInformation",
|
||||||
|
"RegisterWaitForSingleObject",
|
||||||
|
"GetDiskFreeSpaceW",
|
||||||
|
"RtlCaptureContext",
|
||||||
|
"GetMessageA",
|
||||||
|
"GetSystemMetrics",
|
||||||
|
"MapVirtualKeyW",
|
||||||
|
"DispatchMessageA",
|
||||||
|
"TranslateMessage",
|
||||||
|
"AdjustTokenPrivileges",
|
||||||
|
"LookupPrivilegeValueA",
|
||||||
|
"CryptDestroyHash",
|
||||||
|
"CryptHashData",
|
||||||
|
"CryptCreateHash",
|
||||||
|
"CryptGetHashParam",
|
||||||
|
"CryptReleaseContext",
|
||||||
|
"CryptAcquireContextA",
|
||||||
|
"SystemFunction036",
|
||||||
|
"OpenProcessToken",
|
||||||
|
"SetSecurityDescriptorDacl",
|
||||||
|
"InitializeSecurityDescriptor",
|
||||||
|
"BCryptGenRandom",
|
||||||
|
"GetConsoleCP",
|
||||||
|
}
|
||||||
|
|
||||||
|
f = open(sys.argv[1], 'r')
|
||||||
|
lines = f.readlines()
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
exit_code = 0
|
||||||
|
count = 0
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
count += 1
|
||||||
|
api = line[29:].strip()
|
||||||
|
if api not in allowedAPIs:
|
||||||
|
print('API call "{}" is not checked for Windows 7 compatibility. Check it and then add it to the list in tests/src/check_imports.py'.format(api))
|
||||||
|
exit_code = 1
|
||||||
|
|
||||||
|
if exit_code == 0:
|
||||||
|
print('{} imports checked successfully'.format(count))
|
||||||
|
|
||||||
|
sys.exit(exit_code)
|
Loading…
Reference in a new issue