Commit Graph

45929 Commits

Author SHA1 Message Date
Ludovic Courtès 18633d4f35 distro: Move bootstrap packages to (distro packages bootstrap).
* distro/packages/base.scm (glibc-dynamic-linker, %bootstrap-guile,
  bootstrap-origin, package-from-tarball, %bootstrap-base-url,
  %bootstrap-coreutils&co, %bootstrap-binutils, %bootstrap-glibc,
  %bootstrap-gcc, %bootstrap-inputs, package-with-bootstrap-guile): Move
  to ...
* distro/packages/bootstrap.scm: ... here.  New file.
* Makefile.am (MODULES): Add it.
* tests/builders.scm: Use (distro packages bootstrap).
  (%bootstrap-guile): Remove.
* tests/packages.scm: Likewise.
* tests/union.scm: Likewise, and remove @@ to access %bootstrap-inputs.
* tests/derivations.scm: Use (distro packages bootstrap) and remove @@
  to access %bootstrap-coreutils&co.
* HACKING (When the platform is supported by Nixpkgs): Update
  accordingly.
2012-11-04 22:04:41 +01:00
Ludovic Courtès 9d9e645081 distro: Go for one module per package.
The alternative, which was to use one module per category, would
probably not scale well.  First, because many packages could fall into
several categories (does GnuTLS go into "networking", "security", or
"libraries"?).  Second, because that could easily lead to circular
dependencies among modules ("security" and "networking" depend on each
other, etc.)

* distro/packages/databases.scm: Rename to...
* distro/packages/recutils.scm: ... this.
* distro/packages/typesetting.scm: Rename to...
* distro/packages/lout.scm: ... this.
* Makefile.am (MODULES): Adjust accordingly.
* po/POTFILES.in: Likewise.
2012-11-04 21:46:14 +01:00
Ludovic Courtès 59b775cca9 doc: Add "Adding new packages" in `HACKING'.
* HACKING (Adding new packages): New section.
2012-11-04 19:45:40 +01:00
Ludovic Courtès 10226c05b1 Add (guix snix) and the `guix-import' command.
* guix/snix.scm, tests/snix.scm, guix-import.in: New files.
* configure.ac: Output `guix-import' and make it executable.
* Makefile.am (bin_SCRIPTS): Add `guix-import'.
  (MODULES): Add `guix/snix.scm'.
  (TESTS): Add `tests/snix.scm'.
2012-11-04 19:38:31 +01:00
Ludovic Courtès 5901471cec guix-package: Remove extraneous procedures.
* guix-package.in (_, N_): Remove.
2012-11-04 18:19:28 +01:00
Ludovic Courtès d45122f537 packages: `description' → `synopsis', `long-description' → `description'.
* guix/packages.scm (<package>): Rename `description' to `synopsis', and
  `long-description' to `description'.
* tests/packages.scm, distro/packages/base.scm,
  distro/packages/databases.scm, distro/packages/guile.scm,
  distro/packages/typesetting.scm:  Update accordingly.
* po/Makevars (XGETTEXT_OPTIONS): Update `--keyword' flags accordingly.
2012-11-04 13:48:35 +01:00
Ludovic Courtès 6709752fe7 release.nix: Pass `--with-libgcrypt-prefix' in the `tarball' job.
* release.nix (jobs.tarball)[configureFlags]: Pass
  `--with-libgcrypt-prefix'.
2012-11-04 13:03:15 +01:00
Ludovic Courtès 9b48fb88ca utils: Add `package-name->name+version'.
* guix/utils.scm (package-name->name+version): New procedure.
* guix-package.in (guix-package)[find-package]: Use it.
* tests/utils.scm ("package-name->name+version"): New test.
2012-11-04 01:29:18 +01:00
Ludovic Courtès d388c2c435 build: Require GNU libgcrypt.
* guix/utils.scm (sha256): Remove Coreutils- and libchop-based
  implementations.
* README: Update accordingly.

