From 85530bcc0b4c61499f90fa6125c19beeb0f4485e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 13 Jun 2018 18:04:22 +0200 Subject: [PATCH] nix: Remove special handling of .drv files This makes 'nix copy' and 'nix path-info' work on .drv store paths. Removing special treatment of .drv files seems the most future-proof approach given the possible removal of .drv files in the future. Note that 'nix build' will still build (rather than substitute) .drv paths due to the unfortunate overloading in Store::buildPaths(). --- src/nix/installables.cc | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/src/nix/installables.cc b/src/nix/installables.cc index a3fdd8a28..0be992b03 100644 --- a/src/nix/installables.cc +++ b/src/nix/installables.cc @@ -86,22 +86,6 @@ Buildable Installable::toBuildable() return std::move(buildables[0]); } -struct InstallableStoreDrv : Installable -{ - Path drvPath; - - InstallableStoreDrv(const Path & drvPath) : drvPath(drvPath) { } - - std::string what() override { return drvPath; } - - Buildables toBuildables() override - { - Buildable b = {drvPath}; - // FIXME: add outputs? - return {b}; - } -}; - struct InstallableStorePath : Installable { Path storePath; @@ -226,12 +210,8 @@ static std::vector> parseInstallables( auto path = store->toStorePath(store->followLinksToStore(s)); - if (store->isStorePath(path)) { - if (isDerivation(path)) - result.push_back(std::make_shared(path)); - else - result.push_back(std::make_shared(path)); - } + if (store->isStorePath(path)) + result.push_back(std::make_shared(path)); } else if (s == "" || std::regex_match(s, attrPathRegex))