diff options
author | Siddhesh Poyarekar <siddhesh@sourceware.org> | 2021-09-03 22:00:36 +0530 |
---|---|---|
committer | Siddhesh Poyarekar <siddhesh@sourceware.org> | 2021-09-03 22:00:37 +0530 |
commit | 04f2125c6eff341f9c52682866d1eea8d204c852 (patch) | |
tree | 70cc030d6d6f2adcb1ae982b62de27e297f7c8dc /scripts | |
parent | 23777232c23f80809613bdfa329f63aadf992922 (diff) | |
download | glibc-04f2125c6eff341f9c52682866d1eea8d204c852.tar.gz glibc-04f2125c6eff341f9c52682866d1eea8d204c852.tar.xz glibc-04f2125c6eff341f9c52682866d1eea8d204c852.zip |
Port shared code information from the wiki
Since the shared code now has special status with respect to copyrights, port them into a more structured format in the source tree and add a python function that parses and returns a dictionary with the information. I need this to exclude these files from the Contributed-by changes and I reckon it would be useful to know these files for future tooling. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/glibc_shared_code.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/scripts/glibc_shared_code.py b/scripts/glibc_shared_code.py new file mode 100644 index 0000000000..873a26117f --- /dev/null +++ b/scripts/glibc_shared_code.py @@ -0,0 +1,70 @@ +#!/usr/bin/python +# Copyright (C) 2021 Free Software Foundation, Inc. +# This file is part of the GNU C Library. +# +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# The GNU C Library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, see +# <https://www.gnu.org/licenses/>. + +def get_glibc_shared_code(path): + """ Get glibc shared code information from a file + + The input file must have project names in their own line ending with a colon + and all shared files in the project on their own lines following the project + name. Whitespaces are ignored. Lines with # as the first non-whitespace + character are ignored. + + Args: + path: The path to file containing shared code information. + + Returns: + A dictionary with project names as key and lists of files as values. + """ + + projects = {} + with open(path, 'r') as f: + for line in f.readlines(): + line = line.strip() + if len(line) == 0 or line[0] == '#': + continue + if line[-1] == ':': + cur = line[:-1] + projects[cur] = [] + else: + projects[cur].append(line) + + return projects + +# Function testing. +import sys +from os import EX_NOINPUT +from os.path import exists +from pprint import * + +if __name__ == '__main__': + if len(sys.argv) != 2: + print('Usage: %s <file name>' % sys.argv[0]) + print('Run this script from the base glibc source directory') + sys.exit(EX_NOINPUT) + + print('Testing get_glibc_shared_code with %s:\n' % sys.argv[1]) + r = get_glibc_shared_code(sys.argv[1]) + errors = False + for k in r.keys(): + for f in r[k]: + if not exists(f): + print('%s does not exist' % f) + errors = True + + if not errors: + pprint(r) |