* m4/guix.m4: New file.
* configure.ac: Use `GUIX_ASSERT_LIBGCRYPT_USABLE'.  Set and substitute
  `LIBGCRYPT_PREFIX'.
* Makefile.am (AM_DISTCHECK_CONFIGURE_FLAGS): Pass
  `--with-libgcrypt-prefix=$(LIBGCRYPT_PREFIX)'.
2012-11-03 21:49:54 +01:00
Ludovic Courtès 1275baeba7 guix-package: Use more (guix ui) features.
* guix-package.in (leave): Remove.
  (guix-package): Wrap body in `with-error-handling'.
2012-11-03 21:23:16 +01:00
Ludovic Courtès cdd5d6f95f ui: Factorize `--version'.
* guix/ui.scm (show-version-and-exit): New procedure.
* guix-build.in (show-version): Remove.
  (%options)["version"]: Use `show-version-and-exit'.
* guix-download.in: Likewise.
* guix-package.in: Likewise.
2012-11-03 21:19:43 +01:00
Ludovic Courtès 00e219d1c9 build: Produce (guix config) instead of using compile-time tricks.
* guix/config.scm.in: New file.
* guix/utils.scm: Use it.
  (%libgcrypt): Remove.
  (%nixpkgs-directory): Don't capture the compile-time $NIXPKGS; use
  %NIXPKGS instead.
  (nixpkgs-derivation): Use %NIX-INSTANTIATE.
* pre-inst-env.in (NIX_INSTANTIATE, NIXPKGS, LIBGCRYPT): Remove.

* configure.ac: Emit `guix/config.scm'.
* Makefile.am (GOBJECTS): Add `guix/config.go'.
  (nobase_nodist_guilemodule_DATA): Add `guix/config.scm'.
2012-11-03 21:11:28 +01:00
Ludovic Courtès e76bdf8b87 build: Clearly mark Nixpkgs as optional.
* configure.ac: Always show the result of checking for Nixpkgs.  Don't
  warn when Nixpkgs is not found.
* Makefile.am (AM_DISTCHECK_CONFIGURE_FLAGS): Remove `--with-nixpkgs'
  flag.
* guix/utils.scm (%nixpkgs-directory): Use either the compile-time or
  the run-time `NIXPKGS' environment variable.
* release.nix (jobs.tarball, jobs.build): Remove `--with-nixpkgs'
  configure flag.
* README: Mark Nixpkgs as optional.

* distro/packages/databases.scm, distro/packages/guile.scm,
  distro/packages/typesetting.scm: Change uses of `nixpkgs-derivation*'
  to `nixpkgs-derivation', to avoid failing at compile-time.
2012-11-03 21:11:26 +01:00
Ludovic Courtès 81dbd783bd tests: Run without substitutes.
* tests/builders.scm, tests/derivations.scm, tests/packages.scm: Set
  #:use-substitutes? #f for %STORE.
2012-11-02 22:38:52 +01:00
Ludovic Courtès 0afdc48532 Add a preliminary `guix-package' command-line tool.
* guix-package.in, tests/guix-package.sh: New files.
* configure.ac: Output `guix-package'.
* Makefile.am (TESTS): Add `tests/guix-package.sh'.
  (bin_SCRIPTS): Add `guix-package'.
2012-11-01 01:46:15 +01:00
Ludovic Courtès e3d741065e store: Add `store-path-package-name'.
* guix/store.scm (store-path-package-name): New procedure.
* tests/utils.scm ("store-path-package-name"): New test.
2012-11-01 01:39:23 +01:00
Ludovic Courtès 07d18f39cc utils: Remove stuff committed by error.
This was wrongfully committed in df1fab58.

* guix/utils.scm (hash-set-proc, hash-ref*, memoizing-lambda): Remove.
2012-11-01 01:35:00 +01:00
Ludovic Courtès 97298ffae9 build: Add unit test for the `guix-build' command.
* tests/guix-build.sh: New file.
* Makefile.am (TESTS): Add it.
  (LOG_COMPILER): Rename to...
  (SCM_LOG_COMPILER): ... this.  Move flags to...
  (AM_SCM_LOG_FLAGS): ... this.
  (TEST_EXTENSIONS, SH_LOG_COMPILER, AM_SH_LOG_FLAGS): New variables.
