1c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath# This file is part of Eigen, a lightweight C++ template library 2c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath# for linear algebra. 3c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath# 4c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath# Copyright (C) 2012 Keir Mierle <mierle@gmail.com> 5c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath# 6c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath# This Source Code Form is subject to the terms of the Mozilla 7c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath# Public License v. 2.0. If a copy of the MPL was not distributed 8c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath# with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath# 10c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath# Author: mierle@gmail.com (Keir Mierle) 11c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath# 12c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath# Make the long-awaited conversion to MPL. 13c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 14c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathlgpl3_header = ''' 15c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Eigen is free software; you can redistribute it and/or 16c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// modify it under the terms of the GNU Lesser General Public 17c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// License as published by the Free Software Foundation; either 18c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// version 3 of the License, or (at your option) any later version. 19c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// 20c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Alternatively, you can redistribute it and/or 21c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// modify it under the terms of the GNU General Public License as 22c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// published by the Free Software Foundation; either version 2 of 23c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// the License, or (at your option) any later version. 24c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// 25c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY 26c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 27c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the 28c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// GNU General Public License for more details. 29c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// 30c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// You should have received a copy of the GNU Lesser General Public 31c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// License and a copy of the GNU General Public License along with 32c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Eigen. If not, see <http://www.gnu.org/licenses/>. 33c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath''' 34c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 35c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathmpl2_header = """ 36c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// This Source Code Form is subject to the terms of the Mozilla 37c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Public License v. 2.0. If a copy of the MPL was not distributed 38c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 39c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath""" 40c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 41c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathimport os 42c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathimport sys 43c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 44c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathexclusions = set(['relicense.py']) 45c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 46c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathdef update(text): 47c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath if text.find(lgpl3_header) == -1: 48c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath return text, False 49c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath return text.replace(lgpl3_header, mpl2_header), True 50c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 51c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathrootdir = sys.argv[1] 52c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathfor root, sub_folders, files in os.walk(rootdir): 53c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath for basename in files: 54c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath if basename in exclusions: 55c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath print 'SKIPPED', filename 56c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath continue 57c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath filename = os.path.join(root, basename) 58c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath fo = file(filename) 59c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath text = fo.read() 60c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath fo.close() 61c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 62c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath text, updated = update(text) 63c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath if updated: 64c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath fo = file(filename, "w") 65c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath fo.write(text) 66c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath fo.close() 67c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath print 'UPDATED', filename 68c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath else: 69c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath print ' ', filename 70