mirror of
https://github.com/CHN-beta/hpcstat.git
synced 2024-10-22 20:18:44 +08:00
调整打包
This commit is contained in:
parent
86e85f87e3
commit
1e0cc1ec74
@ -24,6 +24,7 @@ target_link_libraries(hpcstat PRIVATE fmt::fmt Boost::headers Boost::filesystem
|
|||||||
nlohmann_json::nlohmann_json range-v3::range-v3)
|
nlohmann_json::nlohmann_json range-v3::range-v3)
|
||||||
|
|
||||||
install(TARGETS hpcstat RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
install(TARGETS hpcstat RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
install(DIRECTORY share/ DESTINATION ${CMAKE_INSTALL_DATADIR}/hpcstat)
|
||||||
|
|
||||||
get_property(ImportedTargets DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY IMPORTED_TARGETS)
|
get_property(ImportedTargets DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY IMPORTED_TARGETS)
|
||||||
message("Imported targets: ${ImportedTargets}")
|
message("Imported targets: ${ImportedTargets}")
|
||||||
|
18
default.nix
Normal file
18
default.nix
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
stdenv, cmake, pkg-config, standalone ? false, makeWrapper,
|
||||||
|
boost, fmt, zxorm, nlohmann_json, zpp-bits, range-v3, nameof, openssh
|
||||||
|
}: stdenv.mkDerivation
|
||||||
|
{
|
||||||
|
name = "hpcstat";
|
||||||
|
src = ./.;
|
||||||
|
buildInputs =
|
||||||
|
[ boost fmt zxorm nlohmann_json zpp-bits range-v3 nameof ];
|
||||||
|
nativeBuildInputs = [ cmake pkg-config makeWrapper ];
|
||||||
|
postInstall =
|
||||||
|
if standalone then "cp ${openssh}/bin/{ssh-add,ssh-keygen} $out/bin"
|
||||||
|
else
|
||||||
|
''
|
||||||
|
wrapProgram $out/bin/hpcstat --set HPCSTAT_SHAREDIR $out/share/hpcstat \
|
||||||
|
--set HPCSTAT_DATADIR /var/lib/hpcstat
|
||||||
|
'';
|
||||||
|
}
|
20
flake.nix
20
flake.nix
@ -14,30 +14,20 @@
|
|||||||
{ pkgs = final; inherit (inputs.nixpkgs) lib; topInputs = inputs.nixos.inputs; };
|
{ pkgs = final; inherit (inputs.nixpkgs) lib; topInputs = inputs.nixos.inputs; };
|
||||||
})];
|
})];
|
||||||
});
|
});
|
||||||
in
|
in rec
|
||||||
{
|
{
|
||||||
packages.x86_64-linux = rec
|
packages.x86_64-linux = rec
|
||||||
{
|
{
|
||||||
hpcstat = pkgs.pkgsStatic.stdenv.mkDerivation
|
hpcstat = pkgs.pkgsStatic.callPackage ./.
|
||||||
{
|
{ inherit (pkgs.pkgsStatic.localPackages) zxorm zpp-bits nameof; inherit openssh; standalone = true; };
|
||||||
name = "hpcstat";
|
|
||||||
src = ./.;
|
|
||||||
buildInputs = with pkgs.pkgsStatic;
|
|
||||||
[ boost fmt localPackages.zxorm nlohmann_json localPackages.zpp-bits range-v3 localPackages.nameof ];
|
|
||||||
nativeBuildInputs = with pkgs; [ cmake pkg-config ];
|
|
||||||
postInstall = "cp ${openssh}/bin/{ssh-add,ssh-keygen} $out/bin";
|
|
||||||
};
|
|
||||||
default = hpcstat;
|
default = hpcstat;
|
||||||
openssh = (pkgs.pkgsStatic.openssh.override { withLdns = false; etcDir = null; })
|
openssh = (pkgs.pkgsStatic.openssh.override { withLdns = false; etcDir = null; })
|
||||||
.overrideAttrs (prev: { doCheck = false; patches = prev.patches ++ [ ./openssh.patch ];});
|
.overrideAttrs (prev: { doCheck = false; patches = prev.patches ++ [ ./openssh.patch ];});
|
||||||
};
|
};
|
||||||
devShell.x86_64-linux = pkgs.mkShell
|
devShell.x86_64-linux = pkgs.mkShell
|
||||||
{
|
{
|
||||||
nativeBuildInputs = with pkgs; [ pkg-config cmake clang-tools_18 ];
|
inputsFrom = [ packages.x86_64-linux.hpcstat ];
|
||||||
buildInputs = (with pkgs.pkgsStatic;
|
nativeBuildInputs = with pkgs; [ clang-tools_18 ];
|
||||||
[ fmt boost localPackages.zxorm nlohmann_json localPackages.zpp-bits range-v3 localPackages.nameof ]);
|
|
||||||
# hardeningDisable = [ "all" ];
|
|
||||||
# NIX_DEBUG = "1";
|
|
||||||
CMAKE_EXPORT_COMPILE_COMMANDS = "1";
|
CMAKE_EXPORT_COMPILE_COMMANDS = "1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -15,5 +15,4 @@ namespace hpcstat::env
|
|||||||
}
|
}
|
||||||
else return value;
|
else return value;
|
||||||
}
|
}
|
||||||
// XDG_SESSION_ID HPCSTAT_SUBACCOUNT SSH_CONNECTION
|
|
||||||
}
|
}
|
||||||
|
16
src/ssh.cpp
16
src/ssh.cpp
@ -14,12 +14,12 @@ namespace hpcstat::ssh
|
|||||||
{
|
{
|
||||||
std::optional<std::string> fingerprint()
|
std::optional<std::string> fingerprint()
|
||||||
{
|
{
|
||||||
if (auto datadir = env::env("HPCSTAT_DATADIR", true); !datadir)
|
if (auto sharedir = env::env("HPCSTAT_SHAREDIR", true); !sharedir)
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
else if
|
else if
|
||||||
(
|
(
|
||||||
auto output =
|
auto output =
|
||||||
exec(std::filesystem::path(*datadir) / "ssh-add", { "-l" });
|
exec(std::filesystem::path(*sharedir) / "ssh-add", { "-l" });
|
||||||
!output
|
!output
|
||||||
)
|
)
|
||||||
{ std::cerr << "Failed to get ssh fingerprints\n"; return std::nullopt; }
|
{ std::cerr << "Failed to get ssh fingerprints\n"; return std::nullopt; }
|
||||||
@ -39,16 +39,16 @@ namespace hpcstat::ssh
|
|||||||
}
|
}
|
||||||
std::optional<std::string> sign(std::string message, std::string fingerprint)
|
std::optional<std::string> sign(std::string message, std::string fingerprint)
|
||||||
{
|
{
|
||||||
if (auto datadir = env::env("HPCSTAT_DATADIR", true); !datadir)
|
if (auto sharedir = env::env("HPCSTAT_SHAREDIR", true); !sharedir)
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
else if
|
else if
|
||||||
(
|
(
|
||||||
auto output = exec
|
auto output = exec
|
||||||
(
|
(
|
||||||
std::filesystem::path(*datadir) / "ssh-keygen",
|
std::filesystem::path(*sharedir) / "ssh-keygen",
|
||||||
{
|
{
|
||||||
"-Y", "sign", "-q",
|
"-Y", "sign", "-q",
|
||||||
"-f", fmt::format("{}/keys/{}", *datadir, Keys[fingerprint].PubkeyFilename),
|
"-f", fmt::format("{}/keys/{}", *sharedir, Keys[fingerprint].PubkeyFilename),
|
||||||
"-n", "hpcstat@chn.moe", "-"
|
"-n", "hpcstat@chn.moe", "-"
|
||||||
},
|
},
|
||||||
message
|
message
|
||||||
@ -60,7 +60,7 @@ namespace hpcstat::ssh
|
|||||||
}
|
}
|
||||||
bool verify(std::string message, std::string signature, std::string fingerprint)
|
bool verify(std::string message, std::string signature, std::string fingerprint)
|
||||||
{
|
{
|
||||||
if (auto datadir = env::env("HPCSTAT_DATADIR", true); !datadir)
|
if (auto sharedir = env::env("HPCSTAT_SHAREDIR", true); !sharedir)
|
||||||
return false;
|
return false;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -71,10 +71,10 @@ namespace hpcstat::ssh
|
|||||||
std::ofstream(signaturefile) << signature;
|
std::ofstream(signaturefile) << signature;
|
||||||
return exec
|
return exec
|
||||||
(
|
(
|
||||||
std::filesystem::path(*datadir) / "ssh-keygen",
|
std::filesystem::path(*sharedir) / "ssh-keygen",
|
||||||
{
|
{
|
||||||
"-Y", "verify",
|
"-Y", "verify",
|
||||||
"-f", fmt::format("{}/keys/{}", *datadir, Keys[fingerprint].PubkeyFilename),
|
"-f", fmt::format("{}/keys/{}", *sharedir, Keys[fingerprint].PubkeyFilename),
|
||||||
"-n", "hpcstat@chn.moe", "-s", signaturefile.string()
|
"-n", "hpcstat@chn.moe", "-s", signaturefile.string()
|
||||||
},
|
},
|
||||||
message
|
message
|
||||||
|
Loading…
Reference in New Issue
Block a user