From 59d29287d27c32031f642e8c121e92479506095ec904ea6c79a05cc26e6081e7 Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Mon, 15 Apr 2019 07:55:35 +0000 Subject: [PATCH] Accepting request 694146 from home:fstrba:maven OBS-URL: https://build.opensuse.org/request/show/694146 OBS-URL: https://build.opensuse.org/package/show/Java:packages/groovy18?expand=0&rev=1 --- .gitattributes | 23 + .gitignore | 1 + GROOVY_1_8_9.zip | 3 + LICENSE-2.0.txt | 202 ++++++++ cpl-v10.txt | 239 +++++++++ epl-v10.txt | 224 ++++++++ groovy-CVE-2015-3253-and-CVE-2016-6814.patch | 43 ++ groovy-build-with-java8.patch | 22 + groovy-commons-cli-1.3.patch | 518 +++++++++++++++++++ groovy-inner-interface-annotations.patch | 12 + groovy-servlet31.patch | 34 ++ groovy18-iterator.patch | 11 + groovy18-script | 88 ++++ groovy18-securitymanager.patch | 11 + groovy18-sourcetarget.patch | 77 +++ groovy18-starter.conf | 27 + groovy18.spec | 216 ++++++++ 17 files changed, 1751 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 GROOVY_1_8_9.zip create mode 100644 LICENSE-2.0.txt create mode 100644 cpl-v10.txt create mode 100644 epl-v10.txt create mode 100644 groovy-CVE-2015-3253-and-CVE-2016-6814.patch create mode 100644 groovy-build-with-java8.patch create mode 100644 groovy-commons-cli-1.3.patch create mode 100644 groovy-inner-interface-annotations.patch create mode 100644 groovy-servlet31.patch create mode 100644 groovy18-iterator.patch create mode 100644 groovy18-script create mode 100644 groovy18-securitymanager.patch create mode 100644 groovy18-sourcetarget.patch create mode 100644 groovy18-starter.conf create mode 100644 groovy18.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/GROOVY_1_8_9.zip b/GROOVY_1_8_9.zip new file mode 100644 index 0000000..3a83a4f --- /dev/null +++ b/GROOVY_1_8_9.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b5c0eaea7c9f388004f39e7905bb81da0070a6b2aba5eb29c55eb73d7c28daf +size 14545688 diff --git a/LICENSE-2.0.txt b/LICENSE-2.0.txt new file mode 100644 index 0000000..81fbaf6 --- /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 0000000..73c0624 --- /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 0000000..a728dec --- /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 0000000..334abc6 --- /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 0000000..cac0793 --- /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 0000000..3bd8d60 --- /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 0000000..393d98c --- /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 0000000..5623a8f --- /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-iterator.patch b/groovy18-iterator.patch new file mode 100644 index 0000000..9b02e05 --- /dev/null +++ b/groovy18-iterator.patch @@ -0,0 +1,11 @@ +--- groovy-core-GROOVY_1_8_9/src/main/org/codehaus/groovy/runtime/SwingGroovyMethods.java 2013-02-15 09:42:29.000000000 +0100 ++++ groovy-core-GROOVY_1_8_9/src/main/org/codehaus/groovy/runtime/SwingGroovyMethods.java 2018-12-18 11:28:02.474773520 +0100 +@@ -673,7 +673,7 @@ + */ + @SuppressWarnings("unchecked") + public static Iterator iterator(TreeNode self) { +- return DefaultGroovyMethods.iterator(self.children()); ++ return (Iterator) DefaultGroovyMethods.iterator(self.children()); + } + + /** diff --git a/groovy18-script b/groovy18-script new file mode 100644 index 0000000..116da13 --- /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-securitymanager.patch b/groovy18-securitymanager.patch new file mode 100644 index 0000000..dbd10d4 --- /dev/null +++ b/groovy18-securitymanager.patch @@ -0,0 +1,11 @@ +--- groovy-core-GROOVY_1_8_9/src/main/groovy/ui/text/StructuredSyntaxResources.java 2018-12-18 11:32:31.868127812 +0100 ++++ groovy-core-GROOVY_1_8_9/src/main/groovy/ui/text/StructuredSyntaxResources.java 2018-12-18 11:25:13.541924343 +0100 +@@ -41,7 +41,7 @@ + // a security exception + SecurityManager mgr = System.getSecurityManager(); + if (mgr != null) { +- mgr.checkSystemClipboardAccess(); ++ mgr.checkPermission(new java.awt.AWTPermission("accessClipboard")); + } + systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); + } diff --git a/groovy18-sourcetarget.patch b/groovy18-sourcetarget.patch new file mode 100644 index 0000000..b7dd888 --- /dev/null +++ b/groovy18-sourcetarget.patch @@ -0,0 +1,77 @@ +--- groovy-core-GROOVY_1_8_9/build.xml 2013-02-15 09:42:29.000000000 +0100 ++++ groovy-core-GROOVY_1_8_9/build.xml 2018-12-18 11:19:59.976323534 +0100 +@@ -92,7 +92,7 @@ + srcdir="config/ant/src" + destdir="${targetDirectory}/tools" + includeantruntime="false" +- source="1.5" target="1.5" fork="true" classpathref="compilePath"/> ++ source="1.6" target="1.6" fork="true" classpathref="compilePath"/> + +@@ -176,7 +176,7 @@ + + + ++ deprecation="on" debug="yes" source="1.6" target="1.6" fork="true" classpathref="compilePath"> + + + + + +- ++ + + + +@@ -248,7 +248,7 @@ + + + +- ++ + + + +@@ -264,8 +264,7 @@ + + + +- +- ++ + + + +@@ -287,8 +286,8 @@ + + + + +@@ -308,7 +307,7 @@ + + + +- ++ + + + +@@ -777,7 +776,7 @@ + unless="_skipDocs_" description="Create the javadoc documentation."> + = 1.8 +BuildRequires: javapackages-local +BuildRequires: jline1 +BuildRequires: jpackage-utils +BuildRequires: junit +BuildRequires: unzip +BuildRequires: xmvn-install +BuildRequires: xmvn-resolve +BuildRequires: xstream +BuildRequires: mvn(javax.servlet:jsp-api) +BuildRequires: mvn(javax.servlet:servlet-api) +BuildRequires: mvn(org.apache.ant:ant-junit) +BuildRequires: mvn(org.apache.ant:ant-launcher) +BuildConflicts: java-devel >= 9 +Requires: %{name}-lib = %{version}-%{release} +# Used for servlet / gsp: +Requires: glassfish-jsp-api +Requires: glassfish-servlet-api +# Only used for BSF adapter: +Requires: mvn(bsf:bsf) +# Used to dump out the AST, xpp only needed for reading: +Requires: mvn(com.thoughtworks.xstream:xstream) +# Only used for command line tools: +Requires: mvn(commons-cli:commons-cli) +Requires: mvn(commons-logging:commons-logging) +# Used for richer interactive groovysh support: +Requires: mvn(jline:jline:1) +# Following dependencies are optional from Maven POV, +# but upstream ships them in binary distribution +Requires: mvn(junit:junit) +# Only used for Ant tasks & scripting tool: +Requires: mvn(org.apache.ant:ant) +Requires: mvn(org.apache.ant:ant-antlr) +Requires: mvn(org.apache.ant:ant-junit) +Requires: mvn(org.apache.ant:ant-launcher) +# Used for @Grab and Grapes: +Requires: mvn(org.apache.ivy:ivy) +#Requires: mvn(org.codehaus.gpars:gpars) +Requires: mvn(org.fusesource.jansi:jansi) +# Joint compilation requires tools.jar from java-devel +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 +Group: Development/Libraries/Java + +%description lib +This package contains Groovy JAR artifact. + +%package javadoc +Summary: API Documentation for %{name} +Group: Documentation/HTML + +%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 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 + +# build.xml is not compatible with Ant 1.10+ +sed -i "s| depends=\"-excludeLegacyAntVersion\"||" build.xml + +# We don't want to generate auto-R on optional dependencies +%pom_xpath_replace "pom:dependency[pom:optional[text()='true']]/pom:scope" "provided" + +# java 7 apis +%pom_remove_dep org.livetribe:livetribe-jsr223 +# explicit tomcat apis +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 + +# fix non ASCII chars +for s in src/main/groovy/transform/NotYetImplemented.java\ + src/main/org/codehaus/groovy/transform/NotYetImplementedASTTransformation.java;do + iconv -f UTF-8 -t ASCII//TRANSLIT -o ${s}.tmp ${s} && mv ${s}.tmp ${s} +done + +%{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} + +# Construct classpath +build-jar-repository target/lib/compile glassfish-servlet-api glassfish-jsp-api/javax.servlet.jsp-api \ + asm3/asm-tree asm3/asm \ + asm3/asm-util asm3/asm-analysis \ + antlr ant/ant-antlr antlr \ + bsf jline1/jline-1 xstream ant junit apache-ivy commons-cli \ + jansi + +# Build +# TODO: Build at least tests, maybe examples +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/ +%fdupes -s %{buildroot}%{_javadocdir} + +# Startup scripts +install -d %{buildroot}%{_bindir} +install -p -m755 %{SOURCE1} %{buildroot}%{_bindir}/%{name} +for TOOL in grape18 %{name}c %{name}Console java2%{name} %{name}sh +do + ln %{buildroot}%{_bindir}/%{name} \ + %{buildroot}%{_bindir}/$TOOL +done + +# Configuration +install -d %{buildroot}%{_sysconfdir} +install -p -m644 %{SOURCE2} \ + %{buildroot}%{_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