Compare commits

...

6 commits

14 changed files with 452 additions and 107 deletions

View file

@ -1,49 +0,0 @@
From 624e2d79ce5a03bb60afd8e1293089dd61c60d52 Mon Sep 17 00:00:00 2001
From: Luke Granger-Brown <git@lukegb.com>
Date: Sun, 20 Oct 2024 16:12:10 +0100
Subject: [PATCH 1/2] [s3] remember compressed chunks when finalizing multipart
uploads
Any compressed chunks will forget that they're compressed when the
multipart upload is finalized. This breaks content readback if e.g. the
chunks are encrypted, because the sizes won't match the expectation.
---
weed/s3api/filer_multipart.go | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/weed/s3api/filer_multipart.go b/weed/s3api/filer_multipart.go
index 43f982897..76d27f460 100644
--- a/weed/s3api/filer_multipart.go
+++ b/weed/s3api/filer_multipart.go
@@ -5,9 +5,6 @@ import (
"encoding/hex"
"encoding/xml"
"fmt"
- "github.com/seaweedfs/seaweedfs/weed/s3api/s3_constants"
- "github.com/seaweedfs/seaweedfs/weed/stats"
- "golang.org/x/exp/slices"
"math"
"path/filepath"
"sort"
@@ -15,6 +12,10 @@ import (
"strings"
"time"
+ "github.com/seaweedfs/seaweedfs/weed/s3api/s3_constants"
+ "github.com/seaweedfs/seaweedfs/weed/stats"
+ "golang.org/x/exp/slices"
+
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/s3"
"github.com/google/uuid"
@@ -209,6 +210,7 @@ func (s3a *S3ApiServer) completeMultipartUpload(input *s3.CompleteMultipartUploa
ModifiedTsNs: chunk.ModifiedTsNs,
CipherKey: chunk.CipherKey,
ETag: chunk.ETag,
+ IsCompressed: chunk.IsCompressed,
}
finalParts = append(finalParts, p)
offset += int64(chunk.Size)
--
2.46.0

View file

@ -2,7 +2,6 @@
seaweedfs.overrideAttrs (_: _: { seaweedfs.overrideAttrs (_: _: {
patches = [ patches = [
./0001-s3-remember-compressed-chunks-when-finalizing-multip.patch
./0002-shell-add-fs.meta.edit-for-editing-a-filer-metadata-.patch ./0002-shell-add-fs.meta.edit-for-editing-a-filer-metadata-.patch
]; ];
}) })

View file

@ -52,6 +52,10 @@ in {
binfmt.emulatedSystems = [ "aarch64-linux" ]; binfmt.emulatedSystems = [ "aarch64-linux" ];
kernelParams = [ "amd_pstate=active" ]; kernelParams = [ "amd_pstate=active" ];
extraModulePackages = with config.boot.kernelPackages; [
ajantv2
];
} (lib.mkIf (lib.versionOlder config.boot.kernelPackages.kernel.version "6.8") { } (lib.mkIf (lib.versionOlder config.boot.kernelPackages.kernel.version "6.8") {
kernelParams = [ kernelParams = [
# Scatter/Gather causes display flickering # Scatter/Gather causes display flickering
@ -230,10 +234,11 @@ in {
}) })
efibootmgr efibootmgr
iw iw
obs-studio (obs-studio.override { ajaSupport = true; })
vulkan-tools vulkan-tools
depot.nix.pkgs.world-of-goo2 depot.nix.pkgs.world-of-goo2
yt-dlp yt-dlp
openterface-qt
]); ]);
}; };

View file

@ -0,0 +1,17 @@
{
"version": 3,
"configurePresets": [
{
"name": "nixpkgs-linux",
"displayName": "Nixpkgs (Linux)",
"inherits": ["ubuntu"],
"binaryDir": "${sourceDir}/build"
},
{
"name": "nixpkgs-darwin",
"displayName": "Nixpkgs (Darwin)",
"inherits": ["macos"],
"binaryDir": "${sourceDir}/build"
}
]
}

View file

