নিক্স: হাস্কেল প্যাকেজ ইনস্টল করার সময় ইউনিট পরীক্ষাগুলি বাদ দেওয়া


9

আমি নিক্সকে আমার বাড়ির অধীনে প্যাকেজ ইনস্টল করতে ব্যবহার করছি (তাই বাইনারি প্যাকেজ নেই) সীমিত সংস্থান সহ একটি হোস্ট হোস্টে। আমি গিট-এনেক্স ইনস্টল করার চেষ্টা করছি। এর একটি নির্ভরতা, হ্যাস্কেল-লেন্স তৈরি করার সময়, ইউনিট পরীক্ষাগুলি এত বেশি মেমরি গ্রহণ করে যে তারা মারা যায় এবং ইনস্টলেশনটি ব্যর্থ হয়।

প্যাকেজ ইনস্টল করার জন্য ইউনিট পরীক্ষাগুলি এড়িয়ে যাওয়ার কোনও উপায় আছে কি? আমি ক্যাবাল নির্মাতার দিকে চেয়েছিলাম এবং haskell-packages.nixআমার কাছে মনে হচ্ছে enableCheckPhaseআপনি মিথ্যা হিসাবে সেট করে পরীক্ষাগুলি অক্ষম করতে পারেন । আমি নিম্নলিখিতটি চেষ্টা করেছিলাম ~/.nixpkgs/config.nix, কিন্তু পরীক্ষাগুলি এখনও চলছে:

{
    packageOverrides = pkgs: with pkgs; {
        # ...other customizations...
        haskellPackages = haskellPackages.override {
            extension = self : super : {
                self.lens = self.disableTest self.lens;
            };
        };
    };
}

উত্তর:


2

আমি আপনি ব্যবহার করার চেষ্টা দেখতে disableTestপাওয়া haskell-package.nixলেন্স প্যাকেজ থেকে সরান পরীক্ষামূলক করতে। কেন এটি আপনার প্রয়োজনগুলি পূরণ করছে না তা আপনাকে জানাতে আমার কিছু পরীক্ষা করতে হবে।

আমি সাধারণ অগ্রাহ্য এ অক্ষম পরীক্ষামূলক আছে cabalপ্যাকেজ config.nixথেকে cabalNoTest। এটি cabalটেস্টিং বন্ধ করে রেখে বাকি হ্যাশেল প্যাকেজগুলির দ্বারা ব্যবহৃত প্যাকেজটিকে ওভাররাইড করে ।

আমি সাধারণত এটি লিখি:

{
    packageOverrides = pkgs: with pkgs; {
        # ...other customizations...
        haskellPackages = haskellPackages.override {
            extension = self : super : {
                cabal = pkgs.haskellPackages.cabalNoTest;
            };
        };
    };
}

12

nixpkgsগ্রহণযোগ্য উত্তর পোস্ট হওয়ার পর থেকে পুনর্গঠিত জিনিসগুলি এবং পরীক্ষাগুলি অক্ষম করার জন্য একটি নতুন ফাংশন রয়েছে। আপনি এখন pkgs.haskell.lib.dontCheckপরীক্ষাগুলি অক্ষম করতে ফাংশনটির সাথে যে কোনও হাস্কেল প্যাকেজটি মুড়িয়ে দিন । এখানে আমার একটি হাস্কেল প্রকল্পের নিক্স এক্সপ্রেশনটির একটি উদাহরণ যেখানে shared-memoryওএস এক্স তৈরির সময় আমাকে নির্ভরতার জন্য পরীক্ষাগুলি অক্ষম করতে হয়েছিল :

{ pkgs ? import <nixpkgs> {}, compiler ? "ghc7103" }:
pkgs.haskell.packages.${compiler}.callPackage ./my-project.nix
    {   shared-memory =
            let shared-memory = pkgs.haskell.packages.${compiler}.shared-memory;
            in  if pkgs.stdenv.isDarwin
                then pkgs.haskell.lib.dontCheck shared-memory
                else shared-memory;
    }

nix-build --disable-check-phaseডেরাইভেশন / আউটপুট হ্যাশ পরিবর্তন না করে পরীক্ষামূলকভাবে (যেমন ইন্টারেক্টিভ ব্যবহারের দৃষ্টিভঙ্গি থেকে ) পরীক্ষামূলকভাবে অক্ষম করার কোনও উপায় আছে ?
সিএমসিডিগ্রাগনকাই

@ সিএমসিডিগ্রাগনকাই: আপনি হ্যাশ পরিবর্তন না করে পরীক্ষাগুলি অক্ষম করতে পারবেন না (স্থির আউটপুট ডেরাইভেশনগুলি যা ডিটারমিনিস্টিক বাইনারি আউটপুট রয়েছে ব্যতীত)। এমনকি যদি আপনি হ্যাশ পরিবর্তন করে ঠিকঠাক থাকেন তবে আমি জানি যে কমান্ড লাইনটি আমি জানি তার থেকে এটি করার কোনও প্রাকৃতিক উপায় নেই
গ্যাব্রিয়েল গনজালেজ

3

একটি ভিন্ন উত্তর থেকে আপনার উদ্বেগের সমাধান করার বিকল্প উত্তর হ'ল আরও শক্তিশালী মেশিনে পরীক্ষার মাধ্যমে আপনার প্যাকেজগুলি তৈরি করা। তারপরে প্রয়োজন হলে রিমোট হোস্টে ক্লোজারটি অনুলিপি করুন।

আপনি যদি একই আর্কিটেকচারে থাকেন এবং প্রশ্নে থাকা সফ্টওয়্যারটি এমন দুটি হার্ডওয়ারের সাথে শক্তভাবে মিলিত না হয় যা দুটি মেশিনে আলাদা।

নিক ম্যানুয়ালটিতে মেশিনগুলির মধ্যে কীভাবে প্যাকেজগুলি ভাগ করবেন সে সম্পর্কে পড়ুন ।

এটি দুর্দান্ত বৈশিষ্ট্য যা প্যাকেজ পরিচালনায় নিক্সের দৃষ্টিভঙ্গি সক্ষম করে। আমি এই বৈশিষ্ট্যটি প্রায়শই বিপরীতে ব্যবহার করি, আমার স্থানীয় মেশিনের জন্য প্রচুর পরিমাণে সফ্টওয়্যার তৈরি করতে আরও শক্তিশালী দূরবর্তী মেশিন ব্যবহার করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.