blackmagic-desktop-video: 14.4.1 -> 15.0, add updateScript (#418135)
This commit is contained in:
@@ -1,17 +1,20 @@
|
||||
{
|
||||
stdenv,
|
||||
cacert,
|
||||
curl,
|
||||
runCommandLocal,
|
||||
lib,
|
||||
autoPatchelfHook,
|
||||
libcxx,
|
||||
libGL,
|
||||
cacert,
|
||||
common-updater-scripts,
|
||||
curl,
|
||||
gcc,
|
||||
jq,
|
||||
lib,
|
||||
libGL,
|
||||
libcxx,
|
||||
runCommandLocal,
|
||||
stdenv,
|
||||
writeShellApplication,
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "blackmagic-desktop-video";
|
||||
version = "14.4.1a4";
|
||||
version = "15.0";
|
||||
|
||||
buildInputs = [
|
||||
autoPatchelfHook
|
||||
@@ -23,27 +26,23 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
# yes, the below download function is an absolute mess.
|
||||
# blame blackmagicdesign.
|
||||
src =
|
||||
let
|
||||
# from the URL the download page where you click the "only download" button is at
|
||||
REFERID = "5baba0af3eda41ee9cd0ec7349660d74";
|
||||
# from the URL that the POST happens to, see browser console
|
||||
DOWNLOADID = "bc31044728f146859c6d9e0ccef868d8";
|
||||
in
|
||||
runCommandLocal "${finalAttrs.pname}-${lib.versions.majorMinor finalAttrs.version}-src.tar.gz"
|
||||
{
|
||||
outputHashMode = "recursive";
|
||||
outputHashAlgo = "sha256";
|
||||
outputHash = "sha256-qh305s7u1yurv58TZnlONgDmWT4RXG3fXTfun382HAs=";
|
||||
outputHash = "sha256-+89enkB+Lxuzpkwwfy0y1NajNqx6QQfeVVrak4LgawQ=";
|
||||
|
||||
impureEnvVars = lib.fetchers.proxyImpureEnvVars;
|
||||
|
||||
nativeBuildInputs = [ curl ];
|
||||
nativeBuildInputs = [
|
||||
curl
|
||||
jq
|
||||
];
|
||||
|
||||
# ENV VARS
|
||||
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||
|
||||
inherit REFERID;
|
||||
SITEURL = "https://www.blackmagicdesign.com/api/register/us/download/${DOWNLOADID}";
|
||||
DOWNLOADSURL = "https://www.blackmagicdesign.com/api/support/us/downloads.json";
|
||||
|
||||
USERAGENT = builtins.concatStringsSep " " [
|
||||
"User-Agent: Mozilla/5.0 (X11; Linux ${stdenv.hostPlatform.linuxArch})"
|
||||
@@ -58,8 +57,24 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
"platform" = "Linux";
|
||||
"policy" = true;
|
||||
};
|
||||
|
||||
PRODUCT = "Desktop Video";
|
||||
VERSION = finalAttrs.version;
|
||||
}
|
||||
''
|
||||
DOWNLOADID=$(
|
||||
curl --silent --compressed "$DOWNLOADSURL" \
|
||||
| jq --raw-output '.downloads[] | .urls.Linux?[]? | select(.downloadTitle | test("^'"$PRODUCT $VERSION"'( Update)?$")) | .downloadId'
|
||||
)
|
||||
REFERID=$(
|
||||
curl --silent --compressed "$DOWNLOADSURL" \
|
||||
| jq --raw-output '.downloads[] | .urls.Linux?[]? | select(.downloadTitle | test("^'"$PRODUCT $VERSION"'( Update)?$")) | .releaseId'
|
||||
)
|
||||
echo "Download ID is $DOWNLOADID"
|
||||
echo "Refer ID is $REFERID"
|
||||
test -n "$REFERID"
|
||||
test -n "$DOWNLOADID"
|
||||
SITEURL="https://www.blackmagicdesign.com/api/register/us/download/$DOWNLOADID";
|
||||
RESOLVEURL=$(curl \
|
||||
-s \
|
||||
-H "$USERAGENT" \
|
||||
@@ -75,13 +90,30 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
> $out
|
||||
'';
|
||||
|
||||
passthru.updateScript = lib.getExe (writeShellApplication {
|
||||
# mostly stolen from pkgs/by-name/da/davinci-resolve/package.nix :)
|
||||
name = "update-blackmagic-desktop-video";
|
||||
runtimeInputs = [
|
||||
common-updater-scripts
|
||||
curl
|
||||
jq
|
||||
];
|
||||
text = ''
|
||||
set -o errexit
|
||||
downloadsJSON="$(curl --fail --silent https://www.blackmagicdesign.com/api/support/us/downloads.json)"
|
||||
latestLinuxVersion="$(echo "$downloadsJSON" | jq '[.downloads[] | select(.urls.Linux) | .urls.Linux[] | select(.downloadTitle | test("Desktop Video")) | .downloadTitle]' | grep -oP 'Desktop Video \K\d\d\.\d+(\.\d+)?' | sort | tail -n 1)"
|
||||
|
||||
update-source-version blackmagic-desktop-video "$latestLinuxVersion"
|
||||
'';
|
||||
});
|
||||
|
||||
postUnpack =
|
||||
let
|
||||
arch = stdenv.hostPlatform.uname.processor;
|
||||
in
|
||||
''
|
||||
tar xf Blackmagic_Desktop_Video_Linux_${lib.head (lib.splitString "a" finalAttrs.version)}/other/${arch}/desktopvideo-${finalAttrs.version}-${arch}.tar.gz
|
||||
unpacked=$NIX_BUILD_TOP/desktopvideo-${finalAttrs.version}-${stdenv.hostPlatform.uname.processor}
|
||||
tar xf Blackmagic_Desktop_Video_Linux_${finalAttrs.version}/other/${arch}/desktopvideo-${finalAttrs.version}*-${arch}.tar.gz
|
||||
unpacked=$NIX_BUILD_TOP/desktopvideo-${finalAttrs.version}*-${stdenv.hostPlatform.uname.processor}
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
diff --git a/blackmagic-io-14.4.1a4/bm_util.c b/blackmagic-io-14.4.1a4/bm_util.c
|
||||
index 66751cb..bf9723c 100644
|
||||
--- a/blackmagic-io-14.4.1a4/bm_util.c
|
||||
+++ b/blackmagic-io-14.4.1a4/bm_util.c
|
||||
@@ -471,10 +471,10 @@ void bm_timer_free(bm_timer_t* timer)
|
||||
{
|
||||
#if KERNEL_VERSION_OR_LATER(4, 15, 0)
|
||||
struct bm_timer_wrapper* timer_wrapper = container_of(timer, struct bm_timer_wrapper, timer);
|
||||
- del_timer(timer);
|
||||
+ timer_delete(timer);
|
||||
bm_kfree(timer_wrapper);
|
||||
#else
|
||||
- del_timer(timer);
|
||||
+ timer_delete(timer);
|
||||
bm_kfree(timer);
|
||||
#endif
|
||||
}
|
||||
@@ -491,7 +491,7 @@ void bm_timer_expire_at(bm_timer_t* timer, uint64_t ns)
|
||||
|
||||
void bm_timer_cancel(bm_timer_t* timer)
|
||||
{
|
||||
- del_timer_sync(timer);
|
||||
+ timer_delete_sync(timer);
|
||||
}
|
||||
|
||||
// Event waiting
|
||||
@@ -3,7 +3,6 @@
|
||||
lib,
|
||||
blackmagic-desktop-video,
|
||||
kernel,
|
||||
fetchpatch,
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "decklink";
|
||||
@@ -13,20 +12,6 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
# See pkgs/by-name/bl/blackmagic-desktop-video/package.nix for more.
|
||||
inherit (blackmagic-desktop-video) src version;
|
||||
|
||||
patches =
|
||||
(lib.optionals (lib.versionAtLeast kernel.modDirVersion "6.13") [
|
||||
# needed for version 14.4.x to build for kernel 6.13
|
||||
(fetchpatch {
|
||||
name = "01-update-makefiles";
|
||||
url = "https://aur.archlinux.org/cgit/aur.git/plain/01-update-makefiles.patch?h=decklink";
|
||||
hash = "sha256-l3iu0fG/QJMdGI/WSlNn+qjF4nK25JxoiwhPrMGTqE4=";
|
||||
})
|
||||
])
|
||||
++ (lib.optionals (lib.versionAtLeast kernel.modDirVersion "6.15") [
|
||||
# needed for version 14.4.x to build for kernel 6.15
|
||||
./02-rename-timer-delete.patch
|
||||
]);
|
||||
|
||||
KERNELDIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
|
||||
INSTALL_MOD_PATH = placeholder "out";
|
||||
|
||||
@@ -37,22 +22,24 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
arch = stdenv.hostPlatform.uname.processor;
|
||||
in
|
||||
''
|
||||
tar xf Blackmagic_Desktop_Video_Linux_${lib.head (lib.splitString "a" finalAttrs.version)}/other/${arch}/desktopvideo-${finalAttrs.version}-${arch}.tar.gz
|
||||
moduleRoot=$NIX_BUILD_TOP/desktopvideo-${finalAttrs.version}-${stdenv.hostPlatform.uname.processor}/usr/src
|
||||
tar xf Blackmagic_Desktop_Video_Linux_${finalAttrs.version}/other/${arch}/desktopvideo-${finalAttrs.version}*-${arch}.tar.gz
|
||||
bmVersion=$(ls -d $NIX_BUILD_TOP/desktopvideo-${finalAttrs.version}*-${arch}/usr/src | sed -e 's/.*desktopvideo-\([[:digit:]\.a-z]\+\).*/\1/')
|
||||
|
||||
moduleRoot=$NIX_BUILD_TOP/desktopvideo-$bmVersion-${arch}/usr/src
|
||||
sourceRoot=$moduleRoot
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
make -C $moduleRoot/blackmagic-${finalAttrs.version} -j$NIX_BUILD_CORES
|
||||
make -C $moduleRoot/blackmagic-io-${finalAttrs.version} -j$NIX_BUILD_CORES
|
||||
make -C $moduleRoot/blackmagic-$bmVersion -j$NIX_BUILD_CORES
|
||||
make -C $moduleRoot/blackmagic-io-$bmVersion -j$NIX_BUILD_CORES
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
make -C $KERNELDIR M=$moduleRoot/blackmagic-${finalAttrs.version} modules_install
|
||||
make -C $KERNELDIR M=$moduleRoot/blackmagic-io-${finalAttrs.version} modules_install
|
||||
make -C $KERNELDIR M=$moduleRoot/blackmagic-$bmVersion modules_install
|
||||
make -C $KERNELDIR M=$moduleRoot/blackmagic-io-$bmVersion modules_install
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user