From f765dae15759ec7daf50fe3f0b3437a518706883 Mon Sep 17 00:00:00 2001 From: Nikita Karetnikov Date: Sun, 25 Nov 2012 18:32:33 +0000 Subject: [PATCH] distro: Add GNU Cpio. * distro/packages/cpio.scm, distro/packages/patches/cpio-gets-undeclared.patch: New files. * Makefile.am (MODULES): Add 'cpio.scm'. (dist_patch_DATA): Add 'cpio-gets-undeclared.patch'. --- Makefile.am | 2 + distro/packages/cpio.scm | 57 ++++++++++++++++++++ distro/packages/patches/cpio-gets-undeclared.patch | 45 +++++++++++++++ 3 files changed, 104 insertions(+), 0 deletions(-) create mode 100644 distro/packages/cpio.scm create mode 100644 distro/packages/patches/cpio-gets-undeclared.patch diff --git a/Makefile.am b/Makefile.am index 332946c..2452ff6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -48,6 +48,7 @@ MODULES = \ distro/packages/bison.scm \ distro/packages/bootstrap.scm \ distro/packages/compression.scm \ + distro/packages/cpio.scm \ distro/packages/ddrescue.scm \ distro/packages/ed.scm \ distro/packages/flex.scm \ @@ -92,6 +93,7 @@ nobase_dist_guilemodule_DATA = $(MODULES) patchdir = $(pkgdatadir)/patches dist_patch_DATA = \ distro/packages/patches/binutils-ld-new-dtags.patch \ + distro/packages/patches/cpio-gets-undeclared.patch \ distro/packages/patches/diffutils-gets-undeclared.patch \ distro/packages/patches/flex-bison-tests.patch \ distro/packages/patches/gettext-gets-undeclared.patch \ diff --git a/distro/packages/cpio.scm b/distro/packages/cpio.scm new file mode 100644 index 0000000..70c5c01 --- /dev/null +++ b/distro/packages/cpio.scm @@ -0,0 +1,57 @@ +;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*- +;;; Copyright (C) 2012 Nikita Karetnikov +;;; +;;; This file is part of Guix. +;;; +;;; Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with Guix. If not, see . + +(define-module (distro packages cpio) + #:use-module (distro) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public cpio + (package + (name "cpio") + (version "2.11") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/cpio/cpio-" + version ".tar.bz2")) + (sha256 + (base32 + "1gavgpzqwgkpagjxw72xgxz52y1ifgz0ckqh8g7cckz7jvyhp0mv")))) + (build-system gnu-build-system) + (arguments + `(#:patches (list (assoc-ref %build-inputs + "patch/gets")))) + (inputs + `(("patch/gets" ,(search-patch "cpio-gets-undeclared.patch")))) + (home-page "https://www.gnu.org/software/cpio/") + (synopsis + "A program to create or extract from cpio archives") + (description + "GNU Cpio copies files into or out of a cpio or tar archive. The +archive can be another file on the disk, a magnetic tape, or a pipe. + +GNU Cpio supports the following archive formats: binary, old ASCII, new +ASCII, crc, HPUX binary, HPUX old ASCII, old tar, and POSIX.1 tar. The +tar format is provided for compatability with the tar program. By +default, cpio creates binary format archives, for compatibility with +older cpio programs. When extracting from archives, cpio automatically +recognizes which kind of archive it is reading and can read archives +created on machines with a different byte-order.") + (license "GPLv3+"))) \ No newline at end of file diff --git a/distro/packages/patches/cpio-gets-undeclared.patch b/distro/packages/patches/cpio-gets-undeclared.patch new file mode 100644 index 0000000..bc34de6 --- /dev/null +++ b/distro/packages/patches/cpio-gets-undeclared.patch @@ -0,0 +1,45 @@ +This patch is needed to allow builds with newer versions of +the GNU libc (2.16+). + +The upstream fix was: + + commit 66712c23388e93e5c518ebc8515140fa0c807348 + Author: Eric Blake + Date: Thu Mar 29 13:30:41 2012 -0600 + + stdio: don't assume gets any more + + Gnulib intentionally does not have a gets module, and now that C11 + and glibc have dropped it, we should be more proactive about warning + any user on a platform that still has a declaration of this dangerous + interface. + + * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets + support. + * modules/stdio (Makefile.am): Likewise. + * lib/stdio-read.c (gets): Likewise. + * tests/test-stdio-c++.cc: Likewise. + * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment. + * lib/stdio.in.h (gets): Make warning occur in more places. + * doc/posix-functions/gets.texi (gets): Update documentation. + Reported by Christer Solskogen. + + Signed-off-by: Eric Blake + +This patch just gets rid of the offending part. + +--- cpio-2.11/gnu/stdio.in.h-orig 2012-11-25 22:17:06.000000000 +0400 ++++ cpio-2.11/gnu/stdio.in.h 2012-11-25 22:18:36.000000000 +0400 +@@ -135,12 +135,6 @@ + "use gnulib module fflush for portable POSIX compliance"); + #endif + +-/* It is very rare that the developer ever has full control of stdin, +- so any use of gets warrants an unconditional warning. Assume it is +- always declared, since it is required by C89. */ +-#undef gets +-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); +- + #if @GNULIB_FOPEN@ + # if @REPLACE_FOPEN@ + # if !(defined __cplusplus && defined GNULIB_NAMESPACE) -- 1.7.5.4