versionCheckHook
این قلاب یک versionCheckPhase به preInstallCheckHooks اضافه میکند که برنامه اصلی derivation را با آرگومان --help یا --version اجرا کرده و بررسی میکند که رشته $در آن خروجی یافت شود. اگر این بررسی شکست بخورد، کل ساخت با شکست مواجه خواهد شد. (یک گزینه ملایمتر testers.testVersion است.)
نحوه استفاده از آن به این صورت است:
{
lib,
stdenv,
versionCheckHook,
# ...
}:
stdenv.mkDerivation (finalAttrs: {
# ...
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
# ...
}) توجه داشته باشید که برای buildPythonPackage و buildPythonApplication، doInstallCheck به طور پیشفرض فعال است.
این کار در یک محیط تمیز (با استفاده از env --ignore-environment) انجام میشود و خروجیهای stdout و stderr دستور را برای یافتن رشته $بررسی میکند. خروجی دریافتشده را در لاگ ساخت به شما گزارش میدهد و اگر نتواند$را پیدا کند، ساخت با شکست مواجه خواهد شد.
متغیرهایی که این فاز کنترل میکند عبارتاند از:
-dontVersionCheck: افزودن این قلاب به preInstallCheckHooks را غیرفعال میکند. زمانی مفید است که بخواهید توابع Bash قلاب را بارگذاری کنید، اما آنها را به شیوهٔ دیگری اجرا نمایید.
versionCheckProgram: مسیر کامل برنامهای که باید رشته$را چاپ کند. به طور پیشفرض به ترتیب از اولین مقدار غیرخالی$binaryدر میان$و$استفاده میکند تا تقریباً${'{'}'{'{'}'{'}'}placeholder "out"{'{'}'{'}'}'{'}'}/bin/$binaryرا بسازد. مقدار$ازmeta.mainProgramمیآید و معمولاً نیازی نیست به طور صریح تنظیم شود. هنگام تنظیمversionCheckProgram، استفاده مستقیم از$outکار نخواهد کرد، زیرا متغیرهای محیطی از این متغیر توسط قلاب بازگشایی نمیشوند. بنابراین استفاده ازplaceholder "out"اجتانبناپذیر است.versionCheckProgramArg: آرگومانی که باید بهversionCheckProgramپاس داده شود. در صورت تعریفنشدن، قلاب ابتدا--versionو سپس--helpرا امتحان میکند. مثالها:version،-V،-v.versionCheckKeepEnvironment: فهرستی از متغیرهای محیطی برای حفظ و پاس دادن به دستور. تنها متغیرهایی باید به این فهرست اضافه شوند که واقعاً برای کارکرد دستور نسخه مورد نیاز هستند. اگر امکانپذیر نیست که همه این متغیرهای محیطی را به طور صریح فهرست کنید، میتوانید این پارامتر را روی مقدار خاص"*"تنظیم کنید تا پرچم--ignore-environmentغیرفعال شده و در نتیجه تمام متغیرهای محیطی حفظ شوند.preVersionCheck: قلابی که پیش از انجام بررسی اجرا میشود.postVersionCheck: قلابی که پس از انجام بررسی اجرا میشود.
این بررسی فرض میکند که فایل اجرایی خودکفا (hermetic) است. اگر متغیرهای محیطی مانند PATH یا HOME برای کارکرد برنامه مورد نیاز باشند، در حال حاضر testers.testVersion جایگزین بهتری است.