From 1d4a1ef0098080858f24cdd30ade3c4dd6578f20 Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Sat, 16 Feb 2008 17:32:15 +0000 Subject: [PATCH] Removed Zero2Bundle from AddApp. --- Zero2Bundle/.DirIcon | Bin 2715 -> 0 bytes Zero2Bundle/AppInfo.xml | 11 -- Zero2Bundle/AppRun | 76 ---------- Zero2Bundle/Help/COPYING | 340 -------------------------------------------- Zero2Bundle/Help/Changes | 3 - Zero2Bundle/Help/README | 79 ---------- Zero2Bundle/Zero2Bundle.xml | 27 ---- Zero2Bundle/bundle.py | 125 ---------------- Zero2Bundle/chooser.py | 47 ------ Zero2Bundle/findrox.py | 109 -------------- 10 files changed, 817 deletions(-) delete mode 100644 Zero2Bundle/.DirIcon delete mode 100644 Zero2Bundle/AppInfo.xml delete mode 100755 Zero2Bundle/AppRun delete mode 100644 Zero2Bundle/Help/COPYING delete mode 100644 Zero2Bundle/Help/Changes delete mode 100644 Zero2Bundle/Help/README delete mode 100644 Zero2Bundle/Zero2Bundle.xml delete mode 100644 Zero2Bundle/bundle.py delete mode 100755 Zero2Bundle/chooser.py delete mode 100644 Zero2Bundle/findrox.py diff --git a/Zero2Bundle/.DirIcon b/Zero2Bundle/.DirIcon deleted file mode 100644 index e5f5d88f5336d7e263934cb7fcc95f6c4852f1d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 2715 zcwPaU3S{+(P)g9#f^0_25JIIq?O*7%gTz$%QKRm z4wIA6(BR|x^$Wlkz**oNF!8@4@Cfi*42BXmZd^rG6_l4laWQ0PLwr2=e8Ln(%mxF@ z&B63ET)qsowJP=X9g>V@z26jpW;!}5uvoxo6drau1y~SZjYf!z1HJy{Z>uW!{V+Zb z=g&i9qp;4-VHD*oa13~RDG6N0>D+*-3NV^?XJ^G64sk-$AYB5ZPU zASFfIQ3I|hS}rXyf!SH;=s?%jf?8G%x{%azyTNLOmKI1)hc#>9@L>`28dz1G|GWlV zBN1Z)PbMeua#|{BsmYiU6Iq%1>Yy$Xe5F|Nb~$1hL8oQ z0;-G#Hm}QN(}p6Fs!CvU8ER=BIzyZQI^}^Q=b`2d^x1Tr`m2h`1g)KjSWild?3Q4F zp*e8#>O@80={z%kTAxQ&RUuRr!GnbogZ_r;hHX%D0cy{qoNlAu>%+xMFFk=y$M;`; zow~oMGz-%`#1)vycyT8@Towe{3*DnoeF+X<#(VK9 zM^%+Wz{kKO@DdKk6I4`i;`$Hx+X!zGyM*_8_0f+V6*o3P?*6e{XCQjh({*cKZbs zWm6;qh6vZ4z|r1u{`Jl|63%q7K0gh8VLGf|13%jVdn(Y|C(*U{L1_VOC=+;3*Sj6` z^(EkP3AHIM7P;UF3FD!mg)5MeAzF>jPSFE(b$`~g*cUdF<05ztmA3!rx#_koM7 zKG{K1{t8%=29{KK>^}JER+yTA_dbEMS76dfFO!q)^z>LzRU;`W^9dO|1_$Q}xLl%I z4-LWj^9pTkAL94#m7(g3c0UkNJ~ypJ%`l^D?}yiGV0r>xc?`C%U7%2O+2GBSaNsP{ zHYZmBHx|n#)~+>BR3tVyCXJ8dbMaX1_nF?0!M)QMU=(^ zTm-ro3!#OoBSYhOJG^!bPIodoyydK)HRI?@hU>1ilsIfCS(H zK(S7+;@mYdR>VU^7NE|XUI%4a@S|<$p51{lIg!j>JDZ&|ER(AlT&()#Uij<9YCv># zV6UtL1`%2ZzC_*s1-gzQW&rPoOj5Vzq2HPZ+Y8~IlpxQCtU~CufC?YC!dsuC)-}F*Y#@=jF-8QU`9p=`L<40=Nl09Eu#3jhVefDDAZS3uRlr2(jJgu_iZyGA(( ze0V$H!x2c9^}quB`q;P0C^Q8D^2>+}1sNsi0C2_%)mPx7cEINA#}JWB-Qe5MJ=1_qb(a5vRJvuzI*3Gug1LWds?_d(4y zn9{)`>!82_Zl8RL4#qujrVGC8!8z%sUP|RTplh*B%VJ}(W)824WvhvuMTrYF9YxIc z8QA|d{N@tuAB4m-*mW;d(DxcYr?}N;8WlzaBY!(=#B`SsO#rhO+NRmf;0oPIV7M!h*v{j%l84`t1)OA zhSpK0TytEM&ERqA>DgHPBovOovARLjVEN2h25o@|VG-nYuL@Vjpvea9b{rl*R@r)Y z17os_b;SyNBm(1KjL|SVOQj~CnQ;)Oh%mnaT!NknK=TAN*-<+u>7P?*kgc*?o?HZX zlLgXTKDC6p&l51B?7m=y$EerTG6rU}$8C)WZhUja=L@JtjH zHWhdf*dSG>Q*I;Gm=FN!>PGlouzVU7I57;(4wS3Y^s3MUv;)Jy^c}VZdMTZ^EuXil z#JbWXCTl7%)!3odj`y;IX1UQmD?3Id1|e*d34Po08BHs(2l$m--mh+Tyb - - Create bundles from Zero Install feeds - - Create application directories - 0.1 (03-Dec-2006) - Thomas Leonard - GNU General Public License - http://rox.sourceforge.net - - diff --git a/Zero2Bundle/AppRun b/Zero2Bundle/AppRun deleted file mode 100755 index a2a65af..0000000 --- a/Zero2Bundle/AppRun +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env python -import os, sys -import findrox; findrox.version(1, 9, 6) -from zeroinstall.injector.policy import Policy -import rox -from rox import g, processes, saving -from cStringIO import StringIO - -zero2bundle_uri = "http://rox.sourceforge.net/2006/interfaces/Zero2Bundle.xml" - -def try_interface(uri): - errors = StringIO() - launcher = processes.PipeThroughCommand( - ["0launch", "-d", "-g", "--", uri], - None, errors) - try: - launcher.wait() - except processes.ChildError, ex: - if '(256)' not in str(ex): - rox.alert(str(ex)) - except: - rox.report_exception() - else: - return True - return False - -if len(sys.argv) == 1: - from chooser import Chooser - m = Chooser() - while True: - m.show() - resp = m.run() - if resp != g.RESPONSE_OK: - sys.exit(1) - m.hide() - uri = m.uri.get_text() - if try_interface(uri): - break - m.destroy() -elif len(sys.argv) == 2: - uri = sys.argv[1] - if not try_interface(uri): - sys.exit(1) -else: - rox.alert("Multiple arguments to Zero2Bundle (%s)!" % `sys.argv[1:]`) - sys.exit(1) - -policy = Policy(uri) -policy.freshness == 0 -policy.recalculate() -assert policy.ready - -from bundle import BundleMaker - -maker = BundleMaker(policy) -default_name = os.path.basename(uri) -if default_name.endswith('.xml'): - default_name = default_name[:-4] -box = saving.SaveBox(maker, default_name, 'inode/directory') -if maker.icon: - image = g.Image() - try: - # Icon format must be PNG (to avoid attacks) - loader = g.gdk.PixbufLoader('png') - try: - loader.write(file(maker.icon).read()) - finally: - loader.close() - icon_pixbuf = loader.get_pixbuf() - except Exception, ex: - print >>sys.stderr, "Failed to load cached PNG icon: %s" % ex - else: - image.set_from_pixbuf(icon_pixbuf) - box.set_type('inode/directory', image) -box.show() -rox.mainloop() diff --git a/Zero2Bundle/Help/COPYING b/Zero2Bundle/Help/COPYING deleted file mode 100644 index 60549be..0000000 --- a/Zero2Bundle/Help/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library 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. - - - Copyright (C) 19yy - - 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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) 19yy 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. - - , 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 Library General -Public License instead of this License. diff --git a/Zero2Bundle/Help/Changes b/Zero2Bundle/Help/Changes deleted file mode 100644 index 91a3b8b..0000000 --- a/Zero2Bundle/Help/Changes +++ /dev/null @@ -1,3 +0,0 @@ -Release 0.1 (2006-12-03) - -First release. Heavily based on AddApp. diff --git a/Zero2Bundle/Help/README b/Zero2Bundle/Help/README deleted file mode 100644 index f022c64..0000000 --- a/Zero2Bundle/Help/README +++ /dev/null @@ -1,79 +0,0 @@ - Zero2Bundle - Create self-contained app bundles from Zero Install - by Thomas Leonard - - -BRIEF - -Zero2Bundle takes a Zero Install feed and creates a self-contained ROX -application directory containing that program AND any libraries it requires. -This may be useful if you want to use the resulting bundle on a machine with -no Internet connection. - -Note: normally, you would use AddApp rather than Zero2Bundle. AddApp creates -small launchers, which will download the application if required and store it -in the cache. AddApp launchers will automatically check for updates, run the -correct binary for different platforms, and share libraries. Zero2Bundle, by -contrast, copies the program and all required libraries into the created -directory. - - -INSTRUCTIONS - -Find the URL for the program you want to run. For example, Edit's URL is: - - http://rox.sourceforge.net/2005/interfaces/Edit - -1. Run Zero2Bundle and copy and paste the URL into the dialog box. -2. Click on Add. -3. If the system doesn't yet know about Edit, a box will pop up showing the - newly-downloaded information about it and prompting you to choose which - version you want (see http://0install.net/injector for details about this). -4. Click on Download. -5. A ROX savebox appears showing the application. Drag it into your Apps - directory (or whereever you want it). - -The application can then be run like any other normal ROX application. - - -LIMITATIONS - -It always includes all dependencies in the bundle. You might only want some -of them. However, the extra ones are easily removed: - -- Open the application directory (Shift+Click in ROX-Filer). - -- Delete the sub-directory corresponding to the dependency you don't want. - -- Remote the lines from the main AppRun file which refer to it. For example, - to remove ROX-Lib from Edit, you'd delete these lines: - - if [ "x$PYTHONPATH" = x ]; then - PYTHONPATH="$APP_DIR/ROX-Lib2/ROX-Lib2/python" - else - PYTHONPATH="$APP_DIR/ROX-Lib2/ROX-Lib2/python:$PYTHONPATH" - fi - export PYTHONPATH - -CREDITS - -The icon is just a recoloured and edited version of Geoff Youngs' 0install -icon. - - -CONDITIONS - -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., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA - -Please report any bugs to the mailing list: - - http://rox.sourceforge.net/desktop/lists diff --git a/Zero2Bundle/Zero2Bundle.xml b/Zero2Bundle/Zero2Bundle.xml deleted file mode 100644 index 0a827a9..0000000 --- a/Zero2Bundle/Zero2Bundle.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - Zero2Bundle - create ROX application bundles - -Zero2Bundle makes it easy to create self-contained ROX application directories -from Zero Install Injector feeds. - -Note: normally, you would use AddApp rather than Zero2Bundle. AddApp creates -small launchers, which will download the application if required and store it -in the cache. The launchers will automatically check for updates, run the -correct binary for different platforms, and share libraries. Zero2Bundle, by -contrast, copies the program and all required libraries into the created -directory. This is useful if the target machine doesn't have a network -connection, for example. - - - - - - - - - - - diff --git a/Zero2Bundle/bundle.py b/Zero2Bundle/bundle.py deleted file mode 100644 index 97af9f9..0000000 --- a/Zero2Bundle/bundle.py +++ /dev/null @@ -1,125 +0,0 @@ -import os, shutil, sys -import rox -from rox import saving -from xml.dom import minidom -import urllib2 -import tempfile, shutil -from zeroinstall.injector.model import EnvironmentBinding -from zeroinstall.injector.iface_cache import iface_cache -import __main__ - -def iface_to_dir_name(iface): - """Pick a directory name for this interface's implementation.""" - return iface.get_name().replace(' ', '_').replace('/', '-') - -class BundleMaker(saving.Saveable): - def __init__(self, policy): - assert policy.ready - - self.policy = policy - iface = self.policy.get_interface(policy.root) - self.icon = iface_cache.get_icon_path(iface) - - self.impl = self.policy.implementation[iface] - if hasattr(self.impl, 'main'): - self.main = self.impl.main - else: - self.main = iface.main - if not self.main: - rox.alert("Interface '%s' cannot be executed directly; it is just a library " - "to be used by other programs (or missing 'main' attribute on the " - "root element)." % iface.name) - - def save_to_file(self, path): - os.mkdir(path) - assert "'" not in self.policy.root - - apprun = os.fdopen(os.open(os.path.join(path, 'AppRun'), os.O_CREAT | os.O_WRONLY, 0777), 'w') - apprun.write("""#!/bin/sh -# This script was created automatically by Zero2Bundle -APP_DIR=`dirname "$0"` -""") - - iface = self.policy.get_interface(self.policy.root) - - # Copy each implementation into the bundle and set any - # environment variables required to find it - bindings = [] - for needed_iface in self.policy.implementation: - impl = self.policy.implementation[needed_iface] - impl_copy = os.path.join(path, iface_to_dir_name(needed_iface)) - assert impl - shutil.copytree(self.policy.get_implementation_path(impl), impl_copy) - - for dep in impl.dependencies.values(): - for b in dep.bindings: - bindings.append((dep, b)) - - for (dep, binding) in bindings: - dep_iface = self.policy.get_interface(dep.interface) - if isinstance(b, EnvironmentBinding): - dep_name = os.path.join(iface_to_dir_name(dep_iface), b.insert) - apprun.write(""" -if [ "x$%s" = x ]; then - %s="$APP_DIR/%s" -else - %s="$APP_DIR/%s:$%s" -fi -export %s -""" % (b.name, b.name, dep_name, b.name, dep_name, b.name, b.name)) - dep_impl = self.policy.get_implementation(dep_iface) - else: - print >>sys.stderr, "Warning: unknown binding type " + b - - root_iface = self.policy.get_interface(self.policy.root) - root_impl = self.policy.get_implementation(root_iface) - - impl_apprun = os.path.join(iface_to_dir_name(root_iface), root_impl.main) - apprun.write('exec "$APP_DIR/%s" "$@"\n' % impl_apprun) - - apprun.close() - - if self.icon: - shutil.copyfile(self.icon, os.path.join(path, '.DirIcon')) - - if self.is_applet(root_iface): - os.symlink('AppRun', os.path.join(path, 'AppletRun')) - - appinfo = os.path.join(os.path.dirname(impl_apprun), 'AppInfo.xml') - if os.path.exists(os.path.join(path, appinfo)): - os.symlink(appinfo, os.path.join(path, 'AppInfo.xml')) - - help = os.path.join(os.path.dirname(impl_apprun), 'Help') - if os.path.exists(os.path.join(path, help)): - os.symlink(help, os.path.join(path, 'Help')) - - def add_item(self, menu, option, labels): - doc = menu.ownerDocument - item = doc.createElement('Item') - kids = menu.childNodes - if kids: - menu.insertBefore(item, kids[0]) - else: - menu.appendChild(item) - item.setAttribute('option', option) - - for lang in labels: - label = doc.createElement('Label') - item.appendChild(label) - label.setAttribute('xml:lang', lang) - label.appendChild(doc.createTextNode(labels[lang])) - - def get_item(self, parent, name): - items = parent.getElementsByTagName(name) - if items: - return items[0] - item = parent.ownerDocument.createElement(name) - parent.appendChild(item) - return item - - def is_applet(self, iface): - impl_path = self.policy.get_implementation_path(self.impl) - assert impl_path - - applet_run = os.path.join(impl_path, os.path.dirname(self.main), 'AppletRun') - return os.path.exists(applet_run) diff --git a/Zero2Bundle/chooser.py b/Zero2Bundle/chooser.py deleted file mode 100755 index c500011..0000000 --- a/Zero2Bundle/chooser.py +++ /dev/null @@ -1,47 +0,0 @@ -import rox -from rox import g, loading -import codecs - -class Chooser(rox.Dialog, loading.XDSLoader): - def __init__(self): - rox.Dialog.__init__(self) - loading.XDSLoader.__init__(self, ['text/x-moz-url']) - - vbox = g.VBox(False, 2) - self.vbox.pack_start(vbox, True, True, 0) - vbox.set_border_width(10) - - message = g.Label('Enter the URI of a program available through the Zero Install\n' - 'Injector system, or drag a link from a web browser into this\n' - 'window.') - self.set_has_separator(False) - vbox.pack_start(message) - - self.uri = g.Entry() - self.uri.set_text('http://rox.sourceforge.net/2005/interfaces/ROX-Filer') - vbox.pack_start(self.uri) - self.uri.set_activates_default(True) - - self.vbox.show_all() - - fetching = g.Label('Checking interface URI...') - vbox.pack_start(fetching) - - self.add_button(g.STOCK_CANCEL, g.RESPONSE_CANCEL) - self.add_button(g.STOCK_ADD, g.RESPONSE_OK) - self.set_default_response(g.RESPONSE_OK) - - def xds_load_uris(self, uris): - assert uris - if len(uris) > 1: - rox.error("Can't handle multiple URIs at once! (got %s)" % repr(uris)) - return - self.uri.set_text(uris[0]) - - def xds_load_from_selection(self, selection, leafname = None): - if selection.data is None: - g.gdk.beep() # Load aborted - return - data = codecs.utf_16_decode(selection.data)[0] - uri = data.split('\n')[0] - self.xds_load_uris([uri]) diff --git a/Zero2Bundle/findrox.py b/Zero2Bundle/findrox.py deleted file mode 100644 index 3405e2a..0000000 --- a/Zero2Bundle/findrox.py +++ /dev/null @@ -1,109 +0,0 @@ -# Most of the common code needed by ROX applications is in ROX-Lib2. -# Except this code, which is needed to find ROX-Lib2 in the first place! - -# Just make sure you run findrox.version() before importing anything inside -# ROX-Lib2... - -import os, sys -from os.path import exists -import string - -def version(major, minor, micro): - """Find ROX-Lib2, with a version >= (major, minor, micro), and - add it to sys.path. If version is missing or too old, either - prompt the user, or (if possible) upgrade it automatically. - If 'rox' is already in PYTHONPATH, just use that (assume the injector - is being used).""" - try: - import rox - except ImportError: - pass - else: - #print "Using ROX-Lib in PYTHONPATH" - if (major, minor, micro) > rox.roxlib_version: - print >>sys.stderr, "WARNING: ROX-Lib version " \ - "%d.%d.%d requested, but using version " \ - "%d.%d.%d from %s" % \ - (major, minor, micro, - rox.roxlib_version[0], - rox.roxlib_version[1], - rox.roxlib_version[2], - rox.__file__) - return - - if not os.getenv('ROXLIB_DISABLE_ZEROINSTALL') and os.path.exists('/uri/0install/rox.sourceforge.net'): - # We're using ZeroInstall. Good :-) - zpath = '/uri/0install/rox.sourceforge.net/lib/ROX-Lib2/' \ - 'latest-2' - if not os.path.exists(zpath): - os.system('0refresh rox.sourceforge.net') - assert os.path.exists(zpath) - vs = os.readlink(zpath).split('-')[-1] - v = tuple(map(int, vs.split('.'))) - if v < (major, minor, micro): - if os.system('0refresh rox.sourceforge.net'): - report_error('Using ROX-Lib in Zero Install, but cached version (%s) is too old (need %d.%d.%d) and updating failed (is zero-install running?)' % (vs, major, minor, micro)) - sys.path.append(zpath + '/python') - return - try: - path = os.environ['LIBDIRPATH'] - paths = string.split(path, ':') - except KeyError: - paths = [os.environ['HOME'] + '/lib', - '/usr/local/lib', '/usr/lib' ] - - for p in paths: - p = os.path.join(p, 'ROX-Lib2') - if exists(p): - # TODO: check version is new enough - sys.path.append(os.path.join(p, 'python')) - import rox - if major == 1 and minor == 9 and micro < 10: - return # Can't check version - if not hasattr(rox, 'roxlib_version'): - break - if (major, minor, micro) <= rox.roxlib_version: - return # OK - report_error("This program needs ROX-Lib2 (version %d.%d.%d) " % \ - (major, minor, micro) + "to run.\n" + \ - "I tried all of these places:\n\n" + \ - string.join(paths, '\n') + '\n\n' + \ - "ROX-Lib2 is available from:\n" + \ - "http://rox.sourceforge.net") - -def report_error(err): - "Write 'error' to stderr and, if possible, display a dialog box too." - try: - sys.stderr.write('*** ' + err + '\n') - except: - pass - try: - import pygtk; pygtk.require('2.0') - import gtk; g = gtk - except: - import gtk - win = gtk.GtkDialog() - message = gtk.GtkLabel(err + - '\n\nAlso, pygtk2 needs to be present') - win.set_title('Missing ROX-Lib2') - win.set_position(gtk.WIN_POS_CENTER) - message.set_padding(20, 20) - win.vbox.pack_start(message) - - ok = gtk.GtkButton("OK") - ok.set_flags(gtk.CAN_DEFAULT) - win.action_area.pack_start(ok) - ok.connect('clicked', gtk.mainquit) - ok.grab_default() - - win.connect('destroy', gtk.mainquit) - win.show_all() - gtk.mainloop() - else: - box = g.MessageDialog(None, g.MESSAGE_ERROR, 0, - g.BUTTONS_OK, err) - box.set_title('Missing ROX-Lib2') - box.set_position(g.WIN_POS_CENTER) - box.set_default_response(g.RESPONSE_OK) - box.run() - sys.exit(1) -- 2.11.4.GIT