diff --git a/GROOVY_1_8_9.zip b/GROOVY_1_8_9.zip new file mode 100644 index 0000000000000000000000000000000000000000..206005c2c5afbda9e3373ff7ed4557d64246e93f Binary files /dev/null and b/GROOVY_1_8_9.zip differ diff --git a/LICENSE-2.0.txt b/LICENSE-2.0.txt new file mode 100644 index 0000000000000000000000000000000000000000..d645695673349e3947e8e5ae42332d0ac3164cd7 --- /dev/null +++ b/LICENSE-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + 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 "[]" + 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 + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + 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. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/cpl-v10.txt b/cpl-v10.txt new file mode 100644 index 0000000000000000000000000000000000000000..ca906c5ee4ab0b02c61ad8776f33063004852da9 --- /dev/null +++ b/cpl-v10.txt @@ -0,0 +1,239 @@ +*Common Public License - v 1.0* + +*Updated 16 Apr 2009* + +*As of 25 Feb 2009, IBM has assigned the Agreement Steward role for the +CPL to the Eclipse Foundation. Eclipse has designated the Eclipse Public +License (EPL) as the follow-on version of the CPL.* + +** + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF +THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +*1. DEFINITIONS* + +"Contribution" means: + + a) in the case of the initial Contributor, the initial code and + documentation distributed under this Agreement, and + b) in the case of each subsequent Contributor: + + i) changes to the Program, and + + ii) additions to the Program; + + where such changes and/or additions to the Program originate from + and are distributed by that particular Contributor. A Contribution + 'originates' from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's + behalf. Contributions do not include additions to the Program which: + (i) are separate modules of software distributed in conjunction with + the Program under their own license agreement, and (ii) are not + derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +** + +*2. GRANT OF RIGHTS* + + a) Subject to the terms of this Agreement, each Contributor hereby + grantsRecipient a non-exclusive, worldwide, royalty-free copyright + license toreproduce, prepare derivative works of, publicly display, + publicly perform, distribute and sublicense the Contribution of such + Contributor, if any, and such derivative works, in source code and + object code form. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide,royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in source code and object code form. This patent license + shall apply to the combination of the Contribution and the Program + if, at the time the Contribution is added by the Contributor, such + addition of the Contribution causes such combination to be covered + by the Licensed Patents. The patent license shall not apply to any + other combinations which include the Contribution. No hardware per + se is licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby assumes + sole responsibility to secure any other intellectual property rights + needed, if any. For example, if a third party patent license is + required to allow Recipient to distribute the Program, it is + Recipient's responsibility to acquire that license before + distributing the Program. + + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant + the copyright license set forth in this Agreement. + +*3. REQUIREMENTS* + +**A Contributor may choose to distribute the Program in object code form +under its own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and + + b) its license agreement: + + i) effectively disclaimson behalf of all Contributors all warranties + and conditions, express and implied, including warranties or + conditions of title and non-infringement, and implied warranties or + conditions of merchantability and fitness for a particular purpose; + + ii) effectively excludes on behalf of all Contributors all liability + for damages, including direct, indirect, special, incidental and + consequential damages, such as lost profits; + + iii)states that any provisions which differ from this Agreement are + offered by that Contributor alone and not by any other party; and + + iv) states that source code for the Program is available from such + Contributor, and informs licensees how to obtain it in a reasonable + manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + + a) it must be made available under this Agreement; and + + b) a copy of this Agreement must be included with each copy of the + Program. + +Contributors may not remove or alter any copyright notices contained +within the Program. + +Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution. + +*4. COMMERCIAL DISTRIBUTION* + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, the +Contributor who includes the Program in a commercial product offering +should do so in a manner which does not create potential liability for +other Contributors. Therefore, if a Contributor includes the Program in +a commercial product offering, such Contributor ("Commercial +Contributor") hereby agrees to defend and indemnify every other +Contributor ("Indemnified Contributor") against any losses, damages and +costs (collectively "Losses") arising from claims, lawsuits and other +legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the +Program in a commercial product offering. The obligations in this +section do not apply to any claims or Losses relating to any actual or +alleged intellectual property infringement. In order to qualify, an +Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial +Contributor to control, and cooperate with the Commercial Contributor +in, the defense and any related settlement negotiations. The Indemnified +Contributor may participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages. + +*5. NO WARRANTY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED +ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES +OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR +A PARTICULAR PURPOSE. Each Recipient issolely responsible for +determining the appropriateness of using and distributing the Programand +assumes all risks associated with its exercise of rights under this +Agreement, including but not limited to the risks and costs of program +errors, compliance with applicable laws, damage to or loss of data, +programs or equipment, and unavailability or interruption of operations. + +*6. DISCLAIMER OF LIABILITY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR +ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS),HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +*7. GENERAL* + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further action +by the parties hereto, such provision shall be reformed to the minimum +extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against a Contributor with +respect to a patent applicable to software (including a cross-claim or +counterclaim in a lawsuit), then any patent licenses granted by that +Contributor to such Recipient under this Agreement shall terminate as of +the date such litigation is filed. In addition, if Recipient institutes +patent litigation against any entity (including a cross-claim or +counterclaim in a lawsuit) alleging that the Program itself (excluding +combinations of the Program with other software or hardware) infringes +such Recipient's patent(s), then such Recipient's rights granted under +Section 2(b) shall terminate as of the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails +to comply with any of the material terms or conditions of this Agreement +and does not cure such failure in a reasonable period of time after +becoming aware of such noncompliance. If all Recipient's rights under +this Agreement terminate, Recipient agrees to cease use and distribution +of the Program as soon as reasonably practicable. However, Recipient's +obligations under this Agreement and any licenses granted by Recipient +relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and may +only be modified in the following manner. The Agreement Steward reserves +the right to publish new versions (including revisions) of this +Agreement from time to time. No one other than the Agreement Steward has +the right to modify this Agreement. IBM is the initial Agreement +Steward. IBM may assign the responsibility to serve as the Agreement +Steward to a suitable separate entity. Each new version of the Agreement +will be given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the +Agreement under which it was received. In addition, after a new version +of the Agreement is published, Contributor may elect to distribute the +Program (including its Contributions) under the new version. Except as +expressly stated in Sections 2(a) and 2(b) above, Recipient receives no +rights or licenses to the intellectual property of any Contributor under +this Agreement, whether expressly, by implication, estoppel or +otherwise.All rights in the Program not expressly granted under this +Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to +this Agreement will bring a legal action under this Agreement more than +one year after the cause of action arose. Each party waives its rights +to a jury trial in any resulting litigation. + diff --git a/epl-v10.txt b/epl-v10.txt new file mode 100644 index 0000000000000000000000000000000000000000..0d347ab800d907e0de59ba9797eea9843bdde1e5 --- /dev/null +++ b/epl-v10.txt @@ -0,0 +1,224 @@ + + Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE +PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF +THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +*1. DEFINITIONS* + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and +documentation distributed under this Agreement, and + +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and +are distributed by that particular Contributor. A Contribution +'originates' from a Contributor if it was added to the Program by such +Contributor itself or anyone acting on such Contributor's behalf. +Contributions do not include additions to the Program which: (i) are +separate modules of software distributed in conjunction with the Program +under their own license agreement, and (ii) are not derivative works of +the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +*2. GRANT OF RIGHTS* + +a) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free copyright +license to reproduce, prepare derivative works of, publicly display, +publicly perform, distribute and sublicense the Contribution of such +Contributor, if any, and such derivative works, in source code and +object code form. + +b) Subject to the terms of this Agreement, each Contributor hereby +grants Recipient a non-exclusive, worldwide, royalty-free patent license +under Licensed Patents to make, use, sell, offer to sell, import and +otherwise transfer the Contribution of such Contributor, if any, in +source code and object code form. This patent license shall apply to the +combination of the Contribution and the Program if, at the time the +Contribution is added by the Contributor, such addition of the +Contribution causes such combination to be covered by the Licensed +Patents. The patent license shall not apply to any other combinations +which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the +licenses to its Contributions set forth herein, no assurances are +provided by any Contributor that the Program does not infringe the +patent or other intellectual property rights of any other entity. Each +Contributor disclaims any liability to Recipient for claims brought by +any other entity based on infringement of intellectual property rights +or otherwise. As a condition to exercising the rights and licenses +granted hereunder, each Recipient hereby assumes sole responsibility to +secure any other intellectual property rights needed, if any. For +example, if a third party patent license is required to allow Recipient +to distribute the Program, it is Recipient's responsibility to acquire +that license before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient +copyright rights in its Contribution, if any, to grant the copyright +license set forth in this Agreement. + +*3. REQUIREMENTS* + +A Contributor may choose to distribute the Program in object code form +under its own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties +and conditions, express and implied, including warranties or conditions +of title and non-infringement, and implied warranties or conditions of +merchantability and fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for +damages, including direct, indirect, special, incidental and +consequential damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are +offered by that Contributor alone and not by any other party; and + +iv) states that source code for the Program is available from such +Contributor, and informs licensees how to obtain it in a reasonable +manner on or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained +within the Program. + +Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent +Recipients to identify the originator of the Contribution. + +*4. COMMERCIAL DISTRIBUTION* + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, the +Contributor who includes the Program in a commercial product offering +should do so in a manner which does not create potential liability for +other Contributors. Therefore, if a Contributor includes the Program in +a commercial product offering, such Contributor ("Commercial +Contributor") hereby agrees to defend and indemnify every other +Contributor ("Indemnified Contributor") against any losses, damages and +costs (collectively "Losses") arising from claims, lawsuits and other +legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the +Program in a commercial product offering. The obligations in this +section do not apply to any claims or Losses relating to any actual or +alleged intellectual property infringement. In order to qualify, an +Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial +Contributor to control, and cooperate with the Commercial Contributor +in, the defense and any related settlement negotiations. The Indemnified +Contributor may participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those +performance claims and warranties, and if a court requires any other +Contributor to pay any damages as a result, the Commercial Contributor +must pay those damages. + +*5. NO WARRANTY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED +ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES +OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR +A PARTICULAR PURPOSE. Each Recipient is solely responsible for +determining the appropriateness of using and distributing the Program +and assumes all risks associated with its exercise of rights under this +Agreement , including but not limited to the risks and costs of program +errors, compliance with applicable laws, damage to or loss of data, +programs or equipment, and unavailability or interruption of operations. + +*6. DISCLAIMER OF LIABILITY* + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR +ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING +WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR +DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED +HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +*7. GENERAL* + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further action +by the parties hereto, such provision shall be reformed to the minimum +extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including +a cross-claim or counterclaim in a lawsuit) alleging that the Program +itself (excluding combinations of the Program with other software or +hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails +to comply with any of the material terms or conditions of this Agreement +and does not cure such failure in a reasonable period of time after +becoming aware of such noncompliance. If all Recipient's rights under +this Agreement terminate, Recipient agrees to cease use and distribution +of the Program as soon as reasonably practicable. However, Recipient's +obligations under this Agreement and any licenses granted by Recipient +relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and may +only be modified in the following manner. The Agreement Steward reserves +the right to publish new versions (including revisions) of this +Agreement from time to time. No one other than the Agreement Steward has +the right to modify this Agreement. The Eclipse Foundation is the +initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is +published, Contributor may elect to distribute the Program (including +its Contributions) under the new version. Except as expressly stated in +Sections 2(a) and 2(b) above, Recipient receives no rights or licenses +to the intellectual property of any Contributor under this Agreement, +whether expressly, by implication, estoppel or otherwise. All rights in +the Program not expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to +this Agreement will bring a legal action under this Agreement more than +one year after the cause of action arose. Each party waives its rights +to a jury trial in any resulting litigation. + diff --git a/groovy-CVE-2015-3253-and-CVE-2016-6814.patch b/groovy-CVE-2015-3253-and-CVE-2016-6814.patch new file mode 100644 index 0000000000000000000000000000000000000000..5fa7673eac0ff236d3fbfd1500fc5c88a1fa34e0 --- /dev/null +++ b/groovy-CVE-2015-3253-and-CVE-2016-6814.patch @@ -0,0 +1,43 @@ +--- groovy-1.8.9/src/main/org/codehaus/groovy/runtime/MethodClosure.java~ 2017-08-23 11:14:43.972873435 +0200 ++++ groovy-1.8.9/src/main/org/codehaus/groovy/runtime/MethodClosure.java 2017-08-23 11:21:34.318169659 +0200 +@@ -18,6 +18,7 @@ + import groovy.lang.Closure; + import groovy.lang.MetaMethod; + ++import java.io.IOException; + import java.util.List; + + +@@ -30,8 +31,10 @@ + */ + public class MethodClosure extends Closure { + ++ public static boolean ALLOW_RESOLVE = false; ++ + private String method; +- ++ + public MethodClosure(Object owner, String method) { + super(owner); + this.method = method; +@@ -59,6 +62,20 @@ + protected Object doCall(Object arguments) { + return InvokerHelper.invokeMethod(getOwner(), method, arguments); + } ++ ++ private Object readResolve() { ++ if (ALLOW_RESOLVE) { ++ return this; ++ } ++ throw new UnsupportedOperationException(); ++ } ++ ++ private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException { ++ if (ALLOW_RESOLVE) { ++ stream.defaultReadObject(); ++ } ++ throw new UnsupportedOperationException(); ++ } + + public Object getProperty(String property) { + if ("method".equals(property)) { diff --git a/groovy-build-with-java8.patch b/groovy-build-with-java8.patch new file mode 100644 index 0000000000000000000000000000000000000000..5c778603ff183391c31bb894c8bfdadef5aac21d --- /dev/null +++ b/groovy-build-with-java8.patch @@ -0,0 +1,22 @@ +diff --git a/src/main/org/codehaus/groovy/vmplugin/v5/Java5.java b/src/main/org/codehaus/groovy/vmplugin/v5/Java5.java +index 21d213e..7945767 100644 +--- a/src/main/org/codehaus/groovy/vmplugin/v5/Java5.java ++++ b/src/main/org/codehaus/groovy/vmplugin/v5/Java5.java +@@ -23,7 +23,16 @@ import org.codehaus.groovy.ast.stmt.ReturnStatement; + import org.codehaus.groovy.vmplugin.VMPlugin; + + import java.lang.annotation.*; +-import java.lang.reflect.*; ++import java.lang.reflect.Array; ++import java.lang.reflect.Constructor; ++import java.lang.reflect.Field; ++import java.lang.reflect.GenericArrayType; ++import java.lang.reflect.InvocationTargetException; ++import java.lang.reflect.Method; ++import java.lang.reflect.ParameterizedType; ++import java.lang.reflect.Type; ++import java.lang.reflect.TypeVariable; ++import java.lang.reflect.WildcardType; + import java.util.List; + + /** diff --git a/groovy-commons-cli-1.3.patch b/groovy-commons-cli-1.3.patch new file mode 100644 index 0000000000000000000000000000000000000000..0ef65b596bf5bd67df1ea975f6131a8098604861 --- /dev/null +++ b/groovy-commons-cli-1.3.patch @@ -0,0 +1,518 @@ +diff --git a/src/main/groovy/ui/GroovyMain.java b/src/main/groovy/ui/GroovyMain.java +index 245c306..e14e617 100644 +--- a/src/main/groovy/ui/GroovyMain.java ++++ b/src/main/groovy/ui/GroovyMain.java +@@ -31,10 +31,10 @@ import java.util.List; + import org.apache.commons.cli.CommandLine; + import org.apache.commons.cli.CommandLineParser; + import org.apache.commons.cli.HelpFormatter; +-import org.apache.commons.cli.OptionBuilder; ++import org.apache.commons.cli.Option; + import org.apache.commons.cli.Options; + import org.apache.commons.cli.ParseException; +-import org.apache.commons.cli.PosixParser; ++import org.apache.commons.cli.DefaultParser; + import org.codehaus.groovy.control.CompilationFailedException; + import org.codehaus.groovy.control.CompilerConfiguration; + import org.codehaus.groovy.runtime.InvokerHelper; +@@ -154,7 +154,7 @@ public class GroovyMain { + * @throws ParseException if there was a problem. + */ + private static CommandLine parseCommandLine(Options options, String[] args) throws ParseException { +- CommandLineParser parser = new PosixParser(); ++ CommandLineParser parser = new DefaultParser(); + return parser.parse(options, args, true); + } + +@@ -166,74 +166,74 @@ public class GroovyMain { + @SuppressWarnings("static-access") + private static synchronized Options buildOptions() { + Options options = new Options(); +- options.addOption(OptionBuilder.hasArg().withArgName("path").withDescription("Specify where to find the class files - must be first argument").create("classpath")); +- options.addOption(OptionBuilder.withLongOpt("classpath").hasArg().withArgName("path").withDescription("Aliases for '-classpath'").create("cp")); ++ options.addOption(Option.builder("classpath").hasArg().argName("path").desc("Specify where to find the class files - must be first argument").build()); ++ options.addOption(Option.builder("cp").longOpt("classpath").hasArg().argName("path").desc("Aliases for '-classpath'").build()); + + options.addOption( +- OptionBuilder.withLongOpt("define"). +- withDescription("define a system property"). ++ Option.builder("D").longOpt("define"). ++ desc("define a system property"). + hasArg(true). +- withArgName("name=value"). +- create('D')); ++ argName("name=value"). ++ build()); + options.addOption( +- OptionBuilder.withLongOpt("disableopt"). +- withDescription("disables one or all optimization elements. " + +- "optlist can be a comma separated list with the elements: " + +- "all (disables all optimizations), " + +- "int (disable any int based optimizations)"). ++ Option.builder().longOpt("disableopt"). ++ desc("disables one or all optimization elements. " + ++ "optlist can be a comma separated list with the elements: " + ++ "all (disables all optimizations), " + ++ "int (disable any int based optimizations)"). + hasArg(true). +- withArgName("optlist"). +- create()); ++ argName("optlist"). ++ build()); + options.addOption( +- OptionBuilder.hasArg(false) +- .withDescription("usage information") +- .withLongOpt("help") +- .create('h')); ++ Option.builder("h").hasArg(false) ++ .desc("usage information") ++ .longOpt("help") ++ .build()); + options.addOption( +- OptionBuilder.hasArg(false) +- .withDescription("debug mode will print out full stack traces") +- .withLongOpt("debug") +- .create('d')); ++ Option.builder("d").hasArg(false) ++ .desc("debug mode will print out full stack traces") ++ .longOpt("debug") ++ .build()); + options.addOption( +- OptionBuilder.hasArg(false) +- .withDescription("display the Groovy and JVM versions") +- .withLongOpt("version") +- .create('v')); ++ Option.builder("v").hasArg(false) ++ .desc("display the Groovy and JVM versions") ++ .longOpt("version") ++ .build()); + options.addOption( +- OptionBuilder.withArgName("charset") ++ Option.builder("c").argName("charset") + .hasArg() +- .withDescription("specify the encoding of the files") +- .withLongOpt("encoding") +- .create('c')); ++ .desc("specify the encoding of the files") ++ .longOpt("encoding") ++ .build()); + options.addOption( +- OptionBuilder.withArgName("script") ++ Option.builder("e").argName("script") + .hasArg() +- .withDescription("specify a command line script") +- .create('e')); ++ .desc("specify a command line script") ++ .build()); + options.addOption( +- OptionBuilder.withArgName("extension") +- .hasOptionalArg() +- .withDescription("modify files in place; create backup if extension is given (e.g. \'.bak\')") +- .create('i')); ++ Option.builder("i").argName("extension") ++ .optionalArg(true) ++ .desc("modify files in place; create backup if extension is given (e.g. \'.bak\')") ++ .build()); + options.addOption( +- OptionBuilder.hasArg(false) +- .withDescription("process files line by line using implicit 'line' variable") +- .create('n')); ++ Option.builder("n").hasArg(false) ++ .desc("process files line by line using implicit 'line' variable") ++ .build()); + options.addOption( +- OptionBuilder.hasArg(false) +- .withDescription("process files line by line and print result (see also -n)") +- .create('p')); ++ Option.builder("p").hasArg(false) ++ .desc("process files line by line and print result (see also -n)") ++ .build()); + options.addOption( +- OptionBuilder.withArgName("port") +- .hasOptionalArg() +- .withDescription("listen on a port and process inbound lines (default: 1960)") +- .create('l')); ++ Option.builder("l").argName("port") ++ .optionalArg(true) ++ .desc("listen on a port and process inbound lines (default: 1960)") ++ .build()); + options.addOption( +- OptionBuilder.withArgName("splitPattern") +- .hasOptionalArg() +- .withDescription("split lines using splitPattern (default '\\s') using implicit 'split' variable") +- .withLongOpt("autosplit") +- .create('a')); ++ Option.builder("a").argName("splitPattern") ++ .optionalArg(true) ++ .desc("split lines using splitPattern (default '\\s') using implicit 'split' variable") ++ .longOpt("autosplit") ++ .build()); + + return options; + } +diff --git a/src/main/groovy/ui/InteractiveShell.java b/src/main/groovy/ui/InteractiveShell.java +index bbaa86f..72ea02c 100644 +--- a/src/main/groovy/ui/InteractiveShell.java ++++ b/src/main/groovy/ui/InteractiveShell.java +@@ -43,8 +43,8 @@ import java.util.Set; + + import org.apache.commons.cli.CommandLine; + import org.apache.commons.cli.CommandLineParser; +-import org.apache.commons.cli.OptionBuilder; +-import org.apache.commons.cli.PosixParser; ++import org.apache.commons.cli.DefaultParser; ++import org.apache.commons.cli.Option; + import org.apache.commons.cli.Options; + import org.apache.commons.cli.HelpFormatter; + +@@ -114,13 +114,13 @@ public class InteractiveShell + + Options options = new Options(); + +- options.addOption(OptionBuilder.withLongOpt("help") +- .withDescription(MESSAGES.getMessage("cli.option.help.description")) +- .create('h')); ++ options.addOption(Option.builder("h").longOpt("help") ++ .desc(MESSAGES.getMessage("cli.option.help.description")) ++ .build()); + +- options.addOption(OptionBuilder.withLongOpt("version") +- .withDescription(MESSAGES.getMessage("cli.option.version.description")) +- .create('V')); ++ options.addOption(Option.builder("V").longOpt("version") ++ .desc(MESSAGES.getMessage("cli.option.version.description")) ++ .build()); + + // + // TODO: Add more options, maybe even add an option to prime the buffer from a URL or File? +@@ -131,7 +131,7 @@ public class InteractiveShell + // Same problem with commons-cli 1.0 and 1.1 + // + +- CommandLineParser parser = new PosixParser(); ++ CommandLineParser parser = new DefaultParser(); + CommandLine line = parser.parse(options, args, true); + String[] lineargs = line.getArgs(); + +diff --git a/src/main/groovy/util/CliBuilder.groovy b/src/main/groovy/util/CliBuilder.groovy +index b126eaf..e57bfdf 100644 +--- a/src/main/groovy/util/CliBuilder.groovy ++++ b/src/main/groovy/util/CliBuilder.groovy +@@ -121,8 +121,8 @@ import org.codehaus.groovy.runtime.InvokerHelper + * import org.apache.commons.cli.* + * ... as before ... + * cli << new Option('q', false, 'If used as the first parameter disables .curlrc') +- * cli << OptionBuilder.withLongOpt('url').hasArg().withArgName('URL'). +- * withDescription('Set URL to work with').create() ++ * cli << Option.builder().longOpt('url').hasArg().argName('URL'). ++ * desc('Set URL to work with').build() + * ... + * + * +@@ -182,6 +182,8 @@ class CliBuilder { + + /** + * To change from the default PosixParser to the GnuParser, set this to false. Ignored if the parser is explicitly set. ++ * ++ * @deprecated Both PosixParser and GnuParser are deprecated now in commons-cli 1.3, DefaultParser should be used instead. + */ + boolean posix = true + +@@ -248,13 +250,13 @@ class CliBuilder { + } + + /** +- * Make options accessible from command line args with parser (default: Posix). ++ * Make options accessible from command line args with parser (default: DefaultParser). + * Returns null on bad command lines after displaying usage message. + */ + OptionAccessor parse(args) { + if (expandArgumentFiles) args = expandArgumentFiles(args) + if (!parser) { +- parser = posix ? new PosixParser() : new GnuParser() ++ parser = new DefaultParser() + } + try { + return new OptionAccessor(parser.parse(options, args as String[], stopAtNonOption)) +@@ -281,7 +283,7 @@ class CliBuilder { + Option option(shortname, Map details, info) { + Option option + if (shortname == '_') { +- option = OptionBuilder.withDescription(info).withLongOpt(details.longOpt).create() ++ option = Option.builder().desc(info).longOpt(details.longOpt).build() + details.remove('longOpt') + } else { + option = new Option(shortname, info) +diff --git a/src/main/org/codehaus/groovy/ant/Groovyc.java b/src/main/org/codehaus/groovy/ant/Groovyc.java +index dc2dd14..2e3a076 100644 +--- a/src/main/org/codehaus/groovy/ant/Groovyc.java ++++ b/src/main/org/codehaus/groovy/ant/Groovyc.java +@@ -19,7 +19,7 @@ import groovy.lang.GroovyClassLoader; + import groovy.lang.GroovyResourceLoader; + import org.apache.commons.cli.CommandLine; + import org.apache.commons.cli.Options; +-import org.apache.commons.cli.PosixParser; ++import org.apache.commons.cli.DefaultParser; + import org.apache.tools.ant.AntClassLoader; + import org.apache.tools.ant.BuildException; + import org.apache.tools.ant.DirectoryScanner; +@@ -933,7 +933,7 @@ public class Groovyc extends MatchingTask { + try { + Options options = FileSystemCompiler.createCompilationOptions(); + +- PosixParser cliParser = new PosixParser(); ++ DefaultParser cliParser = new DefaultParser(); + + CommandLine cli; + cli = cliParser.parse(options, commandLine); +diff --git a/src/main/org/codehaus/groovy/antlr/java/Java2GroovyMain.java b/src/main/org/codehaus/groovy/antlr/java/Java2GroovyMain.java +index 37f3276..b95eb64 100644 +--- a/src/main/org/codehaus/groovy/antlr/java/Java2GroovyMain.java ++++ b/src/main/org/codehaus/groovy/antlr/java/Java2GroovyMain.java +@@ -27,7 +27,7 @@ import java.util.List; + + import org.apache.commons.cli.CommandLine; + import org.apache.commons.cli.Options; +-import org.apache.commons.cli.PosixParser; ++import org.apache.commons.cli.DefaultParser; + import org.codehaus.groovy.antlr.AntlrASTProcessor; + import org.codehaus.groovy.antlr.SourceBuffer; + import org.codehaus.groovy.antlr.UnicodeEscapingReader; +@@ -43,7 +43,7 @@ public class Java2GroovyMain { + public static void main(String[] args) { + try{ + Options options = new Options(); +- PosixParser cliParser = new PosixParser(); ++ DefaultParser cliParser = new DefaultParser(); + CommandLine cli = cliParser.parse(options, args); + String[] filenames = cli.getArgs(); + if( filenames.length == 0 ) { +diff --git a/src/main/org/codehaus/groovy/tools/FileSystemCompiler.java b/src/main/org/codehaus/groovy/tools/FileSystemCompiler.java +index ade2808..cd8d960 100644 +--- a/src/main/org/codehaus/groovy/tools/FileSystemCompiler.java ++++ b/src/main/org/codehaus/groovy/tools/FileSystemCompiler.java +@@ -115,7 +115,7 @@ public class FileSystemCompiler { + public static void commandLineCompile(String[] args, boolean lookupUnnamedFiles) throws Exception { + Options options = createCompilationOptions(); + +- PosixParser cliParser = new PosixParser(); ++ DefaultParser cliParser = new DefaultParser(); + + CommandLine cli; + cli = cliParser.parse(options, args); +@@ -294,30 +294,29 @@ public class FileSystemCompiler { + + Options options = new Options(); + +- options.addOption(OptionBuilder.hasArg().withArgName("path").withDescription("Specify where to find the class files - must be first argument").create("classpath")); +- options.addOption(OptionBuilder.withLongOpt("classpath").hasArg().withArgName("path").withDescription("Aliases for '-classpath'").create("cp")); +- options.addOption(OptionBuilder.withLongOpt("sourcepath").hasArg().withArgName("path").withDescription("Specify where to find the source files").create()); +- options.addOption(OptionBuilder.withLongOpt("temp").hasArg().withArgName("temp").withDescription("Specify temporary directory").create()); +- options.addOption(OptionBuilder.withLongOpt("encoding").hasArg().withArgName("encoding").withDescription("Specify the encoding of the user class files").create()); +- options.addOption(OptionBuilder.hasArg().withDescription("Specify where to place generated class files").create('d')); +-// options.addOption(OptionBuilder.withLongOpt("strict").withDescription("Turn on strict type safety.").create('s')); +- options.addOption(OptionBuilder.withLongOpt("help").withDescription("Print a synopsis of standard options").create('h')); +- options.addOption(OptionBuilder.withLongOpt("version").withDescription("Print the version").create('v')); +- options.addOption(OptionBuilder.withLongOpt("exception").withDescription("Print stack trace on error").create('e')); +- options.addOption(OptionBuilder.withLongOpt("jointCompilation").withDescription("Attach javac compiler to compile .java files").create('j')); +- options.addOption(OptionBuilder.withLongOpt("baseScript").hasArg().withArgName("class").withDescription("Base class name for scripts (must derive from Script)").create('b')); ++ options.addOption(Option.builder("classpath").hasArg().argName("path").desc("Specify where to find the class files - must be first argument").build()); ++ options.addOption(Option.builder("cp").longOpt("classpath").hasArg().argName("path").desc("Aliases for '-classpath'").build()); ++ options.addOption(Option.builder().longOpt("sourcepath").hasArg().argName("path").desc("Specify where to find the source files").build()); ++ options.addOption(Option.builder().longOpt("temp").hasArg().argName("temp").desc("Specify temporary directory").build()); ++ options.addOption(Option.builder().longOpt("encoding").hasArg().argName("encoding").desc("Specify the encoding of the user class files").build()); ++ options.addOption(Option.builder("d").hasArg().desc("Specify where to place generated class files").build()); ++ options.addOption(Option.builder("h").longOpt("help").desc("Print a synopsis of standard options").build()); ++ options.addOption(Option.builder("v").longOpt("version").desc("Print the version").build()); ++ options.addOption(Option.builder("e").longOpt("exception").desc("Print stack trace on error").build()); ++ options.addOption(Option.builder("j").longOpt("jointCompilation").desc("Attach javac compiler to compile .java files").build()); ++ options.addOption(Option.builder("b").longOpt("baseScript").hasArg().argName("class").desc("Base class name for scripts (must derive from Script)").build()); + + options.addOption( +- OptionBuilder.withArgName("property=value") +- .withValueSeparator() +- .hasArgs(2) +- .withDescription("name-value pairs to pass to javac") +- .create("J")); ++ Option.builder("J").argName("property=value") ++ .valueSeparator() ++ .numberOfArgs(2) ++ .desc("name-value pairs to pass to javac") ++ .build()); + options.addOption( +- OptionBuilder.withArgName("flag") ++ Option.builder("F").argName("flag") + .hasArg() +- .withDescription("passed to javac for joint compilation") +- .create("F")); ++ .desc("passed to javac for joint compilation") ++ .build()); + return options; + } + +diff --git a/src/main/org/codehaus/groovy/tools/GrapeMain.groovy b/src/main/org/codehaus/groovy/tools/GrapeMain.groovy +index fd9765c..db29526 100644 +--- a/src/main/org/codehaus/groovy/tools/GrapeMain.groovy ++++ b/src/main/org/codehaus/groovy/tools/GrapeMain.groovy +@@ -109,26 +109,26 @@ list = {arg, cmd -> + resolve = {arg, cmd -> + Options options = new Options(); + options.addOption( +- OptionBuilder.hasArg(false) +- .withLongOpt("ant") +- .create('a') ++ Option.builder("a").hasArg(false) ++ .longOpt("ant") ++ .build() + ); + options.addOption( +- OptionBuilder.hasArg(false) +- .withLongOpt("dos") +- .create('d') ++ Option.builder("d").hasArg(false) ++ .longOpt("dos") ++ .build() + ); + options.addOption( +- OptionBuilder.hasArg(false) +- .withLongOpt("shell") +- .create('s') ++ Option.builder("s").hasArg(false) ++ .longOpt("shell") ++ .build() + ); + options.addOption( +- OptionBuilder.hasArg(false) +- .withLongOpt("ivy") +- .create('i') ++ Option.builder("i").hasArg(false) ++ .longOpt("ivy") ++ .build() + ); +- CommandLine cmd2 = new PosixParser().parse(options, arg[1..-1] as String[], true); ++ CommandLine cmd2 = new DefaultParser().parse(options, arg[1..-1] as String[], true); + arg = cmd2.args + + // set the instance so we can re-set the logger +@@ -221,58 +221,58 @@ def commands = [ + Options options = new Options(); + + options.addOption( +- OptionBuilder.withLongOpt("define") +- .withDescription("define a system property") ++ Option.builder("D").longOpt("define") ++ .desc("define a system property") + .hasArg(true) +- .withArgName("name=value") +- .create('D') ++ .argName("name=value") ++ .build() + ); + options.addOption( +- OptionBuilder.hasArg(false) +- .withDescription("usage information") +- .withLongOpt("help") +- .create('h') ++ Option.builder("h").hasArg(false) ++ .desc("usage information") ++ .longOpt("help") ++ .build() + ); + + // Logging Level Options + options.addOptionGroup( + new OptionGroup().addOption( +- OptionBuilder.hasArg(false) +- .withDescription("Log level 0 - only errors") +- .withLongOpt("quiet") +- .create('q')) ++ Option.builder("q").hasArg(false) ++ .desc("Log level 0 - only errors") ++ .longOpt("quiet") ++ .build()) + .addOption( +- OptionBuilder.hasArg(false) +- .withDescription("Log level 1 - errors and warnings") +- .withLongOpt("warn") +- .create('w')) ++ Option.builder("w").hasArg(false) ++ .desc("Log level 1 - errors and warnings") ++ .longOpt("warn") ++ .build()) + .addOption( +- OptionBuilder.hasArg(false) +- .withDescription("Log level 2 - info") +- .withLongOpt("info") +- .create('i')) ++ Option.builder("i").hasArg(false) ++ .desc("Log level 2 - info") ++ .longOpt("info") ++ .build()) + .addOption( +- OptionBuilder.hasArg(false) +- .withDescription("Log level 3 - verbose") +- .withLongOpt("verbose") +- .create('V')) ++ Option.builder("V").hasArg(false) ++ .desc("Log level 3 - verbose") ++ .longOpt("verbose") ++ .build()) + .addOption( +- OptionBuilder.hasArg(false) +- .withDescription("Log level 4 - debug") +- .withLongOpt("debug") +- .create('d')) ++ Option.builder("d").hasArg(false) ++ .desc("Log level 4 - debug") ++ .longOpt("debug") ++ .build()) + ) + + + options.addOption( +- OptionBuilder.hasArg(false) +- .withDescription("display the Groovy and JVM versions") +- .withLongOpt("version") +- .create('v') ++ Option.builder("v").hasArg(false) ++ .desc("display the Groovy and JVM versions") ++ .longOpt("version") ++ .build() + ); + + +-CommandLine cmd = new PosixParser().parse(options, args, true); ++CommandLine cmd = new DefaultParser().parse(options, args, true); + + grapeHelp = { + int spacesLen = commands.keySet().max {it.length()}.length() + 3 +diff --git a/src/test/groovy/util/CliBuilderTest.groovy b/src/test/groovy/util/CliBuilderTest.groovy +index cbd7bd1..d67de50 100644 +--- a/src/test/groovy/util/CliBuilderTest.groovy ++++ b/src/test/groovy/util/CliBuilderTest.groovy +@@ -16,7 +16,6 @@ package groovy.util + + import org.apache.commons.cli.GnuParser + import org.apache.commons.cli.Option +-import org.apache.commons.cli.OptionBuilder + import org.apache.commons.cli.PosixParser + import org.apache.commons.cli.BasicParser + +@@ -175,7 +174,7 @@ usage: groovy + } + + private void checkLongOptsOnly_nonOptionShouldStopArgProcessing(CliBuilder cli) { +- def anOption = OptionBuilder.withLongOpt('anOption').hasArg().withDescription('An option.').create() ++ def anOption = Option.builder().longOpt('anOption').hasArg().desc('An option.').build() + cli.options.addOption(anOption) + def options = cli.parse(['-v', '--anOption', 'something']) + // no options should be found +@@ -203,7 +202,7 @@ usage: groovy + + private void checkLongAndShortOpts_allOptionsValid(parser) { + def cli = new CliBuilder(parser: parser) +- def anOption = OptionBuilder.withLongOpt('anOption').hasArg().withDescription('An option.').create() ++ def anOption = Option.builder().longOpt('anOption').hasArg().desc('An option.').build() + cli.options.addOption(anOption) + cli.v(longOpt: 'verbose', 'verbose mode') + def options = cli.parse(['-v', '--anOption', 'something']) diff --git a/groovy-inner-interface-annotations.patch b/groovy-inner-interface-annotations.patch new file mode 100644 index 0000000000000000000000000000000000000000..2b77f9b518cdde3d5ac206c8b4260c8ec60e72ca --- /dev/null +++ b/groovy-inner-interface-annotations.patch @@ -0,0 +1,12 @@ +diff -ur groovy-1.8.7.orig/src/main/org/codehaus/groovy/tools/javac/JavaStubGenerator.java groovy-1.8.7/src/main/org/codehaus/groovy/tools/javac/JavaStubGenerator.java +--- groovy-1.8.7.orig/src/main/org/codehaus/groovy/tools/javac/JavaStubGenerator.java 2012-07-25 08:41:30.000000000 -0400 ++++ groovy-1.8.7/src/main/org/codehaus/groovy/tools/javac/JavaStubGenerator.java 2013-04-08 09:02:23.277789343 -0400 +@@ -655,7 +655,7 @@ + } + + private void printAnnotation(PrintWriter out, AnnotationNode annotation) { +- out.print("@" + annotation.getClassNode().getName() + "("); ++ out.print("@" + annotation.getClassNode().getName().replace('$', '.') + "("); + boolean first = true; + Map members = annotation.getMembers(); + for (String key : members.keySet()) { diff --git a/groovy-servlet31.patch b/groovy-servlet31.patch new file mode 100644 index 0000000000000000000000000000000000000000..839d6bf7940d5d8a79149f7b33145cf244c0c5fe --- /dev/null +++ b/groovy-servlet31.patch @@ -0,0 +1,34 @@ +diff --git a/src/main/groovy/servlet/ServletBinding.java b/src/main/groovy/servlet/ServletBinding.java +index 127d343..9d37592 100644 +--- a/src/main/groovy/servlet/ServletBinding.java ++++ b/src/main/groovy/servlet/ServletBinding.java +@@ -24,6 +24,7 @@ import javax.servlet.ServletException; + import javax.servlet.ServletOutputStream; + import javax.servlet.http.HttpServletRequest; + import javax.servlet.http.HttpServletResponse; ++import javax.servlet.WriteListener; + + import org.codehaus.groovy.GroovyBugError; + import org.codehaus.groovy.runtime.MethodClosure; +@@ -150,6 +151,13 @@ public class ServletBinding extends Binding { + public void write(byte[] b, int off, int len) throws IOException { + getResponseStream().write(b, off, len); + } ++ public void setWriteListener(WriteListener writeListener) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ public boolean isReady() { ++ throw new UnsupportedOperationException("not implemented"); ++ } + }; + } + private PrintWriter getResponseWriter() { +@@ -359,6 +367,6 @@ public class ServletBinding extends Binding { + public void redirect(String location) throws IOException { + HttpServletResponse response = (HttpServletResponse) super.getVariable("response"); + response.sendRedirect(location); +- } ++ } + } + diff --git a/groovy18-script b/groovy18-script new file mode 100644 index 0000000000000000000000000000000000000000..150fdbd23ed149b6941090367b2d9772794caee5 --- /dev/null +++ b/groovy18-script @@ -0,0 +1,88 @@ +#!/bin/sh +# +# Groovy script +# Lubomir Rintel + +# Packagers: When updating the package be sure to check +# all this against against the upstream binary package + +# Source functions library +if [ -f /usr/share/java-utils/java-functions ] ; then + . /usr/share/java-utils/java-functions +else + echo "Can't find functions library, aborting" + exit 1 +fi + +# Configuration +SCRIPT_PATH=$0 +PROGNAME=$(basename $SCRIPT_PATH) +GROOVY_CONF=/etc/groovy18-starter.conf +TOOLS_JAR=$JAVA_HOME/lib/tools.jar +STARTER_MAIN_CLASS=org.codehaus.groovy.tools.GroovyStarter +MAIN_CLASS=$STARTER_MAIN_CLASS + +# Wrappers +[ $PROGNAME = grape18 ] && CLASS=org.codehaus.groovy.tools.GrapeMain +[ $PROGNAME = groovy18 ] && CLASS=groovy.ui.GroovyMain +[ $PROGNAME = groovy18c ] && CLASS=org.codehaus.groovy.tools.FileSystemCompiler +[ $PROGNAME = groovy18Console ] && CLASS=groovy.ui.Console +[ $PROGNAME = java2groovy18 ] && CLASS=org.codehaus.groovy.antlr.java.Java2GroovyMain +[ $PROGNAME = groovy18sh ] && CLASS=org.codehaus.groovy.tools.shell.Main +[ $PROGNAME = groovy18sh ] && [ "$OLDSHELL" ] && CLASS=groovy.ui.InteractiveShell + +# Load system-wide configuration +if [ -f /etc/groovy18.conf ]; then + . /etc/groovy18.conf +fi + +# Load user configuration +[ -f "$HOME/.groovy18rc" ] && . "$HOME/.groovy18rc" +[ -f "$HOME/.groovy18/startup" ] && . "$HOME/.groovy18/startup" + +# Bail out if there's nothing to run +if [ -z "$CLASS" ] +then + echo "Can not determine main class for '$PROGNAME'" >&2 + exit 1 +fi + +# JVM options +GROOVY_OPTS="$GROOVY_OPTS -Dscript.name=$SCRIPT_PATH" +GROOVY_OPTS="$GROOVY_OPTS -Dprogram.name=$PROGNAME" +GROOVY_OPTS="$GROOVY_OPTS -Dgroovy.starter.conf=$GROOVY_CONF" +GROOVY_OPTS="$GROOVY_OPTS -Dgroovy.home=$GROOVY_HOME" +if [[ -f "$TOOLS_JAR" ]]; then + GROOVY_OPTS="$GROOVY_OPTS -Dtools.jar=$TOOLS_JAR" +fi + +# Do not forget about RPM dependencies! +BASE_JARS="$BASE_JARS ant" +BASE_JARS="$BASE_JARS ant/ant-junit" +BASE_JARS="$BASE_JARS ant-launcher" +BASE_JARS="$BASE_JARS antlr" +BASE_JARS="$BASE_JARS objectweb-asm3/asm-distroshaded" +BASE_JARS="$BASE_JARS objectweb-asm3/asm-analysis-distroshaded" +BASE_JARS="$BASE_JARS objectweb-asm3/asm-tree-distroshaded" +BASE_JARS="$BASE_JARS objectweb-asm3/asm-util-distroshaded" +BASE_JARS="$BASE_JARS bsf" +BASE_JARS="$BASE_JARS commons-cli" +BASE_JARS="$BASE_JARS commons-logging" +BASE_JARS="$BASE_JARS groovy-1.8" +BASE_JARS="$BASE_JARS apache-ivy/ivy" +BASE_JARS="$BASE_JARS jline1/jline-1" +BASE_JARS="$BASE_JARS glassfish-jsp-api/javax.servlet.jsp-api" +BASE_JARS="$BASE_JARS junit" +BASE_JARS="$BASE_JARS glassfish-servlet-api" +BASE_JARS="$BASE_JARS xstream" +BASE_JARS="$BASE_JARS jansi" +BASE_JARS="$BASE_JARS gpars/gpars" + +# Set parameters +set_jvm +set_classpath $BASE_JARS +set_flags $BASE_FLAGS +set_options $BASE_OPTIONS $GROOVY_OPTS + +# Let's start +run --conf "$GROOVY_CONF" --main "$CLASS" "$@" diff --git a/groovy18-starter.conf b/groovy18-starter.conf new file mode 100644 index 0000000000000000000000000000000000000000..7c6c0abd302805e23f7821bedaa86ef5e52fd6ac --- /dev/null +++ b/groovy18-starter.conf @@ -0,0 +1,27 @@ +############################################################################## +## ## +## Groovy Classloading Configuration ## +## ## +############################################################################## + +## +## $Revision$ $Date$ +## +## Note: do not add classes from java.lang here. No rt.jar and on some +## platforms no tools.jar +## +## See http://groovy.codehaus.org/api/org/codehaus/groovy/tools/LoaderConfiguration.html +## for the file format + + # load required libraries + # Base JARs are loaded via the startup script itself + # you can add more either here or to BASE_JARS in + # /etc/groovy18.conf or ~/.groovy18rc + #load !{groovy18.home}/lib/*.jar + + # load user specific libraries + load !{user.home}/.groovy18/lib/*.jar + + # tools.jar for ant tasks + # See comment about BASE_JARS above + #load ${tools.jar} diff --git a/groovy18.spec b/groovy18.spec new file mode 100644 index 0000000000000000000000000000000000000000..123d96acdadd9d9a44f5eef9222eabf3e2fb2340 --- /dev/null +++ b/groovy18.spec @@ -0,0 +1,126 @@ +%global majorversion 1.8 +%global archiver 1_8_9 +Name: groovy18 +Version: 1.8.9 +Release: 1 +Summary: Dynamic language for the Java Platform +License: ASL 2.0 and BSD and EPL and Public Domain and CC-BY +URL: http://groovy-lang.org +Source0: https://github.com/groovy/groovy-core/archive/GROOVY_%{archiver}.zip +Source1: groovy18-script +Source2: groovy18-starter.conf +Source4: cpl-v10.txt +Source5: epl-v10.txt +Source6: http://www.apache.org/licenses/LICENSE-2.0.txt +Patch0: groovy-inner-interface-annotations.patch +Patch1: groovy-build-with-java8.patch +Patch2: groovy-servlet31.patch +Patch3: groovy-commons-cli-1.3.patch +Patch4: groovy-CVE-2015-3253-and-CVE-2016-6814.patch +BuildRequires: ant antlr-tool ant-antlr objectweb-asm3 bsf apache-ivy jansi jline1 +BuildRequires: glassfish-jsp-api junit glassfish-servlet-api xstream java-devel >= 1.8 +BuildRequires: desktop-file-utils jpackage-utils apache-commons-cli unzip javapackages-local +BuildRequires: mvn(org.apache.ant:ant-junit) mvn(org.apache.ant:ant-launcher) +BuildRequires: mvn(javax.servlet:servlet-api) mvn(javax.servlet:jsp-api) +Requires: %{name}-lib = %{version}-%{release} mvn(junit:junit) +Requires: mvn(commons-cli:commons-cli) mvn(org.apache.ant:ant) +Requires: mvn(org.apache.ant:ant-antlr) mvn(org.apache.ant:ant-launcher) +Requires: mvn(org.apache.ant:ant-junit) mvn(bsf:bsf) mvn(commons-logging:commons-logging) +Requires: glassfish-jsp-api glassfish-servlet-api mvn(com.thoughtworks.xstream:xstream) +Requires: mvn(jline:jline:1) mvn(org.fusesource.jansi:jansi) mvn(org.apache.ivy:ivy) +Requires: mvn(org.codehaus.gpars:gpars) +Suggests: java-devel +BuildArch: noarch +%description +Groovy is an agile and dynamic language for the Java Virtual Machine, +built upon Java with features inspired by languages like Python, Ruby and +Smalltalk. It seamlessly integrates with all existing Java objects and +libraries and compiles straight to Java byte-code so you can use it anywhere +you can use Java. + +%package lib +Summary: Groovy JAR artifact +%description lib +This package contains Groovy JAR artifact. + +%package javadoc +Summary: API Documentation for %{name} +%description javadoc +JavaDoc documentation for %{name} + +%prep +%setup -q -n groovy-core-GROOVY_%{archiver} +find . -name "*.class" -delete +find . -name "*.jar" -delete +cp %{SOURCE4} %{SOURCE5} %{SOURCE6} . +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +sed -i "s| depends=\"-excludeLegacyAntVersion\"||" build.xml +%pom_xpath_replace "pom:dependency[pom:optional[text()='true']]/pom:scope" "provided" +%pom_remove_dep org.livetribe:livetribe-jsr223 +sed -i "s|javax.servlet|org.apache.tomcat|" pom.xml +sed -i "s|jsp-api|tomcat-jsp-api|" pom.xml +sed -i "s|2.0|any|" pom.xml +sed -i "s|servlet-api|tomcat-servlet-api|" pom.xml +sed -i "s|2.4|any|" pom.xml +for s in src/main/groovy/transform/NotYetImplemented.java\ + src/main/org/codehaus/groovy/transform/NotYetImplementedASTTransformation.java;do + native2ascii -encoding UTF8 ${s} ${s} +done +find . -name "*.java" -exec sed -i 's|org.objectweb.asm|org.objectweb.distroshaded.asm|g' {} + +find . -name "*.groovy" -exec sed -i 's|org.objectweb.asm|org.objectweb.distroshaded.asm|g' {} + +%pom_change_dep :asm :asm-distroshaded +%pom_change_dep :asm-commons :asm-commons-distroshaded +%pom_change_dep :asm-util :asm-util-distroshaded +%pom_change_dep :asm-analysis :asm-analysis-distroshaded +%pom_change_dep :asm-tree :asm-tree-distroshaded +%mvn_package : %{name}-lib +%mvn_file : groovy %{name} +%mvn_alias : :groovy-all :%{name}-all :%{name} +%mvn_compat_version : "1.8" "1.8.9" + +%build +mkdir -p target/lib/{compile,tools} +build-jar-repository target/lib/compile glassfish-servlet-api glassfish-jsp-api/javax.servlet.jsp-api \ + objectweb-asm3/asm-tree-distroshaded objectweb-asm3/asm-distroshaded \ + objectweb-asm3/asm-util-distroshaded objectweb-asm3/asm-analysis-distroshaded \ + antlr ant/ant-antlr antlr \ + bsf jline1/jline-1 xstream ant junit apache-ivy commons-cli \ + jansi +export CLASSPATH=$(build-classpath ant/ant-antlr) +ant -DskipTests=on -DskipExamples=on -DskipFetch=on -DskipEmbeddable=on \ + createJars javadoc + +%install +%mvn_artifact pom.xml target/dist/groovy.jar +%mvn_install -J target/html/api/ +install -d $RPM_BUILD_ROOT%{_bindir} +install -p -m755 %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/%{name} +for TOOL in grape18 %{name}c %{name}Console java2%{name} %{name}sh +do + ln $RPM_BUILD_ROOT%{_bindir}/%{name} \ + $RPM_BUILD_ROOT%{_bindir}/$TOOL +done +install -d $RPM_BUILD_ROOT%{_sysconfdir} +install -p -m644 %{SOURCE2} \ + $RPM_BUILD_ROOT%{_sysconfdir}/%{name}-starter.conf + +%files +%{_bindir}/* +%config(noreplace) %{_sysconfdir}/%{name}-starter.conf +%doc README.md +%license LICENSE.txt LICENSE-2.0.txt NOTICE.txt cpl-v10.txt epl-v10.txt + +%files lib -f .mfiles-%{name}-lib +%license LICENSE.txt LICENSE-2.0.txt NOTICE.txt cpl-v10.txt epl-v10.txt + +%files javadoc +%{_javadocdir}/%{name} +%license LICENSE.txt LICENSE-2.0.txt NOTICE.txt cpl-v10.txt epl-v10.txt + +%changelog +* Sat Aug 15 2020 zhanghua - 1.8.9-1 +- Package init