From 38b5900fd2e9bac9f53fb36d6bb33748ce476d33 Mon Sep 17 00:00:00 2001 From: Samuel Longchamps Date: Mon, 18 Oct 2021 22:41:57 -0400 Subject: [PATCH] Added dual license option, proper copyright Fixed #115 --- LICENSE-APACHE | 4 ++-- LICENSE-MIT | 4 ++++ script/amalgamate.py | 50 ++++++++++++++++++++++++++++++++++++-------- 3 files changed, 47 insertions(+), 11 deletions(-) diff --git a/LICENSE-APACHE b/LICENSE-APACHE index 79e5913..261eeb9 100644 --- a/LICENSE-APACHE +++ b/LICENSE-APACHE @@ -178,7 +178,7 @@ APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" + boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2020 The fast_float authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/LICENSE-MIT b/LICENSE-MIT index 31aa793..2fb2a37 100644 --- a/LICENSE-MIT +++ b/LICENSE-MIT @@ -1,3 +1,7 @@ +MIT License + +Copyright (c) 2021 The fast_float authors + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the diff --git a/script/amalgamate.py b/script/amalgamate.py index b360d99..c203b52 100644 --- a/script/amalgamate.py +++ b/script/amalgamate.py @@ -10,15 +10,25 @@ for filename in ['AUTHORS', 'CONTRIBUTORS']: text += '// fast_float by ' + line if filename == 'CONTRIBUTORS': text += '// with contributions from ' + line - processed_files[filename] = text + processed_files[filename] = text + '//\n' # licenses for filename in ['LICENSE-MIT', 'LICENSE-APACHE']: + lines = [] with open(filename) as f: - text = '' - for line in f: - text += '// ' + line - processed_files[filename] = text + lines = f.readlines() + + # Retrieve subset required for inclusion in source + if filename == 'LICENSE-APACHE': + lines = [ + ' Copyright 2021 The fast_float authors\n', + *lines[189:-1] + ] + + text = '' + for line in lines: + text += '// ' + line.strip() + '\n' + processed_files[filename] = text # code for filename in [ 'fast_float.h', 'float_common.h', 'ascii_number.h', @@ -29,20 +39,42 @@ for filename in [ 'fast_float.h', 'float_common.h', 'ascii_number.h', for line in f: if line.startswith('#include "'): continue text += line - processed_files[filename] = text + processed_files[filename] = '\n' + text # command line import argparse parser = argparse.ArgumentParser(description='Amalgamate fast_float.') -parser.add_argument('--license', default='MIT', help='choose license') +parser.add_argument('--license', default='DUAL', choices=['DUAL', 'MIT', 'APACHE'], help='choose license') parser.add_argument('--output', default='', help='output file (stdout if none') args = parser.parse_args() -text = '\n\n'.join([ +def license_content(license_arg): + result = [] + + if license_arg == 'DUAL': + result += [ + '// Licensed under the Apache License, Version 2.0, or the\n', + '// MIT License at your option. This file may not be copied,\n', + '// modified, or distributed except according to those terms.\n', + '//\n' + ] + + if license_arg in ('DUAL', 'MIT'): + result.append('// MIT License Notice\n//\n') + result.append(processed_files['LICENSE-MIT']) + result.append('//\n') + if license_arg in ('DUAL', 'APACHE'): + result.append('// Apache License (Version 2.0) Notice\n//\n') + result.append(processed_files['LICENSE-APACHE']) + result.append('//\n') + + return result + +text = ''.join([ processed_files['AUTHORS'], processed_files['CONTRIBUTORS'], - processed_files['LICENSE-' + args.license], + *license_content(args.license), processed_files['fast_float.h'], processed_files['float_common.h'], processed_files['ascii_number.h'], processed_files['fast_table.h'], processed_files['decimal_to_binary.h'], processed_files['bigint.h'],