build(win): use UCRT64 environment instead of MinGW64. (#2323)
Co-authored-by: Conn O'Griofa <connogriofa@gmail.com>
This commit is contained in:
32
.github/workflows/CI.yml
vendored
32
.github/workflows/CI.yml
vendored
@@ -935,29 +935,23 @@ jobs:
|
|||||||
- name: Setup Dependencies Windows
|
- name: Setup Dependencies Windows
|
||||||
uses: msys2/setup-msys2@v2
|
uses: msys2/setup-msys2@v2
|
||||||
with:
|
with:
|
||||||
|
msystem: ucrt64
|
||||||
update: true
|
update: true
|
||||||
install: >-
|
install: >-
|
||||||
base-devel
|
|
||||||
diffutils
|
|
||||||
doxygen
|
doxygen
|
||||||
git
|
git
|
||||||
make
|
mingw-w64-ucrt-x86_64-boost
|
||||||
mingw-w64-x86_64-binutils
|
mingw-w64-ucrt-x86_64-cmake
|
||||||
mingw-w64-x86_64-boost
|
mingw-w64-ucrt-x86_64-curl
|
||||||
mingw-w64-x86_64-cmake
|
mingw-w64-ucrt-x86_64-graphviz
|
||||||
mingw-w64-x86_64-curl
|
mingw-w64-ucrt-x86_64-miniupnpc
|
||||||
mingw-w64-x86_64-graphviz
|
mingw-w64-ucrt-x86_64-nlohmann-json
|
||||||
mingw-w64-x86_64-miniupnpc
|
mingw-w64-ucrt-x86_64-nodejs
|
||||||
mingw-w64-x86_64-nlohmann-json
|
mingw-w64-ucrt-x86_64-nsis
|
||||||
mingw-w64-x86_64-nodejs
|
mingw-w64-ucrt-x86_64-onevpl
|
||||||
mingw-w64-x86_64-nsis
|
mingw-w64-ucrt-x86_64-openssl
|
||||||
mingw-w64-x86_64-onevpl
|
mingw-w64-ucrt-x86_64-opus
|
||||||
mingw-w64-x86_64-openssl
|
mingw-w64-ucrt-x86_64-toolchain
|
||||||
mingw-w64-x86_64-opus
|
|
||||||
mingw-w64-x86_64-toolchain
|
|
||||||
nasm
|
|
||||||
wget
|
|
||||||
yasm
|
|
||||||
|
|
||||||
- name: Setup python
|
- name: Setup python
|
||||||
# use this instead of msys2 python due to known issues using wheels, https://www.msys2.org/docs/python/
|
# use this instead of msys2 python due to known issues using wheels, https://www.msys2.org/docs/python/
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ Windows
|
|||||||
|
|
||||||
Requirements
|
Requirements
|
||||||
------------
|
------------
|
||||||
First you need to install `MSYS2 <https://www.msys2.org>`__, then startup "MSYS2 MinGW 64-bit" and execute the following
|
First you need to install `MSYS2 <https://www.msys2.org>`__, then startup "MSYS2 UCRT64" and execute the following
|
||||||
codes.
|
codes.
|
||||||
|
|
||||||
Update all packages:
|
Update all packages:
|
||||||
@@ -15,26 +15,21 @@ Install dependencies:
|
|||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
pacman -S \
|
pacman -S \
|
||||||
base-devel \
|
|
||||||
cmake \
|
|
||||||
diffutils \
|
|
||||||
doxygen \
|
doxygen \
|
||||||
gcc \
|
|
||||||
git \
|
git \
|
||||||
make \
|
mingw-w64-ucrt-x86_64-boost \
|
||||||
mingw-w64-x86_64-binutils \
|
mingw-w64-ucrt-x86_64-cmake \
|
||||||
mingw-w64-x86_64-boost \
|
mingw-w64-ucrt-x86_64-curl \
|
||||||
mingw-w64-x86_64-cmake \
|
mingw-w64-ucrt-x86_64-graphviz \
|
||||||
mingw-w64-x86_64-curl \
|
mingw-w64-ucrt-x86_64-miniupnpc \
|
||||||
mingw-w64-x86_64-graphviz \
|
mingw-w64-ucrt-x86_64-nlohmann-json \
|
||||||
mingw-w64-x86_64-miniupnpc \
|
mingw-w64-ucrt-x86_64-nodejs \
|
||||||
mingw-w64-x86_64-nlohmann-json \
|
mingw-w64-ucrt-x86_64-nsis \
|
||||||
mingw-w64-x86_64-nodejs \
|
mingw-w64-ucrt-x86_64-onevpl \
|
||||||
mingw-w64-x86_64-onevpl \
|
mingw-w64-ucrt-x86_64-openssl \
|
||||||
mingw-w64-x86_64-openssl \
|
mingw-w64-ucrt-x86_64-opus \
|
||||||
mingw-w64-x86_64-opus \
|
mingw-w64-ucrt-x86_64-rust \
|
||||||
mingw-w64-x86_64-rust \
|
mingw-w64-ucrt-x86_64-toolchain \
|
||||||
mingw-w64-x86_64-toolchain \
|
|
||||||
python \
|
python \
|
||||||
python-pip
|
python-pip
|
||||||
|
|
||||||
|
|||||||
@@ -1272,10 +1272,16 @@ namespace config {
|
|||||||
BOOST_LOG(fatal) << "Failed to apply config: "sv << err.what();
|
BOOST_LOG(fatal) << "Failed to apply config: "sv << err.what();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!config_loaded) {
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
// UCRT64 raises an access denied exception if launching from the shortcut
|
||||||
|
// as non-admin and the config folder is not yet present; we can defer
|
||||||
|
// so that service instance will do the work instead.
|
||||||
|
|
||||||
|
if (!config_loaded && !shortcut_launch) {
|
||||||
BOOST_LOG(fatal) << "To relaunch Sunshine successfully, use the shortcut in the Start Menu. Do not run Sunshine.exe manually."sv;
|
BOOST_LOG(fatal) << "To relaunch Sunshine successfully, use the shortcut in the Start Menu. Do not run Sunshine.exe manually."sv;
|
||||||
std::this_thread::sleep_for(10s);
|
std::this_thread::sleep_for(10s);
|
||||||
|
#else
|
||||||
|
if (!config_loaded) {
|
||||||
#endif
|
#endif
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -1283,6 +1289,8 @@ namespace config {
|
|||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
// We have to wait until the config is loaded to handle these launches,
|
// We have to wait until the config is loaded to handle these launches,
|
||||||
// because we need to have the correct base port loaded in our config.
|
// because we need to have the correct base port loaded in our config.
|
||||||
|
// Exception: UCRT64 shortcut_launch instances may have no config loaded due to
|
||||||
|
// insufficient permissions to create folder; port defaults will be acceptable.
|
||||||
if (service_admin_launch) {
|
if (service_admin_launch) {
|
||||||
// This is a relaunch as admin to start the service
|
// This is a relaunch as admin to start the service
|
||||||
service_ctrl::start_service();
|
service_ctrl::start_service();
|
||||||
|
|||||||
@@ -91,8 +91,7 @@ main(int argc, char *argv[]) {
|
|||||||
task_pool_util::TaskPool::task_id_t force_shutdown = nullptr;
|
task_pool_util::TaskPool::task_id_t force_shutdown = nullptr;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
// Switch default C standard library locale to UTF-8 on Windows 10 1803+
|
setlocale(LC_ALL, "C");
|
||||||
setlocale(LC_ALL, ".UTF-8");
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
|
|||||||
@@ -38,10 +38,11 @@ if exist "%OLD_DIR%\credentials\" (
|
|||||||
rem Create the credentials directory if it wasn't migrated or already existing
|
rem Create the credentials directory if it wasn't migrated or already existing
|
||||||
if not exist "%NEW_DIR%\credentials\" mkdir "%NEW_DIR%\credentials"
|
if not exist "%NEW_DIR%\credentials\" mkdir "%NEW_DIR%\credentials"
|
||||||
|
|
||||||
rem Disallow read access to the credentials directory for normal users
|
rem Disallow read access to the credentials directory contents for normal users
|
||||||
rem Note: We must use the SID directly because "Administrators" is localized
|
rem Note: We must use the SIDs directly because "Users" and "Administrators" are localized
|
||||||
icacls "%NEW_DIR%\credentials" /inheritance:r
|
icacls "%NEW_DIR%\credentials" /inheritance:r
|
||||||
icacls "%NEW_DIR%\credentials" /grant:r *S-1-5-32-544:(OI)(CI)(F)
|
icacls "%NEW_DIR%\credentials" /grant:r *S-1-5-32-544:(OI)(CI)(F)
|
||||||
|
icacls "%NEW_DIR%\credentials" /grant:r *S-1-5-32-545:(R)
|
||||||
|
|
||||||
rem Migrate the covers directory
|
rem Migrate the covers directory
|
||||||
if exist "%OLD_DIR%\covers\" (
|
if exist "%OLD_DIR%\covers\" (
|
||||||
|
|||||||
Reference in New Issue
Block a user