about summary refs log tree commit diff
path: root/src/Makefile.am
AgeCommit message (Collapse)AuthorFilesLines
2004-09-09 * A very dirty hack to make setuid installations a bit nicer to use.Eelco Dolstra1-1/+1
Previously there was the problem that all files read by nix-env etc. should be reachable and readable by the Nix user. So for instance building a Nix expression in your home directory meant that the home directory should have at least g+x or o+x permission so that the Nix user could reach the Nix expression. Now we just switch back to the original user just prior to reading sources and the like. The places where this happens are somewhat arbitrary, however. Any scope that has a live SwitchToOriginalUser object in it is executed as the original user. * Back out r1385. setreuid() sets the saved uid to the new real/effective uid, which prevents us from switching back to the original uid. setresuid() doesn't have this problem (although the manpage has a bug: specifying -1 for the saved uid doesn't leave it unchanged; an explicit value must be specified).
2004-09-09 * Use setre[ug]id() instead of setres[ug]id(), since the former isEelco Dolstra1-1/+1
more common than the latter (which exists only on Linux and FreeBSD). We don't really care about dropping the saved IDs since there apparently is no way to quiry them in any case, so it can't influence the build (unlike the effective IDs which are checked by Perl for instance).
2004-08-20 * On systems that have the setresuid() and setresgid() system calls toEelco Dolstra1-0/+5
set the real uid and gid to the effective uid and gid, the Nix binaries can be installed as owned by the Nix user and group instead of root, so no root involvement of any kind is necessary. Linux and FreeBSD have these functions.
2004-08-20 * Setuid support for sharing a Nix installation between multipleEelco Dolstra1-0/+6
users. If the configure flag `--enable-setuid' is used, the Nix programs nix-env, nix-store, etc. are installed with the setuid bit turned on so that they are executed as the user and group specified by `--with-nix-user=USER' and `--with-nix-group=GROUP', respectively (with defaults `nix' and `nix'). The setuid programs drop all special privileges if they are executed by a user who is not a member of the Nix group. The setuid feature is a quick hack to enable sharing of a Nix installation between users who trust each other. It is not generally secure, since any user in the Nix group can modify (by building an appropriate derivation) any object in the store, and for instance inject trojans into binaries used by other users. The setuid programs are owned by root, not the Nix user. This is because on Unix normal users cannot change the real uid, only the effective uid. Many programs don't work properly when the real uid differs from the effective uid. For instance, Perl will turn on taint mode. However, the setuid programs drop all root privileges immediately, changing all uids and gids to the Nix user and group.
2004-03-15 * Added a utility that can be used to produce nice HTML pages from NixEelco Dolstra1-1/+1
build logs. The program `log2xml' converts a Nix build log (read from standard input) into XML file that can then be converted to XHTML by the `log2html.xsl' stylesheet. The CSS stylesheet `logfile.css' is necessary to make it look good. This is primarily useful if the log file has a *tree structure*, i.e., that sub-tasks such as the various phases of a build (unpack, configure, make, etc.) or recursive invocations of Make are represented as such. While a log file is in principle an unstructured plain text file, builders can communicate this tree structure to `log2xml' by using escape sequences: - "\e[p" starts a new nesting level; the first line following the escape code is the header; - "\e[q" ends the current nesting level. The generic builder in nixpkgs (not yet committed) uses this. It shouldn't be to hard to patch GNU Make to speak this protocol. Further improvements to the generated HTML pages are to allow collapsing/expanding of subtrees, and to abbreviate store paths (but to show the full path by hovering the mouse over it).
2003-11-19 * nix-env: a tool to manage user environments.Eelco Dolstra1-1/+1
* Replace all directory reading code by a generic readDirectory() function.
2003-11-19 * Refactoring (step 2).Eelco Dolstra1-1/+1
2003-11-19 * Refactoring: put the Nix expression evaluator in its own library soEelco Dolstra1-1/+2
that it can be used by multiple programs.
2003-11-18 * "Fix expression" -> "Nix expression".Eelco Dolstra1-1/+1
* More refactoring.
2003-11-18 * nix -> nix-store, fix -> nix-instantiate.Eelco Dolstra1-1/+1
2003-11-18 * libnix -> libstore.Eelco Dolstra1-1/+1
2003-11-18 * Source tree refactoring.Eelco Dolstra1-1/+1
2003-10-29 * Forked new version of Fix.Eelco Dolstra1-1/+1
2003-10-20 * Finished refactoring the tree.Eelco Dolstra1-55/+1
2003-10-07 * Synchronise terminology with the ICSE paper (e.g., slice -> closure,Eelco Dolstra1-1/+1
fstate -> Nix expression). * Fix src/test.cc.
2003-10-02 * Include the right files in a distribution.Eelco Dolstra1-1/+1
2003-09-11 * Removed references to char_traits so that boost/format also works onEelco Dolstra1-5/+7
GCC 2.95.
2003-09-03 * Factored out dot graph generation into a separate file.Eelco Dolstra1-1/+1
2003-08-01 * normaliseFState() now locks all output paths prior to building, thusEelco Dolstra1-1/+2
ensuring that simultaneous invocations of Nix don't clobber each other's builds. * Fixed a bug in `make install'.
2003-07-31 * Started using Berkeley DB environments. This is necessary forEelco Dolstra1-0/+1
transaction support (but we don't actually use transactions yet).
2003-07-29 * Get garbage collection and cache population to work *properly*.Eelco Dolstra1-0/+1
Renamed `fstateRefs' to `fstateRequisites'. The semantics of this function is that it returns a list of all paths necessary to realise a given expression. For a derive expression, this is the union of requisites of the inputs; for a slice expression, it is the path of each element in the slice. Also included are the paths of the expressions themselves. Optionally, one can also include the requisites of successor expressions (to recycle intermediate results). * `nix-switch' now distinguishes between an expression and its normal form. Usually, only the normal form is registered as a root of the garbage collector. With the `--source-root' flag, it will also register the original expression as a root. * `nix-collect-garbage' now has a flag `--keep-successors' which causes successors not to be included in the list of garbage paths. * `nix-collect-garbage' now has a flag `--invert' which will print all paths that should *not* be garbage collected.
2003-07-28 * `nix --help'.Eelco Dolstra1-1/+8
* `nix --query --graph' to print a dot dependency graph of derive expressions.
2003-07-23 * Incorporated Berkeley DB and ATerm into the source tree.Eelco Dolstra1-2/+6
* `make dist'.
2003-07-22 * libdb_cxx-4 -> libdb_cxxEelco Dolstra1-4/+4
2003-07-20 * Refactorings.Eelco Dolstra1-1/+2
2003-07-14 * After building, scan for actual file system references asEelco Dolstra1-1/+1
opposed to declared references. This prunes the reference graph, thus allowing better garbage collection and more efficient derivate distribution.
2003-07-13 * Pass $(prefix) and other variables through -D..., not Eelco Dolstra1-9/+17
through config.h, to prevent silly Autoconf problems.
2003-07-13 * Generate the scripts so that we can substitute the prefixEelco Dolstra1-3/+0
etc. correctly. * Fixed nix-switch.
2003-07-07 * Make dbRefs a mapping from Hash to [Path].Eelco Dolstra1-1/+1
2003-07-07 * Refactoring on the file names.Eelco Dolstra1-1/+1
2003-07-06 * A utility `nix-hash' to compute Nix path hashes.Eelco Dolstra1-1/+4
2003-07-06 * Got Fix working again.Eelco Dolstra1-1/+4
2003-07-04 * Refactoring: move initialisation and argument parsing into a sharedEelco Dolstra1-1/+1
file.
2003-07-04 * Caching of expression successors.Eelco Dolstra1-1/+1
2003-06-25 * Minor cleanups.Eelco Dolstra1-5/+3
2003-06-20 * Move most of Nix into a library (libnix.a).Eelco Dolstra1-5/+11
* Run `test' on `make check'.
2003-06-20 * Refactoring: move dump function into archive.cc.Eelco Dolstra1-2/+2
2003-06-18 * Automake sucks.Eelco Dolstra1-2/+2
2003-06-17 * Started integrating the new evaluation model into Nix.Eelco Dolstra1-4/+4
* Cleaned up command-line syntax.
2003-06-16 * Started implementing the new evaluation model.Eelco Dolstra1-7/+6
* Lots of refactorings. * Unit tests.
2003-06-15 * Refactoring: hash class.Eelco Dolstra1-2/+5
2003-05-30 * Log the output of builders to $prefix/var/log/nix.Eelco Dolstra1-1/+2
2003-05-26 * Some refactoring.Eelco Dolstra1-4/+4
2003-05-25 * Prebuilt package sharing. We allow transparent binary deployment byEelco Dolstra1-0/+3
sharing package directories (i.e., the result of building a Nix descriptor). `nix-pull-prebuilts' obtains a list of all known prebuilts by consulting the paths and URLs specified in $prefix/etc/nix/prebuilts.conf. The mappings ($pkghash, $prebuilthash) and ($prebuilthash, $location) are registered with Nix so that it can use the prebuilt with hash $prebuilthash when installing a package with hash $pkghash by downloading and unpacking $location. `nix-push-prebuilts' creates prebuilts for all packages for which no prebuilt is known to exist. It can then optionally upload these to the network through rsync. `nix-[pull|push]-prebuilts' just provide a policy. Nix provides the mechanism through the `nix [export|regprebuilt|regurl]' commands.
2003-04-09 * We no longer use nix-populate standalone, rather we use it as aEelco Dolstra1-0/+1
build action for `system' packages (like system.fix) that have dependencies on all packages we want to activate. So the command sequence to switch to a new activation configuration of the system would be: $ fix -i .../fixdescriptors/system.fix ... system.fix -> 89cf4713b37cc66989304abeb9ea189f $ nix-switch 89cf4713b37cc66989304abeb9ea189f * A nix-profile.sh script that can be included in .bashrc.
2003-04-08 * `Fix' is a high-level descriptor instantiator for Nix. It replacesEelco Dolstra1-2/+6
nix-instantiate.
2003-04-06 * Better installation: make directories, create database.Eelco Dolstra1-0/+7
* Fixed the register script.
2003-04-04 * Autoconf / Automake configuration and building.Eelco Dolstra1-0/+5