gnu: Add Protobuf.

* gnu/packages/protobuf.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
gnu: Add perl-io-tty.

* gnu/packages/perl.scm (perl-io-tty): New variable.
gnu: Add Mosh.

* gnu/packages/ssh.scm (mosh): New variable.
packages: Correctly handle patching for inputs with no extension.

Reported by Manolis Ragkousis <manolis837@gmail.com>.

* guix/packages.scm (patch-and-repack)[numeric-extension?]: Handle
  FILE-NAME with no extension.
openssh: Add another mirror.

* gnu/packages/ssh.scm (openssh): Add the mirror.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
store: Add 'add-permanent-root' and 'remove-permanent-root'.

* guix/store.scm (add-indirect-root): Improve docstring.
  (%gc-roots-directory): New variable.
  (add-permanent-root, remove-permanent-root): New procedures.
* tests/store.scm ("permanent root"): New test.
nar: Really protect the temporary store directory from GC.

Prevents garbage collection of the temporary store directory while
restoring a file set, as it could previously happen:
<https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00167.html>.

* guix/nar.scm (temporary-store-directory): Rename to...
  (temporary-store-file): ... this.  Use 'add-permanent-root' instead of
  'add-indirect-root'.
  (with-temporary-store-file): New macro.
  (restore-one-item): New procedure, with code formerly in
  'restore-file-set'.  Use 'with-temporary-store-file'.
  (restore-file-set): Use it.
gnu: Add Linux man-pages.

* gnu/packages/man.scm (man-pages): New variable.
derivations: Fix 'fixed-output-derivation?'.

Reported by Nikita Karetnikov <nikita@karetnikov.org>.

* guix/derivations.scm (fixed-output-derivation?): Fix pattern.
* tests/derivations.scm ("fixed-output-derivation?"): Add test.
offload: Better synchronize with remote invocation of 'guix archive --missing'.

* guix/scripts/offload.scm (send-files)[missing-files]: Call 'waitpid'
  after reading all of MISSING.
offload: '{send,receive}-files' wait for completion of the transfer.

Fixes situations where the remote 'guix build' is invoked before the
.drv has been completely copied, as reported at
<https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00174.html>.

In some cases 'send-files' would return before the other end is done
importing the files, and so the subsequent 'guix build' invocation would
just miss the .drv file it refers to.

* guix/utils.scm (call-with-decompressed-port): Don't close PORT.
  (call-with-compressed-output-port): Likewise.
* tests/utils.scm ("compressed-output-port + decompressed-port"): Adjust
  accordingly.
* guix/scripts/offload.scm (send-files): Add explicit (close-pipe pipe)
  call.
  (retrieve-files): Likewise.
gnu: man-pages: Fix URL.

* gnu/packages/man.scm (man-pages): Use the 'kernel.org' mirror set.
gnu: unionfs-fuse-static: Remove dependency on util-linux.

* gnu/packages/linux.scm (fuse-static): New variable.
  (unionfs-fuse/static): Use it.
linux-initrd: Mount / as a unionfs when asking for a volatile root.

* guix/build/linux-initrd.scm (make-essential-device-nodes): Make
  /dev/fuse.
  (boot-system): Add #:unionfs parameter.  Invoke UNIONFS instead of
  copying files over when VOLATILE-ROOT? is true.
* gnu/system/linux-initrd.scm (expression->initrd): Add #:inputs
  parameter.
  [files-to-copy]: New procedure.
  [builder]: Add 'to-copy' parameter; honor it.
  (qemu-initrd)[linux-modules]: Add 'fuse.ko' when VOLATILE-ROOT?.
  Pass UNIONFS-FUSE/STATIC as #:inputs; change builder to pass #:unionfs
  to 'boot-system'.
gnu: gawk: Upgrade to 4.1.1.

* gnu/packages/gawk.scm (gawk): Upgrade to 4.1.1.
gnu: gawk: Revert previous commit, which should go into core-updates.

* gnu/packages/gawk.scm (gawk): Downgrade to 4.1.0 to avoid recompiling
    almost everything in master.
gnu: wdiff: Upgrade to 1.2.2.

* gnu/packages/wdiff.scm (wdiff): Upgrade to 1.2.2.
gnu: Add qjson.

* gnu/packages/kde.scm (qjson): New variable.
gnu: Add libdbusmenu-qt.

*  gnu/packages/kde.scm (libdbusmenu-qt): New variable.
gnu: man-db: Add specification for $MANPATH.

* gnu/packages/man.scm (man-db)[native-search-paths]: New field.