Commit graph

380 commits

Author SHA1 Message Date
Eelco Dolstra
e877c69d78 * Substitutes now should produce a path with the same id as they are
substituting for (obvious, really).

* For greater efficiency, nix-pull/unnar will place the output in a
  path that is probably the same as what is actually needed, thus
  preventing a path copy.

* Even if a output id is given in a Fix package expression, ensure
  that the resulting Nix derive expression has a different id.  This
  is because Nix expressions that are semantically equivalent (i.e.,
  build the same result) might be different w.r.t. efficiency or
  divergence.  It is absolutely vital for the substitute mechanism
  that such expressions are not used interchangeably.
2003-07-22 15:15:15 +00:00
Eelco Dolstra
d84931ee56 * Changed nix-pull to match nix-push. 2003-07-21 22:05:19 +00:00
Eelco Dolstra
c7bdb76fe4 * Syntax fixes.
* When pushing, put the hash in the file name so that the 
  client can verify (proof-carrying file names?).
2003-07-21 21:34:56 +00:00
Eelco Dolstra
7984cfc7c1 * Argh, another short-write problem. Added wrappers around
read()/write() to fix this once and for all.
2003-07-20 21:11:43 +00:00
Eelco Dolstra
ab350eafd2 * Generate nar.sh, fetchurl.sh. 2003-07-18 07:42:57 +00:00
Eelco Dolstra
54664b6fb7 * The write() system call can write less than the requested
number of bytes, e.g., in case of a signal like SIGSTOP.  
  This caused `nix --dump' to fail sometimes.

  Note that this bug went unnoticed because the call to `nix 
  --dump' is in a pipeline, and the shell ignores non-zero 
  exit codes from all but the last element in the pipeline.  
  Is there any way to check the result of the initial elements
  in the pipeline?  (In other words, is it at all possible to 
  write reliable shell scripts?)
2003-07-16 21:24:02 +00:00
Eelco Dolstra
9d56ca219f * Substitute fixes. 2003-07-16 20:00:51 +00:00
Eelco Dolstra
8898e86b4f * Get the garbage collector to work again. 2003-07-14 10:45:04 +00:00
Eelco Dolstra
9c620e4afa * Generate the scripts so that we can substitute the prefix
etc. correctly.
* Fixed nix-switch.
2003-07-13 18:58:03 +00:00
Eelco Dolstra
822c072cfa * Compress Nix archives when pushing them. 2003-07-10 20:34:29 +00:00
Eelco Dolstra
9bcc31c941 * Working derivate sharing. 2003-07-10 20:13:32 +00:00
Eelco Dolstra
81304a6bb5 * Convert tabs to spaces. 2003-07-10 19:27:46 +00:00
Eelco Dolstra
8511571f65 * Performance enhancement. 2003-07-10 15:24:50 +00:00
Eelco Dolstra
1d1c3691d2 * The policy-free derivate sharing now *almost* works. :-) For any
hash for which no local expansion is available, Nix can execute a
  `substitute' which should produce a path with such a hash.

  This is policy-free since Nix does not in any way specify how the
  substitute should work, i.e., it's an arbitrary (unnormalised)
  fstate expression.  For example, `nix-pull' registers substitutes
  that fetch Nix archives from the network (through `wget') and unpack
  them, but any other method is possible as well.  This is an
  improvement over the old Nix sharing scheme, which had a policy
  (fetching through `wget') built in.

  The sharing scheme doesn't work completely yet because successors
  from fstate rewriting have to be registered on the receiving side.
  Probably the whole successor stuff can be folded up into the
  substitute mechanism; this would be a nice simplification.
2003-07-10 15:11:48 +00:00
Eelco Dolstra
d072485d28 * Get `nix-push' working again. It now uses Nix/Fix to create Nix
archives (using the package in corepkgs/nar).
* queryPathByHash -> expandHash, and it takes an argument specifying
  the target path (which may be empty).
* Install the core Fix packages in $prefix/share/fix.  TODO: bootstrap
  Nix and install Nix as a Fix package.
2003-07-10 13:41:28 +00:00
Eelco Dolstra
bc57eb3c8a * Set CPLUS_INCLUDE_PATH as well as C_INCLUDE_PATH. Otherwise g++
won't see header files under Nix control.
2003-06-18 12:35:32 +00:00
Eelco Dolstra
f66055fa1e * Set umask to 0022 on startup. 2003-05-30 20:53:36 +00:00
Eelco Dolstra
383297e0e8 * Don't set MANPATH. It's not necessary. 2003-05-30 15:17:40 +00:00
Eelco Dolstra
84e235eae8 * Set MANPATH and PKG_CONFIG_PATH. 2003-05-30 11:49:06 +00:00
Eelco Dolstra
5e01b220b3 * Fix the rsync destination. 2003-05-27 11:58:14 +00:00
Eelco Dolstra
d8bdf5b06e * Removed some debug code that prevented packages from building. 2003-05-26 14:19:25 +00:00
Eelco Dolstra
f8d91f20e6 * Nix can now fetch prebuilts (and other files) from the network, iff
a mapping from the hash to a url has been registered through `nix
  regurl'.

* Bug fix in nix: don't pollute stdout when running tar, it made
  nix-switch barf.

* Bug fix in nix-push-prebuilts: don't create a subdirectory on the
  target when rsync'ing.
2003-05-26 09:44:18 +00:00
Eelco Dolstra
7dd91d3779 * Prebuilt package sharing. We allow transparent binary deployment by
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-05-25 22:42:19 +00:00
Eelco Dolstra
d6d930a975 * Bug fix: deleting the old links didn't work properly. 2003-04-25 15:20:05 +00:00
Eelco Dolstra
243370bc52 * nix-switch now removes the link to the previously activated system
package as a root of the garbage collector, unless `--keep' is
  specified.
2003-04-24 11:43:11 +00:00
Eelco Dolstra
f7526febe4 * A garbage collector for installed packages. nix-collect-garbage
doesn't actually delete any packages, it just prints their
  descriptor hashes.  So we can do

    nix info $(nix-collect-garbage)

  to print out the ids of the packages that would be deleted, and

    nix delpkg $(nix-collect-garbage)

  to actually delete them.
2003-04-09 13:03:00 +00:00
Eelco Dolstra
30a6122f80 * When we activate a descriptor in nix-switch, remember its hash.
This allows us to find out all `live' packages on the system by
  doing

    nix closure $(cat /nix/var/nix/links/*.hash)

  which will print out the activated configurations and all packages
  referenced by them.  We could then garbage collect unused packages
  by deleting the difference between `nix listinst' and the set
  returned by `nix closure ...'.
2003-04-09 12:46:44 +00:00
Eelco Dolstra
aa8fda4b54 * We no longer use nix-populate standalone, rather we use it as a
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-09 12:26:48 +00:00
Eelco Dolstra
f56b7312b2 * Descriptor importing in Fix. 2003-04-08 15:36:54 +00:00
Eelco Dolstra
cc6eafb3d0 * FreeBSD / gcc 2.95 compatibility fixes.
* A script to generate prebuilt registration scripts.
2003-04-08 14:05:15 +00:00