2012-11-01 00:52:46 +01:00
Ludovic Courtès 073c34d72f Add (guix ui).
* guix/ui.scm: New file.
* Makefile.am (MODULES): Add it.
* po/POTFILES.in: Add it.

* guix-build.in: Use it.
  (_, N_, leave): Remove.
  (guix-build): Use `with-error-handling' instead of the `guard' form.
* guix-download.in: Use it.
  (_, N_, leave): Remove.
2012-11-01 00:52:44 +01:00
Ludovic Courtès 111111d046 build-system/gnu: Distinguish between imported modules and used modules.
* guix/build-system/gnu.scm (gnu-build): Add the `imported-modules'
  keyword parameter.  Pass it to `build-expression->derivation'.
2012-10-31 17:53:59 +01:00
Ludovic Courtès f03da4a008 release.nix: Use `--no-substitutes' in `distro.hello'.
* release.nix (distro.hello): Use `guix-build --no-substitutes', to
  avoid failures due to unavailable stale substitutes on
  hydra.nixos.org.
2012-10-31 00:22:39 +01:00
Ludovic Courtès 34811f02bf guix-build: Add `--root'.
* guix/store.scm (add-indirect-root): New operation.
* guix-build.in (show-help): Document `--root'.
  (%options): Add `--root'.
  (guix-build)[register-root]: New procedure.  Call it when `--root' is
  passed.
2012-10-30 00:20:53 +01:00
Ludovic Courtès c8c88afaa1 Add (guix build union).
* guix/build/union.scm, tests/union.scm: New files.
* Makefile.am (MODULES): Add `guix/build/union.scm'.
  (TESTS): Add `tests/union.scm'.
2012-10-29 22:39:46 +01:00
Ludovic Courtès 48da001fd9 release.nix: Change `distro.hello' to produce something.
* release.nix (distro.hello)[buildPhase]: Tee the log to $out.  Add a
  `name' attribute; remove `buildInputs' and instead use the full path
  to `guix-build'.
2012-10-28 02:02:04 +02:00
Ludovic Courtès d6ed71cbf4 distro: Build Bash sequentially.
* distro/packages/base.scm (bash): Set `#:parallel-build?' and
  `#:parallel-tests?' to #f.
2012-10-28 01:59:33 +02:00
Ludovic Courtès 8f3ecbd715 tests: Use our own bootstrap tools.
* tests/builders.scm (%bootstrap-inputs): Use %BOOT0-INPUTS from the distro.
* tests/packages.scm (%bootstrap-inputs): Likewise.
* tests/derivations.scm (%coreutils): Alias for %BOOTSTRAP-COREUTILS&CO.
2012-10-28 01:58:39 +02:00
Ludovic Courtès 9144af5aa7 release.nix: Add a `distro.hello' job.
* release.nix (distro.hello): New job.
2012-10-27 23:19:46 +02:00
Ludovic Courtès 5992f213d7 build: Preserve the executable bit of bootstrap binaries.
* Makefile.am (install-data-hook): New target.
2012-10-27 23:18:08 +02:00
Ludovic Courtès b8605698b8 build: Make sure scripts know where to find their modules.
* guix-build.in, guix-download.in: Define `prefix' and `datarootdir', so
  that `guilemoduledir' expands to something meaningful.
2012-10-27 22:52:13 +02:00
Ludovic Courtès 1c52c42fe2 release.nix: Pre-download the Guile bootstrap tarball.
* release.nix (bootstrap_guile): New variable.
  (build)[preBuild]: New attribute.
2012-10-27 22:45:54 +02:00
Ludovic Courtès 735bb2af10 build: Fix out-of-source-tree builds.
* Makefile.am (distro/packages/bootstrap/x86_64-linux/guile-bootstrap-2.0.6.tar.xz,
  distro/packages/bootstrap/i686-linux/guile-bootstrap-2.0.6.tar.xz):
  Make the target's parent directory.
* pre-inst-env.in (DISTRO_BOOTSTRAP_PATH): Add the builddir-relative
  directory.
2012-10-27 22:37:49 +02:00
Ludovic Courtès a9f60c421b distro: Change $DISTRO_{PATCH,BOOTSTRAP}_DIRECTORY to search paths.
* distro.scm (not-colon): New variable.
  (%patch-directory): Rename to...
  (%patch-path): ... this.  Turn into a list.  Expect $DISTRO_PATCH_PATH
  to be a colon-separated search path.
  (%bootstrap-binaries-directory): Rename to...
  (%bootstrap-binaries-path): ... this.  Likewise.
  (search-patch, search-bootstrap-binary): Adjust accordingly.

* pre-inst-env.in: Change to use `DISTRO_PATCH_PATH' and
  `DISTRO_BOOTSTRAP_PATH'.
2012-10-27 22:30:42 +02:00
Ludovic Courtès cc9abfd0f4 release.nix: Set succeed-on-failure and build-out-source-tree.
* release.nix: Define `succeedOnFailure', `keepBuildDirectory', and
  `buildOutOfSourceTree'.
  (build): Inherit them.
2012-10-27 15:32:40 +02:00
Ludovic Courtès bfb3c3d03a build: Move `distro/patches' to `distro/packages/patches'.
* distro/patches: Move directory to...
* distro/packages/patches: ... here.
* Makefile.am (dist_patch_DATA): Adjust accordingly.
* pre-inst-env.in (DISTRO_PATCH_DIRECTORY): Likewise.
2012-10-27 15:32:40 +02:00
Ludovic Courtès fc2f38023b build: Use `pre-inst-env' to compile the source.
* Makefile.am (.scm.go): Use `pre-inst-env' instead of re-defining the
  environment variables, except for `DISTRO_INSTALLED_PATCH_DIRECTORY'
  and `DISTRO_INSTALLED_BOOTSTRAP_DIRECTORY'.
