From patchwork Wed Dec 7 21:30:43 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joseph Myers X-Patchwork-Id: 18272 Received: (qmail 71868 invoked by alias); 7 Dec 2016 21:31:04 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 71846 invoked by uid 89); 7 Dec 2016 21:31:03 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.5 required=5.0 tests=AWL, BAYES_50, RCVD_IN_DNSWL_NONE, SPF_PASS, URIBL_RED autolearn=ham version=3.3.2 spammy=__init__, UD:path.abspath, selfstrip, os.path.abspath X-HELO: relay1.mentorg.com Date: Wed, 7 Dec 2016 21:30:43 +0000 From: Joseph Myers To: Subject: Add build-many-glibcs.py option to strip installed shared libraries [committed] Message-ID: User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 X-ClientProxiedBy: svr-ies-mbx-01.mgc.mentorg.com (139.181.222.1) To svr-ies-mbx-01.mgc.mentorg.com (139.181.222.1) This patch adds a --strip option to build-many-glibcs.py, to make it strip the installed shared libraries after installation. This is for convenience if you want to compare installed stripped shared libraries before and after a patch that was not meant to result in any code changes: you can run with this option, copy the install/glibcs directory, run again with the patch and compare the */lib* subdirectory contents. (It might make sense for the option to strip libraries in other directories, including stripping debug information from static libraries, with a view to making it possible for a no-generated-code-changes patch to result in completely identical install/glibcs directories, so simplifying comparison, though that may need other build determinism changes, e.g. to build deterministic .a files.) Committed. 2016-12-07 Joseph Myers * scripts/build-many-glibcs.py (Context.__init__): Take strip argument. (Glibc.build_glibc): Strip installed shared libraries if requested. (get_parser): Add --strip option. (main): Update Context call. diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py index d089b0c..eb9b8cc 100755 --- a/scripts/build-many-glibcs.py +++ b/scripts/build-many-glibcs.py @@ -53,12 +53,14 @@ import urllib.request class Context(object): """The global state associated with builds in a given directory.""" - def __init__(self, topdir, parallelism, keep, replace_sources, action): + def __init__(self, topdir, parallelism, keep, replace_sources, strip, + action): """Initialize the context.""" self.topdir = topdir self.parallelism = parallelism self.keep = keep self.replace_sources = replace_sources + self.strip = strip self.srcdir = os.path.join(topdir, 'src') self.versions_json = os.path.join(self.srcdir, 'versions.json') self.build_state_json = os.path.join(topdir, 'build-state.json') @@ -1318,6 +1320,11 @@ class Glibc(object): os.path.join(installdir, 'usr', 'lib')]) if not for_compiler: + if self.ctx.strip: + cmdlist.add_command('strip', + ['sh', '-c', + ('%s %s/lib*/*.so' % + (self.tool_name('strip'), installdir))]) cmdlist.add_command('check', ['make', 'check']) cmdlist.add_command('save-logs', [self.ctx.save_logs], always_run=True) @@ -1490,6 +1497,8 @@ def get_parser(): parser.add_argument('--replace-sources', action='store_true', help='Remove and replace source directories ' 'with the wrong version of a component') + parser.add_argument('--strip', action='store_true', + help='Strip installed glibc libraries') parser.add_argument('topdir', help='Toplevel working directory') parser.add_argument('action', @@ -1508,7 +1517,7 @@ def main(argv): opts = parser.parse_args(argv) topdir = os.path.abspath(opts.topdir) ctx = Context(topdir, opts.parallelism, opts.keep, opts.replace_sources, - opts.action) + opts.strip, opts.action) ctx.run_builds(opts.action, opts.configs)