diff options
Diffstat (limited to 'src/libexpr')
-rw-r--r-- | src/libexpr/Makefile.am | 9 | ||||
-rw-r--r-- | src/libexpr/main.cc | 117 | ||||
-rw-r--r-- | src/libexpr/parser.cc | 4 |
3 files changed, 4 insertions, 126 deletions
diff --git a/src/libexpr/Makefile.am b/src/libexpr/Makefile.am index 6fe798501..71c1f89f1 100644 --- a/src/libexpr/Makefile.am +++ b/src/libexpr/Makefile.am @@ -1,12 +1,9 @@ -bin_PROGRAMS = nix-instantiate +noinst_LIBRARIES = libexpr.a -nix_instantiate_SOURCES = nixexpr.cc parser.cc eval.cc primops.cc main.cc -nix_instantiate_LDADD = ../libmain/libmain.a ../libstore/libstore.a ../libutil/libutil.a \ - ../boost/format/libformat.a -L../../externals/inst/lib -ldb_cxx \ - -lsglr -lATB -lconversion -lasfix2 -lmept -lATerm +libexpr_a_SOURCES = nixexpr.cc parser.cc eval.cc primops.cc AM_CXXFLAGS = \ - -I.. -I../../externals/inst/include -I../libutil -I../libstore -I../libmain + -I.. -I../../externals/inst/include -I../libutil -I../libstore # Parse table generation. diff --git a/src/libexpr/main.cc b/src/libexpr/main.cc deleted file mode 100644 index aa6883ff8..000000000 --- a/src/libexpr/main.cc +++ /dev/null @@ -1,117 +0,0 @@ -#include <map> -#include <iostream> - -#include "globals.hh" -#include "normalise.hh" -#include "shared.hh" -#include "eval.hh" - - -#if 0 -static Path searchPath(const Paths & searchDirs, const Path & relPath) -{ - if (string(relPath, 0, 1) == "/") return relPath; - - for (Paths::const_iterator i = searchDirs.begin(); - i != searchDirs.end(); i++) - { - Path path = *i + "/" + relPath; - if (pathExists(path)) return path; - } - - throw Error( - format("path `%1%' not found in any of the search directories") - % relPath); -} -#endif - - -static Expr evalStdin(EvalState & state) -{ - startNest(nest, lvlTalkative, format("evaluating standard input")); - Expr e = ATreadFromFile(stdin); - if (!e) - throw Error(format("unable to read a term from stdin")); - return evalExpr(state, e); -} - - -static void printNixExpr(EvalState & state, Expr e) -{ - ATMatcher m; - ATermList es; - - if (atMatch(m, e) >> "Attrs" >> es) { - Expr a = queryAttr(e, "type"); - if (a && evalString(state, a) == "derivation") { - a = queryAttr(e, "drvPath"); - if (a) { - cout << format("%1%\n") % evalPath(state, a); - return; - } - } - } - - if (ATgetType(e) == AT_LIST) { - for (ATermIterator i((ATermList) e); i; ++i) - printNixExpr(state, evalExpr(state, *i)); - return; - } - - throw badTerm("top level does not evaluate to one or more Nix expressions", e); -} - - -void run(Strings args) -{ - EvalState state; - Strings files; - bool readStdin = false; - -#if 0 - state.searchDirs.push_back("."); - state.searchDirs.push_back(nixDataDir + "/nix"); -#endif - - for (Strings::iterator it = args.begin(); - it != args.end(); ) - { - string arg = *it++; - -#if 0 - if (arg == "--includedir" || arg == "-I") { - if (it == args.end()) - throw UsageError(format("argument required in `%1%'") % arg); - state.searchDirs.push_back(*it++); - } - else -#endif - if (arg == "--verbose" || arg == "-v") - verbosity = (Verbosity) ((int) verbosity + 1); - else if (arg == "-") - readStdin = true; - else if (arg[0] == '-') - throw UsageError(format("unknown flag `%1%`") % arg); - else - files.push_back(arg); - } - - openDB(); - - if (readStdin) { - Expr e = evalStdin(state); - printNixExpr(state, e); - } - - for (Strings::iterator it = files.begin(); - it != files.end(); it++) - { - Expr e = evalFile(state, absPath(*it)); - printNixExpr(state, e); - } - - printEvalStats(state); -} - - -string programId = "nix-instantiate"; diff --git a/src/libexpr/parser.cc b/src/libexpr/parser.cc index b2c74af33..22d76c263 100644 --- a/src/libexpr/parser.cc +++ b/src/libexpr/parser.cc @@ -12,7 +12,6 @@ extern "C" { #include "aterm.hh" #include "parser.hh" -#include "shared.hh" #include "parse-table.h" @@ -100,8 +99,7 @@ Expr parseExprFromFile(Path path) ATprotect(&lang); lang = ATmake("Nix"); - if (!SGopenLanguageFromTerm( - (char *) programId.c_str(), lang, parseTable)) + if (!SGopenLanguageFromTerm("nix-parse", lang, parseTable)) throw Error(format("cannot open language")); SG_STARTSYMBOL_ON(); |