mirror of
git://sourceware.org/git/libabigail.git
synced 2024-12-15 06:24:37 +00:00
58488c5f31
This patch replaces license headers with SPDX identifiers in all files containing license headers. For each file, the SPDX identifier formally represents its current license. Note that the list of SPDX identifiers is available on the SPDX web site at https://spdx.org/licenses. For autoconf-archive/ax_prog_python_version.m4 however, there is a little catch. Dodji Seketeli wrote this ax_check_python_modules.m4. Just like the other autoconf-archive macros, it makes sense to have it under the FSF All Permissive license. Actually, the terms of that license was already in the file but then the license header was wrongly set to GPLv2 with autoconf exception. So I fixed that in this commit by setting the SPDX identifier to FSFAP. * abigail.m4: Replace the license header with the SPDX identifier GPL-3.0-or-later WITH GCC-exception-3.1 * autoconf-archive/ax_check_python_modules.m4: Correctly set the SPDX identifier to FSFAP. * autoconf-archive/ax_compare_version.m4: Replace the license header with the SPDX identifier FSFAP. * autoconf-archive/ax_prog_python_version.m4: Likewise. header with the SPDX identifier FSFAP. * autoconf-archive/ax_valgrind_check.m4: Likewise. * gen-changelog.py: Replace the license header with the SPDX identifier LGPL-2.0-or-later. * include/abg-comp-filter.h: Replace the license header with the SPDX identifier LGPL-3.0-or-later. * include/abg-comparison.h: Likewise. * include/abg-config.h: Likewise. * include/abg-corpus.h: Likewise. * include/abg-cxx-compat.h: Replace the license header with the SPDX identifier LGPL-2.0-or-later. * include/abg-diff-utils.h: Replace the license header with the SPDX identifier LGPL-3.0-or-later * include/abg-dwarf-reader.h: Likewise. * include/abg-fwd.h: Likewise. * include/abg-hash.h: Likewise. * include/abg-ini.h: Likewise. * include/abg-interned-str.h: Likewise. * include/abg-ir.h: Likewise. * include/abg-libxml-utils.h: Likewise. * include/abg-libzip-utils.h: Likewise. * include/abg-reader.h: Likewise. * include/abg-regex.h: Likewise. * include/abg-reporter.h: Likewise. * include/abg-sptr-utils.h: Likewise. * include/abg-suppression.h: Likewise. * include/abg-tools-utils.h: Likewise. * include/abg-traverse.h: Likewise. * include/abg-viz-common.h: Likewise. * include/abg-viz-dot.h: Likewise. * include/abg-viz-svg.h: Likewise. * include/abg-workers.h: Likewise. * include/abg-writer.h: Likewise. * install-sh: Replace the license header with the SPDX identifier MIT. * ltmain.sh: Replace the license header with the SPDX identifier GPL-2.0-or-later. Note that this file has the libtool special exception which allows us to redistribute it under the general license of the project. * src/abg-comp-filter.cc: Replace the license header with the SPDX * src/abg-comparison-priv.h: Likewise. * src/abg-comparison.cc: Likewise. * src/abg-config.cc: Likewise. * src/abg-corpus-priv.h: Likewise. * src/abg-corpus.cc: Likewise. * src/abg-default-reporter.cc: Likewise. * src/abg-diff-utils.cc: Likewise. * src/abg-dwarf-reader.cc: Likewise. * src/abg-elf-helpers.cc: Likewise. * src/abg-elf-helpers.h: Likewise. * src/abg-regex.cc: Likewise. * src/abg-hash.cc: Likewise. * src/abg-ini.cc: Likewise. * src/abg-internal.h: Likewise. * src/abg-ir-priv.h: Likewise. * src/abg-ir.cc: Likewise. * src/abg-leaf-reporter.cc: Likewise. * src/abg-libxml-utils.cc: Likewise. * src/abg-libzip-utils.cc: Likewise. * src/abg-reader.cc: Likewise. * src/abg-reporter-priv.cc: Likewise. * src/abg-reporter-priv.h: Likewise. * src/abg-sptr-utils.cc: Likewise. * src/abg-suppression-priv.h: Likewise. * src/abg-suppression.cc: Likewise. * src/abg-tools-utils.cc: Likewise. * src/abg-traverse.cc: Likewise. * src/abg-viz-common.cc: Likewise. * src/abg-viz-dot.cc: Likewise. * src/abg-viz-svg.cc: Likewise. * src/abg-workers.cc: Likewise. * src/abg-writer.cc: Likewise. * tests/lib/catch.cc: Likewise. * tests/lib/catch.hpp: Add an SPDX identifier BSL-1.0. * tests/mockfedabipkgdiff.in: Replace the license header with the SPDX identifier GPL-3.0-or-later. * tests/print-diff-tree.cc: Likewise. * tests/runtestfedabipkgdiff.py.in: Replaace the license header with the SPDW identifier GPL-3.0-or-later. * tests/test-abicompat.cc: Replace the license header with the SPDX identifier LGPL-3.0-or-later. * tests/test-abidiff-exit.cc: Likewise. * tests/test-abidiff.cc: Likewise. * tests/test-alt-dwarf-file.cc: Likewise. * tests/test-annotate.cc: Likewise. * tests/test-cxx-compat.cc: Likewise. * tests/test-core-diff.cc: Likewise. * tests/test-diff-dwarf-abixml.cc: Likewise. * tests/test-diff-dwarf.cc: Likewise. * tests/test-diff-filter.cc: Likewise. * tests/test-diff-pkg.cc: Likewise. * tests/test-diff-suppr.cc: Likewise. * tests/test-diff2.cc: Likewise. * tests/test-dot.cc: Replace the license header with the SPDX identifier GPL-3.0-with-GCC-exception. * tests/test-elf-helpers.cc: Replace the license header with the SPDX identifier LGPL-3.0-or-later. * tests/test-ini.cc: Likewise. * tests/test-ir-walker.cc: Likewise. * tests/test-kmi-whitelist.cc: Likewise. * tests/test-lookup-syms.cc: Likewise. * tests/test-read-dwarf.cc: Likewise. * tests/test-read-write.cc: Likewise. * tests/test-svg.cc: Replace the license header with the SPDX identifier GPL-3.0-with-GCC-exception. * tests/test-symtab.cc: Replace the license header with the SPDX identifier LGPL-3.0-or-later. * tests/test-tools-utils.cc: Likewise. * tests/test-types-stability.cc: Likewise. * tests/test-utils.cc: Likewise. * tests/test-utils.h: Likewise. * tests/test-write-read-archive.cc: Likewise. * tools/abiar.cc: Likewise. * tools/abicompat.cc: Likewise. * tools/abidiff.cc: Likewise. * tools/abidw.cc: Likewise. * tools/abilint.cc: Likewise. * tools/abipkgdiff.cc: Likewise. * tools/abisym.cc: Likewise. * tools/binilint.cc: Likewise. * tools/fedabipkgdiff: Replace the license header with the SPDX identifier GPL-3.0-or-later. * tools/kmidiff.cc: Likewise. Signed-off-by: Benjamin De Kosnik <bkoz@gnu.org> Signed-off-by: Ben Woodard <woodard@redhat.com> Signed-off-by: Chenxiong Qi <cqi@redhat.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com> Signed-off-by: Giuliano Procida <gprocida@google.com> Signed-off-by: Jan Engelhardt <jengelh@inai.de> Signed-off-by: Jessica Yu <jeyu@kernel.org> Signed-off-by: Jonathan Wakely <jwakely@redhat.com> Signed-off-by: Mark Wielaard <mark@klomp.org> Signed-off-by: Matthias Klose <doko@ubuntu.com> Signed-off-by: Matthias Maennich <maennich@google.com> Signed-off-by: Ondrej Oprala <ondrej.oprala@gmail.com> Signed-off-by: Roland McGrath <roland@hack.frob.com> Signed-off-by: Sinny Kumari <ksinny@gmail.com> Signed-off-by: Slava Barinov <v.barinov@samsung.com>
151 lines
4.5 KiB
Python
151 lines
4.5 KiB
Python
#!/usr/bin/env python
|
|
# SPDX-License-Identifier: LGPL-2.0-or-later
|
|
#
|
|
# -*- mode: python -*-
|
|
#
|
|
# This python program has been copied from
|
|
# https://github.com/GNOME/gnet/blob/master/gen-changelog.py
|
|
#
|
|
# It has been authored by Edward Hervey, of GStreamer fame. I have
|
|
# asked his permission to copy it and re-use it here, as part of the
|
|
# Libabigail project. He granted me the permission to distribute the
|
|
# program under the terms of the GNU Lesser Public License as
|
|
# published by the Free Software Foundaion; either version 2, or (at
|
|
# your option) any later version.
|
|
#
|
|
|
|
import sys
|
|
import subprocess
|
|
import re
|
|
|
|
# Makes a GNU-Style ChangeLog from a git repository
|
|
# Handles git-svn repositories also
|
|
|
|
# Arguments : same as for git log
|
|
release_refs={}
|
|
|
|
def process_commit(lines, files):
|
|
# DATE NAME
|
|
# BLANK LINE
|
|
# Subject
|
|
# BLANK LINE
|
|
# ...
|
|
# FILES
|
|
fileincommit = False
|
|
lines = [x.strip() for x in lines if x.strip() and not x.startswith('git-svn-id')]
|
|
files = [x.strip() for x in files if x.strip()]
|
|
for l in lines:
|
|
if l.startswith('* '):
|
|
fileincommit = True
|
|
break
|
|
|
|
top_line = lines[0]
|
|
subject_line_index = 0 if lines[1].startswith('*') else 1;
|
|
first_cl_body_line_index = 0;
|
|
|
|
for i in range(1, len(lines)):
|
|
if lines[i].startswith('*'):
|
|
first_cl_body_line_index = i
|
|
break;
|
|
|
|
# Clean up top line of ChangeLog entry:
|
|
fields = top_line.split(' ')
|
|
|
|
# 1. remove the time and timezone stuff in "2008-05-13 07:10:28 +0000 name"
|
|
if fields[2].startswith('+') or fields[2].startswith('-'):
|
|
del fields[2]
|
|
if fields[1][2] == ':' and fields[1][5] == ':':
|
|
del fields[1]
|
|
|
|
# 2. munge at least my @src.gnome.org e-mail address...
|
|
if fields[-1] == '<tpm@src.gnome.org>':
|
|
fields[-1] = '<tim@centricular.net>'
|
|
|
|
top_line = ' '.join(fields)
|
|
print(top_line.strip())
|
|
print()
|
|
|
|
if subject_line_index > 0:
|
|
print('\t%s' % lines[subject_line_index].strip())
|
|
|
|
if not fileincommit:
|
|
for f in files:
|
|
print('\t* %s:' % f.strip())
|
|
print()
|
|
|
|
if first_cl_body_line_index > 0:
|
|
for l in lines[first_cl_body_line_index:]:
|
|
if l.startswith('Signed-off-by:'):
|
|
continue
|
|
print('\t%s' % l.strip())
|
|
print()
|
|
|
|
def output_commits():
|
|
cmd = ['git', 'log', '--pretty=format:--START-COMMIT--%H%n%ai %an <%ae>%n%n%s%n%b%n--END-COMMIT--',
|
|
'--date=short', '--name-only']
|
|
|
|
start_tag = find_start_tag()
|
|
|
|
if start_tag is None:
|
|
cmd.extend(sys.argv[1:])
|
|
else:
|
|
cmd.extend(["%s..HEAD" % (start_tag)])
|
|
|
|
p = subprocess.Popen(args=cmd, shell=False,
|
|
stdout=subprocess.PIPE,
|
|
text=True)
|
|
buf = []
|
|
files = []
|
|
filemode = False
|
|
for lin in p.stdout.readlines():
|
|
if lin.startswith("--START-COMMIT--"):
|
|
if buf != []:
|
|
process_commit(buf, files)
|
|
hash = lin[16:].strip()
|
|
try:
|
|
rel = release_refs[hash]
|
|
print("=== release %d.%d.%d ===\n" % (int(rel[0]), int(rel[1]), int(rel[2])))
|
|
except:
|
|
pass
|
|
buf = []
|
|
files = []
|
|
filemode = False
|
|
elif lin.startswith("--END-COMMIT--"):
|
|
filemode = True
|
|
elif filemode == True:
|
|
files.append(lin)
|
|
else:
|
|
buf.append(lin)
|
|
if buf != []:
|
|
process_commit(buf, files)
|
|
|
|
def get_rel_tags():
|
|
# Populate the release_refs dict with the tags for previous releases
|
|
reltagre = re.compile("^([a-z0-9]{40}) refs\/tags\/GNET-([0-9]+)[-_.]([0-9]+)[-_.]([0-9]+)")
|
|
|
|
cmd = ['git', 'show-ref', '--tags', '--dereference']
|
|
p = subprocess.Popen(args=cmd, shell=False,
|
|
stdout=subprocess.PIPE,
|
|
text=True)
|
|
for lin in p.stdout:
|
|
match = reltagre.search(lin)
|
|
if match:
|
|
(sha, maj, min, nano) = match.groups()
|
|
release_refs[sha] = (maj, min, nano)
|
|
|
|
def find_start_tag():
|
|
starttagre = re.compile("^([a-z0-9]{40}) refs\/tags\/CHANGELOG_START")
|
|
cmd = ['git', 'show-ref', '--tags']
|
|
p = subprocess.Popen(args=cmd, shell=False,
|
|
stdout=subprocess.PIPE,
|
|
text=True)
|
|
for lin in p.stdout:
|
|
match = starttagre.search(lin)
|
|
if match:
|
|
return match.group(1)
|
|
return None
|
|
|
|
if __name__ == "__main__":
|
|
get_rel_tags()
|
|
output_commits()
|