fex: init at 2412
This commit is contained in:
@@ -1351,6 +1351,13 @@
|
||||
githubId = 638836;
|
||||
name = "Andreas Rammhold";
|
||||
};
|
||||
andre4ik3 = {
|
||||
name = "andre4ik3";
|
||||
email = "andre4ik3@fastmail.com";
|
||||
matrix = "@andre4ik3:matrix.org";
|
||||
github = "andre4ik3";
|
||||
githubId = 62390580;
|
||||
};
|
||||
andreasfelix = {
|
||||
email = "fandreas@physik.hu-berlin.de";
|
||||
github = "andreasfelix";
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
llvmPackages,
|
||||
cmake,
|
||||
ninja,
|
||||
pkg-config,
|
||||
gitMinimal,
|
||||
qt5,
|
||||
python3,
|
||||
}:
|
||||
|
||||
llvmPackages.stdenv.mkDerivation (finalAttrs: rec {
|
||||
pname = "fex";
|
||||
version = "2412";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "FEX-Emu";
|
||||
repo = "FEX";
|
||||
tag = "FEX-${version}";
|
||||
hash = "sha256-VwcfxdRMjE/yoe5q0p3j4FdEMOJdtq17moxiGWO+CN0=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
patches = [
|
||||
# This is a workaround to get FEX working with NixOS's slightly weird binfmt
|
||||
# infrastructure.
|
||||
./realpath.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
ninja
|
||||
pkg-config
|
||||
gitMinimal
|
||||
qt5.wrapQtAppsHook
|
||||
llvmPackages.bintools
|
||||
|
||||
(python3.withPackages (
|
||||
pythonPackages: with pythonPackages; [
|
||||
setuptools
|
||||
libclang
|
||||
]
|
||||
))
|
||||
];
|
||||
|
||||
buildInputs = with qt5; [
|
||||
qtbase
|
||||
qtdeclarative
|
||||
qtquickcontrols
|
||||
qtquickcontrols2
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_BUILD_TYPE=Release"
|
||||
"-DUSE_LINKER=lld"
|
||||
"-DENABLE_LTO=True"
|
||||
"-DENABLE_ASSERTIONS=False"
|
||||
(lib.cmakeBool "BUILD_TESTS" finalAttrs.finalPackage.doCheck)
|
||||
];
|
||||
|
||||
strictDeps = true;
|
||||
doCheck = false; # broken on Apple silicon computers
|
||||
|
||||
# Avoid wrapping anything other than FEXConfig, since the wrapped executables
|
||||
# don't seem to work when registered as binfmts.
|
||||
dontWrapQtApps = true;
|
||||
preFixup = ''
|
||||
wrapQtApp $out/bin/FEXConfig
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Fast usermode x86 and x86-64 emulator for Arm64 Linux";
|
||||
homepage = "https://fex-emu.com/";
|
||||
platforms = [ "aarch64-linux" ];
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ andre4ik3 ];
|
||||
mainProgram = "FEXBash";
|
||||
};
|
||||
})
|
||||
@@ -0,0 +1,19 @@
|
||||
diff --git a/Source/Common/FEXServerClient.cpp b/Source/Common/FEXServerClient.cpp
|
||||
index 424ecf0a0..501bcbac1 100644
|
||||
--- a/Source/Common/FEXServerClient.cpp
|
||||
+++ b/Source/Common/FEXServerClient.cpp
|
||||
@@ -209,7 +209,13 @@ int ConnectToAndStartServer(char* InterpreterPath) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
- fextl::string FEXServerPath = FHU::Filesystem::ParentPath(InterpreterPath) + "/FEXServer";
|
||||
+ char RealInterpreterPathBuf[PATH_MAX];
|
||||
+ char *RealInterpreterPath = realpath(InterpreterPath, RealInterpreterPathBuf);
|
||||
+ if (!RealInterpreterPath) {
|
||||
+ LogMan::Msg::EFmt("realpath failed");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ fextl::string FEXServerPath = FHU::Filesystem::ParentPath(RealInterpreterPath) + "/FEXServer";
|
||||
// Check if a local FEXServer next to FEXInterpreter exists
|
||||
// If it does then it takes priority over the installed one
|
||||
if (!FHU::Filesystem::Exists(FEXServerPath)) {
|
||||
Reference in New Issue
Block a user