2012-10-27 15:32:39 +02:00
Ludovic Courtès 0778385802 guix-build: Gracefully handle `&package-input-error' conditions.
* guix/packages.scm: Export `package-error?' and `package-input-error?'.
* guix-build.in (guix-build): Catch `&package-input-error' conditions,
  print a human-readable message, and exit.
2012-10-27 14:56:46 +02:00
Ludovic Courtès 5e6c90121f location: Start column numbers at 1.
* guix/utils.scm (source-properties->location): Use COL + 1.
2012-10-27 14:53:47 +02:00
Ludovic Courtès d25468bcb2 distro: Add i686-linux port.
* distro/packages/bootstrap/i686-linux/bash,
  distro/packages/bootstrap/i686-linux/mkdir,
  distro/packages/bootstrap/i686-linux/tar,
  distro/packages/bootstrap/i686-linux/xz: New files.

* distro/packages/base.scm (%bootstrap-coreutils&co,
  %bootstrap-binutils, %bootstrap-glibc, %bootstrap-gcc): Add hashes of
  the i686-linux tarballs.

* Makefile.am (bootstrap_i686_linuxdir, dist_bootstrap_i686_linux_DATA,
  nodist_bootstrap_i686_linux_DATA): New variables
  (DISTCLEANFILES): Add $(nodist_bootstrap_i686_linux_DATA).
  (distro/packages/bootstrap/i686-linux/guile-bootstrap-2.0.6.tar.xz):
  New rule.
2012-10-26 19:10:37 +02:00
Ludovic Courtès fc95fdaebe distro: gcc: Adjust to support non-x86_64 architectures.
* distro/packages/base.scm (gcc-4.7)[arguments]: In the `pre-configure'
  phase, patch all the relevant gcc/config files, not just those for
  x86_64-linux-gnu.