@ -2,6 +2,7 @@
, uthash , uthash
, lib , lib
, stdenv , stdenv
, ninja
, nv-codec-headers-12 , nv-codec-headers-12
, fetchFromGitHub , fetchFromGitHub
, fetchpatch , fetchpatch
@ -51,6 +52,8 @@
, asio , asio
, decklinkSupport ? false , decklinkSupport ? false
, blackmagic-desktop-video , blackmagic-desktop-video
, ajaSupport ? false
, libajantv2
, libdatachannel , libdatachannel
, libvpl , libvpl
, qrcodegencpp , qrcodegencpp
@ -107,6 +110,7 @@ stdenv.mkDerivation (finalAttrs: {
nativeBuildInputs = [ nativeBuildInputs = [
addDriverRunpath addDriverRunpath
cmake cmake
ninja
pkg-config pkg-config
wrapGAppsHook3 wrapGAppsHook3
wrapQtAppsHook wrapQtAppsHook
@ -148,7 +152,8 @@ stdenv.mkDerivation (finalAttrs: {
++ optional alsaSupport alsa-lib ++ optional alsaSupport alsa-lib
++ optional pulseaudioSupport libpulseaudio ++ optional pulseaudioSupport libpulseaudio
++ optionals pipewireSupport [ pipewire libdrm ] ++ optionals pipewireSupport [ pipewire libdrm ]
++ optional withFdk fdk_aac; ++ optional withFdk fdk_aac
++ optional ajaSupport libajantv2;
# Copied from the obs-linuxbrowser # Copied from the obs-linuxbrowser
postUnpack = '' postUnpack = ''
@ -157,16 +162,22 @@ stdenv.mkDerivation (finalAttrs: {
ln -s $i cef/Release/ ln -s $i cef/Release/
ln -s $i cef/Resources/ ln -s $i cef/Resources/
done done
ln -s ${libcef}/lib/libcef.so cef/Release/ ln -s ${libcef}/lib/*.so* cef/Release/
ln -s ${libcef}/libexec/cef/chrome-sandbox cef/Release/
ln -s ${libcef}/lib/libcef_dll_wrapper.a cef/libcef_dll_wrapper/ ln -s ${libcef}/lib/libcef_dll_wrapper.a cef/libcef_dll_wrapper/
ln -s ${libcef}/include cef/ ln -s ${libcef}/include cef/
''; '';
postPatch = ''
cp ${./CMakeUserPresets.json} ./CMakeUserPresets.json
'';
cmakeFlags = [ cmakeFlags = [
"--preset" "nixpkgs-${if stdenv.hostPlatform.isDarwin then "darwin" else "linux"}"
"-DOBS_VERSION_OVERRIDE=${finalAttrs.version}" "-DOBS_VERSION_OVERRIDE=${finalAttrs.version}"
"-Wno-dev" # kill dev warnings that are useless for packaging "-Wno-dev" # kill dev warnings that are useless for packaging
# Add support for browser source # Add support for browser source
"-DBUILD_BROWSER=ON" "-DENABLE_BROWSER=ON"
"-DCEF_ROOT_DIR=../../cef" "-DCEF_ROOT_DIR=../../cef"
"-DENABLE_JACK=ON" "-DENABLE_JACK=ON"
(lib.cmakeBool "ENABLE_QSV11" stdenv.hostPlatform.isx86_64) (lib.cmakeBool "ENABLE_QSV11" stdenv.hostPlatform.isx86_64)
@ -174,7 +185,7 @@ stdenv.mkDerivation (finalAttrs: {
(lib.cmakeBool "ENABLE_ALSA" alsaSupport) (lib.cmakeBool "ENABLE_ALSA" alsaSupport)
(lib.cmakeBool "ENABLE_PULSEAUDIO" pulseaudioSupport) (lib.cmakeBool "ENABLE_PULSEAUDIO" pulseaudioSupport)
(lib.cmakeBool "ENABLE_PIPEWIRE" pipewireSupport) (lib.cmakeBool "ENABLE_PIPEWIRE" pipewireSupport)
(lib.cmakeBool "ENABLE_AJA" false) # TODO: fix linking against libajantv2 (lib.cmakeBool "ENABLE_AJA" ajaSupport)
]; ];
env.NIX_CFLAGS_COMPILE = toString [ env.NIX_CFLAGS_COMPILE = toString [
@ -193,8 +204,13 @@ stdenv.mkDerivation (finalAttrs: {
blackmagic-desktop-video blackmagic-desktop-video
]; ];
in '' in ''
# Remove libcef before patchelf, otherwise it will fail # Remove cef components before patchelf, otherwise it will fail
rm $out/lib/obs-plugins/libcef.so rm $out/lib/obs-plugins/libcef.so
rm $out/lib/obs-plugins/libEGL.so
rm $out/lib/obs-plugins/libGLESv2.so
rm $out/lib/obs-plugins/libvk_swiftshader.so
rm $out/lib/obs-plugins/libvulkan.so.1
rm $out/lib/obs-plugins/chrome-sandbox
qtWrapperArgs+=( qtWrapperArgs+=(
--prefix LD_LIBRARY_PATH : "$out/lib:${lib.makeLibraryPath wrapperLibraries}" --prefix LD_LIBRARY_PATH : "$out/lib:${lib.makeLibraryPath wrapperLibraries}"
@ -206,8 +222,9 @@ stdenv.mkDerivation (finalAttrs: {
addDriverRunpath $out/lib/lib*.so addDriverRunpath $out/lib/lib*.so
addDriverRunpath $out/lib/obs-plugins/*.so addDriverRunpath $out/lib/obs-plugins/*.so
# Link libcef again after patchelfing other libs # Link cef components again after patchelfing other libs
ln -s ${libcef}/lib/* $out/lib/obs-plugins/ ln -s ${libcef}/lib/* $out/lib/obs-plugins/
ln -s ${libcef}/libexec/cef/* $out/lib/obs-plugins/
''; '';
passthru.updateScript = nix-update-script { }; passthru.updateScript = nix-update-script { };

View file

@ -0,0 +1,126 @@
{
stdenvNoCC,
lib,
fetchzip,
dpkg,
patchelf,
buildFHSEnv,
writeShellScript,
makeBinaryWrapper,
}:
let
pname = "aja-desktop-software";
version = "17.1.3";
meta = {
description = "Graphical utilities for interacting with AJA desktop video cards";
homepage = "https://www.aja.com/products/aja-control-room";
license = lib.licenses.unfree; # https://www.aja.com/software-license-agreement
maintainers = [ lib.maintainers.lukegb ];
platforms = [ "x86_64-linux" ];
sourceProvenance = [
lib.sourceTypes.binaryNativeCode
lib.sourceTypes.binaryFirmware
];
};
unwrapped = stdenvNoCC.mkDerivation {
pname = "${pname}-unwrapped";
inherit version;
src = fetchzip {
url = "https://www.aja.com/assets/support/files/9895/en/AJA-Desktop-Software-Installer_Linux-Ubuntu_v${version}_Release.zip";
hash = "sha256-TxDcYIhEcpPnpoqpey5vSvUltLT/3xwBfOhAP81Q9+E=";
};
unpackCmd = "dpkg -x $curSrc/ajaretail_*.deb source";
nativeBuildInputs = [
dpkg
patchelf
];
installPhase = ''
runHook preInstall
mkdir -p $out/share
mv usr/share/applications $out/share/applications
mv usr/share/doc $out/share/doc
mv etc $out/etc
mv opt $out/opt
ln -s $out/opt/aja/bin $out/bin
# For some reason ajanmos doesn't have /opt/aja/lib in its rpath...
patchelf $out/opt/aja/bin/ajanmos --add-rpath $out/opt/aja/lib
runHook postInstall
'';
dontPatchELF = true;
inherit meta;
};
in
buildFHSEnv {
inherit pname version;
targetPkgs =
pkgs:
[ unwrapped ]
++ (with pkgs; [
ocl-icd
libGL
udev
libpulseaudio
zstd
glib
fontconfig
freetype
xorg.libxcb
xorg.libX11
xorg.xcbutilwm
xorg.xcbutilimage
xorg.xcbutilkeysyms
xorg.xcbutilrenderutil
xorg.libSM
xorg.libICE
libxkbcommon
dbus
avahi
]);
nativeBuildInputs = [
makeBinaryWrapper
];
unshareIpc = false;
unsharePid = false;
runScript = writeShellScript "aja" ''
exec_binary="$1"
shift
export QT_PLUGIN_PATH="${unwrapped}/opt/aja/plugins"
exec "${unwrapped}/opt/aja/bin/$exec_binary" "$@"
'';
extraInstallCommands = ''
mkdir -p $out/libexec/aja-desktop
mv $out/bin/${pname} $out/libexec/aja-desktop/${pname}
for binary in controlpanel controlroom ajanmos systemtest; do
makeWrapper "$out/libexec/aja-desktop/${pname}" "$out/bin/aja-$binary" \
--add-flags "$binary"
done
'';
passthru = {
inherit unwrapped;
};
meta = meta // {
mainProgram = "aja-controlpanel";
};
}

View file

@ -3,38 +3,37 @@
"alpha": { "alpha": {
"experimental": { "experimental": {
"candidateHashFilenames": [ "candidateHashFilenames": [
"factorio_linux_2.0.25.tar.xz" "factorio_linux_2.0.28.tar.xz"
], ],
"name": "factorio_alpha_x64-2.0.25.tar.xz", "name": "factorio_alpha_x64-2.0.28.tar.xz",
"needsAuth": true, "needsAuth": true,
"sha256": "0a27de7e3285f60bc418c5dea93268f08079b90e5fe06fd58d2c138ad7e7a10c", "sha256": "d3acf17e4ca56e3332e920a015d5ca53aea73088460c8b2f67e04b04e7b912bb",
"tarDirectory": "x64", "tarDirectory": "x64",
"url": "https://factorio.com/get-download/2.0.25/alpha/linux64", "url": "https://factorio.com/get-download/2.0.28/alpha/linux64",
"version": "2.0.25" "version": "2.0.28"
}, },
"stable": { "stable": {
"candidateHashFilenames": [ "candidateHashFilenames": [
"factorio_linux_2.0.23.tar.xz" "factorio_linux_2.0.28.tar.xz"
], ],
"name": "factorio_alpha_x64-2.0.23.tar.xz", "name": "factorio_alpha_x64-2.0.28.tar.xz",
"needsAuth": true, "needsAuth": true,
"sha256": "3a3f27a5364d33896c8b35d352d0d2d6086b4ba98627eda71b26e57127309bfb", "sha256": "d3acf17e4ca56e3332e920a015d5ca53aea73088460c8b2f67e04b04e7b912bb",
"tarDirectory": "x64", "tarDirectory": "x64",
"url": "https://factorio.com/get-download/2.0.23/alpha/linux64", "url": "https://factorio.com/get-download/2.0.28/alpha/linux64",
"version": "2.0.23" "version": "2.0.28"
} }
}, },
"demo": { "demo": {
"experimental": { "experimental": {
"candidateHashFilenames": [ "candidateHashFilenames": [
"factorio_demo_x64_1.1.110.tar.xz" "factorio_demo_x64_2.0.27.tar.xz"
], ],
"name": "factorio_demo_x64-1.1.110.tar.xz", "name": "factorio_demo_x64-2.0.27.tar.xz",
"needsAuth": false, "needsAuth": false,
"sha256": "bddb91dcba9f300c25d590f861772eaf41f0b6ce8ae6b754de00d0e5f3eb5a35",
"tarDirectory": "x64", "tarDirectory": "x64",
"url": "https://factorio.com/get-download/1.1.110/demo/linux64", "url": "https://factorio.com/get-download/2.0.27/demo/linux64",
"version": "1.1.110" "version": "2.0.27"
}, },
"stable": { "stable": {
"candidateHashFilenames": [ "candidateHashFilenames": [
@ -51,51 +50,51 @@
"expansion": { "expansion": {
"experimental": { "experimental": {
"candidateHashFilenames": [ "candidateHashFilenames": [
"factorio-space-age_linux_2.0.25.tar.xz" "factorio-space-age_linux_2.0.28.tar.xz"
], ],
"name": "factorio_expansion_x64-2.0.25.tar.xz", "name": "factorio_expansion_x64-2.0.28.tar.xz",
"needsAuth": true, "needsAuth": true,
"sha256": "725468f35995a6e5493d83d2596ca3f40e5f30c6ce4293c4418c568982b6a0aa", "sha256": "e3eee33c439abaffa305dd5c86edea97fbaa2a2b34c368cae3595c1d5d22739e",
"tarDirectory": "x64", "tarDirectory": "x64",
"url": "https://factorio.com/get-download/2.0.25/expansion/linux64", "url": "https://factorio.com/get-download/2.0.28/expansion/linux64",
"version": "2.0.25" "version": "2.0.28"
}, },
"stable": { "stable": {
"candidateHashFilenames": [ "candidateHashFilenames": [
"factorio-space-age_linux_2.0.23.tar.xz" "factorio-space-age_linux_2.0.28.tar.xz"
], ],
"name": "factorio_expansion_x64-2.0.23.tar.xz", "name": "factorio_expansion_x64-2.0.28.tar.xz",
"needsAuth": true, "needsAuth": true,
"sha256": "8c6bb2c3afd198b8d5e1042f2babcb2db2d55645d1e84d9cfbba77cd83ae9e6a", "sha256": "e3eee33c439abaffa305dd5c86edea97fbaa2a2b34c368cae3595c1d5d22739e",
"tarDirectory": "x64", "tarDirectory": "x64",
"url": "https://factorio.com/get-download/2.0.23/expansion/linux64", "url": "https://factorio.com/get-download/2.0.28/expansion/linux64",
"version": "2.0.23" "version": "2.0.28"
} }
}, },
"headless": { "headless": {
"experimental": { "experimental": {
"candidateHashFilenames": [ "candidateHashFilenames": [
"factorio-headless_linux_2.0.25.tar.xz", "factorio-headless_linux_2.0.28.tar.xz",
"factorio_headless_x64_2.0.25.tar.xz" "factorio_headless_x64_2.0.28.tar.xz"
], ],
"name": "factorio_headless_x64-2.0.25.tar.xz", "name": "factorio_headless_x64-2.0.28.tar.xz",
"needsAuth": false, "needsAuth": false,
"sha256": "0d1698f1f29759ff27faa6a5d9c3804377cb1767f2692003a8e9d4c294845e5a", "sha256": "ea9937b6adc7a18e17a4e1e64992ec389407497b36e68280bb14fcdd4c884dd3",
"tarDirectory": "x64", "tarDirectory": "x64",
"url": "https://factorio.com/get-download/2.0.25/headless/linux64", "url": "https://factorio.com/get-download/2.0.28/headless/linux64",
"version": "2.0.25" "version": "2.0.28"
}, },
"stable": { "stable": {
"candidateHashFilenames": [ "candidateHashFilenames": [
"factorio-headless_linux_2.0.23.tar.xz", "factorio-headless_linux_2.0.28.tar.xz",
"factorio_headless_x64_2.0.23.tar.xz" "factorio_headless_x64_2.0.28.tar.xz"
], ],
"name": "factorio_headless_x64-2.0.23.tar.xz", "name": "factorio_headless_x64-2.0.28.tar.xz",
"needsAuth": false, "needsAuth": false,
"sha256": "e819fc9ad6df061bf9d4bffc91988dd18d0e3982c8b1c22c0525d78bda3ef216", "sha256": "ea9937b6adc7a18e17a4e1e64992ec389407497b36e68280bb14fcdd4c884dd3",
"tarDirectory": "x64", "tarDirectory": "x64",
"url": "https://factorio.com/get-download/2.0.23/headless/linux64", "url": "https://factorio.com/get-download/2.0.28/headless/linux64",
"version": "2.0.23" "version": "2.0.28"
} }
} }
} }

View file

@ -0,0 +1,13 @@
diff --git a/ajantv2/src/ntv2devicescanner.cpp b/ajantv2/src/ntv2devicescanner.cpp
index 448e48d372..6b46f9f69d 100644
--- a/ajantv2/src/ntv2devicescanner.cpp
+++ b/ajantv2/src/ntv2devicescanner.cpp
@@ -137,7 +137,7 @@
}
#endif // !defined(NTV2_DEPRECATE_16_3)
-NTV2DeviceInfoList GetDeviceInfoList (void)
+NTV2DeviceInfoList CNTV2DeviceScanner::GetDeviceInfoList (void)
{
AJAAutoLock tmpLock(&sDevInfoListLock);
return sDevInfoList;

View file

@ -5,21 +5,25 @@
cmake, cmake,
ninja, ninja,
pkg-config, pkg-config,
mbedtls,
udev,
linuxPackages,
}: }:
# Warning: We are aware that the upstream changed and there are new releases,
# this got initally packaged for obs-studio which appears to fail to build even upstream with the new version.
# https://github.com/NixOS/nixpkgs/pull/296191 / https://github.com/obsproject/obs-studio/pull/10037
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "libajantv2"; pname = "libajantv2";
version = "16.2-bugfix5"; version = "17.1.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "aja-video"; owner = "aja-video";
repo = "ntv2"; repo = "libajantv2";
rev = "v${version}"; rev = "ntv2_${builtins.replaceStrings [ "." ] [ "_" ] version}";
sha256 = "sha256-h5PKWMwqTeI5/EaTWkjYojuvDU0FyMpzIjWB98UOJwc="; hash = "sha256-n9j98r1E9E0hv5gA8jCg/eQyqGuyU9JlZYm/zlcTQOo=";
}; };
patches = [
./use-system-mbedtls.patch
./device-info-list.patch
];
outputs = [ outputs = [
"out" "out"
@ -31,27 +35,39 @@ stdenv.mkDerivation rec {
ninja ninja
pkg-config pkg-config
]; ];
buildInputs = [
mbedtls
udev
];
cmakeFlags = [
(lib.cmakeBool "AJANTV2_BUILD_SHARED" true)
];
postInstall = '' postInstall = ''
mkdir -p "$out/lib/pkgconfig" mkdir -p "$out/lib/pkgconfig"
cat >"$out/lib/pkgconfig/libajantv2.pc" <<EOF cat >"$out/lib/pkgconfig/libajantv2.pc" <<EOF
prefix=$out prefix=$out
libdir=\''${prefix}/lib libdir=\''${prefix}/lib
includedir=\''${prefix}/include/ajalibraries includedir=\''${prefix}/include/libajantv2
Name: libajantv2 Name: libajantv2
Description: Library for controlling AJA NTV2 video devices Description: Library for controlling AJA NTV2 video devices
Version: ${version} Version: ${version}
Libs: -L\''${libdir} -lajantv2 Libs: -L\''${libdir} -lajantv2
Cflags: -I\''${includedir} -I\''${includedir}/ajantv2/includes Cflags: -I\''${includedir} -I\''${includedir}/ajantv2/includes -I\''${includedir}/ajantv2/src/lin
EOF EOF
''; '';
passthru.tests = {
inherit (linuxPackages) ajantv2;
};
meta = with lib; { meta = with lib; {
description = "AJA NTV2 Open Source Static Libs and Headers for building applications that only wish to statically link against"; description = "AJA NTV2 Open Source Static Libs and Headers for building applications that only wish to statically link against";
homepage = "https://github.com/aja-video/ntv2"; homepage = "https://github.com/aja-video/libajantv2";
license = with licenses; [ mit ]; license = with licenses; [ mit ];
maintainers = [ ]; maintainers = [ lib.maintainers.lukegb ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View file

@ -0,0 +1,86 @@
Commit ID: 1aeee534119a22e717ce3d0e9f62c8791cd825b9
Change ID: pzyrusopmyvtvnwnruvrltqtpqtzxrpo
Author: Luke Granger-Brown <git@lukegb.com> (2024-12-20 18:03:16)
Committer: Luke Granger-Brown <git@lukegb.com> (2024-12-20 18:03:25)
Use system mbedtls, rather than downloading from a random Git branch...
diff --git a/ajantv2/CMakeLists.txt b/ajantv2/CMakeLists.txt
index ffa572e9c8..74c23e8e4e 100644
--- a/ajantv2/CMakeLists.txt
+++ b/ajantv2/CMakeLists.txt
@@ -52,49 +52,13 @@
else()
message(STATUS "NTV2 SDK will load signed 3rd-party plugins")
- set(MBEDTLS_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/mbedtls-install)
- set(MBEDTLS_INCLUDE_DIR ${MBEDTLS_INSTALL_DIR}/include)
- set(MBEDTLS_LIBRARY_DIR ${MBEDTLS_INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR})
-
- if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
- set(MBEDTLS_LIBRARY ${MBEDTLS_LIBRARY_DIR}/mbedtls.lib)
- set(MBEDX509_LIBRARY ${MBEDTLS_LIBRARY_DIR}/mbedx509.lib)
- set(MBEDCRYPTO_LIBRARY ${MBEDTLS_LIBRARY_DIR}/mbedcrypto.lib)
- set(MBEDTLS_EXTRA_CONFIG_FLAGS
- "-DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON"
- "-DMSVC_STATIC_RUNTIME=ON"
- "-DCMAKE_MSVC_RUNTIME_LIBRARY=${CMAKE_MSVC_RUNTIME_LIBRARY}")
- elseif (CMAKE_SYSTEM_NAME MATCHES "^(Linux|Darwin)$")
- set(MBEDTLS_LIBRARY ${MBEDTLS_LIBRARY_DIR}/libmbedtls.a)
- set(MBEDX509_LIBRARY ${MBEDTLS_LIBRARY_DIR}/libmbedx509.a)
- set(MBEDCRYPTO_LIBRARY ${MBEDTLS_LIBRARY_DIR}/libmbedcrypto.a)
- set(MBEDTLS_C_FLAGS -fPIC)
- endif()
-
- # BUILD_BYPRODUCTS informing CMake where the .a files are located is required to make Ninja build work
- ExternalProject_Add(
- mbedtls
- GIT_REPOSITORY https://github.com/aja-video/mbedtls.git
- GIT_TAG fix-win-dll-cmake
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${MBEDTLS_INSTALL_DIR}
- -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
- -DENABLE_TESTING=OFF
- -DENABLE_PROGRAMS=OFF
- -DCMAKE_C_FLAGS=${MBEDTLS_C_FLAGS}
- -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}
- -DUSE_STATIC_MBEDTLS_LIBRARY=ON
- -DUSE_SHARED_MBEDTLS_LIBRARY=OFF
- ${MBEDTLS_EXTRA_CONFIG_FLAGS}
- BUILD_ALWAYS TRUE
- BUILD_BYPRODUCTS ${MBEDTLS_LIBRARY} ${MBEDX509_LIBRARY} ${MBEDCRYPTO_LIBRARY}
- )
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(MBEDTLS REQUIRED mbedtls mbedcrypto mbedx509)
list(APPEND TARGET_INCLUDE_DIRS
${MBEDTLS_INCLUDE_DIR})
list(APPEND MBEDTLS_LINK_LIBS
- ${MBEDTLS_LIBRARY}
- ${MBEDCRYPTO_LIBRARY}
- ${MBEDX509_LIBRARY})
+ ${MBEDTLS_LIBRARIES})
endif()
@@ -668,10 +632,6 @@
aja_ntv2_log_build_info()
add_library(${PROJECT_NAME} SHARED ${TARGET_SOURCES})
-
- if (NOT AJANTV2_DISABLE_PLUGIN_LOAD)
- add_dependencies(${PROJECT_NAME} mbedtls)
- endif()
target_compile_definitions(${PROJECT_NAME} PUBLIC
${TARGET_COMPILE_DEFS_DYNAMIC}
@@ -687,10 +647,6 @@
add_library(${PROJECT_NAME} STATIC ${TARGET_SOURCES})
- if (NOT AJANTV2_DISABLE_PLUGIN_LOAD)
- add_dependencies(${PROJECT_NAME} mbedtls)
- endif()
-
target_compile_definitions(${PROJECT_NAME} PUBLIC
${TARGET_COMPILE_DEFS_STATIC}
${AJANTV2_TARGET_COMPILE_DEFS})

View file

@ -0,0 +1,68 @@
{
lib,
stdenv,
makeDesktopItem,
copyDesktopItems,
fetchFromGitHub,
qt6,
libusb1,
}:
let
version = "0.0.5";
description = "Openterface mini-KVM host application for linux";
in
stdenv.mkDerivation {
pname = "openterface-qt";
inherit version;
src = fetchFromGitHub {
owner = "TechxArtisanStudio";
repo = "Openterface_QT";
rev = "v${version}";
hash = "sha256-pe7idedtlxGGlNUvXQjIF57m2wW+WlWVM0BYOR+CxBU=";
};
nativeBuildInputs = [
copyDesktopItems
qt6.wrapQtAppsHook
];
buildInputs = [
libusb1
qt6.qtbase
qt6.qtmultimedia
qt6.qtserialport
qt6.qtsvg
qt6.qmake
];
enableParallelBuilding = true;
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp ./openterfaceQT $out/bin/
mkdir -p $out/share/pixmaps
cp images/icon_256.png $out/share/pixmaps/openterfaceQT.png
runHook postInstall
'';
desktopItems = [
(makeDesktopItem {
name = "openterfaceQT";
exec = "openterfaceQT";
icon = "openterfaceQT";
comment = description;
desktopName = "Openterface QT";
categories = [ "Utility" ];
})
];
meta = {
inherit description;
homepage = "https://github.com/TechxArtisanStudio/Openterface_QT";
license = lib.licenses.agpl3Only;
mainProgram = "openterfaceQT";
maintainers = with lib.maintainers; [ samw ];
platforms = lib.platforms.linux;
};
}

View file

@ -93,15 +93,20 @@ stdenv.mkDerivation rec {
dontPatchELF = true; dontPatchELF = true;
installPhase = '' installPhase = ''
mkdir -p $out/lib/ $out/share/cef/ mkdir -p $out/lib/ $out/share/cef/ $out/libexec/cef/
cp libcef_dll_wrapper/libcef_dll_wrapper.a $out/lib/ cp libcef_dll_wrapper/libcef_dll_wrapper.a $out/lib/
cp ../Release/libcef.so $out/lib/ cp ../Release/libcef.so $out/lib/
cp ../Release/libEGL.so $out/lib/ cp ../Release/libEGL.so $out/lib/
cp ../Release/libGLESv2.so $out/lib/ cp ../Release/libGLESv2.so $out/lib/
cp ../Release/libvk_swiftshader.so $out/lib/
cp ../Release/libvulkan.so.1 $out/lib/
cp ../Release/chrome-sandbox $out/libexec/cef/
patchelf --set-rpath "${rpath}" $out/lib/libcef.so patchelf --set-rpath "${rpath}" $out/lib/libcef.so
patchelf --set-rpath "${gl_rpath}" $out/lib/libEGL.so patchelf --set-rpath "${gl_rpath}" $out/lib/libEGL.so
patchelf --set-rpath "${gl_rpath}" $out/lib/libGLESv2.so patchelf --set-rpath "${gl_rpath}" $out/lib/libGLESv2.so
cp ../Release/*.bin $out/share/cef/ patchelf --set-rpath "${gl_rpath}" $out/lib/libvk_swiftshader.so
patchelf --set-rpath "${gl_rpath}" $out/lib/libvulkan.so.1
cp ../Release/*.bin ../Release/*.json $out/share/cef/
cp -r ../Resources/* $out/share/cef/ cp -r ../Resources/* $out/share/cef/
cp -r ../include $out/ cp -r ../include $out/
''; '';

View file

@ -0,0 +1,41 @@
{
lib,
stdenv,
fetchFromGitHub,
kernel,
libajantv2,
}:
stdenv.mkDerivation {
name = "ajantv2-module-${libajantv2.version}-${kernel.version}";
inherit (libajantv2) src;
sourceRoot = "source/driver/linux";
hardeningDisable = [ "pic" ];
nativeBuildInputs = kernel.moduleBuildDependencies;
preBuild = ''
chmod -R +w ../../
'';
enableParallelBuilding = true;
buildFlags = [
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
];
installPhase = ''
install -D ajantv2.ko $out/lib/modules/${kernel.modDirVersion}/misc/ajantv2.ko
install -D ajardma.ko $out/lib/modules/${kernel.modDirVersion}/misc/ajardma.ko
'';
meta = {
inherit (libajantv2.meta) license homepage maintainers;
platforms = [
"x86_64-linux"
"aarch64-linux"
];
description = "AJA video driver";
};
}

View file

@ -321,6 +321,8 @@ in {
acpi_call = callPackage ../os-specific/linux/acpi-call {}; acpi_call = callPackage ../os-specific/linux/acpi-call {};
ajantv2 = callPackage ../os-specific/linux/ajantv2 { };
akvcam = callPackage ../os-specific/linux/akvcam { }; akvcam = callPackage ../os-specific/linux/akvcam { };
amneziawg = callPackage ../os-specific/linux/amneziawg { }; amneziawg = callPackage ../os-specific/linux/amneziawg { };