aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac6
-rw-r--r--doc/manual/command-ref/conf-file.xml5
-rw-r--r--doc/manual/release-notes/rl-2.1.xml10
-rwxr-xr-xmaintainers/upload-release.pl2
-rw-r--r--release-common.nix2
-rw-r--r--release.nix16
-rw-r--r--src/libexpr/lexer.l8
-rw-r--r--src/libexpr/local.mk8
-rw-r--r--src/libexpr/value.hh2
-rwxr-xr-xsrc/nix-build/nix-build.cc1
-rw-r--r--src/nix/main.cc1
-rw-r--r--src/nix/path-info.cc30
-rw-r--r--src/nix/repl.cc7
13 files changed, 64 insertions, 34 deletions
diff --git a/configure.ac b/configure.ac
index 6aeeacdba..cc354f6f3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -229,12 +229,6 @@ if test "$gc" = yes; then
fi
-AC_ARG_ENABLE(init-state, AC_HELP_STRING([--disable-init-state],
- [do not initialise DB etc. in `make install']),
- init_state=$enableval, init_state=yes)
-#AM_CONDITIONAL(INIT_STATE, test "$init_state" = "yes")
-
-
# documentation generation switch
AC_ARG_ENABLE(doc-gen, AC_HELP_STRING([--disable-doc-gen],
[disable documentation generation]),
diff --git a/doc/manual/command-ref/conf-file.xml b/doc/manual/command-ref/conf-file.xml
index 1865bb37c..6a23b8f1f 100644
--- a/doc/manual/command-ref/conf-file.xml
+++ b/doc/manual/command-ref/conf-file.xml
@@ -437,7 +437,10 @@ builtins.fetchurl {
<listitem><para>This option defines the maximum number of jobs
that Nix will try to build in parallel. The default is
<literal>1</literal>. The special value <literal>auto</literal>
- causes Nix to use the number of CPUs in your system. It can be
+ causes Nix to use the number of CPUs in your system. <literal>0</literal>
+ is useful when using remote builders to prevent any local builds (except for
+ <literal>preferLocalBuild</literal> derivation attribute which executes locally
+ regardless). It can be
overridden using the <option
linkend='opt-max-jobs'>--max-jobs</option> (<option>-j</option>)
command line switch.</para></listitem>
diff --git a/doc/manual/release-notes/rl-2.1.xml b/doc/manual/release-notes/rl-2.1.xml
index c628d04a7..09b4f92e1 100644
--- a/doc/manual/release-notes/rl-2.1.xml
+++ b/doc/manual/release-notes/rl-2.1.xml
@@ -4,7 +4,7 @@
version="5.0"
xml:id="ssec-relnotes-2.1">
-<title>Release 2.1 (2018-08-??)</title>
+<title>Release 2.1 (2018-08-31)</title>
<para>This is primarily a bug fix release. It also reduces memory
consumption in certain situations. In addition, it has the following
@@ -41,8 +41,12 @@ new features:</para>
<listitem>
<para><command>nix-daemon</command> now respects
- <option>--store</option>, so it can be run as a non-root
- user.</para>
+ <option>--store</option>.</para>
+ </listitem>
+
+ <listitem>
+ <para><command>nix run</command> now respects
+ <varname>nix-support/propagated-user-env-packages</varname>.</para>
</listitem>
</itemizedlist>
diff --git a/maintainers/upload-release.pl b/maintainers/upload-release.pl
index 9b0a09e6c..8432c9596 100755
--- a/maintainers/upload-release.pl
+++ b/maintainers/upload-release.pl
@@ -91,6 +91,8 @@ downloadFile("binaryTarball.aarch64-linux", "1");
downloadFile("binaryTarball.x86_64-darwin", "1");
downloadFile("installerScript", "1");
+exit if $version =~ /pre/;
+
# Update Nixpkgs in a very hacky way.
system("cd $nixpkgsDir && git pull") == 0 or die;
my $oldName = `nix-instantiate --eval $nixpkgsDir -A nix.name`; chomp $oldName;
diff --git a/release-common.nix b/release-common.nix
index e23967bdb..ace2a4f9b 100644
--- a/release-common.nix
+++ b/release-common.nix
@@ -30,7 +30,7 @@ rec {
});
configureFlags =
- [ "--disable-init-state"
+ [
"--enable-gc"
] ++ lib.optionals stdenv.isLinux [
"--with-sandbox-shell=${sh}/bin/busybox"
diff --git a/release.nix b/release.nix
index 7ce84e445..f9ee07e34 100644
--- a/release.nix
+++ b/release.nix
@@ -67,6 +67,14 @@ let
buildInputs = buildDeps;
+ preConfigure =
+ # Copy libboost_context so we don't get all of Boost in our closure.
+ # https://github.com/NixOS/nixpkgs/issues/45462
+ ''
+ mkdir -p $out/lib
+ cp ${boost}/lib/libboost_context* $out/lib
+ '';
+
configureFlags = configureFlags ++
[ "--sysconfdir=/etc" ];
@@ -74,8 +82,6 @@ let
makeFlags = "profiledir=$(out)/etc/profile.d";
- preBuild = "unset NIX_INDENT_MAKE";
-
installFlags = "sysconfdir=$(out)/etc";
doInstallCheck = true;
@@ -103,8 +109,6 @@ let
enableParallelBuilding = true;
postUnpack = "sourceRoot=$sourceRoot/perl";
-
- preBuild = "unset NIX_INDENT_MAKE";
});
@@ -189,10 +193,6 @@ let
buildInputs = buildDeps;
- configureFlags = ''
- --disable-init-state
- '';
-
dontInstall = false;
doInstallCheck = true;
diff --git a/src/libexpr/lexer.l b/src/libexpr/lexer.l
index 29ca327c1..a052447d3 100644
--- a/src/libexpr/lexer.l
+++ b/src/libexpr/lexer.l
@@ -12,6 +12,8 @@
%{
+#include <boost/lexical_cast.hpp>
+
#include "nixexpr.hh"
#include "parser-tab.hh"
@@ -124,9 +126,11 @@ or { return OR_KW; }
{ID} { yylval->id = strdup(yytext); return ID; }
{INT} { errno = 0;
- yylval->n = strtol(yytext, 0, 10);
- if (errno != 0)
+ try {
+ yylval->n = boost::lexical_cast<int64_t>(yytext);
+ } catch (const boost::bad_lexical_cast &) {
throw ParseError(format("invalid integer '%1%'") % yytext);
+ }
return INT;
}
{FLOAT} { errno = 0;
diff --git a/src/libexpr/local.mk b/src/libexpr/local.mk
index 78c8b0dea..daa3258f0 100644
--- a/src/libexpr/local.mk
+++ b/src/libexpr/local.mk
@@ -20,14 +20,10 @@ libexpr_LDFLAGS_PROPAGATED = $(BDW_GC_LIBS)
libexpr_ORDER_AFTER := $(d)/parser-tab.cc $(d)/parser-tab.hh $(d)/lexer-tab.cc $(d)/lexer-tab.hh
-$(d)/parser-tab.hh: $(d)/parser-tab.cc
-
-$(d)/parser-tab.cc: $(d)/parser.y
+$(d)/parser-tab.cc $(d)/parser-tab.hh: $(d)/parser.y
$(trace-gen) bison -v -o $(libexpr_DIR)/parser-tab.cc $< -d
-$(d)/lexer-tab.hh: $(d)/lexer-tab.cc
-
-$(d)/lexer-tab.cc: $(d)/lexer.l
+$(d)/lexer-tab.cc $(d)/lexer-tab.hh: $(d)/lexer.l
$(trace-gen) flex --outfile $(libexpr_DIR)/lexer-tab.cc --header-file=$(libexpr_DIR)/lexer-tab.hh $<
clean-files += $(d)/parser-tab.cc $(d)/parser-tab.hh $(d)/lexer-tab.cc $(d)/lexer-tab.hh
diff --git a/src/libexpr/value.hh b/src/libexpr/value.hh
index 809772f7c..e1ec87d3b 100644
--- a/src/libexpr/value.hh
+++ b/src/libexpr/value.hh
@@ -43,7 +43,7 @@ class XMLWriter;
class JSONPlaceholder;
-typedef long NixInt;
+typedef int64_t NixInt;
typedef double NixFloat;
/* External values must descend from ExternalValueBase, so that
diff --git a/src/nix-build/nix-build.cc b/src/nix-build/nix-build.cc
index 34f1cba9d..21a0756a2 100755
--- a/src/nix-build/nix-build.cc
+++ b/src/nix-build/nix-build.cc
@@ -419,7 +419,6 @@ void mainWrapped(int argc, char * * argv)
R"s([ -n "$PS1" ] && PS1='\n\[\033[1;32m\][nix-shell:\w]\$\[\033[0m\] '; )s"
"if [ \"$(type -t runHook)\" = function ]; then runHook shellHook; fi; "
"unset NIX_ENFORCE_PURITY; "
- "unset NIX_INDENT_MAKE; "
"shopt -u nullglob; "
"unset TZ; %4%"
"%5%",
diff --git a/src/nix/main.cc b/src/nix/main.cc
index 9cd5d21c8..69791e223 100644
--- a/src/nix/main.cc
+++ b/src/nix/main.cc
@@ -24,7 +24,6 @@ struct NixArgs : virtual MultiCommand, virtual MixCommonArgs
{
mkFlag()
.longName("help")
- .shortName('h')
.description("show usage information")
.handler([&]() { showHelpAndExit(); });
diff --git a/src/nix/path-info.cc b/src/nix/path-info.cc
index 47caa401d..916ed360e 100644
--- a/src/nix/path-info.cc
+++ b/src/nix/path-info.cc
@@ -4,7 +4,6 @@
#include "json.hh"
#include "common-args.hh"
-#include <iomanip>
#include <algorithm>
using namespace nix;
@@ -13,12 +12,14 @@ struct CmdPathInfo : StorePathsCommand, MixJSON
{
bool showSize = false;
bool showClosureSize = false;
+ bool humanReadable = false;
bool showSigs = false;
CmdPathInfo()
{
mkFlag('s', "size", "print size of the NAR dump of each path", &showSize);
mkFlag('S', "closure-size", "print sum size of the NAR dumps of the closure of each path", &showClosureSize);
+ mkFlag('h', "human-readable", "with -s and -S, print sizes like 1K 234M 5.67G etc.", &humanReadable);
mkFlag(0, "sigs", "show signatures", &showSigs);
}
@@ -40,6 +41,10 @@ struct CmdPathInfo : StorePathsCommand, MixJSON
"nix path-info -rS /run/current-system | sort -nk2"
},
Example{
+ "To show a package's closure size and all its dependencies with human readable sizes:",
+ "nix path-info -rsSh nixpkgs.rust"
+ },
+ Example{
"To check the existence of a path in a binary cache:",
"nix path-info -r /nix/store/7qvk5c91...-geeqie-1.1 --store https://cache.nixos.org/"
},
@@ -58,6 +63,25 @@ struct CmdPathInfo : StorePathsCommand, MixJSON
};
}
+ void printSize(unsigned long long value)
+ {
+ if (!humanReadable) {
+ std::cout << fmt("\t%11d", value);
+ return;
+ }
+
+ static constexpr std::array<char, 9> idents = {
+ ' ', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'
+ };
+ size_t power = 0;
+ double res = value;
+ while (res > 1024 && power < idents.size()) {
+ ++power;
+ res /= 1024;
+ }
+ std::cout << fmt("\t%6.1f%c", res, idents.at(power));
+ }
+
void run(ref<Store> store, Paths storePaths) override
{
size_t pathLen = 0;
@@ -81,10 +105,10 @@ struct CmdPathInfo : StorePathsCommand, MixJSON
std::cout << storePath << std::string(std::max(0, (int) pathLen - (int) storePath.size()), ' ');
if (showSize)
- std::cout << '\t' << std::setw(11) << info->narSize;
+ printSize(info->narSize);
if (showClosureSize)
- std::cout << '\t' << std::setw(11) << store->getClosureSize(storePath).first;
+ printSize(store->getClosureSize(storePath).first);
if (showSigs) {
std::cout << '\t';
diff --git a/src/nix/repl.cc b/src/nix/repl.cc
index 1eb716006..b71e6f905 100644
--- a/src/nix/repl.cc
+++ b/src/nix/repl.cc
@@ -173,9 +173,14 @@ void NixRepl::mainLoop(const std::vector<std::string> & files)
printMsg(lvlError, format(error + "%1%%2%") % (settings.showTrace ? e.prefix() : "") % e.msg());
}
+ if (input.size() > 0) {
+ // Remove trailing newline before adding to history
+ input.erase(input.size() - 1);
+ linenoiseHistoryAdd(input.c_str());
+ }
+
// We handled the current input fully, so we should clear it
// and read brand new input.
- linenoiseHistoryAdd(input.c_str());
input.clear();
std::cout << std::endl;
}