mirror of
https://github.com/coreutils/coreutils.git
synced 2026-10-28 09:44:34 +08:00
install: new option: --strip-program,
...to specify the program used to strip binaries * src/install.c (main): Handle new option --strip-program. (strip): Use strip program from global variable strip_program. (usage): Mention new option --strip-program in --help. * tests/tests/strip-program: Test case for new option --strip-program. * tests/Makefile.am: Add new test case to test set. * doc/coreutils.texi: Mention new option --strip-program. * NEWS: Mention the change. * TODO: Remove completed task.
This commit is contained in:
1 parent
ea2887bbe4
commit
54281e9c60
6 files changed
+68
-6
No files matched your search
@@ -28,6 +28,9 @@ GNU coreutils NEWS -*- outline -*-
|
||||
expr support arbitrarily large numbers. Pollard's rho algorithm is
|
||||
used to factor large numbers.
|
||||
|
||||
install accepts a new option --strip-program to specify the program used to
|
||||
strip binaries.
|
||||
|
||||
ls now colorizes files with capabilities if libcap is available
|
||||
|
||||
md5sum now accepts the new option, --quiet, to suppress the printing of
|
||||
|
||||
@@ -42,9 +42,6 @@ renice: POSIX utility, needs implementing.
|
||||
suggestion from Karl Berry (among others).
|
||||
Bob Proulx is working on this.
|
||||
|
||||
install: add an option to specify the program used to strip binaries.
|
||||
suggestion from Karl Berry
|
||||
|
||||
doc/coreutils.texi:
|
||||
Address this comment: FIXME: mv's behavior in this case is system-dependent
|
||||
Better still: fix the code so it's *not* system-dependent.
|
||||
|
||||
@@ -7923,6 +7923,11 @@ to when they were last installed.
|
||||
@cindex stripping symbol table information
|
||||
Strip the symbol tables from installed binary executables.
|
||||
|
||||
@itemx --strip-program=@var{program}
|
||||
@opindex --strip-program
|
||||
@cindex symbol table information, stripping, program
|
||||
Program used to strip binaries.
|
||||
|
||||
@optBackupSuffix
|
||||
|
||||
@optTargetDirectory
|
||||
|
||||
+18
-3
@@ -131,11 +131,15 @@ static bool strip_files;
|
||||
/* If true, install a directory instead of a regular file. */
|
||||
static bool dir_arg;
|
||||
|
||||
/* Program used to strip binaries, "strip" is default */
|
||||
static char *strip_program = "strip";
|
||||
|
||||
/* For long options that have no equivalent short option, use a
|
||||
non-character as a pseudo short option, starting with CHAR_MAX + 1. */
|
||||
enum
|
||||
{
|
||||
PRESERVE_CONTEXT_OPTION = CHAR_MAX + 1
|
||||
PRESERVE_CONTEXT_OPTION = CHAR_MAX + 1,
|
||||
STRIP_PROGRAM_OPTION
|
||||
};
|
||||
|
||||
static struct option const long_options[] =
|
||||
@@ -154,6 +158,7 @@ static struct option const long_options[] =
|
||||
a year or two later. */
|
||||
{"preserve_context", no_argument, NULL, PRESERVE_CONTEXT_OPTION},
|
||||
{"strip", no_argument, NULL, 's'},
|
||||
{"strip-program", required_argument, NULL, STRIP_PROGRAM_OPTION},
|
||||
{"suffix", required_argument, NULL, 'S'},
|
||||
{"target-directory", required_argument, NULL, 't'},
|
||||
{"verbose", no_argument, NULL, 'v'},
|
||||
@@ -330,6 +335,7 @@ main (int argc, char **argv)
|
||||
bool no_target_directory = false;
|
||||
int n_files;
|
||||
char **file;
|
||||
bool strip_program_specified = false;
|
||||
security_context_t scontext = NULL;
|
||||
/* set iff kernel has extra selinux system calls */
|
||||
selinux_enabled = (0 < is_selinux_enabled ());
|
||||
@@ -373,6 +379,10 @@ main (int argc, char **argv)
|
||||
signal (SIGCHLD, SIG_DFL);
|
||||
#endif
|
||||
break;
|
||||
case STRIP_PROGRAM_OPTION:
|
||||
strip_program = xstrdup (optarg);
|
||||
strip_program_specified = true;
|
||||
break;
|
||||
case 'd':
|
||||
dir_arg = true;
|
||||
break;
|
||||
@@ -514,6 +524,10 @@ main (int argc, char **argv)
|
||||
free (change);
|
||||
}
|
||||
|
||||
if (strip_program_specified && !strip_files)
|
||||
error (0, 0, _("WARNING: ignoring --strip-program option as -s option was "
|
||||
"not specified"));
|
||||
|
||||
get_ids ();
|
||||
|
||||
if (dir_arg)
|
||||
@@ -708,8 +722,8 @@ strip (char const *name)
|
||||
error (EXIT_FAILURE, errno, _("fork system call failed"));
|
||||
break;
|
||||
case 0: /* Child. */
|
||||
execlp ("strip", "strip", name, NULL);
|
||||
error (EXIT_FAILURE, errno, _("cannot run strip"));
|
||||
execlp (strip_program, strip_program, name, NULL);
|
||||
error (EXIT_FAILURE, errno, _("cannot run %s"), strip_program);
|
||||
break;
|
||||
default: /* Parent. */
|
||||
if (waitpid (pid, &status, 0) < 0)
|
||||
@@ -828,6 +842,7 @@ Mandatory arguments to long options are mandatory for short options too.\n\
|
||||
-p, --preserve-timestamps apply access/modification times of SOURCE files\n\
|
||||
to corresponding destination files\n\
|
||||
-s, --strip strip symbol tables\n\
|
||||
--strip-program=PROGRAM program used to strip binaries\n\
|
||||
-S, --suffix=SUFFIX override the usual backup suffix\n\
|
||||
-t, --target-directory=DIRECTORY copy all SOURCE arguments into DIRECTORY\n\
|
||||
-T, --no-target-directory treat DEST as a normal file\n\
|
||||
|
||||
@@ -311,6 +311,7 @@ TESTS = \
|
||||
install/basic-1 \
|
||||
install/create-leading \
|
||||
install/d-slashdot \
|
||||
install/strip-program \
|
||||
install/trap \
|
||||
ln/backup-1 \
|
||||
ln/hard-backup \
|
||||
|
||||
Executable
+41
@@ -0,0 +1,41 @@
|
||||
#!/bin/sh
|
||||
# Ensure "install -s --strip-program=PROGRAM" uses the program to strip
|
||||
|
||||
# Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
|
||||
# This program 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.
|
||||
|
||||
# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
if test "$VERBOSE" = yes; then
|
||||
set -x
|
||||
ginstall --version
|
||||
fi
|
||||
|
||||
. $srcdir/test-lib.sh
|
||||
|
||||
working_umask_or_skip_
|
||||
|
||||
cat <<EOF > b || framework_failure
|
||||
#!$POSIX_SHELL
|
||||
sed s/b/B/ \$1 > \$1.t && mv \$1.t \$1
|
||||
EOF
|
||||
chmod a+x b || framework_failure
|
||||
|
||||
fail=0
|
||||
|
||||
echo abc > src || fail=1
|
||||
echo aBc > exp || fail=1
|
||||
ginstall src dest -s --strip-program=./b || fail=1
|
||||
compare dest exp || fail=1
|
||||
|
||||
(exit $fail); exit $fail
|
||||
Reference in new issue
Block a user