From bfd8b17879611c4456d88ee8ac2675ed12f49d73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8C=97=E9=9B=81=20Cryolitia?= Date: Mon, 22 Apr 2024 14:54:28 +0800 Subject: [PATCH] wehat-uos: link license to prevent being garbage collected Co-authored-by: Bu Kun <65808665+pokon548@users.noreply.github.com> --- pkgs/by-name/we/wechat-uos/package.nix | 35 ++++++++++++++++++++------ 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/pkgs/by-name/we/wechat-uos/package.nix b/pkgs/by-name/we/wechat-uos/package.nix index 7a8f806426ce..0fd6dbd8ea0b 100644 --- a/pkgs/by-name/we/wechat-uos/package.nix +++ b/pkgs/by-name/we/wechat-uos/package.nix @@ -60,11 +60,7 @@ └── uos └── .license.key */ - uosLicense ? requireFile { - name = "license.tar.gz"; - url = "https://www.uniontech.com"; - sha256 = "53760079c1a5b58f2fa3d5effe1ed35239590b288841d812229ef4e55b2dbd69"; - } + uosLicense ? null }: let wechat-uos-env = stdenvNoCC.mkDerivation { @@ -87,6 +83,30 @@ let preferLocalBuild = true; }; + uosLicenseUnzipped = stdenvNoCC.mkDerivation { + name = "uos-license-unzipped"; + src = + if uosLicense == null then + requireFile + { + name = "license.tar.gz"; + url = "https://www.uniontech.com"; + sha256 = "53760079c1a5b58f2fa3d5effe1ed35239590b288841d812229ef4e55b2dbd69"; + } else uosLicense; + + installPhase = '' + runHook preInstall + + mkdir -p $out + cp -r * $out/ + + runHook postInstall + ''; + outputHashAlgo = "sha256"; + outputHashMode = "recursive"; + outputHash = "sha256-pNftwtUZqBsKBSPQsEWlYLlb6h2Xd9j56ZRMi8I82ME="; + }; + wechat-uos-runtime = with xorg; [ stdenv.cc.cc stdenv.cc.libc @@ -195,11 +215,10 @@ let dpkg -x $src ./wechat-uos dpkg -x $uosSrc ./wechat-uos-old-source - tar -xvf $uosLicense - runHook postUnpack ''; + # Use ln for license to prevent being garbage collection installPhase = '' runHook preInstall mkdir -p $out @@ -207,7 +226,7 @@ let cp -r wechat-uos/* $out mkdir -pv $out/usr/lib/wechat-uos/license - cp -r license/* $out/usr/lib/wechat-uos/license + ln -s ${uosLicenseUnzipped}/* $out/usr/lib/wechat-uos/license/ cp -r wechat-uos-old-source/usr/lib/license/libuosdevicea.so $out/usr/lib/wechat-uos/license/ runHook postInstall