2012-10-26 18:51:22 +02:00
Ludovic Courtès 20d83444dd utils: Remove special `substitute*' syntax for lists of files.
* guix/build/utils.scm (substitute*): Remove special syntax for
  list-of-files; instead, check whether FILE is `list?' at run time.

* distro/packages/base.scm (gcc-4.7, %binutils-static): Adjust
  accordingly.
2012-10-26 09:07:37 +02:00
Ludovic Courtès 450ccdc3aa doc: Add `HACKING'.
* HACKING: New file.
* Makefile.am (EXTRA_DIST): Add it.
2012-10-25 23:44:27 +02:00
Ludovic Courtès fbc93bedff Add a `system' parameter to `nixpkgs-derivation'.
* guix/utils.scm (nixpkgs-derivation): Add a `system' parameter.  Pass
  it in the `nix-instantiate' invocation.
2012-10-25 23:42:06 +02:00
Ludovic Courtès b642e4b853 packages: Pass `system' around.
* guix/packages.scm (package-source-derivation): Add `system'
  parameter.  Pass it to METHOD.
  (package-derivation)[expand-input]: Pass SYSTEM to
  `package-derivation' and `package-source-derivation'.

* distro/packages/base.scm (package-with-bootstrap-guile)[boot]: Pass
  SYSTEM to FETCH.
2012-10-25 23:41:15 +02:00
Ludovic Courtès ae39d1b233 derivations: Make sure `build-expression->derivation' & co. pass `system'.
* guix/derivations.scm (imported-files): Call
  `build-expression->derivation' with SYSTEM, not (%current-system).
  (build-expression->derivation): Pass SYSTEM to `imported-modules' and
  `compiled-modules'.
2012-10-25 23:14:27 +02:00
Ludovic Courtès b272c47433 derivations: Pass the derivation of guile-for-build to `imported-files' & co.
* guix/derivations.scm (%guile-for-build): Initialize to #f.
  (imported-files, imported-modules, compiled-modules): Add `guile'
  keyword parameter.  Pass it down to `build-expression->derivation'.
  (build-expression->derivation)[guile-drv]: New variable.  Pass it as
  the #:guile parameter for `imported-modules' and `compiled-modules'.

* tests/derivations.scm: Set %GUILE-FOR-BUILD to the derivation of
  %BOOTSTRAP-GUILE.
2012-10-25 18:03:48 +02:00
Ludovic Courtès 4033bde841 distro: Build the final inputs against the final Bash, not the bootstrap Bash.
* distro/packages/base.scm (%boot4-inputs): New variable.
  (guile-final): Use it.
  (%final-inputs): Build with %BOOT4-INPUTS, not %BOOT3-INPUTS.
2012-10-25 17:55:45 +02:00
Ludovic Courtès e67245597e distro: ncurses: Don't patch shebangs.
* distro/packages/base.scm (ncurses): Pass #:patch-shebangs? #f.
2012-10-25 17:54:17 +02:00
Ludovic Courtès 60c21332d2 distro: Bootstrap using our own binaries instead of those from Nixpkgs.
* distro/packages/base.scm (%bootstrap-inputs): Switch to using our own
  bootstrap binaries instead of those from Nixpkgs.
2012-10-25 17:41:18 +02:00
Ludovic Courtès 1c702d1e92 distro: Build glibc with `--enable-obsolete-rpc'.
* distro/packages/base.scm (glibc-final): Pass `--enable-obsolete-rpc'.
  (%bootstrap-glibc): Update hash accordingly.
2012-10-25 17:36:46 +02:00
Ludovic Courtès 371a20e048 distro: Add missing Linux-Libre headers to the bootstrap glibc.
* distro/packages/base.scm (%glibc-stripped): Copy all of Linux-Libre's
  `include/asm' directory; copy a few linux/ headers too.
  (%bootstrap-glibc): Update tarball hash.
2012-10-25 00:58:39 +02:00