diff options
author | Ralph Sennhauser <sera@gentoo.org> | 2012-06-10 12:33:10 +0000 |
---|---|---|
committer | Ralph Sennhauser <sera@gentoo.org> | 2012-06-10 12:33:10 +0000 |
commit | eef9d142998cb22d7960b54292b3ae7aa5fe865d (patch) | |
tree | 54a6b121405c39a6858c2dd3cca86fbc98b39d85 | |
download | eselect-java-eef9d142998cb22d7960b54292b3ae7aa5fe865d.tar.gz eselect-java-eef9d142998cb22d7960b54292b3ae7aa5fe865d.tar.bz2 eselect-java-eef9d142998cb22d7960b54292b3ae7aa5fe865d.zip |
New project eselect-java, new home of all java releated eselect modules.
Write build system and auxilary files.
Import eselect modules "java-vm" and "java-nsplugin" from java-config-2.1.12.
Import eselect module "maven" from eselect-maven-0.2
import eselect module "ecj" from eselect-ecj-0.7
svn path=/projects/eselect-java/trunk/; revision=9067
-rw-r--r-- | AUTHORS | 0 | ||||
-rw-r--r-- | COPYING | 339 | ||||
-rw-r--r-- | ChangeLog | 0 | ||||
-rw-r--r-- | Makefile.am | 11 | ||||
-rw-r--r-- | NEWS | 6 | ||||
-rw-r--r-- | README | 49 | ||||
-rw-r--r-- | bootstrap.sh | 5 | ||||
-rw-r--r-- | configure.ac | 11 | ||||
-rw-r--r-- | src/modules/Makefile.am | 19 | ||||
-rw-r--r-- | src/modules/ecj.eselect.in | 151 | ||||
-rw-r--r-- | src/modules/java-nsplugin.eselect.in | 208 | ||||
-rw-r--r-- | src/modules/java-vm.eselect.in | 163 | ||||
-rw-r--r-- | src/modules/maven.eselect.in | 175 |
13 files changed, 1137 insertions, 0 deletions
@@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/ChangeLog diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..e234cd2 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,11 @@ +SUBDIRS = src/modules + +MAINTAINERCLEANFILES = \ + aclocal.m4 \ + install-sh \ + missing \ + configure \ + Makefile.in \ + INSTALL + +EXTRA_DIST = COPYING NEWS README @@ -0,0 +1,6 @@ +0.1: + + Write build system and auxilary files. + Import eselect modules "java-vm" and "java-nsplugin" from java-config-2.1.12. + Import eselect module "maven" from eselect-maven-0.2 + import eselect module "ecj" from eselect-ecj-0.7 @@ -0,0 +1,49 @@ +README for eselect-java +======================= + +This package contains the various eselect modules maintained by the +Gentoo Java project. + +Modules +------- + +java-vm : Manage system respectively user vm. +java-nsplugin : Manage the nsplugin implementations. +maven : Manage the maven implementations. +ecj : Manage the ecj implementations. + +Documentation +------------- + +Please visit http://www.gentoo.org/proj/en/eselect/ + +Install +------- + +Please see the INSTALL file. + +News / Changes +-------------- + +Please see the NEWS file. + +Bugs +---- + +Please report bugs at https://bugs.gentoo.org + +Authors +------- + +Please see the AUTHORS file. + +Copyright +--------- + +Copyright (c) 2005-2012 Gentoo Foundation. + +eselect-java is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License version 2, as published by the +Free Software Foundation. + +Please see the COPYING file. diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100644 index 0000000..26f20c5 --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,5 @@ +#! /bin/sh + +aclocal +automake --gnu --add-missing +autoconf diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..d4bd33f --- /dev/null +++ b/configure.ac @@ -0,0 +1,11 @@ +AC_INIT([eselect-java],[0.1],[java@gentoo.org],[eselect-java],[https://bugs.gentoo.org/]) +AC_PREREQ([2.68]) +AC_CONFIG_SRCDIR([src/modules/java-vm.eselect.in]) +AM_INIT_AUTOMAKE([1.11]) + +AC_PATH_PROG([SED],[sed]) + +AC_CONFIG_FILES([Makefile]) +AC_CONFIG_FILES([src/modules/Makefile]) + +AC_OUTPUT diff --git a/src/modules/Makefile.am b/src/modules/Makefile.am new file mode 100644 index 0000000..9e7ee74 --- /dev/null +++ b/src/modules/Makefile.am @@ -0,0 +1,19 @@ +modulesdir=$(datadir)/eselect/modules/ + +modules_DATA = \ + ecj.eselect \ + java-nsplugin.eselect \ + java-vm.eselect \ + maven.eselect + +EXTRA_DIST = \ + ecj.eselect.in \ + java-nsplugin.eselect.in \ + java-vm.eselect.in \ + maven.eselect.in + +CLEANFILES = $(modules_DATA) +MAINTAINERCLEANFILES = Makefile.in + +%.eselect : %.eselect.in + $(SED) "s|\@VERSION\@|@PACKAGE_VERSION@|g" $< >$@ diff --git a/src/modules/ecj.eselect.in b/src/modules/ecj.eselect.in new file mode 100644 index 0000000..3250b97 --- /dev/null +++ b/src/modules/ecj.eselect.in @@ -0,0 +1,151 @@ +# -*-eselect-*- vim: ft=eselect +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id: ecj-0.7.eselect,v 1.1 2011/12/18 08:44:56 sera Exp $ + +DESCRIPTION="Manage ECJ targets" +MAINTAINER="java@gentoo.org" +VERSION="0.7" + +ECJ="${EROOT}/usr/bin/ecj" +ECJ_JAR="${EROOT}/usr/share/eclipse-ecj/ecj.jar" + +# find a list of ecj symlink targets, best first. +find_targets() { + for f in $(ls -r "${ECJ}"-[0-9]* "${ECJ}"-gcj-[0-9]* 2> /dev/null) ; do + if [[ -f "${f}" ]] ; then + echo $(basename "${f}") + fi + done +} + +# get a named or numbered target. +find_target() { + local target=${1} + + if is_number "${target}" && [[ ${target} -ge 1 ]] ; then + targets=( $(find_targets ) ) + [[ -z "${targets}" ]] && die -q "No targets found!" + target=${targets[target-1]} + fi + + if [[ "${target}" = ecj-[0-9]* || "${target}" = ecj-gcj-[0-9]* ]] \ + && [[ -f "${EROOT}/usr/bin/${target}" ]] ; then + echo ${target} + else + die -q "Target \"${1}\" doesn't appear to be valid!" + fi +} + +# determine the current target. +get_target() { + local canonicalised=$(canonicalise "${ECJ}") + echo $(basename "${canonicalised}") +} + +### show action ### + +describe_show() { + echo "Show current ECJ target" +} + +do_show() { + if [[ ${#} -gt 0 ]]; then + die -q "No parameters allowed." + fi + + if [[ -L "${ECJ}" ]] ; then + get_target + return 0 + elif [[ -e "${ECJ}" ]] ; then + echo "(not a symlink)" >&2 + return 1 + else + echo "(unset)" >&2 + return 1 + fi +} + +### list action ### + +describe_list() { + echo "List available ECJ targets" +} + +do_list() { + if [[ ${#} -gt 0 ]]; then + die -q "Usage error: no parameters allowed." + fi + + local i targets + targets=( $(find_targets) ) + + for (( i = 0; i < ${#targets[@]}; i++ )); do + [[ ${targets[i]} = $(basename "$(canonicalise "${ECJ}")") ]] \ + && targets[i]=$(highlight_marker "${targets[i]}") + done + + write_list_start "Available ECJ targets:" + write_numbered_list -m "(none found)" "${targets[@]}" +} + +### set action ### + +describe_set() { + echo "Set a new ECJ target" +} + +describe_set_options() { + echo "target : Target name or number (from 'list' action)" +} + +describe_set_parameters() { + echo "<target>" +} + +do_set() { + [[ ${1} ]] || die -q "You didn't give me a target name or number." + [[ ${2} ]] && die -q "Too many parameters. Expected only one." + + local target=$(find_target "${1}") + + rm -f "${ECJ}" "${ECJ_JAR}" + + ln -sf "${target}" "${ECJ}" || die "Couldn't set ${target} symlink." + mkdir -p $(dirname ${ECJ_JAR}) + [[ "${target}" != ecj-gcj* ]] && target="eclipse-${target}" + ln -sf "${EROOT}"/usr/share/${target}/lib/ecj.jar ${ECJ_JAR} \ + || die -q "Wasn't able to set a new provider." +} + +### update action ### + +describe_update() { + echo "Set the ECJ target to the latest if the current target is invalid or if the given target is the latest" +} + +describe_update_options() { + echo "target (optional) : Target name (from 'list' action)" +} + +describe_update_parameters() { + echo "<target>" +} + +do_update() { + [[ ${1} ]] && find_target "${1}" >/dev/null + [[ ${2} ]] && die -q "Too many parameters. Expected only one." + + if [[ ! -f "${ECJ}" ]] || [[ ! -f "${ECJ_JAR}" ]]; then + local target="${1}" + if [[ -z "${target}" ]]; then + local all_targets=( $(find_targets) ) + target=${all_targets} + fi + if [[ ${target} ]]; then + do_set ${target} + else + rm -f "${ECJ}" "${ECJ_JAR}" + fi + fi +} diff --git a/src/modules/java-nsplugin.eselect.in b/src/modules/java-nsplugin.eselect.in new file mode 100644 index 0000000..3d21db0 --- /dev/null +++ b/src/modules/java-nsplugin.eselect.in @@ -0,0 +1,208 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id: $ + +inherit tests multilib + +DESCRIPTION="Manage the Java plugin for Netscape-like Browsers" +MAINTAINER="java@gentoo.org" +SVN_DATE='$Date: $' +VERSION=$(svn_date_to_version "${SVN_DATE}" ) + + +PLUGINS_HOME="${ROOT}/usr/share/java-config-2/nsplugin" +SYSTEM_PLUGIN_DIR="${ROOT}/usr/lib/nsbrowser/plugins" +SYSTEM_PLUGIN_DIR_32="${ROOT}/usr/lib32/nsbrowser/plugins" +SYSTEM_PLUGIN_DIR_64="${ROOT}/usr/lib64/nsbrowser/plugins" +SYSTEM_PLUGIN="${SYSTEM_PLUGIN_DIR}/javaplugin.so" +SYSTEM_PLUGIN_32="${SYSTEM_PLUGIN_DIR_32}/javaplugin.so" +SYSTEM_PLUGIN_64="${SYSTEM_PLUGIN_DIR_64}/javaplugin.so" + +libdirs=$(list_libdirs) +if has lib32 ${libdirs} && has lib64 ${libdirs}; then + IS_MULTILIB="true" +else + IS_MULTILIB="false" +fi +### show action + +## {{{ show stuff + + describe_show() { + echo "Show the current Java browser plugin" + } + + do_show() { + local system_name=$(get_system_plugin_vm) + write_list_start "Current Java browser plugin" + if [[ -z "${system_name}" ]] ; then + write_kv_list_entry "(unset)" "" + else + write_kv_list_entry "${system_name}" "" + fi + } + +## }}} + +### list action + + + +## {{{ list stuff + describe_list() { + echo "List available Java browser plugins" + } + + tweak_list_item() { + local vm=${1} + local system_name=${2} + local mark="" + if [[ ${vm} == ${system_name} ]]; then + mark="${mark} $(highlight 'current')" + fi + echo "${vm} ${mark}" + } + + tweak_list() { + local targets=( ${@} ) + system_name=$(get_system_plugin_vm) + + for (( i = 0 ; i < ${#targets[@]} ; i = i + 1 )) ; do + twaek_list_item ${targets[${i}]} ${system_name} + done + } + + do_list() { + if [[ ${IS_MULTILIB} != "true" ]]; then + MULTILIB_MODE="none" + local system_name=$(get_system_plugin_vm) + local targets=( $(get_targets) ) + for (( i = 0 ; i < ${#targets[@]} ; i = i + 1 )) ; do + targets[${i}]=$(tweak_list_item ${targets[${i}]} ${system_name}) + done + + write_list_start "Available Java browser plugins" + write_numbered_list "${targets[@]}" + else + MULTILIB_MODE="32" + local system_name_32=$(get_system_plugin_vm) + local targets_32=( $(get_targets) ) + for (( i = 0 ; i < ${#targets_32[@]} ; i = i + 1 )) ; do + targets_32[${i}]=$(tweak_list_item ${targets_32[${i}]} ${system_name_32}) + done + write_list_start "Available 32-bit Java browser plugins" + write_numbered_list "${targets_32[@]}" + + MULTILIB_MODE="64" + local system_name_64=$(get_system_plugin_vm) + local targets_64=( $(get_targets) ) + for (( i = 0 ; i < ${#targets_64[@]} ; i = i + 1 )) ; do + targets_64[${i}]=$(tweak_list_item ${targets_64[${i}]} ${system_name_64}) + done + write_list_start "Available 64-bit Java browser plugins" + write_numbered_list "${targets_64[@]}" + fi + } +## }}} + +### set action + +## {{{ set stuff + describe_set() { + echo "Set the system Java browser plugin" + } + + do_set() { + if [[ ${IS_MULTILIB} != "true" ]]; then + if [[ ${#} != 1 ]] ; then + die -q "Usage: set [nsplugin-vm]" + fi + MULTILIB_MODE="none" + else + if [[ ${#} != 2 ]] ; then + die -q "Usage: set [32bit or 64bit] [nsplugin-vm]" + fi + case ${1} in + 32bit) ;; + 64bit) ;; + *) + die -q "Usage: set [32bit or 64bit] [nsplugin-vm]" + ;; + esac + MULTILIB_MODE=${1%bit} + shift + fi + + local vm=${1} + + if is_number "${vm}" ; then + local targets=( $(get_targets) ) + vm=${targets[$(( ${vm} - 1 ))]} + fi + + if [[ -z ${vm} ]] ; then + die -q "You didn't specify valid plugin number to set" + fi + + local plugin="${PLUGINS_HOME}/${vm}-javaplugin.so" + + if [[ ! -f ${plugin} ]]; then + write_error_msg "Expected \"${plugin}\" to exist, but it doesn't." + write_error_msg "Perhaps \"${vm}\" isn't a valid name of VM built with nsplugin?" + return + fi + + local system_plugin + case ${MULTILIB_MODE} in + 32) system_plugin=${SYSTEM_PLUGIN_32} ;; + 64) system_plugin=${SYSTEM_PLUGIN_64} ;; + none) system_plugin=${SYSTEM_PLUGIN} ;; + esac + mkdir -p $(dirname ${system_plugin}) || die -q "Error creating \"$(dirname ${SYSTEM_PLUGIN})\"" + if [[ -w $(dirname ${system_plugin}) ]] ; then + ln -sf ${plugin} ${system_plugin} || die -q "Error creating nsplugin symlink" + else + die -q "Sorry, you don't have enough permission to set nsplugin" + fi + } +## }}} + +get_targets() { + for plugin in $(ls ${PLUGINS_HOME}/*-javaplugin.so 2>/dev/null); + do + local vm=$(plugin_to_vm ${plugin}) + local matches="" + case ${MULTILIB_MODE} in + 32) + [[ ${vm} = emul-linux-* ]] && matches="true" + ;; + 64) + [[ ${vm} != emul-linux-* ]] && matches="true" + ;; + none) + matches="true" + ;; + esac + [[ ${matches} == "true" ]] && echo ${vm} + done +} + +plugin_to_vm() { + local base=$(basename ${1}) + echo ${base%-javaplugin.so} +} + +get_system_plugin_vm() { + local plugin; + + if [[ ${MULTILIB_MODE} == "32" ]]; then + plugin=$(readlink ${SYSTEM_PLUGIN_32}) + elif [[ ${MULTILIB_MODE} == "64" ]]; then + plugin=$(readlink ${SYSTEM_PLUGIN_64}) + else + plugin=$(readlink ${SYSTEM_PLUGIN}) + fi + plugin_to_vm ${plugin} +} + +# vim: ts=4 sw=4 noet fdm=marker diff --git a/src/modules/java-vm.eselect.in b/src/modules/java-vm.eselect.in new file mode 100644 index 0000000..063b7c2 --- /dev/null +++ b/src/modules/java-vm.eselect.in @@ -0,0 +1,163 @@ +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id: $ + +# Based on kernel.eselect + +DESCRIPTION="Manage the Java system and user VM" +MAINTAINER="java@gentoo.org" +SVN_DATE='$Date: $' +VERSION=$(svn_date_to_version "${SVN_DATE}" ) + +VM_BASE=/usr/lib/jvm +VM_SYSTEM="/etc/java-config-2/current-system-vm" +VM_USER="${HOME}/.gentoo/java-config-2/current-user-vm" +VM_CONFIG="/usr/share/java-config-2/vm" + +find_targets() { + local f + for f in ${VM_BASE}/* ; do + [[ -L ${f} ]] && echo $(basename ${f}) + done +} + +sym_to_vm() { + basename $(readlink "${1}") +} + +### show action ### + +describe_show() { + echo "Show the current vm" +} + +do_show() { + if [[ ${1} == "system" ]]; then + my_show ${VM_SYSTEM} 'system-vm' + elif [[ ${1} == "user" ]]; then + my_show ${VM_USER} 'user-vm' + else + my_show ${VM_SYSTEM} 'system-vm' + my_show ${VM_USER} 'user-vm' + fi +} + +my_show() { + local symlink=${1} vm_type=${2} + write_list_start "Current ${vm_type}" + if [[ -L "${symlink}" ]] ; then + write_kv_list_entry "$(sym_to_vm ${symlink})" "" + else + write_kv_list_entry "(unset)" "" + fi +} + +### list action ### + +describe_list() { + echo "List Available Virtual Machines" +} + +do_list() { + targets=( $(find_targets) ) + write_list_start "Available Java Virtual Machines:" + local found_build_only + if [[ -n ${targets[@]} ]] ; then + local i system_name user_name + + [[ -L ${VM_SYSTEM} ]] && system_name=$(sym_to_vm ${VM_SYSTEM}) + [[ -L ${VM_USER} ]] && user_name=$(sym_to_vm ${VM_USER}) + + for (( i = 0 ; i < ${#targets[@]} ; i = i + 1 )) ; do + local build_only=$(grep 'BUILD_ONLY' ${VM_CONFIG}/${targets[${i}]} | cut -c 13-16 ) + local mark="" + + if [[ "${build_only}" == "TRUE" || "{build_only}" == "true" ]]; then + mark="$(highlight_warning 'Build Only')" + found_build_only="TRUE" + fi + + if [[ ${targets[${i}]} == ${system_name} ]]; then + mark="${mark} $(highlight 'system-vm')" + fi + if [[ ${targets[${i}]} == ${user_name} ]]; then + mark="${mark} $(highlight 'user-vm' )" + fi + targets[${i}]="${targets[${i}]} ${mark}" + done + write_numbered_list "${targets[@]}" + else + write_kv_list_entry "(none found)" "" + fi + echo + if [[ "${found_build_only}" == "TRUE" ]]; then + write_warning_msg "VMs marked as Build Only may contain Security Vulnerabilities and/or be EOL." + write_warning_msg "Gentoo recommends not setting these VMs as either your System or User VM." + write_warning_msg "Please see http://www.gentoo.org/doc/en/java.xml#build-only for more information." + fi +} + +### set action ### + +describe_set() { + echo "Set a new system or user vm" +} + +do_set() { + local usage="Usage [user|system] [vm]" + if [[ ${#} != 2 ]]; then + die -q ${usage} + + elif [[ ${1} == "system" ]]; then + if [[ -w $(dirname ${VM_SYSTEM}) ]]; then + my_set ${VM_SYSTEM} ${2} + else + die -q "Sorry, you don't have enough premission to set system" + fi + elif [[ ${1} == "user" ]]; then + if [[ ${UID} != 0 ]]; then + my_set ${VM_USER} ${2} + else + die -q "Sorry, you cannot set a user vm as root. Set the system vm instead" + fi + else + die -q ${usage} + fi +} + +my_set() { + local target=${2} symlink=${1} + if [[ -z ${target} ]] ; then + die -q "You didn't tell me what to set the symlink to" + + elif [[ -L "${symlink}" ]] ; then + set_symlink "${target}" "${symlink}" || die -q "Couldn't set a new symlink" + + elif [[ -e "${symlink}" ]] ; then + die -q "Target file already exists and is not a symlink: ${symlink}" + + else + set_symlink "${target}" "${symlink}" || die -q "Couldn't set a new symlink" + fi +} + +set_symlink() { + local target=${1} symlink=${2} + if is_number "${target}" ; then + targets=( $(find_targets) ) + target=${targets[$(( ${target} - 1 ))]} + fi + if [[ -z ${target} ]] ; then + die -q "Target \"${1}\" doesn't appear to be valid!" + elif [[ -d "${VM_BASE}/${target}" ]] ; then + local sym_dir=$(dirname ${symlink}) + if [[ ! -d ${sym_dir} ]]; then + mkdir -p ${sym_dir} || die -q "Could not create ${my_dir}" + fi + ln -snf "${VM_BASE}/${target}" "${symlink}" + else + die -q "Target \"${1}\" doesn't appear to be valid!" + fi +} + +# vim: set ft=eselect : diff --git a/src/modules/maven.eselect.in b/src/modules/maven.eselect.in new file mode 100644 index 0000000..caac8be --- /dev/null +++ b/src/modules/maven.eselect.in @@ -0,0 +1,175 @@ +# -*-eselect-*- vim: ft=eselect +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id: maven-0.2.eselect,v 1.1 2010/02/28 19:31:04 ulm Exp $ + +DESCRIPTION="Manage Maven targets" +MAINTAINER="java@gentoo.org" +VERSION="0.2" + +MVN="${EROOT}/usr/bin/mvn" + +# find a list of mvn symlink targets, best first. +find_targets() { + for f in $(ls -r "${MVN}"-[0-9]* 2> /dev/null) ; do + if [[ -f "${f}" ]] ; then + echo $(basename "${f}") + fi + done +} + +# get a named or numbered target. +find_target() { + local target=${1} + + if is_number "${target}" && [[ ${target} -ge 1 ]] ; then + targets=( $(find_targets ) ) + [[ -z "${targets}" ]] && die -q "No targets found!" + target=${targets[target-1]} + fi + + if [[ "${target}" = mvn-[0-9]* ]] && [[ -f "${EROOT}/usr/bin/${target}" ]] ; then + echo ${target} + else + die -q "Target \"${1}\" doesn't appear to be valid!" + fi +} + +# try to remove the mvn symlink. +remove_symlink() { + rm "${MVN}" &>/dev/null +} + +# determine the current target. +get_target() { + local canonicalised=$(canonicalise "${MVN}") + echo $(basename "${canonicalised}") +} + +# set the Maven symlink. +set_symlink() { + local target=$(find_target "${1}") + remove_symlink + ln -s "${target}" "${MVN}" || die "Couldn't set ${target} symlink." +} + +### show action ### + +describe_show() { + echo "Show current Maven target" +} + +do_show() { + if [[ ${#} -gt 0 ]]; then + die -q "No parameters allowed." + fi + + if [[ -L "${MVN}" ]] ; then + get_target + return 0 + elif [[ -e "${MVN}" ]] ; then + echo "(not a symlink)" >&2 + return 1 + else + echo "(unset)" >&2 + return 1 + fi +} + +### list action ### + +describe_list() { + echo "List available Maven targets" +} + +do_list() { + if [[ ${#} -gt 0 ]]; then + die -q "Usage error: no parameters allowed." + fi + + local i targets + targets=( $(find_targets) ) + + for (( i = 0; i < ${#targets[@]}; i++ )); do + [[ ${targets[i]} = $(basename "$(canonicalise "${MVN}")") ]] \ + && targets[i]=$(highlight_marker "${targets[i]}") + done + + write_list_start "Available Maven targets:" + write_numbered_list -m "(none found)" "${targets[@]}" +} + +### set action ### + +describe_set() { + echo "Set a new Maven target" +} + +describe_set_options() { + echo "target : Target name or number (from 'list' action)" +} + +describe_set_parameters() { + echo "<target>" +} + +do_set() { + if [[ $# -gt 1 ]]; then + die -q "Too many parameters. Expected only one." + fi + + local target=${1} + + if [[ -z "${target}" ]] ; then + die -q "You didn't give me a target name or number." + elif [[ -L "${MVN}" ]] ; then + if ! remove_symlink ; then + die -q "Can't remove existing Maven provider." + elif ! set_symlink "${1}" ; then + die -q "Can't set new Maven provider." + fi + elif [[ -e "${MVN}" ]] ; then + write_warning_msg "Can't set a new Maven provider. There's a file in the way at ${MVN}. You can try removing it manually, and then re-running this command." + else + set_symlink "${target}" || die -q "Wasn't able to set a new provider." + fi +} + +### update action ### + +describe_update() { + echo "Set the Maven target to the latest if the current target is invalid or if the given target is the latest" +} + +describe_update_options() { + echo "target (optional) : Target name (from 'list' action)" +} + +describe_update_parameters() { + echo "<target>" +} + +do_update() { + if [[ $# -gt 1 ]] ; then + die -q "Too many parameters. Expected only one." + fi + + # For pkg_postrm + if [[ ! $(find_targets) ]]; then + remove_symlink + return + fi + + local canonicalised=$(canonicalise "${MVN}") + + if [[ ! -L "${MVN}" ]] || [[ ! -f "${canonicalised}" ]] ; then + do_set 1 + elif [[ -n "${1}" ]] ; then + # Check whether target name is valid. + find_target "${1}" > /dev/null + + if [[ "${1}" == "$(find_target 1)" ]] ; then + do_set 1 + fi + fi +} |