Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2007-01-22 10:40:21 (GMT)
committer Marco Pesenti Gritti <mpg@redhat.com>2007-01-22 10:40:21 (GMT)
commitc53a6dd5dba78aa4d5d4dbb81e73429d3569c957 (patch)
tree3d9ed960c77a448aab24233ec861b7b3303549b1
parent4fcf5043a9a7030f439a04c9de9aba74ce6d79fb (diff)
Import jhbuild, get rid of the updater.
-rw-r--r--.gitignore2
-rw-r--r--build-scripts/README7
-rw-r--r--build-scripts/jhbuild/.cvsignore3
-rw-r--r--build-scripts/jhbuild/COPYING340
-rw-r--r--build-scripts/jhbuild/ChangeLog7905
-rw-r--r--build-scripts/jhbuild/HACKING46
-rw-r--r--build-scripts/jhbuild/Makefile64
-rw-r--r--build-scripts/jhbuild/README215
-rw-r--r--build-scripts/jhbuild/contrib/jhbuild_completion.bash85
-rw-r--r--build-scripts/jhbuild/doc/custom.xsl9
-rw-r--r--build-scripts/jhbuild/doc/jhbuild.css20
-rw-r--r--build-scripts/jhbuild/doc/jhbuild.xml1579
-rw-r--r--build-scripts/jhbuild/install-check.c119
-rw-r--r--build-scripts/jhbuild/jamesh.jhbuildrc37
-rw-r--r--build-scripts/jhbuild/jhbuild.desktop10
-rw-r--r--build-scripts/jhbuild/jhbuild.in6
-rw-r--r--build-scripts/jhbuild/jhbuild/.cvsignore1
-rw-r--r--build-scripts/jhbuild/jhbuild/__init__.py19
-rw-r--r--build-scripts/jhbuild/jhbuild/commands/.cvsignore1
-rw-r--r--build-scripts/jhbuild/jhbuild/commands/__init__.py77
-rw-r--r--build-scripts/jhbuild/jhbuild/commands/autobuild.py85
-rw-r--r--build-scripts/jhbuild/jhbuild/commands/base.py288
-rw-r--r--build-scripts/jhbuild/jhbuild/commands/bootstrap.py41
-rw-r--r--build-scripts/jhbuild/jhbuild/commands/gui.py56
-rw-r--r--build-scripts/jhbuild/jhbuild/commands/info.py126
-rw-r--r--build-scripts/jhbuild/jhbuild/commands/sanitycheck.py153
-rw-r--r--build-scripts/jhbuild/jhbuild/commands/tinderbox.py92
-rw-r--r--build-scripts/jhbuild/jhbuild/config.py185
-rw-r--r--build-scripts/jhbuild/jhbuild/cut_n_paste/.cvsignore1
-rw-r--r--build-scripts/jhbuild/jhbuild/cut_n_paste/__init__.py0
-rw-r--r--build-scripts/jhbuild/jhbuild/cut_n_paste/optparse.py2008
-rw-r--r--build-scripts/jhbuild/jhbuild/cut_n_paste/subprocess.py1165
-rw-r--r--build-scripts/jhbuild/jhbuild/defaults.jhbuildrc69
-rw-r--r--build-scripts/jhbuild/jhbuild/errors.py41
-rw-r--r--build-scripts/jhbuild/jhbuild/frontends/.cvsignore1
-rw-r--r--build-scripts/jhbuild/jhbuild/frontends/__init__.py26
-rw-r--r--build-scripts/jhbuild/jhbuild/frontends/autobuild.py258
-rw-r--r--build-scripts/jhbuild/jhbuild/frontends/buildscript.py136
-rw-r--r--build-scripts/jhbuild/jhbuild/frontends/gtkui.py463
-rw-r--r--build-scripts/jhbuild/jhbuild/frontends/icons/build.pngbin0 -> 3020 bytes
-rw-r--r--build-scripts/jhbuild/jhbuild/frontends/icons/checkout.pngbin0 -> 3750 bytes
-rw-r--r--build-scripts/jhbuild/jhbuild/frontends/icons/configure.pngbin0 -> 3267 bytes
-rw-r--r--build-scripts/jhbuild/jhbuild/frontends/icons/error.pngbin0 -> 2949 bytes
-rw-r--r--build-scripts/jhbuild/jhbuild/frontends/icons/install.pngbin0 -> 2698 bytes
-rw-r--r--build-scripts/jhbuild/jhbuild/frontends/jhbuild.glade534
-rw-r--r--build-scripts/jhbuild/jhbuild/frontends/terminal.py213
-rw-r--r--build-scripts/jhbuild/jhbuild/frontends/tinderbox.py330
-rw-r--r--build-scripts/jhbuild/jhbuild/main.py102
-rw-r--r--build-scripts/jhbuild/jhbuild/modtypes/.cvsignore1
-rw-r--r--build-scripts/jhbuild/jhbuild/modtypes/__init__.py190
-rw-r--r--build-scripts/jhbuild/jhbuild/modtypes/autotools.py354
-rw-r--r--build-scripts/jhbuild/jhbuild/modtypes/distutils.py137
-rw-r--r--build-scripts/jhbuild/jhbuild/modtypes/gcjmodule.py174
-rw-r--r--build-scripts/jhbuild/jhbuild/modtypes/gdbmodule.py124
-rw-r--r--build-scripts/jhbuild/jhbuild/modtypes/mesa.py163
-rw-r--r--build-scripts/jhbuild/jhbuild/modtypes/mozillamodule.py187
-rw-r--r--build-scripts/jhbuild/jhbuild/modtypes/perl.py129
-rw-r--r--build-scripts/jhbuild/jhbuild/modtypes/tarball.py269
-rw-r--r--build-scripts/jhbuild/jhbuild/moduleset.py247
-rw-r--r--build-scripts/jhbuild/jhbuild/monkeypatch.py214
-rw-r--r--build-scripts/jhbuild/jhbuild/utils/.cvsignore1
-rw-r--r--build-scripts/jhbuild/jhbuild/utils/__init__.py18
-rw-r--r--build-scripts/jhbuild/jhbuild/utils/cmds.py201
-rw-r--r--build-scripts/jhbuild/jhbuild/utils/httpcache.py230
-rw-r--r--build-scripts/jhbuild/jhbuild/utils/packagedb.py97
-rw-r--r--build-scripts/jhbuild/jhbuild/utils/trayicon.py70
-rw-r--r--build-scripts/jhbuild/jhbuild/versioncontrol/.cvsignore3
-rw-r--r--build-scripts/jhbuild/jhbuild/versioncontrol/__init__.py103
-rw-r--r--build-scripts/jhbuild/jhbuild/versioncontrol/arch.py171
-rw-r--r--build-scripts/jhbuild/jhbuild/versioncontrol/bzr.py119
-rw-r--r--build-scripts/jhbuild/jhbuild/versioncontrol/cvs.py279
-rw-r--r--build-scripts/jhbuild/jhbuild/versioncontrol/darcs.py111
-rw-r--r--build-scripts/jhbuild/jhbuild/versioncontrol/git.py125
-rw-r--r--build-scripts/jhbuild/jhbuild/versioncontrol/svn.py214
-rw-r--r--build-scripts/jhbuild/jhbuild/versioncontrol/tarball.py203
-rw-r--r--build-scripts/jhbuild/modulesets/bootstrap.modules87
-rw-r--r--build-scripts/jhbuild/modulesets/freedesktop-2.18.modules245
-rw-r--r--build-scripts/jhbuild/modulesets/freedesktop.modules308
-rw-r--r--build-scripts/jhbuild/modulesets/gcj.modules135
-rw-r--r--build-scripts/jhbuild/modulesets/gnome-2.10.modules1621
-rw-r--r--build-scripts/jhbuild/modulesets/gnome-2.12.modules1747
-rw-r--r--build-scripts/jhbuild/modulesets/gnome-2.14.modules2014
-rw-r--r--build-scripts/jhbuild/modulesets/gnome-2.16.modules2175
-rw-r--r--build-scripts/jhbuild/modulesets/gnome-2.18.modules2226
-rw-r--r--build-scripts/jhbuild/modulesets/gnutls.modules36
-rw-r--r--build-scripts/jhbuild/modulesets/gtk.modules77
-rw-r--r--build-scripts/jhbuild/modulesets/gtk28.modules72
-rw-r--r--build-scripts/jhbuild/modulesets/moduleset.dtd115
-rw-r--r--build-scripts/jhbuild/modulesets/moduleset.rnc131
-rw-r--r--build-scripts/jhbuild/modulesets/moduleset.xsl283
-rw-r--r--build-scripts/jhbuild/modulesets/pulseaudio.modules99
-rw-r--r--build-scripts/jhbuild/modulesets/schemas.xml4
-rw-r--r--build-scripts/jhbuild/patches/dbus-glib-build.patch78
-rw-r--r--build-scripts/jhbuild/patches/gettext-changelog.patch462
-rw-r--r--build-scripts/jhbuild/patches/hal-dbus_connection_close.patch32
-rw-r--r--build-scripts/jhbuild/patches/howl-1.0.0-buildfix.patch24
-rw-r--r--build-scripts/jhbuild/patches/libtool-1.4.2-expsym.patch54
-rw-r--r--build-scripts/jhbuild/patches/libtool-1.5.18-multilib.patch31
-rw-r--r--build-scripts/jhbuild/patches/scrollkeeper_clean_xml_validation_context.patch10
-rw-r--r--build-scripts/jhbuild/patches/scrollkeeper_empty_url_string.patch11
-rw-r--r--build-scripts/jhbuild/patches/scrollkeeper_language_fix.patch12
-rw-r--r--build-scripts/jhbuild/patches/scrollkeeper_rw_offset_fix.patch12
-rw-r--r--build-scripts/jhbuild/sample.jhbuildrc38
-rw-r--r--build-scripts/jhbuild/scripts/branch-violations/README33
-rwxr-xr-xbuild-scripts/jhbuild/scripts/branch-violations/find-branch-modules25
-rwxr-xr-xbuild-scripts/jhbuild/scripts/branch-violations/find-branch-moduleset22
-rwxr-xr-xbuild-scripts/jhbuild/scripts/branch-violations/find-branch-violations24
-rwxr-xr-xbuild-scripts/jhbuild/scripts/changecvsroot.py39
-rw-r--r--build-scripts/jhbuild/scripts/gnome-2.6.deps85
-rw-r--r--build-scripts/jhbuild/scripts/gnome-2.6.exceptions23
-rwxr-xr-xbuild-scripts/jhbuild/scripts/mk-tarball-moduleset.py164
-rw-r--r--build-scripts/jhbuild/scripts/upgrade-module-set.xsl134
-rwxr-xr-xsugar-jhbuild5
-rw-r--r--updater.py13
114 files changed, 33739 insertions, 19 deletions
diff --git a/.gitignore b/.gitignore
index 10f6ff3..147a1c2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-build-scripts/jhbuild
+.svn
build
*.pyc
*~
diff --git a/build-scripts/README b/build-scripts/README
new file mode 100644
index 0000000..4a1efc8
--- /dev/null
+++ b/build-scripts/README
@@ -0,0 +1,7 @@
+Keep the jhbuild directory synced with:
+
+svn://svn.gnome.org/svn/jhbuild/trunk
+
+The repository has been imported here only
+for convenience. All the changes should go
+upstream first and then imported.
diff --git a/build-scripts/jhbuild/.cvsignore b/build-scripts/jhbuild/.cvsignore
new file mode 100644
index 0000000..1cf30c2
--- /dev/null
+++ b/build-scripts/jhbuild/.cvsignore
@@ -0,0 +1,3 @@
+*.tar.gz
+*.pyc
+install-check
diff --git a/build-scripts/jhbuild/COPYING b/build-scripts/jhbuild/COPYING
new file mode 100644
index 0000000..d60c31a
--- /dev/null
+++ b/build-scripts/jhbuild/COPYING
@@ -0,0 +1,340 @@
+ 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.
+
+ <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., 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) 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 Library General
+Public License instead of this License.
diff --git a/build-scripts/jhbuild/ChangeLog b/build-scripts/jhbuild/ChangeLog
new file mode 100644
index 0000000..b18ce29
--- /dev/null
+++ b/build-scripts/jhbuild/ChangeLog
@@ -0,0 +1,7905 @@
+2007-01-22 Mariano Suárez-Alvarez <mariano@gnome.org>
+
+ * jhbuild/frontends/terminal.py: Do not write string arrays as
+ commands upon error. Fixes bug #354010.
+
+2007-01-14 Claudio Saavedra <csaavedra@alumnos.utalca.cl>
+
+ * modulesets/freedesktop-2.18.modules: Bump s-t-b version to 2.1.2.
+
+2007-01-11 Frederic Crozat <fcrozat@mandriva.com>
+
+ * modulesets/gnome-2.18.modules: add dependency on enchant
+ and iso-codes.
+
+2007-01-10 Wouter Bolsterlee <wbolster@svn.gnome.org>
+
+ * modulesets/gnome-2.16.modules: libwnck has branched
+ for gnome-2-16
+
+2007-01-10 Marco Pesenti Gritti <marco@gnome.org>
+
+ * jhbuild/modtypes/autotools.py: added a makefile attribute to the
+ autotools module type (bug #386193)
+
+2007-01-08 Frederic Peters <fpeters@0d.be>
+
+ * jhbuild/modtypes/tarball.py, jhbuild/versioncontrol/tarball.py: added
+ fallback to curl if wget is unavailable (bug #301259, based on a patch
+ by Joshua Hoblitt)
+
+2007-01-07 Frederic Peters <fpeters@0d.be>
+
+ * jhbuild/versioncontrol/git.py: adds support for a "subdir" attribute
+ for GIT branches (bug #342846, patch by Eric Anholt)
+
+2007-01-07 Frederic Peters <fpeters@0d.be>
+
+ * jhbuild/versioncontrol/svn.py: abort on conflicts from svn update
+ (bug #394308)
+
+2007-01-07 Frederic Peters <fpeters@0d.be>
+
+ * jhbuild/versioncontrol/svn.py: always use a branch when it is
+ specified (even when module is set) (bug #394588)
+
+2007-01-07 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/gnome-2.18.modules: use libgsf 1.14.2 (bug #362223)
+
+2007-01-09 Christian Persch <chpe@svn.gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch for
+ libbonoboui.
+
+2007-01-09 Guillaume Desmottes <cass@skynet.be>
+
+ * doc/jhbuild.xml: Documentation: Correct spelling of Gnome as GNOME.
+
+2007-01-09 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.18.modules: Specify a virtual gnomemm repository,
+ and specify the gnomemm modules as using the repository. Unlike before,
+ with cvs, they will then be checked out to top-level directories.
+
+2007-01-08 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.18.modules: vino depends on dbus-glib
+
+2007-01-08 Murray Cumming <murrayc@murrayc.com>
+
+ * sample.jhbuildrc: Update for the GNOME cvs->svn change.
+
+2007-01-07 Frederic Peters <fpeters@0d.be>
+
+ * jhbuild/modtypes/mesa.py: introduced special module type for mesa;
+ necessary to use xorg moduleset (bug #349343, module by Eric Anholt)
+
+2007-01-07 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/pulseaudio.modules: added PulseAudio moduleset
+ (bug #348572)
+
+2007-01-07 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/gnome-2.18.modules: removed obsolete libbonobouimm from
+ meta-gnome-c++ (bug #393716, patch by Marc-Andre Lureau)
+
+2007-01-07 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/gnome-2.18.modules: changed ekiga module to point to
+ appropriate subversion tag.
+
+2007-01-07 Marco Pesenti Gritti <mpg@redhat.com>
+
+ * modulesets/freedesktop.modules: dbus-python use autotools now
+
+2007-01-05 Mark McLoughlin <mark@skynet.ie>
+
+ Combination of patches from myself and
+ Frederic Peters <fpeters@0d.be>
+
+ See bug #393147 and #347597
+
+ * jhbuild/versioncontrol/svn.py: back out the trunk
+ fiddling behaviour from before and add:
+ + A "trunk_path" attribute to <repository type="svn">
+ which defaults to "trunk". Set to "" if the trunks
+ are in the toplevel directory
+ + A "branches_path" attribute to <repository type="svn">
+ which defaults to "branches".
+ + Support for the "revision" attribute on <branch>
+
+2007-01-05 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/gnome-2.18.modules: added dependency on gnome-desktop for
+ epiphany (bug #393079)
+
+2007-01-05 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/gnome-2.18.modules: fixed libxml2 module name
+ (patch #79436 from bug #393071)
+
+2007-01-05 Olav Vitters <olav@bkor.dhs.org>
+
+ * Makefile: Change 'make update' from CVSism to SVNism.
+
+2007-01-04 Marco Pesenti Gritti <mpg@redhat.com>
+
+ * modulesets/gnome-2.16.modules: use svn.gnome.org
+
+2007-01-03 Tim Janik <timj@gtk.org>
+
+ * modulesets/gtk.modules: pango/autogen.sh depends on gnome-common.
+
+2007-01-02 Mark McLoughlin <mark@skynet.ie>
+
+ Pointed out by Tim Janik
+
+ * jhbuild/versioncontrol/svn.py: only override checkoutdir
+ if it's not already set
+
+2007-01-02 Mark McLoughlin <mark@skynet.ie>
+
+ * jhbuild/versioncontrol/svn.py: add a little hack so
+ that if no branch or tag is mentioned in the module name,
+ we checkout the trunk to an appropriate directory
+
+ * modulesets/gnome-2.18.modules: add the svn.gnome.org
+ repo and fix a couple of branch defs.
+
+ * modulesets/freedesktop-2.18.modules: remove the unused
+ gnome.org cvsroot from here.
+
+2007-01-02 Mark McLoughlin <mark@skynet.ie>
+
+ * jhbuild/versioncontrol/svn.py: fix minor buglet in
+ SubversionRepository.branch()
+
+Tue Jan 2 12:18:33 2007 Tim Janik <timj@imendio.com>
+
+ * modulesets/gtk.modules: also fix up gnome-common and intltool URLs.
+
+Tue Jan 2 11:25:17 2007 Tim Janik <timj@imendio.com>
+
+ * first steps at getting the Gtk+ toolchain to build with GNOME SVN.
+
+ * modulesets/gtk.modules: renamed old gnome repo from gnome.org to
+ cvs.gnome.org. added new default repo svn.gnome.org.
+ converted module branch specifications to check out */trunk
+ directories into directories with checkoutdir=MODULENAME.
+
+2006-12-26 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.18.modules: Restore HEAD branch for
+ gnome-system-monitor (no more unblessed external
+ dependency).
+
+2006-12-20 Elijah Newren <newren@gmail.com>
+
+ * modulesets/freedesktop-2.18.modules: Cairo is an external dep;
+ it should be pulled from tarballs, not git.
+
+ * modulesets/bootstrap.modules: update autoconf to 2.60 since some
+ modules now require it.
+
+2006-12-20 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/gnome-2.16.modules: vte has branched for gnome-2-16.
+
+2006-12-19 Wouter Bolsterlee <wbolster@cvs.gnome.org>
+
+ * modulesets/gnome-2.16.modules: gnome-media has
+ branched for gnome-2-16.
+
+2006-12-18 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/freedesktop-2.18.modules:
+
+ Update to hicolor-icon-theme 0.10, needed to use all icon context
+ defined by Icon Naming Spec
+
+2006-12-14 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/freedesktop-2.18.modules: Use cairo from git to get
+ more testing of that before we start using it for 2.18.0.
+
+2006-12-14 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/freedesktop-2.18.modules:
+ * modulesets/gnome-2.18.modules:
+
+ Grab liboobs from cvs: it's a desktop module, not external dep.
+
+2006-12-12 Carlos Eduardo Rodrigues Diogenes <cerdiogenes@yahoo.com.br>
+
+ * modulesset/gnutls: Remove "alpha" from the gnutls URL.
+
+2006-12-03 Christian Kirbach <Christian.Kirbach@siemens.com>
+
+ * modulesets/gnome-2.16.modules: Use liboil 0.3.10 tarball, 0.3.8 is
+ now required for gst-plugins-base. The liboil cvs repository is ancient.
+ (committed by Andre Klapper on behalf of Christian Kirbach)
+
+2006-11-28 Wouter Bolsterlee <wbolster@cvs.gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch for
+ bug-buddy.
+
+2006-11-23 Wouter Bolsterlee <wbolster@cvs.gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branches
+ for eel, nautilus and gnome-vfs.
+
+Thu, 23 Nov 2006 14:14:02 +0100 Dodji Seketeli
+
+ * modulesets/gnome-2.18.modules: added nemiver. Applied patch #368874
+ from Guillaume Desmottes.
+
+2006-11-23 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.16.modules:
+ * modulesets/gnome-2.18.modules: Use the glibmm-2.12 branch of
+ glibmm, because GNOME 2.18 uses the glib-2.12 branch of glib.
+
+2006-11-17 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/bootstrap.modules: Use latest gettext (0.16) instead
+ of 0.14.5, because I need the latest libgettext-po error-handling
+ API in Glom. But if this disturbs something, just revert it.
+
+2006-11-16 Thomas Wood <thos@gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gtk-engines-2-8 branch for
+ gtk-engines
+
+2006-11-17 Wouter Bolsterlee <wbolster@cvs.gnome.org>
+
+ * modulesets/gnome-2.16.modules: use gnome-2-16 branch for
+ gconf-editor.
+
+2006-11-15 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.18.modules: Add libipoddevice.
+ * modulesets/gnome-2.16.modules: same.
+
+2006-11-15 Claudio Saavedra <csaavedra@alumnos.utalca.cl>
+
+ * modulesets/gnome-2.18.modules: Remove libgnomeprint from EOG
+ dependencies.
+
+2006-11-14 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.18.modules: Add gtkunique.
+
+2006-11-12 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.16.modules:
+ Add gmime, tracker and brasero modules. Add gnome-common depencency
+ for gnome-icon-theme.
+
+ * modulesets/gnome-2.16.modules:
+ Add brasero module. Add gnome-common depencency for
+ gnome-icon-theme.
+
+ Please note that brasero suggest also libnotify and totem.
+ Note also that now tracker no longer needs external sqlite.
+
+2006-11-10 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.18.modules: Add gstreamer dependency for
+ tracker.
+
+2006-11-09 Callum McKenzie <callum@spooky-possum.org>
+
+ * modulesets/gnome-2.18.modules: Remove the gob dependency for
+ gnome-games.
+
+2006-11-06 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.16.modules: use gnome-2-16 branch for
+ gnome-desktop, gnome-panel & gnome-session
+
+2006-11-05 Wouter Bolsterlee <wbolster@cvs.gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch for
+ gnome-keyring-manager.
+
+2006-11-05 Wouter Bolsterlee <wbolster@cvs.gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch
+ for gedit.
+
+2006-11-02 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.16.modules:
+ * modulesets/gnome-2.18.modules:
+ iso-codes-0.53 got regenerated and thus changed size and md5sum.
+ Luckily, the iso-codes maintainers have agreed to not continue
+ deleting releases in the future (private email), so this shouldn't
+ happen again. :-) See also #366864.
+
+2006-11-01 Wouter Bolsterlee <wbolster@cvs.gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch for
+ gnome-menus.
+
+2006-10-31 Wouter Bolsterlee <wbolster@cvs.gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch for
+ gnome-keyring.
+
+2006-10-30 Wouter Bolsterlee <wbolster@cvs.gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch
+ for libgnome and libgnomeui. Use gnome-2-12 branch for
+ libgnomeprint and libgnomeprintui.
+
+2006-10-29 Frederic Peters <fpeters@0d.be>
+
+ * jhbuild/versioncontrol/tarball.py: Let size be omitted.
+ (closes: #350795)
+
+2006-10-26 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.18.modules: Use gnome-2-16 branch for
+ gnome-system-monitor for now due to use of unblessed external
+ dependency.
+
+2006-10-26 Wouter Bolsterlee <wbolster@cvs.gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch for
+ liboobs.
+
+2006-10-25 Wouter Bolsterlee <wbolster@cvs.gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch for
+ gnome-system-monitor.
+
+2006-10-23 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.18.modules: Add tracker and gmime (needed by
+ tracker). Note that you need sqlite3 development files installed
+ on you system to build tracker. Also libexif, libogg+libvorbis and
+ libfam/gamin are useful, but can't managed via jhbuild.
+
+2006-10-22 Elijah Newren <newren gmail com>
+
+ * modulesets/freedesktop.modules: PolicyKit should not be a
+ dependency of hal-0-5-7.
+
+2006-10-21 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.18.modules: revert last commit; it was based
+ on a misunderstanding. Apply Frederic's patch from #363635 to fix
+ the build since gnome-control-center has now split into two
+ modules.
+
+2006-10-20 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.18.modules: revert gnome-control-center since
+ it ignored external dependency rules in newest commit. Will bring
+ up on mailing list...
+
+2006-10-20 Wouter Bolsterlee <wbolster@cvs.gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branches
+ for evolution, evolution-data-server, evolution-exchange
+ and gtkhtml.
+
+2006-10-19 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.18.modules: Added gtksourceviewmm and made
+ Glom depend on it. Commented-out libbonobo*mm, because they are
+ old unused crap.
+
+2006-10-18 Elijah Newren <newren gmail com>
+
+ * modulesets/freedesktop-2.18.modules:
+ liboobs-0.5.0 makes nautilus crash on launch; update it and
+ system-tools-backends (which it depends on).
+ live.gnome.org/TwoPointSeventeen/ExternalDependencies has been
+ updated as well.
+
+2006-10-17 Elijah Newren <newren gmail com>
+
+ * modulesets/freedesktop-2.18.modules:
+ Weird jhbuild voodoo made it so that no repository definition was
+ necessary for dbus-python on some machines, but it is on others.
+ Don't ask me. Anyway, this should fix on the machines that needed
+ it.
+
+2006-10-17 Elijah Newren <newren gmail com>
+
+ * modulesets/freedesktop-2.18.modules:
+ * modulesets/gnome-2.18.modules:
+ Oops, we're supposed to be using gnome-system-tools HEAD; also
+ liboobs should be a tarball since it's an external dependency (one
+ which we previously forgot to list). I'm not completely sure
+ where it makes the most sense to keep it, but given that it was
+ never proposed for GNOME, maybe putting liboobs in
+ freedesktop-2.18.modules makes more sense? Doing that for now,
+ anyway...
+
+2006-10-16 Elijah Newren <newren gmail com>
+
+ * modulesets/freedesktop-2.18.modules: fix from Frederic Peters --
+ update dbus-glib and dbus-python to avoid build errors.
+ live.gnome.org/TwoPointSeventeen/ExternalDependencies has been
+ updated as well.
+
+2006-10-16 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.16.modules:
+ * modulesets/gnome-2.18.modules:
+ modemlights applet needs gnome-settings-daemon installed,
+ invest-applet needs gnomeapplet. (Additional issues reported by
+ jsberg bnl gov in #362250)
+
+2006-10-16 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.16.modules:
+ * modulesets/gnome-2.18.modules:
+ * modulesets/freedesktop-2.18.modules:
+ * modulesets/freedesktop.modules:
+ Add missing hard and optional dependencies reported by
+ jsberg@bnl.gov in #362250.
+
+2006-10-16 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.18.modules: Use gtk-2-10 branch for gtk+ and
+ glib-2-12 branch for glib. See
+ http://mail.gnome.org/archives/gtk-devel-list/2006-September/msg00141.html
+
+2006-10-16 William Jon McCann <mccann@jhu.edu>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch
+ for gnome-screensaver and nautilus-cd-burner.
+
+2006-10-14 Wouter Bolsterlee <wbolster@gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch
+ for gnome-applets.
+
+2006-10-14 Elijah Newren <newren gmail com>
+
+ * modulesets/freedesktop-2.18.modules: Patch from Marc-Andre
+ Lureau to fix cairomm build (use tarball module type instead of
+ autotools) #362184
+
+2006-10-14 Gustavo J. A. M. Carneiro <gjc@gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use the gnome-2-16 branch for
+ gnome-python-desktop.
+
+2006-10-12 Wouter Bolsterlee <wbolster@gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch
+ for file-roller.
+
+2006-10-12 Elijah Newren <newren gmail com>
+
+ * patches/dbus-glib-build.patch: Add this to fix #361674, reported
+ by Frederic Peters. Thanks Frederic. And...oops!!
+
+2006-10-11 Wouter Bolsterlee <wbolster@gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch
+ for gnome-terminal.
+
+2006-10-11 Wouter Bolsterlee <wbolster@gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branches
+ for evince, gnome-doc-utils and vino.
+
+2006-10-08 Wouter Bolsterlee <wbolster@gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch
+ for gnome-themes.
+
+2006-10-05 Elijah Newren <newren gmail com>
+
+ * modulesets/freedesktop.modules:
+ * modulesets/gnome-2.18.modules:
+ make libXrender and libXft optional dependencies, #133714
+
+ * modulesets/gnome-2.18.modules:
+ revert ekiga to v2_0_3 since HEAD depends on a version of external
+ dependencies newer than those listed at
+ http://live.gnome.org/TwoPointSeventeen/ExternalDependencies
+
+ * modulesets/freedesktop-2.18.modules:
+ new file
+
+ * modulesets/gnome-2.18.modules:
+ depend on tarball versions of external dependencies of core gnome
+ modules (see also
+ http://live.gnome.org/TwoPointSeventeen/ExternalDependencies),
+ switch to using freedesktop-2.18.modules instead of
+ freedesktop.modules
+
+2006-09-29 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.16.modules: Use branch gnome-2-16 for
+ deskbar-applet and gnome-games; Switch inkscape to svn repository.
+
+ * modulesets/gnome-2.18.modules: Switch inkscape to svn repository.
+
+2006-09-27 Frederic Crozat <fcrozat@mandriva.com>
+
+ * modulesets/freedesktop.modules:
+ fontconfig has switched to git, add dbus-qt3 and portland modules.
+
+2006-09-22 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.16.modules: Add glade3 module.
+ * modulesets/gnome-2.18.modules: Ditto.
+
+2006-09-19 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch
+ for metacity.
+
+2006-09-13 Wouter Bolsterlee <wbolster@gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch
+ for gnome-icon-theme.
+
+2006-09-13 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch
+ for totem.
+
+2006-09-11 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.16.modules:
+ * modulesets/gnome-2.18.modules:
+ Add gnome-vfs-monikers to meta-gnome-devel-platform dependencies
+
+ * modulesets/gnome-2.14.modules:
+ Add libgcrypt as hard dependency of libxslt (see #345359; just
+ forgot to do this for this release set previously)
+
+2006-09-11 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.16.modules:
+ * modulesets/gnome-2.18.modules:
+ Update pwlib and opal branch tags since ekiga requires newer
+ versions now
+
+2006-09-06 Lucas Rocha <lucasr@gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch
+ for zenity and eog.
+
+2006-09-06 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch
+ for gnome-nettool.
+
+2006-09-06 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.16.modules:
+ * modulesets/gnome-2.18.modules: add dbus-glib dep for gnome-vfs
+
+2006-09-06 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branches
+ for gnome-control-center, gnome-utils, gdm2, gcalctool,
+ and orca.
+
+ * modulesets/gnome-2.16.modules, modulesets/gnome-2.18.modules:
+ Added Vim modeline (there was an Emacs one already)
+
+2006-09-04 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome-2.18.modules: Create 2.18 moduleset.
+
+2006-09-03 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch for
+ Epiphany and Epiphany Extensions.
+
+2006-09-01 Marco Pesenti Gritti <mpg@redhat.com>
+
+ * modulesets/gnome-2.16.modules: libwnck depends on intltool
+
+2006-09-01 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use a tarball for iso-codes
+ since checkouts from the svn repo haven't worked for a while.
+
+2006-08-30 Gustavo Carneiro <gjc@gnome.org>
+
+ reviewed by: James Henstridge
+
+ * jhbuild/versioncontrol/bzr.py: Register (urlparse.uses_relative,
+ urlparse.uses_netloc) the sftp URI scheme with urlparse.
+ Fixes bug #349546: "bzr backend doesn't accept sftp:// URLs".
+
+2006-08-27 Brent Smith <gnome@nextreality.net>
+
+ * modulesets/gnome-2.16.modules: add a patch for scrollkeeper
+ * patches/scrollkeeper_empty_url_string.patch: This patch fixes a
+ problem where scrollkeeper chokes when it encounters a "url" attribute
+ in an OMF file that is empty. Currently the update-manager-C.omf file
+ has this problem (from Ubuntu)
+
+2006-08-23 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.16.modules: gnome-power-manager has
+ branched gnome-2-16.
+
+2006-08-22 Matthias Clasen <mclasen@redhat.com>
+
+ * modulesets/gnome-2.16.modules: Use stable branches of
+ GLib, Pango and GTK+
+
+2006-08-22 Frederic Crozat <fcrozat@mandriva.com>
+
+ * modulesets/gnome-2.16.modules:
+ Remove gnopernicus from meta-gnome-desktop.
+ Add new libcm module (for brave compiling compositor in metacity).
+
+2006-08-20 Brent Smith <gnome@nextreality.net>
+
+ * modulesets/freedesktop.modules: add a hal-0-5-7 tarball
+ * modulesets/gnome-2.16.modules: modify all dependencies on hal to use
+ hal-0-5-7 instead
+ * patches/hal-dbus_connection_close.patch: patch to fix compilation
+ errors when using hal-0-5-7 with latest dbus.
+
+2006-08-18 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.16.modules: move accepted modules to
+ meta-gnome-desktop
+
+2006-08-17 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/gnome-2.16.modules: Use specific branches of pwlib and
+ opal, required for GNOME 2.14 Ekiga.
+
+2006-08-14 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/gnome-2.16.modules: Build "xulrunner" component of
+ mozilla, not "browser".
+
+2006-08-14 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/gnome-2.16.modules: Switch to xulrunner 1.8.
+ Fix bug #324546.
+
+2006-08-10 Frederic Peters <fpeters@0d.be>
+
+ * Makefile: removed changecvsroot.py from make dist; it has been moved
+ to scripts/; added scripts/ and its content to make dist.
+
+2006-08-10 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.16.modules: Added nautilus-sendto,
+ but it is not included by default (just like
+ nautilus-open-terminal)
+
+2006-08-09 Frederic Peters <fpeters@0d.be>
+
+ * jhbuild/frontends/autobuild.py: retry on socket errors.
+
+2006-08-08 Thomas Wood <thos@gnome.org>
+
+ * modulesets/gnome-2.16.modules: gnome-themes now depends on
+ icon-naming-utils
+
+2006-08-06 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.16.modules: Use gnome-2-16 branch
+ for dasher.
+
+2006-08-04 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.14.modules: libwnck, bug-buddy and gail have a
+ gnome-2-14 branch. I'm sure some other modules have one...
+ Fix bugs #347398, #347493
+
+2006-07-30 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/gnome-2.16.modules: use distutils for pyspi and dogtail
+ since it is their native method and it is now supported.
+
+2006-07-30 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/gnome-2.1{2,4,6}.modules: iso-codes moved from CVS
+ to Subversion. Patch by Marc-Andre Lureau. Closes: #349327.
+
+2006-07-26 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.16.modules: gnome-session depends on
+ gnome-keyring
+
+2006-07-25 Elijah Newren <newren gmail com>
+
+ * modulesets/bootstrap.modules: Add pyrex so that modules like
+ dbus-python will build. James wasn't sure where to put it (here
+ or freedesktop.modules) but I put it here because I think it needs
+ to be installed in the same place as python so this seems natural.
+ James might change this later. See #311563.
+
+2006-07-25 Frederic Peters <fpeters@0d.be>
+
+ * jhbuild/frontends/autobuild.py: rename encode_log to compress_data.
+
+2006-07-25 Luca Ferretti <elle.uca@libero.it>
+
+ * patches/scrollkeeper_clean_xml_validation_context.patch: new file
+ * patches/scrollkeeper_language_fix.patch: new file
+ * patches/scrollkeeper_rw_offset_fix.patch: new file
+ * modulesets/gnome-2.*: apply patches needed by scroollkeeper to make
+ Yelp works and Yelp developers happy. For more info see
+ http://live.gnome.org/Yelp
+
+ Note: remove $Prefix/share/jhbuild/packagedb.xml to rebuild it.
+
+2006-07-24 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.16.modules: gnome-panel depends on dbus-glib
+
+2006-07-24 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.16.modules: remove libbonobo from gnome-vfs deps
+ and add gnome-vfs-monikers module. No package depends on this by now,
+ I've no info about dependence on gnome-vfs-monikers.
+
+2006-07-24 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.16.modules: use gnome-2-14 branch for ekiga since
+ HEAD won't be ready for 2.16.
+
+2006-07-24 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/freedesktop.modules: Fix avahi dependences. See bug
+ 348453 for more info.
+
+2006-07-24 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/freedesktop.modules: Enable dbus-python, distutils modtype
+ is working
+
+2006-07-23 Brent Smith <gnome@nextreality.net>
+
+ * modulesets/gnome-2.14.modules: Add dependency on libgnomeprintui and
+ startup-notification for yelp
+ * modulesets/gnome-2.16.modules: Add dependency on
+ startup-notification for yelp
+
+2006-07-24 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/freedesktop.modules: enable dbus-python using
+ <distutils> element and rework avahi deps. Note: I'm not sure
+ dbus-python is able to build as is. See bug 348453.
+
+2006-07-24 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/freedesktop.modules: Add dbus-glib module and make
+ PolicyKit depends on it. Add dbus-python too, but commented by default
+ because jhbuild can't build it: setup.py, not autotools :-(
+
+2006-07-23 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch for
+ gnome-panel
+
+2006-07-22 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.16.modules: gnome-applets needs pygtk to
+ build invest applet. Added as dependence.
+
+2006-07-18 Gustavo Carneiro <gjc@gnome.org>
+
+ * modulesets/freedesktop.modules,
+ * modulesets/gnome-2.10.modules,
+ * modulesets/gnome-2.12.modules,
+ * modulesets/gnome-2.14.modules,
+ * modulesets/gnome-2.16.modules: s%gnome-python/%%, since all
+ modules inside gnome-python/ have been moved to the cvs root.
+
+2006-07-12 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch for
+ gnome-menus
+
+2006-07-02 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/gnome-2.16.modules: Make pango depend on gnome-common, as
+ it's using gnome-autogen.sh now.
+
+2006-07-02 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/freedesktop.modules (RenderProto, libXrender, libXft):
+ switch to GIT repositories.
+
+2006-06-28 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/gnome-2.16.modules (bug-buddy): bug-buddy dependency on
+ NetworkManager as been lowered to a mere suggests (see 346091)
+
+2006-06-27 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/gnome-2.16.modules (bug-buddy): bug-buddy now depends on
+ NetworkManager (for libnm_glib).
+
+2006-06-26 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/freedesktop.modules (cairo-1-0): depend on libXrender
+ to fix gnome-2.14 build. Patch from Valeev Dinar
+ <dinarv@gmail.com> from bug #345907.
+
+2006-06-25 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/gnome-2.16.modules (gnome-session): now depend on
+ gnome-control-center
+ http://cvs.gnome.org/viewcvs/gnome-session/configure.in#rev1.536
+
+2006-06-23 Marco Pesenti Gritti <marco@gnome.org>
+
+ * jhbuild/modtypes/mozillamodule.py:
+ Add xulrunner to app names
+
+2006-06-23 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.10.modules (pango):
+ * modulesets/gnome-2.12.modules (pango):
+ * modulesets/gnome-2.14.modules (pango):
+ * modulesets/gtk.modules (pango):
+ * modulesets/gtk28.modules (pango): same here.
+
+ * modulesets/gnome-2.16.modules (pango): depend on libXft rather
+ than Xft.
+
+ * modulesets/freedesktop.modules (RenderProto, libXrender, libXft):
+ use the versions from the xorg repository. Remove the obsolete
+ old xlibs/xserver/xapps module definitions. Addresses bug #345281.
+
+ * scripts/upgrade-module-set.xsl (cvsmodule): fallback to
+ checkoutdir and module values for "id" if it isn't given.
+
+ * jhbuild/modtypes/autotools.py (parse_cvsmodule):
+ (parse_svnmodule):
+ (parse_archmodule): generate module name in the same way as the
+ old code did for backward compatibility.
+
+2006-06-21 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.14.modules: File-roller has a
+ gnome-2-14 branch.
+
+2006-06-20 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/versioncontrol/bzr.py: add bzr version control backend.
+
+2006-06-20 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.16.modules: Make gcrypt a hard dependency of
+ libxslt (since the desktop release already depends on it and James
+ didn't like passing --with-crypt=no to libxslt; see #345359)
+
+2006-06-20 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.16.modules: enchant is not a hard dependency
+ of epiphany. ;-)
+
+2006-06-20 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/gnome-2.16.modules: add enchant (for epiphany spell
+ checking).
+
+2006-06-19 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.16.modules:
+ * modulesets/freedesktop.modules:
+ revert the last change by Frederic Peters; it is wrong -- see
+ http://mail.gnome.org/archives/release-team/2006-June/msg00007.html
+ if the archives ever come back online
+
+2006-06-19 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/gnome-2.16.modules: use gnome-system-tools HEAD; depends
+ on liboobs instead of system-tools-backends.
+
+2006-06-19 Frederic Peters <fpeters@0d.be>
+
+ * jhbuild/config.py: add environment variable for Perl modules.
+ * modulesets/freedesktop.modules: use system-tools-backend HEAD.
+
+2006-06-19 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.14.modules: gnome-system-monitor
+ has branched for gnome-2-14.
+
+2006-06-19 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome-2.16.modules: Epiphany doesn't depend on
+ libgnomeprintui anymore.
+
+2006-06-19 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/modtypes/perl.py: remove some unneeded imports and
+ variable definitions.
+
+ * jhbuild/modtypes/autotools.py (parse_archmodule): fix small bug
+ in module parsing.
+ (parse_cvsmodule): rewrap FatalError statement.
+
+ * modulesets/moduleset.rnc (distutils): add rules for distutils
+ modules.
+
+ * jhbuild/modtypes/distutils.py (DistutilsModule): module type
+ definition for distutils modules.
+
+ * modulesets/gnome-2.16.modules (xchat-gnome): add module. Patch
+ from Guillaume Desmottes <cass@skynet.be> from bug #342486.
+
+ * modulesets/freedesktop.modules: use newer version of Net-DBus.
+
+ * modulesets/moduleset.rnc (perl): update moduleset schema.
+
+ * modulesets/freedesktop.modules: add perl-net-dbus module
+ definition.
+
+ * jhbuild/modtypes/perl.py: new module type for Perl code. Based
+ on patch from Frederic Peters <fpeters@entrouvert.com> from bug
+ #342638.
+
+ * jhbuild/modtypes/autotools.py (AutogenModule.skip_configure): if
+ nobuild is set, always skip configure. Fixes bug #345266
+
+2006-06-17 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.16.modules: devhelp is a build dependency of
+ anjuta as well
+
+2006-06-17 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.16.modules: update the autogen module to
+ 5.8.4; the 5.6.5 release is over a year out of date and won't
+ compile with the current guile tarball
+
+2006-06-16 Elijah Newren <newren gmail com>
+
+ Carlos hasn't made the perl bindings to DBus an optional
+ dependency yet and it's been a while, so revert to an older
+ version to fix builds.
+
+ * modulesets/freedesktop.modules: use BEFORE_DBUS_MERGE for
+ system-tools-backends
+
+ * modulesets/gnome-2.16.modules: use gnome-2-14 for
+ gnome-system-tools, and change to depend on system-tools-backends
+ directly
+
+2006-06-16 Elijah Newren <newren gmail com>
+
+ * modulesets/freedesktop.modules: cairomm depends on cairo cvs so
+ use cairo rather than cairo-1-0 (a separate cairomm-1-0 module
+ could be added for gnome-2.14.modules, I guess, but cairomm
+ doesn't appear to have created a suitable branch...)
+
+ * modulesets/gnome-2.16.modules: libnotify is not a hard
+ dependency of gnome-power-manager, and shouldn't be treated as
+ such since it hasn't been proposed for inclusion in the desktop
+ while gnome-power-manager has
+
+2006-06-16 Frederic Peters <fpeters@0d.be>
+
+ * modulesets/gnome-2.16.modules: gnome-power-manager depends on
+ gnome-doc-utils
+
+2006-06-15 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.14.modules: ATK and AT-SPI have
+ branched for gnome-2.14.
+
+2006-06-14 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnutls.modules: update to latest version of libtasn1
+ and gnutls. Switch to ftp.gnupg.org mirror since ftp.gnutls.org
+ seems to have vanished from the face of the earth.
+
+ * jhbuild/frontends/tinderbox.py (TinderboxBuildScript.execute):
+ fix use of undefined variable. Fixes bug #344372.
+
+ * jhbuild/versioncontrol/tarball.py (TarballBranch.tree_id): add
+ tree_id implementation, returning the tarball version number.
+
+ * jhbuild/versioncontrol/arch.py (ArchBranch.tree_id): tree_id
+ implementation, returning the output of "baz tree-id".
+
+ * jhbuild/versioncontrol/git.py (GitBranch.tree_id): add tree_id
+ implementation, returning the commit SHA1 sum.
+
+ * jhbuild/commands/info.py (cmd_info.show_info): show the tree ID
+ in the info display. Also fix up "jhbuild info mozilla" to not crash.
+
+2006-06-13 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/versioncontrol/svn.py (SubversionBranch.tree_id): tree
+ ID implementation for Subversion branches.
+
+ * jhbuild/versioncontrol/cvs.py (CVSBranch.tree_id): an
+ implementation for CVS trees.
+
+ * jhbuild/versioncontrol/__init__.py (Branch.tree_id): new method
+ to get an identifier for the tree state.
+
+2006-06-13 Olav Vitters <olav@bkor.dhs.org>
+
+ * modulesets/gnome-2.16.modules: Bug-Buddy now also depends on
+ libsoup.
+
+2006-06-10 Olav Vitters <olav@bkor.dhs.org>
+
+ * modulesets/gnome-2.16.modules: Bug-Buddy depends on
+ evolution-data-server.
+
+2006-06-08 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/modtypes/mozillamodule.py (MozillaModule.do_checkout):
+ convert to new style build state.
+
+ * jhbuild/modtypes/autotools.py (AutogenModule): convert all
+ build state methods to the new style, adding skip_$state() methods
+ as appropriate.
+
+ * jhbuild/modtypes/__init__.py (Package._next_state): use
+ skip_$state() methods to put logic for whether to skip a state
+ with the state itself, rather than in the logic of the previous
+ state.
+
+2006-06-08 Elijah Newren <newren gmail com>
+
+ * modulessets/gnome-2.16.modules: Update the meta-gnome-proposed
+ modules (minus gtk# and tomboy which still need to be added; also,
+ we really ought to somehow get java-gnome and gtk2-perl added
+ since they're in the official bindings set and have been for some
+ time)
+
+2006-06-04 Gustavo J. A. M. Carneiro <gjc@gnome.org>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch for
+ gnome-python-desktop, and gnome-python-2-12 branch for gnome-python.
+
+2006-05-25 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.16.modules: Replace cairo-1-0 and pycairo-1-0
+ with cairo and pycairo for all modules in the desktop. Should
+ avoid some of the nasty compilation errors people have been seeing
+ with cairo and cairo-1-0 overwriting each other.
+
+2006-05-25 Frederic Peters <fpeters@0d.be>
+
+ * jhbuild/frontends/autobuild.py: send log files zlib-compressed.
+
+2006-05-24 Frederic Peters <fpeters@0d.be>
+
+ * jhbuild/frontends/autobuild.py: log error to right variable in case
+ of missing command.
+
+2006-05-24 JP Rosevear <jpr@novell.com>
+
+ * jhbuild/commands/base.py (cmd_dot.run): pass the config
+ parameter (bug #342766)
+
+2006-05-22 Frederic Crozat <fcrozat@mandriva.com>
+
+ * modulesets/gnome-2.14.modules:
+ * modulesets/gnome-2.16.modules: add configuration and dependencies
+ for Ekiga (bug #338040).
+
+2006-05-19 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch of libgnome.
+
+2006-05-18 Carlos Garnacho <carlosg@gnome.org>
+
+ * modulesets/freedesktop.org: add system-tools-backends-1.4 for the
+ stb-1.4 branch, s-t-b HEAD interface has changed.
+ * modulesets/gnome-2.14.modules: use system-tools-backends-1.4.
+ * modulesets/gnome-2.16.modules: same here where necessary
+ (gnome-applets). Also add liboobs to the build and make
+ gnome-system-tools depend on it.
+
+2006-05-18 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/modtypes/tarball.py (Tarball.do_unpack): don't use
+ os.chdir().
+ (Tarball.do_patch): same here.
+ (Tarball.do_configure): same here.
+ (Tarball.do_build): same here.
+ (Tarball.do_install): same here.
+
+ * jhbuild/modtypes/mozillamodule.py (MozillaModule.checkout): use
+ cwd arg to buildscript.execute() rather than os.chdir().
+ (MozillaModule.do_checkout): same here.
+ (MozillaModule.do_configure): same here.
+ (MozillaModule.do_install): same here.
+
+ * modulesets/gnome-2.14.modules (gok): use gnome-2-14 branch,
+ fixing bug #342175.
+
+2006-05-18 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch
+ for ekiga and gnome-system-tools.
+
+2006-05-17 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/modtypes/autotools.py (AutogenModule.do_configure): get
+ rid of os.chdir call
+ (AutogenModule.do_clean): same here.
+ (AutogenModule.do_build): same here.
+ (AutogenModule.do_check): same here.
+ (AutogenModule.do_install): same here.
+
+ * jhbuild/versioncontrol/tarball.py
+ (TarballBranch._download_and_unpack): same here.
+
+ * jhbuild/versioncontrol/svn.py (SubversionBranch._checkout)
+ (SubversionBranch._update): same here.
+
+ * jhbuild/versioncontrol/git.py (GitBranch._checkout)
+ (GitBranch._update): same here.
+
+ * jhbuild/versioncontrol/darcs.py (DarcsBranch._checkout):
+ (DarcsBranch._update): same here.
+
+ * jhbuild/versioncontrol/arch.py (ArchBranch._checkout)
+ (ArchBranch._update): use cwd argument to buildscript.execute
+ rather than os.chdir().
+
+ * jhbuild/versioncontrol/cvs.py (CVSBranch._commit):
+ (CVSBranch._update): rather than using os.chdir, use the cwd
+ argument to buildscript.execute().
+
+ * jhbuild/frontends/gtkui.py (GtkBuildScript.execute): same here.
+
+ * jhbuild/frontends/autobuild.py (AutobuildBuildScript.execute):
+ same here.
+
+ * jhbuild/frontends/tinderbox.py (TinderboxBuildScript.execute):
+ add support for cwd and extra_env arguments.
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.execute): add
+ support for cwd and extra_env arguments.
+
+ * jhbuild/frontends/buildscript.py (BuildScript.execute): add cwd
+ and extra_env arguments.
+
+ * modulesets/gnome-2.16.modules (howl): remove.
+ (gnome-vfs): depend on avahi instead.
+
+ * modulesets/freedesktop.modules (avahi): adjust autogenargs to a
+ list that will allow avahi to probably build on most systems.
+ Also enable howl and libdns_sd compat libraries.
+
+ * modulesets/freedesktop.modules (dbus, dbus-0.23): depend on glib
+ and build after gtk+.
+
+ * modulesets/gnome-2.14.modules: same changes.
+
+ * modulesets/gnome-2.16.modules (shared-mime-info): depend on
+ libxml2 and glib.
+ (gnome-mime-data): depend on glib (for AM_GLIB_GNU_GETTEXT).
+ (gob): depend on glib.
+ (gnome-backgrounds): depend on glib (for AM_GLIB_GNU_GETTEXT).
+ (libxklavier): depend on libxml2, gtk-doc and glib.
+
+ * jhbuild/defaults.jhbuildrc: update to 2.16 module set.
+
+ * sample.jhbuildrc: same here.
+
+ * jamesh.jhbuildrc: update to 2.16 module set.
+
+ * jhbuild/frontends/autobuild.py:
+ * jhbuild/commands/autobuild.py: add jhautobuild command and
+ frontend. Patch from Frederic Peters <fpeters@entrouvert.com>
+ fixing bug #336968.
+
+2006-05-17 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.16.modules: Added back
+ gedit-plugins. The module is back alive!
+
+2006-05-16 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.10.modules: same here.
+
+ * modulesets/gnome-2.12.modules: same here.
+
+ * modulesets/gnome-2.14.modules: same here.
+
+ * modulesets/gnome-2.16.modules: fix up Sourceforge CVS roots.
+
+2006-05-15 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/commands/*.py: custom usage messages for commands.
+
+ * jhbuild/commands/__init__.py (Command.parse_args): add a
+ usage_args class attribute to give the adjust the help output.
+
+ * jhbuild/main.py (help_commands): add a --help-commands option to
+ show a list of the available jhbuild commands (previously printed
+ by --help).
+
+ * modulesets/moduleset.rnc (autotools): add new cvs branch
+ attributes.
+
+ * jhbuild/moduleset.py (_parse_module_set): same for <repository>
+ parsing.
+
+ * jhbuild/versioncontrol/__init__.py (Repository.branch_from_xml):
+ if an XML attr contains a dash, change it to an underscore.
+
+ * jhbuild/versioncontrol/cvs.py (CVSRepository.branch): add two
+ parameters: update-new-dirs and override-checkoutdir to work with
+ weird CVS setups (e.g. pwlib).
+
+2006-05-13 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/frontends/tinderbox.py (get_distro): catch CommandError
+ rather than OSError. Fixing bug #341604.
+
+2006-05-13 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * modulesets/freedesktop.modules:
+ cairo depends on gtk-doc, so add the dependency
+
+2006-05-12 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/frontends/gtkui.py (GtkBuildScript.execute): same here.
+
+ * jhbuild/frontends/tinderbox.py (TinderboxBuildScript.execute):
+ same here.
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.execute):
+ same here.
+
+ * jhbuild/utils/cmds.py (get_output): convert OSError to a
+ CommandError, to e.g. catch errrors when the executable wasn't
+ found.
+
+2006-05-11 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome-2.16.modules: Remove "mozilla" package dependency
+ from epiphany, since jhbuild still builds mozilla 1.7 which we don't
+ support anymore, and gecko 1.8 isn't buildable from jhbuild (can't
+ build without patches; see bug 324546 comment 3).
+
+2006-05-11 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/main.py (main): don't worry about getopt errors now.
+
+ * jhbuild/commands/tinderbox.py: convert to new framework.
+
+ * jhbuild/commands/sanitycheck.py: convert to new framework.
+
+ * jhbuild/commands/info.py: convert to new framework.
+
+ * jhbuild/commands/gui.py: convert to new framework.
+
+ * jhbuild/commands/bootstrap.py: convert to new framework.
+
+ * jhbuild/commands/base.py: convert to new framework.
+
+ * jhbuild/commands/__init__.py (Command): new command registration
+ system, using optparse for option parsing.
+
+ * jhbuild/main.py (main): update main option parser to use
+ optparse rather than obsolete getopt module.
+
+ * jhbuild/monkeypatch.py: make sure optparse is available, using a
+ cut-n-pasted version if not (for Python 2.2 compatibility).
+
+ * modulesets/gnome-2.16.modules (totem): just use
+ --enable-gstreamer rather than --enable-gstreamer=0.10. Fixes bug
+ #341279.
+
+ * modulesets/bootstrap.modules: add autogen-sh attribute to
+ appropriate elements.
+
+ * jhbuild/modtypes/autotools.py (parse_autotools): rather than
+ guessing the autogen.sh filename, require that it be specified
+ explicitly if it isn't called "autogen.sh".
+
+2006-05-10 Ross Burton <ross@burtonini.com>
+
+ * jhbuild/modtypes/__init__.py:
+ Import more errors (#341244).
+
+2006-05-10 Fernando Herrera <fherrera@onirica.com>
+
+ * modulesets/gnome-2.14.modules (gconf-editor):
+ Use gnome-2-14 branch.
+
+2006-05-10 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/bootstrap.modules: update to use <autotools> module
+ type.
+
+ * modulesets/moduleset.rnc (branch_tarball): add schema support
+ for tarball branches.
+
+ * jhbuild/commands/info.py (do_info): print info about
+ TarballBranch autogen modules.
+
+ * jhbuild/modtypes/autotools.py (AutogenModule.do_configure): if
+ no autogen.sh file exists, look for a configure script. If we
+ find one, use it instead and make sure we don't pass
+ --enable-maintainer-mode, since it breaks many tarball builds.
+
+2006-05-09 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/versioncontrol/tarball.py: new version control backend
+ to represent tarball downloads.
+
+ * modulesets/gtk28.modules: convert to new syntax.
+
+ * modulesets/gtk.modules: convert to new syntax.
+
+ * modulesets/gnome24.modules:
+ * modulesets/gnome26.modules:
+ * modulesets/gnome28.modules: remove obsolete modulesets.
+
+ * modulesets/gnome-2.10.modules: convert to new syntax.
+
+ * modulesets/gnome-2.12.modules: convert to new syntax.
+
+ * modulesets/gnome-2.14.modules: convert to new syntax.
+
+ * modulesets/gnome-2.16.modules: convert to new syntax.
+
+2006-05-09 Murray Cumming <murrayc@murrayc.com>
+
+ * jhbuild/modtypes/__init__.py:
+ * jhbuild/modtypes/autotools.py (_parse_module_set): When parsing
+ modules, catch the KeyError exception, so we can raise a more
+ readable error if the repository was not found.
+
+2006-05-09 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/freedesktop.modules: convert to new syntax.
+
+ * jhbuild/moduleset.py (ModuleSet.write_dot): fix traceback,
+ resolving bug #340922.
+
+ * jhbuild/modtypes/autotools.py: rename from base.py.
+
+ * jhbuild/commands/info.py (do_info): print git module names.
+
+ * jhbuild/versioncontrol/git.py (GitRepository.branch): same here.
+
+ * jhbuild/versioncontrol/darcs.py (DarcsRepository.branch): same here.
+
+ * jhbuild/versioncontrol/svn.py
+ (SubversionRepository.branch_xml_attrs): same here.
+
+ * jhbuild/versioncontrol/cvs.py (CVSRepository.branch): define the
+ expected branch attributes.
+
+ * jhbuild/modtypes/base.py: get rid of <darcsmodule> type -- I
+ don't think it was used between the time it was added and
+ deprecated.
+
+ * modulesets/moduleset.rnc: update schema to handle new
+ <autotools> type.
+
+ * modulesets/freedesktop.modules (cairo): use <autotools> element
+ instead of <svnmodule>.
+
+ * jhbuild/modtypes/base.py (parse_autotools): parser for an
+ arbitrary autotools module. Uses get_branch() to create the
+ version control source.
+
+ * jhbuild/modtypes/__init__.py (get_branch): a helper function to
+ create a branch.
+
+ * jhbuild/modtypes/base.py: move parser functions for svnmodule,
+ archmodule and darcsmodule here and remove the separate files --
+ there isn't much reason to keep them separate now.
+
+ * jhbuild/commands/info.py (do_info): fix to work with changes.
+
+ * jhbuild/modtypes/tarball.py (Tarball.__init__): same.
+
+ * jhbuild/modtypes/mozillamodule.py (parse_mozillamodule): same.
+
+ * jhbuild/modtypes/archmodule.py (parse_archmodule): same.
+
+ * jhbuild/modtypes/darcsmodule.py (parse_darcsmodule): same.
+
+ * jhbuild/modtypes/svnmodule.py (parse_svnmodule): same.
+
+ * jhbuild/modtypes/base.py: update to match.
+
+ * jhbuild/modtypes/__init__.py: move module type registration
+ here. Add a convenience function for parsing
+ <dependencies>/<after>.
+
+ * jhbuild/moduleset.py (_parse_module_set): change call to
+ parse_xml_node() to pass the list of scanned repositories instead
+ of deducing the here.
+
+2006-05-08 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/modtypes/svnmodule.py (parse_svnmodule): same here.
+
+ * jhbuild/modtypes/base.py (parse_cvsmodule): look up module
+ specific autogenargs and makeargs overrides by id rather than
+ module. Fixes bug #340927.
+
+ * jhbuild/modtypes/mozillamodule.py (MozillaModule.get_srcdir):
+ fix small typo. Fixing bug #340916, and hopefully fixing mozilla
+ build.
+
+2006-05-04 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.14.modules: Glom: Added dependency on
+ gnome-doc-utils.
+
+2006-05-02 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.16.modules: same here.
+
+ * modulesets/gnome-2.14.modules (gamin, gnome-mount): add to
+ build. Patch from Sylvain Bertrand, fixing bug #333614.
+
+ * jhbuild/versioncontrol/git.py: similar fixes.
+
+ * jhbuild/versioncontrol/svn.py: make sure 'svn' and 'svn+ssh' are
+ in urlparse.uses_relative.
+
+ * modulesets/gnome-2.16.modules: same here.
+
+ * modulesets/gnome-2.14.modules (ekiga): depend on
+ evolution-data-server, to fix bug #340281.
+
+ * jhbuild/modtypes/mozillamodule.py (MozillaModule.do_install):
+ don't create the nss include dir if it already exists. Based on
+ patch from Frederic Peters fixing bug #340151.
+ Split the find command into a string list, so that the shell isn't
+ used to execute it.
+
+ * modulesets/gnome-2.16.modules (gok): depend on gnome-speech.
+ Patch from David Bolter, fixing bug #339957.
+ (gnome-nettool): depend on gnome-doc-utils. Fixes bug #340126.
+
+ * jhbuild/frontends/gtkui.py: patch from Björn Lindqvist to fix
+ some bugs with the error dialog. Patch from bug #334828.
+
+ * jhbuild/moduleset.py (ModuleSet.get_module_list): simplify
+ dependency expansion based on patch from Björn Lindqvist in bug
+ 334711.
+ (_parse_module_set): more simplifications, partly based on Björn's
+ patch.
+
+2006-05-01 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/versioncontrol/git.py: make sure git: and git+ssh: URIs
+ are treated as netloc ones.
+
+ * modulesets/gnome-2.16.modules (pango, gtk+): depend on just
+ "cairo" rather than "cairo-1-1".
+
+ * modulesets/freedesktop.modules (cairo): switch to git tree.
+ This is using an <svnmodule> element but it does use the GIT
+ version control interface.
+
+ * modulesets/moduleset.rnc (repository): add validation rules for
+ git type repositories.
+
+ * jhbuild/versioncontrol/git.py: first stab at git support using
+ the new versioncontrol framework, using Frederic Peters' patch as
+ a guide.
+
+ * jhbuild/versioncontrol/darcs.py: a few small bug fixes.
+
+ * modulesets/freedesktop.modules: same here.
+
+ * modulesets/gnome-2.16.modules: same here.
+
+ * modulesets/gnome-2.14.modules: convert <cvsroot> and <svnroot>
+ elements to <repository> elements.
+
+ * modulesets/moduleset.rnc: add schema info for <repository>
+ element.
+
+ * jhbuild/modtypes/base.py: remove bad import.
+
+ * jhbuild/utils/cmds.py (pprint_output): same here.
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.execute):
+ ignore OSError in the os.kill() call, since the subprocess might
+ already be dead.
+
+ * jhbuild/commands/info.py (do_info): adjust to work with
+ restructured versioncontrol support.
+
+2006-04-30 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/modtypes/mozillamodule.py: make some changes that will
+ hopefully get it all working with the new versioncontrol
+ infrastructure.
+
+ * jhbuild/modtypes/archmodule.py (parse_archmodule): return a
+ straight AutogenModule instance.
+
+ * jhbuild/versioncontrol/arch.py: convert to new API.
+
+ * jhbuild/modtypes/darcsmodule.py (parse_darcsmodule): instantiate
+ a straight AutogenModule using a DarcsBranch.
+
+ * jhbuild/modtypes/svnmodule.py (parse_svnmodule): instantiate a
+ straight AutogenModule using a SubversionBranch.
+
+ * jhbuild/modtypes/base.py (AutogenModule): update to implement
+ do_checkout and do_force_checkout in terms of a Branch object.
+ (parse_cvsmodule): instantiate a straight AutogenModule using a
+ CVSBranch.
+
+ * jhbuild/config.py (_known_keys): adjust to handle a repos config
+ key.
+ (Config.__init__): merge stuff from cvsroots/svnroots into repos.
+
+ * jhbuild/moduleset.py (_parse_module_set): add support for a
+ <repository> element, and use the new jhbuild.versioncontrol
+ infrastructure to represent the repositories.
+
+2006-04-29 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/versioncontrol/darcs.py: convert Darcs utils to new
+ interface.
+
+ * jhbuild/versioncontrol/svn.py: convert Subversion utils to the
+ new interface.
+
+ * jhbuild/versioncontrol/cvs.py: convert CVS module to use new
+ interface.
+
+ * jhbuild/versioncontrol/__init__.py: start refactoring
+ version control interface to reduce code duplication inherent with
+ adding support for new VCS's.
+
+2006-04-29 Fernando Herrera <fherrera@onirica.com>
+
+ * modulesets/gnome-2.16.modules (gaim): Use sourceforge
+ SVN repo for gaim.
+
+2006-04-29 Fernando Herrera <fherrera@onirica.com>
+
+ * modulesets/gnome-2.16.modules (xchat): update to 2.6.2
+
+2006-04-28 Matthias Clasen <mclasen@redhat.com>
+
+ * modulesets/gnome-2.16.modules: Require cairo-1-1 for
+ GTK+ and Pango.
+
+ * modulesets/freedesktop.modules: Add cairo-1-1 tarball.
+
+2006-04-28 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch
+ for totem.
+
+2006-04-27 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/errors.py (BuildStateError): new error for general build
+ state errors.
+
+ * jhbuild/modtypes/tarball.py (Tarball): convert all build states
+ but do_start and do_patch to new system.
+
+ * jhbuild/modtypes/base.py (Package.run_state): start implementing
+ a new system for handling next state and error states using
+ function attributes.
+ (AutogenModule.do_clean): set next_state and error_states function
+ attributes.
+ (AutogenModule.do_check): same here.
+ (AutogenModule.do_install): same here.
+
+2006-04-26 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/maemo.modules:
+ * modulesets/maemo_freedesktop.modules: Removed these files.
+ They have moved to jhbuild_modules in the maemo svn.
+
+2006-04-26 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch for both
+ eel and nautilus.
+
+2006-04-26 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14-branch for
+ gdm2.
+
+2006-04-26 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch for
+ gnome-session.
+
+2006-04-26 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.16.modules (libsexy): same here.
+
+ * modulesets/gnome-2.14.modules (libsexy): add dependencies.
+ Fixes bug #339765.
+
+2006-04-23 Raphael Slinckx <rslinckx@cvs.gnome.org>
+
+ * jhbuild/commands/info.py:
+ * jhbuild/modtypes/darcsmodule.py:
+ * jhbuild/moduleset.py:
+ * jhbuild/utils/darcs.py:
+ * modulesets/moduleset.dtd:
+ * modulesets/moduleset.rnc:
+ Add support for Darcs repositories in .modules files
+
+2006-04-21 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome-2.16.modules: Use HEAD for libxklavier
+ Should fix build problems in gnome-applets and the control-center.
+
+2006-04-20 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.14.modules: use gnome-2-14 branch for
+ gnome-vfs.
+
+2006-04-20 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.14.modules: add pitivi and gnonlin.
+ * modulesets/gnome-2.16.modules: same here.
+
+2006-04-20 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/freedesktop.modules (PolicyKit): depend on dbus,
+ fixing bug #339087.
+
+ * modulesets/gnome-2.14.modules: same here.
+
+ * modulesets/gnome-2.16.modules (gnome-user-docs): depend on
+ gnome-doc-utils, fixing bug #339060.
+
+2006-04-19 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch for
+ gnome-keyring.
+
+2006-04-18 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.14.modules: use the proper gnome-2-14 branch for
+ gnome-applets, gnome-doc-utils and sound-juicer modules; remove
+ icon-naming-utils from dependencies list of gnome-icon-theme (not
+ needed in gnome-2-14 branch). Fix bug 338886.
+
+2006-04-18 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/modtypes/tarball.py (Tarball.do_unpack): fix test for
+ tarball build dir. Patch from Martin Ericsson
+ <martin.s.ericsson@gmail.com> to fix bug #338631.
+
+ * jhbuild/modtypes/mozillamodule.py: add missed CommandError import.
+ (MozillaModule.do_checkout): succeeded should be True if no
+ CommandError was raised. Fixes bug #338553.
+
+2006-04-18 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.14.modules: add missing dependecies for cairo-1-0
+ (fixed bug 338789)
+
+2006-04-13 German Poo-Caaman~o <gpoo@ubiobio.cl>
+
+ * modulesets/gnome-2.16.modules: Make gnome-nettool depend on
+ gtk+, libglade and gconf instead of libgnomeui.
+
+2006-04-13 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/bootstrap.modules: undo indentation changes.
+
+2006-04-13 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/modtypes/mozillamodule.py: same here.
+
+2006-04-12 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch for
+ gnome-control-center.
+
+2006-04-12 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/modtypes/svnmodule.py: same here.
+
+ * jhbuild/modtypes/tarball.py: same here.
+
+ * jhbuild/modtypes/base.py: catch CommandError at the appropriate
+ places.
+
+2006-04-11 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/utils/svn.py (get_uri): catch CommandError rather than
+ RuntimeError. Run "svn info" in C locale to fix bug #334678.
+ (SVNRoot): don't try to return exit codes in checkout() and
+ update() -- it is passed as an exception now.
+
+ * jhbuild/utils/cvs.py (CVSRoot): don't need to pass on return
+ code from checkout() and update(), since that info is passed on as
+ an exception now.
+
+ * jhbuild/frontends/tinderbox.py (TinderboxBuildScript.execute):
+ raise CommandError on failure.
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.execute):
+ raise CommandError on failure.
+
+ * jhbuild/frontends/buildscript.py (BuildScript.execute): change
+ docstring to state that CommandError is raised if the command
+ fails.
+
+ * jhbuild/utils/cmds.py (get_output): change to raise CommandError
+ instead of RuntimeError. Also modify to allow passing in a custom
+ environment.
+
+ * jhbuild/errors.py (CommandError): send a SIGINT to the child on
+ KeyboardInterrupt.
+
+2006-04-11 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/bootstrap.modules: Use Python 2.4.3
+
+2006-04-11 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch for
+ gnomemm/libgnomemm.
+
+2006-04-10 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/gnome-2.12.modules: Use gnome-2-12 branch for
+ ekiga, gnome-keyring-manager, libgtop and vino.
+
+2006-04-10 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch for
+ gnome-nettool and gnopernicus.
+
+2006-04-10 William Jon McCann <mccann@jhu.edu>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch for
+ gnome-screensaver and nautilus-cd-burner.
+
+2006-04-09 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/gnome-2.16.modules: Make gnome-control-center depend on
+ gst-plugins-base instead of gstreamer.
+
+2006-04-05 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/gnome-2.16.modules, modulesets/freedesktop.modules:
+ gucharmap and cairo support nosrcdir builds now.
+
+2006-04-05 Christian Kirbach <Christian.Kirbach@siemens.com>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch for
+ librsvg. Otherwise build fails.
+
+2006-04-04 Murray Cumming,,, <set EMAIL_ADDRESS environment variable>
+
+ * modulesets/freedesktop.modules: cairomm depends on cairo-1-0 instead of cairo,
+ though I see no need to have two versions of this module. They do not install in
+ parallel.
+ * modulesets/gnome-2.16.modules: gtkmm depends on cairomm.
+
+2006-03-31 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/maemo.modules: Now there are two svnroots, one for maemo HAF, and
+ one for maemo contrib. Also add libosso, whatever that is.
+
+2006-03-31 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/maemo.modules: Added hildon C++ bindings, with a meta-maemo-c++
+ meta module. Use glibmm 2.8 because maemo is now using glib 2.8 (with GTK+ 2.8).
+
+2006-03-31 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/maemo.modules: Added moduleset that builds the
+ Maemo hildon-* stuff, with the Maemo versions of some dependencies,
+ such as dbus and GTK+. Copied from gnome-2.10.modules, so it contains
+ unnecessary stuff, but it does no harm.
+ I wonder if we can just include gnome-2.10.modules and override some
+ modules?
+ * modulesets/maemo_freedesktop.modules: Maemo versions of some of these
+ modules, included by maemo.modules.
+
+2006-03-30 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/gnome-2.14.modules: Update vte revision.
+
+2006-03-30 Phil Cowans <pjc51@cam.ac.uk>
+
+ * Dasher ported to gnome-doc-utils
+
+2006-03-30 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch for
+ pessulus
+
+2006-03-30 Calum Benson,,, <calum.benson@sun.com>
+
+ * modulesets/gnome-2.14.modules:
+ Use gnome-2-14 branch for gnome-themes.
+
+2006-03-28 Tommi Vainikainen <thv@iki.fi>
+
+ * modulesets/gnome-2.16.modules: gcalctool ported to
+ gnome-doc-utils, added as dependance.
+
+2006-03-25 Emmanuele Bassi <ebassi@cvs.gnome.org>
+
+ * modulesets/gnome-2.14.modules: Fix the branch name for glib.
+
+2006-03-24 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch for
+ gnome-desktop.
+
+2006-03-24 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/bootstrap.modules:
+ Use libtool-1.5.22 and pkg-config-0.20.
+ * modulesets/freedesktop.modules:
+ Use hicolor-icon-theme-0.9 and the fc-2_4_branch of fontconfig.
+ * modulesets/gnome-2.16.modules:
+ Use the v_2_x branch of libxklavier. Update xchat to 2.6.1,
+ libmusicbrainz to 2.1.2 and guile to 1.8.0.
+ * modulesets/gnutls.modules: gnutls-1.2.10, libgpg-error-1.3,
+ libgrypt-1.2.2, libtasn1-0.2.18, opencdk-0.5.8
+
+
+2006-03-24 Matthias Clasen <mclasen@redhat.com>
+
+ * modulesets/gnome-2.14.modules: Use the glib-2-10 branch
+ for glib.
+
+2006-03-23 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.14.modules: Removed gedit-plugins. The module
+ has been pretty dead for some time now. IRC summary:
+
+ <@pbor> gedit-plugins is dead
+ <@pbor> feel free to remove gedit-plugins from there
+ < uws> both 2.14 and 2.16, right?
+ <@paolo> uws: you can remove gedit-plugins from the moduleset
+
+ * modulesets/gnome-2.16.modules: same here
+
+2006-03-23 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.14.modules: Use gnome-2-14 branch for gedit.
+ Note that gedit-plugins has not yet branched.
+
+2006-03-20 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/freedesktop.modules: Added tango-icon-theme and
+ tango-icon-theme-extras modules. Also reindented the XML file,
+ because it was mixing tabs and spaces.
+
+2006-03-18 Brent Smith <gnome@nextreality.net>
+
+ * modulesets/freedesktop.modules: make poppler depend on cairo-1-0
+
+2006-03-18 Elijah Newren <newren gmail com>
+
+ * modulesets/freedesktop.modules: fix pycairo-1-0 to work by using
+ checkoutdir and the RELEASE_1_0_2 revision.
+
+2006-03-17 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.14.modules: use gnome-2-14 for gnome-terminal
+ * modulesets/gnome-2.16.modules: create 2.16 moduleset
+
+2006-03-17 Wouter Bolsterlee <uws+gnome@xs4all.nl>
+
+ * modulesets/gnome-2.14.modules: Added muine to the 2.14
+ moduleset. Note that gtk-sharp and friends are not included
+ in the dependencies, so you'll have to install those by hand
+ before trying to compile muine.
+
+2006-03-17 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/gnome-2.14.modules: Ditto for pycairo-1-0.
+
+2006-03-17 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/gnome-2.14.modules: make everyone use cairo-1-0 instead
+ of cairo.
+
+2006-03-17 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/freedesktop.modules: use cairo-1.0.4 tarball for
+ cairo-1-0, instead of dead CVS.
+
+2006-03-16 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.14.modules: make gnome-games and gcalctool
+ use the gnome-2-14 branch instead of HEAD
+
+2006-03-13 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.14.modules: make fast-user-switch-applet use
+ the gnome-2-14 branch instead of HEAD
+
+2006-03-13 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.14.modules: make libxklavier use the v_2_x
+ branch instead of HEAD
+
+2006-03-13 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.14.modules: make evince use the gnome-2-14
+ branch instead of HEAD
+
+2006-03-13 Lucas Rocha <lucasr@gnome.org>
+
+ * modulesets/gnome-2.14.modules: make eog and zenity use the
+ gnome-2-14 branch instead of HEAD
+
+2006-03-13 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.14.modules: make gnome-user-docs use the
+ gnome-2-14 branch instead of HEAD
+
+2006-03-13 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/gnome-2.14.modules: Update pango and gucharmap
+ revisions.
+
+2006-03-12 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/gnome-2.14.modules: make yelp use the
+ gnome-2-14 branch instead of HEAD
+
+2006-03-12 Raphael Slinckx <rslinckx@cvs.gnome.org>
+
+ * modulesets/gnome-2.14.modules:
+ Deskbar applet branched for 2.14
+
+2006-03-12 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome-2.14.modules: Epiphany and Epiphany Extensions
+ branched for 2.14.
+
+2006-03-10 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.14.modules: make libbonobo use the
+ gnome-2-14 branch instead of HEAD
+
+2006-03-10 Srinivasa Ragavan <sragavan@novell.com>
+
+ * modulesets/gnome-2-14.modules (evolution, evolution-data-server,
+ evolution-exchange, gtkhtml): use gnome-2-14 branch instead of HEAD.
+
+2006-02-28 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.12.modules (glibmm, gtkmm): use 2.8 branches.
+ Patch from Wouter Bolsterlee <uws+gnome@xs4all.nl>, fixing bug
+ #323827.
+
+ * modulesets/bootstrap.modules (python): use version 2.4.2. Patch
+ from Wouter Bolsterlee <uws+gnome@xs4all.nl>, fixing bug #329128.
+
+ * modulesets/gnome-2.12.modules (at-spi): use AT_SPI_1_6_6 tag,
+ since HEAD doesn't work with 2.12 and there is no gnome-2-12
+ branch. Fixes bug #332724, patch from Bjoern Voigt
+ <bjoern@cs.tu-berlin.de>.
+
+ * modulesets/gnome-2.14.modules (rhythmbox): depend on
+ gst-plugins-base rather than gst-plugins-0-8, since it has been
+ ported to GStreamer 0.10. Fixes bug #32551.
+
+ Fix bug #331804:
+
+ * modulesets/gnome24.modules: same here.
+
+ * modulesets/gnome26.modules: same here.
+
+ * modulesets/gnome28.modules: same here.
+
+ * modulesets/gnome-2.10.modules: same here.
+
+ * modulesets/gnome-2.12.modules: same here.
+
+ * modulesets/freedesktop.modules: same here.
+
+ * modulesets/gnome-2.14.modules: use anoncvs.freedesktop.org
+ instead of cvs.freedesktop.org.
+
+2006-02-16 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/gnome-2.14.modules: make gnome-speech use the
+ gnome-2-14 branch instead of HEAD
+
+2006-02-19 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.14.modules: rhythmbox ported to gnome-doc-utils
+ added as dependance.
+
+2006-02-16 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/gnome-2.14.modules: make metacity use the
+ gnome-2-14 branch instead of HEAD
+
+2006-02-11 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.14.modules: make gnome-icon-theme use the
+ gnome-2-14 branch instead of HEAD
+
+2006-02-11 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.14.modules: make libnotify an optional
+ dependency of evolution since it's not part of the desktop set,
+ update librsvg to use HEAD as should have been done long ago.
+
+2006-02-11 Behdad Esfahbod <behdad@gnome.org>
+
+ * scripts/branch-violations/find-branch-moduleset: xmlint the
+ moduleset to remove newlines in opening elements.
+
+2006-02-11 Thomas Wood <thos@gnome.org>
+
+ * modulesets/gnome-2.14.modules: GNOME 2.14 will ship with
+ gtk-engines-2-6
+
+2006-02-05 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/gnome-2.14.modules: Update gnome-utils revision
+ to gnome-2-14.
+
+2006-02-04 Behdad Esfahbod <behdad@gnome.org>
+
+ * modulesets/gnome*.modules: Update various modules' revision
+ tags, found using the following scripts.
+
+ * scripts/branch-violations/*: Added.
+
+2006-02-01 Federico Mena Quintero <federico@ximian.com>
+
+ * modulesets/gnome-2.14.modules: libgnomeui should use the
+ libgnomeui-2-14 branch.
+
+2006-01-30 Elijah Newren <newren gmail com>
+
+ * modulesets/freedesktop.modules: Had to reorder cairo and
+ cairo-1-0 to make sure that cairo was built instead of cairo-1-0.
+ Weird; I need to file a bug.
+
+ * modulesets/gnome-2.14.modules: Update the proposed module list,
+ including moving some to meta-gnome-desktop that haven't had any
+ objections.
+
+2006-01-30 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.14.modules:
+ add autogenargs="--enable-gstreamer=0.10" to gnome-applets and remove
+ revision="BRANCH-GSTREAMER-0-10" from gnome-media.
+
+2006-01-26 Guilherme de S. Pastore <gpastore@gnome.org>
+
+ * modulesets/gnome24.modules:
+ * modulesets/gnome26.modules:
+ * modulesets/gnome28.modules:
+ * modulesets/gnome-2.10.modules:
+ * modulesets/gnome-2.12.modules:
+ * modulesets/gnome-2.14.modules: update the CVS module name for
+ procman (finally gnome-system-monitor).
+
+2006-01-25 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.14.modules: deskbar-applet depends on
+ gnome-python-desktop instead of gnome-python-extras now.
+
+2006-01-22 Jeroen Zwartepoorte <jeroen.zwartepoorte@gmail.com>
+
+ * modulesets/gnome-2.14.modules: Add gnome-python-desktop and make
+ gedit depend on it (for python plugins).
+
+2006-01-22 Luca Ferretti <elle.uca@libero.it>
+
+ * modulesets/gnome-2.14.modules: gnome-control-center can choose
+ GStreamer 0.10 at compile time. Use it.
+
+2006-01-21 Guilherme de S. Pastore <gpastore@gnome.org>
+
+ * modulesets/gnome24.modules, modulesets/gnome26.modules,
+ modulesets/gnome-2.10.modules, modulesets/gnome-2.12.modules,
+ modulesets/gnome-2.14.modules: renamed gnomemeeting to ekiga,
+ otherwise we break, even with the alias set up.
+
+2006-01-20 Johan Dahlin <jdahlin@async.com.br>
+
+ * modulesets/gnome-2.14.modules: Add pygobject module and make
+ pygtk depend on it. Also remove the hard dependency of libglade
+ for pygtk and move it to the suggests section.
+
+2006-01-19 Elijah Newren <newren gmail com>
+
+ * modulesets/gnome-2.14.modules: gstreamer 0.10 is what 2.14 will
+ ship with so get rid of the "-0.10" suffix. Also, apply patch
+ from Luca Ferretti to fix the build with gnome-icon-theme
+ [#327297].
+
+2006-01-19 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome-2.14.modules:
+ Add gstreamer-0.10 deps to control-center and sound-juicer
+ Remove eel dep from gedit-plugins
+ Add libnotify dep to evolution
+
+2006-01-15 Elijah Newren <newren gmail com>
+
+ * modulesets/gnutls.modules: Use http: instead of ftp: in URLs to
+ make downloads work again.
+
+2006-01-14 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * modulesets/gnome-2.14.modules:
+ Add more gst modules, but not use them by default,
+ for people who want to test more questionable formats
+
+2006-01-14 Jeroen Zwartepoorte <jeroen.zwartepoorte@gmail.com>
+
+ * modulesets/gnome-2.14.modules: Add liboil as a dependency to
+ gst-plugins-base-0.10.
+
+2006-01-13 Thomas Vander Stichele <thomas (at) apestaart (dot) org>
+
+ * modulesets/gnome-2.14.modules:
+ make gnome-media and totem use the GStreamer 0.10 branch
+
+2006-01-13 Thomas Vander Stichele <thomas (at) apestaart (dot) org>
+
+ * modulesets/gnome-2.14.modules:
+ split out gstreamer modules in -0.8 and -0.10
+
+2006-01-09 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.14.modules: Add a libgda-1-2 checkout as
+ well as the unstable libgda HEAD. Make libgdamm use libga-1-2.
+
+2006-01-09 Johan Dahlin <jdahlin@async.com.br>
+
+ * modulesets/gnome-2.12.modules: use pygtk-2-8 branch for pygtk
+
+2006-01-06 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.14.modules: add gnome-doc-utils as dependency of
+ gnome-utils
+
+2006-01-06 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.14.modules: add gnome-doc-utils as dependency of
+ gnome-system-tools
+
+2006-01-05 Fernando Herrera <fherrera@onirica.com>
+
+ * modulesets/gnome-2.12.modules: use gnome-2-12 branch for
+ gconf-editor and bug-buddy
+
+2006-01-04 Rodrigo Moya <rodrigo@gnome-db.org>
+
+ * modulesets/gnome-2.14.modules: Added nautilus-actions.
+
+2005-12-31 Carlos Garnacho Parro <carlosg@gnome.org>
+
+ * modulesets/gnome-2.12.modules: use gnome-2-12 branch for
+ gnome-system-tools
+
+2005-12-22 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.14.modules: Change the scrollkeeper download
+ URL to one that works.
+
+2005-12-14 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.12.modules:
+ * modulesets/gnome-2.14.modules: Use the 2.0 branch of libsigc++.
+
+2005-12-12 Matthias Clasen <mclasen@redhat.com>
+
+ * modulesets/gnome-2.14.modules: Add gnome-menus and libgnomeui
+ as dependencies to gnome-screensaver.
+
+2005-12-12 Paolo Borelli <pborelli@katamail.com>
+
+ * modulesets/gnome-2.12.modules: gedit and gtksourceview branched.
+
+2005-12-07 David Malcolm <dmalcolm@redhat.com>
+
+ * modulesets/gnome-2.14.modules: Added pyspi and dogtail (work towards
+ fixing bug #318531)
+
+2005-12-02 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/freedesktop.modules: Added cairomm.
+
+2005-12-02 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.14.modules: Use HEAD branches of
+ glib and pango for GNOME 2.14.
+
+2005-11-24 Frederic Crozat <fcrozat@mandriva.com>
+
+ * modulesets/gnome-2.12.modules: use gnome-2-12 branch
+ for ATK for GNOME 2.12.
+
+2005-11-24 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/freedesktop.modules (libdaemon, avahi): add libdaemon
+ and avahi to freedesktop.modules. Still some kinks due to crap
+ configure script.
+
+2005-11-23 Karsten Bräckelmann <guenther@rudersport.de>
+
+ * README: Updated the GARNOME project link.
+
+2005-11-23 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.14.modules: glibmm and gtkmm: Use the
+ glibmm-2-8 and gtkmm-2-8 branches, because we are using the
+ glib-2.8 and gtk-2.8 branches (so far, at least) for GNOME 2.14.
+
+2005-11-22 Thomas Wood <thos@gnome.org>
+
+ * modulesets/gnome-2.14.modules: use HEAD for gtk-engines
+
+2005-11-18 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.14.modules: add sabayon as dependency for
+ meta-gnome-proposed
+
+2005-11-16 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.12.modules:
+ * modulesets/gnome-2.14.modules: add gnome-keyring-manager to
+ meta-gnome-desktop
+
+2005-11-12 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.12.modules: use gnome-2-12 branch for
+ libgnomeprintui
+ * modulesets/gnome-2.14.modules: add atomix, deskbar-applet and
+ pessulus, and add dependencies for meta-gnome-proposed
+
+2005-11-10 Dan Winship <danw@novell.com>
+
+ * modulesets/gnome-2.12.modules: Use gnome-2-12 branch for
+ libsoup. (And add missing libxml2 dependency, for the soap/xmlrpc
+ stuff.)
+
+ * modulesets/gnome28.modules:
+ * modulesets/gnome-2.10.modules:
+ * modulesets/gnome-2.14.modules: Add missing libxml2 dependency to
+ libsoup.
+
+2005-11-08 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome-2.12.modules: Use gnome-2-12 branch for
+ gnome-icon-theme, gnome-keyring, file-roller and gucharmap.
+
+2005-11-08 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome-2.12.modules: Use gnome-2-12 branch for totem.
+
+2005-11-02 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.12.modules: use gnome-2-12 branch for
+ gnome-session
+
+ * Makefile: install .desktop file in the correct XDG dir.
+ Fixes bug #316639.
+
+2005-10-24 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/utils/cvs.py (CVSRoot.update): check for IOError when
+ finding the CVS root of a working copy. Based on patch from Scott
+ Tsai. Fixes bug #315083.
+
+2005-10-14 Karsten Bräckelmann <guenther@rudersport.de>
+
+ * README: Updated the GARNOME project link.
+
+2005-10-24 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.14.modules (gnome-doc-utils): same here.
+
+ * modulesets/gnome-2.12.modules (gnome-doc-utils): depend on
+ glib. Fixes bug #317763.
+
+ * modulesets/gnome-2.14.modules (libnotify): same here.
+
+ * modulesets/gnome-2.12.modules (libnotify): use new URL for
+ libnotify SVN. Fixes bug #317929.
+
+ * sample.jhbuildrc (prefix): use gnome-2.14
+
+ * jamesh.jhbuildrc (moduleset): use to gnome-2.14
+
+ * jhbuild/defaults.jhbuildrc: update to gnome-2.14 by default.
+ Get rid of code to set True/False here, since monkeypatch.py
+ should have done this for us already.
+
+2005-10-22 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.12.modules: use gnome-2-12 branch for
+ gnome-panel
+
+2005-10-20 Rodrigo Moya <rodrigo@novell.com>
+
+ * modulesets/gnome-2.12.modules: use gnome-2-12 branch for
+ gnome-control-center.
+
+2005-10-18 Frederic Crozat <fcrozat@mandriva.com>
+
+ * modulesets/gnome-2.12.modules: Yelp
+ has branched for GNOME 2.12.
+
+2005-10-17 Lucas Rocha <lucasr@cvs.gnome.org>
+
+ * modulesets/gnome-2.12.modules: EOG has
+ branched for GNOME 2.12.
+
+2005-10-17 Frederic Crozat <fcrozat@mandriva.com>
+
+ * modulesets/gnome-2.14.modules: Use HEAD
+ branch for ORBit2.
+
+2005-10-06 Elijah Newren <newren@gmail.com>
+
+ * modulesets/gnome-2.12.modules: Update more module revisions due
+ to branching: gnome-applets, gnome-utils, and sound-juicer.
+
+2005-10-06 William Jon McCann <mccann@jhu.edu>
+
+ * modulesets/gnome-2.12.modules (nautilus-cd-burner):
+ use gnome-2-12 branch.
+
+2005-10-03 Elijah Newren <newren@gmail.com>
+
+ * modulesets/gnome-2.12.modules: Update revisions to use
+ gnome-2-12 branch for a number of modules: gnome-vfs, gnome-games,
+ eel, nautilus, metacity, procman, gcalctool, and gnome-themes
+
+2005-10-03 Elijah Newren <newren@gmail.com>
+
+ * sample.jhbuildrc: "GNOME CVS is accessible only with SSH" now;
+ change pserver to ext in commented out user cvs account stuff
+
+2005-09-29 Federico Mena Quintero <federico@ximian.com>
+
+ * modulesets/gnome-2.12.modules: Make libbonobo and libbonoboui
+ use the "gnome-2-10" revision --- there were no 2.12 releases of
+ them.
+
+2005-09-28 Frederic Crozat <fcrozat@mandriva.com>
+
+ * modulesets/freedesktop.modules:
+ Add cairo-1-0 module for use by GTK+ and pango in GNOME 2.12 modules,
+ to be sure to use cairo BRANCH_1_0.
+ * modulesets/gnome-2.12.modules:
+ Use cairo-1-0 module instead of cairo.
+
+2005-09-26 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/freedesktop.modules: Add a poppler-0-4 module
+ for use by evince 0.4 in the Gnome 2.12 moduleset.
+ * modulesets/gnome-2.12.modules: Use poppler-0-4 for evince.
+ A moduleset/gnome-2.14.modules: New. Derived from the 2.12 moduleset
+ by stripping out all "gnome-2-12" revision tags. Use poppler HEAD
+ for evince.
+
+2005-09-22 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.12.modules (iso-codes): use CVS rather than
+ Debian FTP.
+
+2005-09-20 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome*.modules (gnome-common): use gnome-2-12 branch.
+
+2005-09-13 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/config.py (Config.setup_env): remove hack that was
+ unconditionally adding /usr/lib/pkgconfig to the path if
+ $PKG_CONFIG_PATH was empty. If you want the directory in
+ $PKG_CONFIG_PATH, add it manually.
+ (Config.setup_env): add $prefix/share/pkgconfig to
+ $PKG_CONFIG_PATH.
+
+ * modulesets/gnome-2.12.modules (iso-codes): use version 0.47
+ (fixes bug #316116).
+
+ * modulesets/moduleset.dtd (tarball): add checkoutdir attribute.
+
+ * modulesets/moduleset.rnc (tarball): add checkoutdir attribute.
+
+ * jhbuild/modtypes/tarball.py (parse_tarball): support a
+ checkoutdir attribute. Fixes bug #313249.
+
+2005-09-11 Fernando Herrera <fherrera@onirica.com>
+
+ * modulesets/gnome-2.12.modules (xchat): Update to 2.4.5
+
+2005-09-11 Damon Chaplin <damon@gnome.org>
+
+ * modulesets/gnome-2.10.modules: Use gnome-2-10 branch for Glade.
+
+2005-09-08 Harish Krishnaswamy <kharish@novell.com>
+
+ * modulesets/gnome-2.12.modules: Use gnome-2-12 branch for
+ evolution, evolution-data-server and evolution-exchange.
+
+2005-09-08 Kaushal Kumar <kakumar@novell.com>
+
+ * modulesets/gnome-2.12.modules: Use gnome-2-12 branch for
+ gtkhtml.
+
+2005-09-07 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.12.modules (gnome-desktop): use gnome-2-12 branch
+
+2005-09-06 Mark McLoughlin <mark@skynet.ie>
+
+ * modulesets/gnome-2.12.modules: GNOME 2.12 is shipping
+ the gnome-2-10 branch of ORBit2.
+
+2005-09-06 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome-2.12.modules: gnome-2-12 branch
+ for libgnome, libgnomeui, libgnomecanvas and gnome-terminal
+
+2005-09-02 Johan Dahlin <jdahlin@async.com.br>
+
+ * modulesets/gnome-2.12.modules: pygtk supports
+ non-srcdir builds now.
+
+2005-08-31 Lucas Rocha <lucasr@cvs.gnome.org>
+
+ * modulesets/gnome-2.12.modules: Zenity has
+ branched for GNOME 2.12.
+
+Tue Aug 30 13:56:32 2005 Jonathan Blandford <jrb@redhat.com>
+
+ * modulesets/gnome-2.12.modules: Evince has branched for GNOME
+ 2.12.
+
+2005-08-28 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome-2.12.modules:
+ Epiphany has branched for GNOME 2.12.
+
+2005-08-27 Gustavo J. A. M. Carneiro <gjc@gnome.org>
+
+ * modulesets/freedesktop.modules: pycairo should not suggest
+ gnome-python/pygtk, it's actually the other way around, otherwise
+ you get an infinite loop in "jhbuild build pycairo gnome-python/pygtk".
+
+2005-08-27 Richard A. Stellingwerff <remenic@gmail.com>
+
+ * modulesets/gnome-2.12.modules: Removed separate Clearlooks, which is now
+ part of gtk-engines.
+
+2005-08-26 Matthias Clasen <mclasen@redhat.com>
+
+ * modulessets/gtk.modules: New moduleset to track GTK+ HEAD.
+
+ * modulesets/gtk28.modules: Use branches: glib-2-8, pango-1-10,
+ gtk-2-8.
+
+2005-08-25 Federico Mena Quintero <federico@ximian.com>
+
+ * modulesets/gnome-2.12.modules: Use these branches: glib-2-8,
+ pango-1-10, gtk-2-8.
+
+2005-08-24 Raphael Slinckx <rslinckx@cvs.gnome.org>
+
+ * modulesets/gnome-2.10.modules:
+ * modulesets/gnome-2.12.modules:
+
+ Use branch 0.8 for gst-python module to keep in sync with
+ branch 0.8 of gstreamer and gst-plugins modules in moduleset
+ 2.10 and 2.12.
+
+ Add gnome-media as dependency of gnome-python-extras since it
+ has a new mediaprofiles module requiring it.
+
+2005-08-22 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.12.modules (gnome-volume-manager): use gnome-2-12
+ branch
+
+2005-08-22 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.12.modules (gnome-netstatus): Added
+ gnome-doc-utils dependency.
+
+2005-08-21 Thomas Wood <thos@gnome.org>
+
+ * modulesets/gnome-2.10.modules:
+ * modulesets/gnome-2.12.modules:
+ * modulesets/gnome24.modules:
+ * modulesets/gnome28.modules:
+
+ Updated branch tags for gtk-engines
+
+2005-08-19 Tommi Vainikainen <thv@iki.fi>
+
+ * modulesets/gnome-2.12.modules (gucharmap): Added gnome-doc-utils
+ dependency.
+
+2005-08-18 Damon Chaplin <damon@gnome.org>
+
+ * modulesets/gnome-2.12.modules (gtk-doc): added scrollkeeper as
+ a dependency, since it now has a DocBook manual. We could add this
+ to older modulesets as well, though it is only a soft dependency so
+ isn't too important.
+
+2005-08-17 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/utils/trayicon.py (TrayIcon._run_zenity): add back the
+ os.setsid() call that got lost when converting this code to use
+ the subprocess module.
+
+2005-08-16 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.12.modules: revert the gnome-mime-data removal,
+ since gnome-vfs still uses it.
+
+2005-08-16 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/frontends/tinderbox.py (get_distro): split out code for
+ guessing distro details into a separate function. Enhance to use
+ "lsb_release" tool to look up distro details, if available. Fixes
+ bug #313478.
+
+ * modulesets/gnome-2.12.modules (libbtctl, gnome-bluetooth, phonemgr):
+ add modules. Patch from Jaap A. Haitsma, fixing bug #310674.
+
+ * modulesets/gnutls.modules (libtasn1): update to 0.2.15.
+
+ * modulesets/gnome26.modules: same here.
+
+ * modulesets/gnome28.modules: same here.
+
+ * modulesets/gnome-2.10.modules: same here.
+
+ * modulesets/gnome-2.12.modules: reference gnutls.modules.
+
+ * modulesets/gnutls.modules: move gnutls stuff to a separate
+ .modules file, shared by the others.
+
+ * modulesets/gnome-2.12.modules (libnotify): add libnotify.
+ (gnome-power-manager): add libnotify as a dependency. Patch from
+ Jaap A. Haitsma, fixes bug #310598.
+
+ * jhbuild/frontends/tinderbox.py: set the charset in the generated
+ HTML. This is based on a patch from Guillaume Desmottes. Fixes
+ bug #309977.
+
+ * jhbuild/monkeypatch.py: add locale.getpreferredencoding() if
+ missing.
+
+2005-08-15 Elijah Newren <newren@gmail.com>
+
+ * modulesets/gnome-2.12.modules: yelp no longer depends on
+ gtkhtml2, remove duplicate gdl entry, add evolution-exchange since
+ it is in the desktop release
+
+2005-08-13 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/freedesktop.modules: libpixman has been moved into
+ cairo. Remove the dep from cairo and the module itself.
+
+2005-08-13 Davyd Madeley <davyd@madeley.id.au>
+
+ * modulesets/gnome-2.12.modules: opencdk depends on libgcrypt. Thanks
+ again to James A.
+
+2005-08-11 Davyd Madeley <davyd@madeley.id.au>
+
+ * modulesets/gnome-2.12.modules: gnome-doc-utils depends on intltool.
+ Patch from James Andrewartha <trs80@ucc.asn.au>.
+
+2005-08-05 Matthias Clasen <mclasen@redhat.com>
+
+ * modulesets/gnome-2.12.modules: Drop the eel dependency
+ from eog.
+
+2005-08-05 Paolo Bacchilega <paobac@cvs.gnome.org>
+
+ * modulesets/gnome-2.12.modules: Added gnome-doc-utils to
+ the dependecies list of the file-roller module.
+
+2005-08-04 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/bootstrap.modules (automake-1.9): update to 1.9.6.
+
+2005-08-01 Tommi Vainikainen <thv@iki.fi>
+
+ * modulesets/gnome-2.12.modules (gdm2, evince): Added
+ gnome-doc-utils dependency.
+
+Sat Jul 30 17:01:33 2005 Jonathan Blandford <jrb@redhat.com>
+
+ * modulesets/freedesktop.modules: poppler branched.
+
+2005-07-30 Caleb Moore <c.moore@student.unsw.edu.au>
+
+ * modulesets/gnome-2.12.modules (librsvg):
+ use 2.12 branch instead of HEAD
+
+2005-07-27 Sebastien Bacher <seb128@debian.org>
+
+ * modulesets/gnome-2.12.modules: gnome-control-center uses g-d-u.
+
+2005-07-25 Ross Burton <ross@burtonini.com>
+
+ * modulesets/gnome-2.12.modules (sound-juicer):
+ add g-d-u dependency
+
+2005-07-24 Lucas Rocha <lucasr@cvs.gnome.org>
+
+ * modulesets/gnome-2.12.modules (zenity):
+ add g-d-u dependency
+
+2005-07-24 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome-2.12.modules:
+ Epiphany now depends on libgnomeprint[ui].
+
+2005-07-21 Luis Villa <luis.villa@gmail.com>
+
+ * modulesets/gnome-2.12.modules (dasher): turns out dasher has a
+ 2.12 branch. Who knew? :)
+
+2005-07-21 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/bootstrap.modules (pkg-config): update to 0.19 release.
+
+2005-07-21 Mark McLoughlin <mark@skynet.ie>
+
+ * modulesets/gnome-2.10.modules,
+ modulesets/gnome26.modules: update the location
+ of gnutls 1.2.4.
+
+2005-07-21 Tommi Vainikainen <thv@iki.fi>
+
+ * modulesets/gnome-2.12.modules: gnutls 1.2.4 is gone, updated
+ entry to point 1.2.6 instead.
+
+2005-07-20 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.12.modules (bug-buddy) (epiphany)
+ (gnome-desktop): add g-d-u dependency
+
+2005-07-17 Luis Villa <luis.villa@gmail.com>
+ * modulesets/gnome-2.12.modules (gnome-panel): add g-d-u dep
+
+2005-07-15 Luis Villa <luis.villa@gmail.com>
+
+ * modulesets/gnome-2.12.modules (dasher): put dasher in
+ meta-gnome-desktop, since it has been in the Desktop release since
+ 2.6.
+
+2005-07-15 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.12.modules (gnome-power-manager): now in
+ Gnome CVS. Patch from Jaap A. Haitsma <jaap@haitsma.org> (fixes
+ bug #310155).
+
+ * jhbuild/utils/cmds.py (get_output): don't use os.WIFEXITED() on
+ the subprocess returncode attribute -- the subprocess module
+ already takes care of that.
+
+ * jhbuild/utils/trayicon.py: switch over to using subprocess
+ module for communication with zenity.
+
+ * jhbuild/utils/cmds.py (pprint_output): use os.read() rather than
+ file.read(), so we don't need to set the pipes as non-blocking.
+
+2005-07-13 Igor Foox <ifoox@redhat.com>
+
+ * modulesets/gcj.modules: Resolved circular dependencies for
+ java-gnome modules. 'java-gnome' is now a meta-module for all
+ java-gnome related modules.
+
+2005-07-13 Vincent Untz <vuntz@gnome.org>
+
+ * modulesets/gnome-2.12.modules: kill gnome-mime-data
+
+2005-07-10 Johan Dahlin <johan@gnome.org>
+
+ * modulesets/gnome-2.10.modules: Use the pygtk-2-6 branch
+
+2005-07-09 Gustavo J. A. M. Carneiro <gjc@gnome.org>
+
+ * modulesets/gnome-2.12.modules: Suggest gnome-python-extras for
+ meta-gnome-python. Suggest pycairo for pygtk.
+
+2005-07-09 Matthias Clasen <mclasen@redhat.com>
+
+ * modulesets/freedesktop.modules: Use version 0.8 of
+ the Hicolor icon theme.
+
+2005-07-08 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.12.modules: glom now depends on
+ libgnomecanvasmm.
+
+2005-07-07 Luis Villa <luis.villa@gmail.com>
+
+ * modulesets/gnome-2.12.modules (system-tools):
+ add nautilus dependency.
+
+2005-07-07 Frederic Crozat <fcrozat@mandriva.com>
+
+ * modulesets/gnome-2.10.modules:
+ use gnome-2-10 branch for yelp.
+
+2005-07-05 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome28.modules (eog): use gnome-2-8 branch.
+ (gnomemm/gconfmm): use gnome-2-8 branch.
+ (gnomemm/libglademm): use gnome-2-8 branch.
+ (gnome-volume-manager): use gnome-2-8 branch.
+ (gtranslator): use gnome-2-8 branch.
+ (zenity): use gnome-2-8 branch.
+
+ * modulesets/gnome-2.10.modules (dasher): use gnome-2-10 branch.
+ (file-roller): use gnome-2-10 branch.
+ (gnome-doc-utils): use gnome-2-10 branch.
+ (libgnomeprint): use gnome-2-10 branch.
+ (libgnomeprintui): use gnome-2-10 branch.
+ (librsvg): use gnome-2-10 branch.
+ (vino): use gnome-2-10 branch.
+ (zenity): use gnome-2-10 branch.
+
+2005-07-01 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/bootstrap.modules (pkg-config): update to 0.18.1 to
+ fix problems mentioned in bug #309214.
+
+2005-06-29 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/bootstrap.modules (pkg-config): actually update the
+ file size and MD5 sum.
+
+2005-06-28 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/bootstrap.modules (pkg-config): update to version 0.18.
+
+2005-06-27 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/frontends/gtkui.py (GtkBuildScript.execute): minimal
+ changes to use subprocess module for build loop. Should probably
+ be switched to use IO watches instead.
+
+ * jhbuild/modtypes/mozillamodule.py (MozillaModule.do_install):
+ use argument lists instead of argument strings in a few places.
+
+ * jhbuild/frontends/tinderbox.py (TinderboxBuildScript.execute):
+ use newer API.
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.execute): use
+ newer API.
+
+ * jhbuild/utils/cmds.py (get_output): use close_fds=True when
+ spawning child.
+ (Pipeline): a class similar to subprocess.Popen that chains
+ together a number of subprocesses, making the stdin, stdout and
+ stderr available.
+ (pprint_output): change from execute_pprint() to take a
+ subprocess.Pipe-like object, and read data from it.
+
+2005-06-24 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/utils/cmds.py (get_output): same here.
+ (execute_pprint): same here.
+
+ * jhbuild/frontends/tinderbox.py (TinderboxBuildScript.execute):
+ same here.
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.execute):
+ useshell for unicode strings too.
+
+ * modulesets/freedesktop.modules (cairo): add a <suggests> on
+ glitz, so that if both modules are built they get built in the
+ right order.
+
+2005-06-23 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.execute):
+ handle ctrl+C better.
+
+ * jhbuild/utils/arch.py (ArchArchive.checkout):
+ (ArchArchive.update): use argument lists
+
+ * jhbuild/utils/svn.py (SVNRoot.checkout, SVNRoot.update): use
+ argument lists.
+
+ * jhbuild/frontends/tinderbox.py (TinderboxBuildScript.execute):
+ same here.
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.execute): if
+ an argument list is given, join the arguments before printing it
+ to the screen.
+
+ * jhbuild/utils/cvs.py (CVSRoot.checkout, CVSRoot.update): use an
+ argument list rather than an argument string.
+
+ * jhbuild/commands/sanitycheck.py: pass argument lists instead of
+ strings, to avoid shell calls.
+
+ * jhbuild/commands/sanitycheck.py (check_version): use enumerate()
+ where appropriate.
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.execute): use
+ execute_pprint() again for "CVS" colourisation.
+
+ * jhbuild/utils/cmds.py (execute_pprint): add back because it is
+ used by tinderbox too, but port to subprocess.
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.execute): use
+ the subprocess module to implement execute().
+
+ * jhbuild/utils/cmds.py (get_output): use subprocess module.
+ (execute_pprint): remove function.
+
+ * jhbuild/monkeypatch.py: add enumerate() and string.Template (not
+ used yet).
+ (subprocess): provide the subprocess module if it isn't available.
+
+ * README: bump required python version to 2.2.
+
+2005-06-23 Kaushal Kumar <kakumar@novell.com>
+
+ * modulesets/gnome-2.12.modules:
+
+ Remove Gal. Gal has merged into evolution.
+
+2005-06-22 Seth Nickell <seth@gnome.org>
+
+ * modulesets/gnome-2.12.modules:
+
+ Remove luminocity from gnome-2.12 modules. The entry
+ here is redundant with freedesktop.modules, AND its
+ incorrect (dependency list is not complete).
+
+2005-06-21 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome26.modules:
+ * modulesets/gnome28.modules:
+ * modulesets/gnome-2.10.modules:
+ * modulesets/gnome-2.12.modules: update to libgpg-error 1.1,
+ opencdk 0.5.7 and gnutls 1.2.4.
+
+ * jhbuild/monkeypatch.py: a module to add features to the standard
+ library that don't exist in old versions. At the moment, it just
+ includes the True/False fix.
+
+ * jhbuild/__init__.py: move monkeypatch code out into a separate
+ file.
+
+2005-06-20 Federico Mena Quintero <federico@ximian.com>
+
+ * modulesets/gnome-2.10.modules: Use the gnome-2-10 branch for
+ gnome-session.
+
+2005-06-20 James Henstridge <james@jamesh.id.au>
+
+ * patches/howl-1.0.0-buildfix.patch: the path.
+
+ * modulesets/gnome-2.10.modules: same here.
+
+ * modulesets/gnome-2.12.modules: update to Howl 1.0.0. Include a
+ patch to fix --disable-static build bustage. Fix bug #161153.
+
+2005-06-20 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/freedesktop.modules: Added dbusmm.
+
+2005-06-18 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.12.modules: Comment-out the libgda
+ dependencies for gnumeric, glom, and gnome-python-extras,
+ because they need libgda-1.2, not HEAD.
+
+2005-06-17 Rodrigo Moya <rodrigo@gnome-db.org>
+
+ * modulesets/gnome-2.12.modules: Changed libgda back to HEAD,
+ libgnomedb and mergeant both use libgda HEAD.
+
+2005-06-17 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.12.modules: Changed libgda back to the
+ release-1-2-branch branch, because I can't find anything that
+ is using HEAD.
+
+2005-06-16 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome28.modules: same here.
+
+ * modulesets/gnome-2.10.modules: correctly use dbus-0.23 and hal-0.4
+
+ * modulesets/freedesktop.modules (dbus-0.23, hal-0.4): fix rules
+ so that these old versions get checked out correctly. Fixes bug
+ #307673.
+
+2005-06-15 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.12.modules: glom, gnomemm/libgdamm: Remove
+ the dependency on libgda, because it depends on libgda-1.2 (which
+ people will have to get from packages) instead of the libgda 2.0
+ (HEAD) that jhbuild now has, because I see no way to do parallel
+ install in jhbuild.
+
+2005-06-15 Mikael Hallendal <micke@imendio.com>
+
+ * modulesets/gnome-2.12.modules: Make eel depend on gnome-menus
+
+2005-06-15 Mikael Hallendal <micke@imendio.com>
+
+ * modulesets/gnome-2.12.modules: Make eel depend on gnome-desktop.
+
+2005-06-13 Luis Villa <luis.villa@gmail.com>
+
+ * jhbuild/modtypes/mozillamodule.py:
+
+ Fix version truncation in Marco's last fix, and install nss
+ headers correctly-ish (fixing bug #154213).
+
+2005-06-12 Marco Pesenti Gritti <mpg@redhat.com>
+
+ * jhbuild/modtypes/mozillamodule.py:
+
+ Fix installation path guessing for firefox
+
+2005-06-11 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome-2.12.modules: Revert to 0.45 until I can figure
+ out why 0.46 doesn't work.
+
+2005-06-10 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome-2.12.modules: Update to iso-codes 0.46.
+
+2005-06-10 Jeroen Zwartepoorte <jeroen.zwartepoorte@gmail.com>
+
+ * modulesets/freedesktop.modules: Add glitz. Nothing depends on it. If
+ you want cairo to use glitz, first build glitz and *then* cairo.
+
+2005-06-10 Jeroen Zwartepoorte <jeroen.zwartepoorte@gmail.com>
+
+ * modulesets/gnome-2.12.modules: Make totem depend on iso-codes.
+
+2005-06-10 James Henstridge <james@jamesh.id.au>
+
+ * doc/jhbuild.xml (moduleset): add a note that the moduleset
+ parameter can be a list of strings as well as just a string.
+
+ * modulesets/bootstrap.modules (libtool): switch to a newer
+ version of the RH multilib patch. Fixes bug #307067.
+
+ * modulesets/gnome-2.10.modules (gnome-icon-theme): use gnome-2-10
+ branch.
+
+2005-06-09 Luis Villa <luis.villa@gmail.com>
+
+ * modulesets/gnome-2.12.modules (ggv, gpdf, evince): changing this
+ to reflect current consensus about 2.12. Also, removed a duplicate
+ entry for totem, because I can.
+
+2005-06-09 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.10.modules (libgtop): use gnome-2-10 branch.
+ (ggv): use gnome-2-10 branch.
+
+ * modulesets/bootstrap.modules (libtool): update to 1.5.18.
+ (gettext): update to 0.14.5.
+
+ * jhbuild/modtypes/tarball.py (Tarball.get_localfile): check if
+ basename is None. If so, raise FatalError. This is to catch some
+ errors in moduleset files. Fixes bug #173018.
+
+ * modulesets/gnome-2.12.modules (gthumb): add gthumb. Patch from
+ Jaap A. Haitsma <jaap@haitsma.org> (fixes bug #305860).
+ (fast-user-switch-applet): add module. Patch from Jaap A. Haitsma
+ <jaap@haitsma.org> (fixes bug #306538).
+ (gnome-power): add module. Patch from Jaap A. Haitsma
+ <jaap@haitsma.org> (fixes bug #306539).
+
+2005-04-29 Martin Ejdestig <mejde@dtek.chalmers.se>
+
+ * jhbuild/modtypes/tarball.py (do_unpack, do_patch):
+ Handle spaces in file. Closes bug #302475.
+
+2005-04-28 William Jon McCann <mccann@jhu.edu>
+
+ * modulesets/gnome-2.12.modules (nautilus-open-terminal): Add
+ module. (fixes bug #302316).
+
+2005-06-09 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.12.modules (rhythmbox): use CVS tree, since
+ the arch archive has been abandoned (fixes bug #306890).
+
+2005-06-08 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.12.modules (glib, pango, gtk+): release team
+ wiki pages say we are using HEAD, so remove the branch tags. Also
+ add "cairo" as a dependency of pango and gtk+.
+
+2005-06-02 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * jhbuild/modtypes/gcjmodule.py (GCCCVSRoot.update): Check out all
+ of gcc.
+
+2005-06-02 Rodrigo Moya <rodrigo@gnome-db.org>
+
+ * modulesets/gnome-2.12.modules: use HEAD for libgda.
+
+2005-05-29 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome-2.12.modules: use --enable-more-warnings=no
+ to get this to build with gcc4.
+
+2005-05-27 Johan Dahlin <jdahlin@async.com.br>
+
+ * modulesets/freedesktop.modules:
+ * modulesets/gnome-2.10.modules:
+ * modulesets/gnome28.modules:
+
+ Created dbus-0-23 and hal-0-4 modules. Changed dbus and hal to point
+ at cvs head and gnome 2.8/2.10 to depend on the old versions.
+ This should fix the gnome-volume-manager build for 2.12.
+
+2005-05-26 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.12.modules: gtksourceview:
+ Use --enable-compile-warnings=maximum, instead of
+ the default =error, so we can actually build this.
+
+2005-05-25 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.12.modules: gnome-keyring:
+ Use --disable-more-warnings so this actually builds.
+
+2005-05-24 Frederic Crozat <fcrozat@mandriva.com>
+
+ * modulesets/gnome-2.10.modules:
+ Use gnome-2-10 for libgnomecanvas.
+
+2005-05-22 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome-2.12.modules: Remove pyphany, and adjust
+ Epiphany dependencies.
+
+2005-05-14 Olav Vitters <olav@bkor.dhs.org>
+
+ * sample.jhbuildrc: Add example for SMP systems as suggested by
+ Michele Baldessari in bug #160535.
+
+2005-05-14 Dan Winship <danw@novell.com>
+
+ * jhbuild/modtypes/base.py (AutogenModule.do_clean,
+ AutogenModule.do_build, AutogenModule.do_check,
+ AutogenModule.do_install):
+ * jhbuild/modtypes/gcjmodule.py (GCJModule.do_install):
+ * jhbuild/modtypes/tarball.py (Tarball.do_build,
+ Tarball.do_install): Use $MAKE if it's set. #160535
+
+2005-05-12 Frederic Crozat <fcrozat@mandriva.com>
+
+ * modulesets/gnome-2.10.modules: Use gnome-2-10 for gnome-desktop.
+
+2005-05-10 Gustavo J. A. M. Carneiro <gjc@gnome.org>
+
+ * modulesets/gnome-2.12.modules: Add missing dependencies of
+ gnome-python-extras: nautilus-cd-burner, libgtop, totem, and gdl.
+
+2005-05-09 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/defaults.jhbuildrc (moduleset): point at gnome-2.12
+
+ * vbs-head.jhbuildrc: remove obsolete sample config file.
+
+ * sample.jhbuildrc (moduleset): point at gnome-2.12
+
+ * jamesh.jhbuildrc (moduleset): point at gnome-2.12
+
+ * jhbuild/moduleset.py (load): allow "moduleset" in config file to
+ be a list of module sets, rather than just a single one. Nothing
+ is done to ensure that the modulesets don't conflict. This allows
+ you to use ['gnome-2.10', 'gtk28'] as a moduleset.
+
+ * modulesets/bootstrap.modules (libtool): update to 1.5.16.
+ (gettext): update to 0.14.4.
+
+2005-05-08 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.12.modules: glom: Depend on
+ iso-codes.
+
+2005-05-06 Matthias Clasen <mclasen@redhat.com>
+
+ * modulesets/gnome-2.12.modules: Add libmusicbrainz
+ tarball module, and make totem depend on it.
+
+ * modulesets/gnome-2.12.modules: Add iso-codes as
+ tarball module, and make epiphany depend on it.
+
+2005-05-05 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.12.modules: glom: Depend on
+ gnome-python-extras, though it only needs pygda from there.
+
+2005-04-26 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.12.modules: Added Inkscape.
+
+2005-04-26 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.12.modules (gnome-screensaver): add module.
+ Patch from bug #301706.
+
+2005-04-22 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/bootstrap.modules (pkg-config): pass
+ --enable-indirect-deps, since the change makes assumptions about
+ library use that are not valid.
+
+2005-04-22 Mark McLoughlin <mark@skynet.ie>
+
+ * modulesets/gnome-2.12.modules: (gnome-menus): require
+ glib, intltool and gnome-common instead of gnome-vfs.
+
+2005-04-21 Federico Mena Quintero <federico@ximian.com>
+
+ * modulesets/gnome-2.10.modules: Use gnome-2-10 for libgnomeui.
+
+2005-04-14 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome-2.10.modules: Use gnome-2-10 for eog.
+
+2005-04-14 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/bootstrap.modules (pkg-config): update to 0.17.2 and
+ remove the patch.
+
+ * modulesets/bootstrap.modules (pkg-config): add patch to fix
+ https://bugs.freedesktop.org/show_bug.cgi?id=3006, til new release
+ comes out.
+
+2005-04-13 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * modulesets/gcj.modules: add jg-common and libgconf-java modules.
+ add java-gnome metamodule (patch from Jeffrey Morgan).
+
+2005-04-13 Mark McLoughlin <mark@skynet.ie>
+
+ * modulesets/gnome-2.12.modules: gnome-menus depends
+ on pygtk.
+
+2005-04-13 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.12.modules: glom: Now depends on pygtk.
+ gnome-python-extras: Now depends on libgda.
+
+2005-04-13 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/bootstrap.modules (pkg-config): update to 0.17.1,
+ which includes the patch I was applying to 0.17's pkg.m4.
+
+2005-04-12 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * jhbuild/modtypes/gcjmodule.py (GCCCVSRoot.update): add -P flag
+ to gcc_update invocation.
+
+ * modulesets/gcj.modules: add libgnome-java and libglade-java
+ modules (patch from Jeffrey Morgan).
+
+2005-04-12 James Henstridge <james@jamesh.id.au>
+
+ * patches/pkg-config-0.17-acrunlog.patch: the patch.
+
+ * modulesets/bootstrap.modules (pkg-config): add
+ pkg-config-0.17-acrunlog.patch patch, to fix a serious bug in
+ 0.17 that breaks PKG_CHECK_MODULES().
+
+ * modulesets/gnome28.modules (libgcrypt): update to 1.2.1.
+ (libtasn1): update to 0.2.13.
+ (gnutls): update to 1.2.1.
+
+ * modulesets/gnome-2.12.modules (libgcrypt): update to 1.2.1.
+ (libtasn1): update to 0.2.13.
+ (gnutls): update to 1.2.1.
+
+ * modulesets/gnome-2.10.modules (libgcrypt): update to 1.2.1.
+ (libtasn1): update to 0.2.13.
+ (gnutls): update to 1.2.1.
+
+ * modulesets/bootstrap.modules (pkg-config): update to 0.17.
+ Fixes GTK configure problems (bug #300232), among other things.
+
+2005-04-11 James Henstridge <james@jamesh.id.au>
+
+ * doc/jhbuild.xml: fix spelling mistake found by Damien Carbery.
+
+2005-04-07 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/bootstrap.modules (pkg-config): update to 0.16.0
+
+2005-04-07 Carlos Garnacho Parro <carlosg@gnome.org>
+
+ * modulesets/gnome-2.10.modules, modulesets/gnome-2.12.modules,
+ modulesets/freedesktop.modules (system-tools-backends): they have
+ been moved to FreeDesktop
+
+2005-04-06 Elijah Newren <newren@gmail.com>
+
+ * modulesets/gnome-2.10.modules (totem): use gnome-2-10 branch.
+
+2005-04-06 Bryan Forbes <bryan@reigndropsfall.net>
+
+ * modulesets/gnome-2.10.modules (gtkmm): use gtkmm-2-6 branch.
+
+2005-04-06 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.10.modules (atk): use gnome-2-10 branch.
+
+2005-04-05 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.10.modules (sound-juicer): use gnome-2-10
+ branch.
+
+2005-04-04 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.10.modules (goffice): add module, and make
+ gnumeric depend on it. Fixes bug #170936.
+
+ * modulesets/gnome-2.12.modules (sound-juicer): same here.
+
+ * modulesets/gnome-2.10.modules (sound-juicer): fix up dependency
+ list (added libgnomeui, gnome-media and nautilus-cd-burner).
+ Fixes bug #172276.
+
+ * jhbuild/modtypes/tarball.py (parse_tarball): size attribute of
+ <source> element is optional. Fixes bug #172114.
+
+ * modulesets/bootstrap.modules (python): update to 2.4.1.
+
+2005-04-02 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * modulesets/gcj.modules (libgnomevfs-java): new module.
+
+ * modulesets/gcj.modules (cairo-java): new module.
+ (libgtk-java): add cairo-java dependency.
+
+2005-04-01 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * modulesets/gcj.modules (classpathx): remove module.
+ (jikes): likewise.
+ (gtk28.modules): include in place of gnome-2.10.modules.
+ (gcj): remove gdb dependency.
+ (java-gcj-compat): add gjdoc dependency.
+ (jaxp): remove module.
+ (gjdoc): remove jaxp dependency.
+ (verify): remove module.
+ (jacks): remove module.
+ (wonka): remove module.
+ (mauve): remove module.
+ (libgtk-java): new module.
+
+2005-03-29 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.10.modules (gnome-keyring-manager): use
+ gnome-2-10 branch.
+ (gnome-control-center): use gnome-2-10 branch.
+ (gnome-applets): use gnome-2-10 branch.
+ (libgnome): use gnome-2-10 branch.
+
+2005-03-26 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome-2.10.modules: Use gnome-2-10 branch for gnome-nettool.
+ There's no libgda2 package anywhere it seems, so renaming it to libgda
+ * modulesets/gnome-2.12.modules: s/libgda2/libgda
+
+2005-03-25 Seth Nickell <seth@gnome.org>
+
+ * modulesets/freedesktop.modules:
+
+ Add 'luminocity' to the freedesktop moduleset.
+
+2005-03-24 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.10.modules (libbonoboui): use gnome-2-10 branch.
+ (libbonobo): use gnome-2-10 branch.
+
+ * modulesets/bootstrap.modules (gettext): correct the md5sum.
+ Reported by Markus Bertheau on IRC.
+
+2005-03-23 Fernando Herrera <fherrera@onirica.com>
+
+ * modulesets/gnome-2.10.modules:
+ (bug-buddy): use the gnome-2-10 branch.
+
+2005-03-23 Mark McLoughlin <mark@skynet.ie>
+
+ * modulesets/gnome-2.10.modules:
+ (gnome-menus), (gnome-panel): use the gnome-2-10 branch.
+ (bug-buddy): require gnome-menus.
+
+ * modulesets/gnome-2.12.modules:
+ (bug-buddy): require gnome-menus.
+
+2005-03-22 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/bootstrap.modules (gettext): update to 0.14.3.
+
+ * modulesets/gnome-2.10.modules (gnome-netstatus): use gnome-2-10
+ branch.
+ (gnome-vfs): use gnome-2-10 branch.
+ (gcalctool): use gnome-2-10 branch.
+ (procman): use gnome-2-10 branch.
+ (gconf): use gnome-2-10 branch.
+ (gdm2): use gnome-2-10 branch.
+ (gnome-media): use gnome-2-10 branch.
+ (eel, nautilus): use gnome-2-10 branch.
+
+2005-03-15 William Jon McCann <mccann@jhu.edu>
+
+ * modulesets/gnome-2.10.modules (nautilus-cd-burner): use
+ gnome-2-10 branch.
+
+2005-03-14 Bryan Forbes <bryan@reigndropsfall.net>
+
+ * modulesets/gnome-2.10.modules (glibmm): use glibmm-2-6 branch.
+
+2005-03-11 Jon K Hellan <hellan@acm.org>
+
+ * modulesets/gnome-2.12.modules: Include goffice module. Declare
+ gnumeric dependent on it.
+
+2005-03-08 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/bootstrap.modules (gettext): update to 0.14.2.
+ (libtool): update to 1.5.14 (some Gnome 2.10 modules need 1.5.12
+ or newer to build correctly).
+ (automake-1.9): update to 1.9.5.
+
+ * patches/libtool-1.5.14-multilib.patch: new version of the RH
+ multilib patch.
+
+ * patches/libtool-1.5.4-ltmain-SED.patch:
+ * patches/libtool-1.4.2-multilib.patch:
+ * patches/libtool-1.5.10-deplibs-in-conv.patch: remove old libtool
+ patches.
+
+ * modulesets/gnome-2.10.modules (gnome-games): use gnome-2-10 branch.
+ (gnome-themes): use gnome-2-10 branch.
+ (gnomemeeting): use gnome-2-10 branch.
+ (system-tools-backends, gnome-system-tools): use gnome-2-10 branch.
+ (gnome-volume-manager): use gnome-2-10 branch.
+
+ * modulesets/gnome-2.12.modules: get rid of the "mono" modules
+ include.
+
+ * modulesets/freedesktop.modules: fix validity error (a stray ">").
+
+ * modulesets/gnome-2.12.modules (clearlooks): add clearlooks here
+ too.
+
+ * modulesets/moduleset.rnc (suggests): allow empty <dependencies>
+ or <suggests> elements, like the DTD does.
+
+2005-03-04 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.execute): for
+ some reason, I'm getting a zero exit status when conflicts are
+ found. Make sure that we stop on CVS conflicts.
+
+ * modulesets/gnome-2.10.modules (clearlooks): since this seems to
+ be the leading contender for a new theme, may as well let people
+ build it with jhbuild.
+
+2005-03-07 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome-2.12.modules:
+
+ Add gnome-2.12 moduleset. Copied from gnome-2.10 moduleset,
+ with gnome-2-10 branch tags removed.
+
+2005-03-07 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome-2.10.modules:
+
+ Pyphany is branched for Epiphany 1.6 too.
+
+2005-03-07 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome-2.10.modules:
+
+ Epiphany and Epiphany Extensions are branched.
+
+Fri Mar 4 21:12:13 2005 Jonathan Blandford <jrb@redhat.com>
+
+ * modulesets/freedesktop.modules: popler is now in CVS.
+
+2005-03-02 Tommi Vainikainen <thv@iki.fi>
+
+ * modulesets/freedesktop.modules, modulesets/gnome-2.10.modules:
+ Evince now depends on freedesktop.org project "poppler".
+
+ * README: Fixed typos: "or" instead of "of", GNU instead of Gnu.
+
+2005-03-02 James Henstridge <james@jamesh.id.au>
+
+ * jamesh.jhbuildrc: add /usr/share to XDG_DATA_DIRS so that I see
+ system installed stuff in the menus.
+
+ * jhbuild/utils/arch.py (get_version): "baz tree-version" requires
+ the directory to be passed with the -d option.
+
+ * modulesets/gnome-2.10.modules (evolution,
+ evolution-data-server): use gnome-2-10 branch, per jpr's mail.
+ (gtkhtml): use gnome-2-10 branch, as per Radek's mail.
+ (gucharmap): use gnome-2-10 branch, as per Noah's mail.
+
+2005-03-02 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
+
+ * modulesets/gnome-2.10.modules:
+ Add 0.8 branch for GStreamer (which is no longer HEAD), and remove
+ gst-player since that has been deprecated a while ago in favour of
+ Totem by the GStreamer team.
+
+2005-02-28 James Henstridge <james@jamesh.id.au>
+
+ * README: point people at Bazaar instead of TLA.
+
+ * jhbuild/utils/arch.py: use Bazaar instead of TLA when working
+ with Arch archives.
+
+2005-02-28 Federico Mena Quintero <federico@ximian.com>
+
+ * modulesets/gnome-2.10.modules: ORBit2 branch is gnome-2-10.
+
+2005-02-28 Marco Pesenti Gritti <marco@gnome.org>
+
+ * jhbuild/modtypes/mozillamodule.py:
+
+ Support the new projects argument of mozilla build
+ system.
+
+2005-02-25 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.10.modules (howl): update to version 0.9.10,
+ which fixes bug #162639.
+
+ * modulesets/gnome28.modules (file-roller): use the gnome-2-8
+ branch of file-roller (fixes bug #160980).
+ (rhythmbox): use the rhythmbox--main--0.8 branch. Fixes bug
+ #161104.
+
+ * README: Update text related to adding a GDM session. Patch from
+ Mark Drago <markdrago@mail.com> (from bug #159576).
+
+ * jamesh.jhbuildrc: some module_autogenargs additions to my
+ personal config.
+
+ * modulesets/gnome24.modules:
+ * modulesets/gnome26.modules:
+ * modulesets/gnome28.modules:
+ * modulesets/gnome-2.10.modules: pass --with-gnome-distributor
+ autogen arg, so that jhbuild builds of Gnome can be identified in
+ the "about gnome" dialog.
+
+ * modulesets/gnome28.modules (gnome-nettool): use gnome-2-8 branch.
+
+2005-02-13 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/freedesktop.modules: Use the dbus-0-23 branch instead of
+ the DBUS_0_23 tag.
+
+2005-02-08 Carlos Garnacho Parro <carlosg@gnome.org>
+
+ * modulesets/gnome-2.10.modules, modulesets/gnome28.modules:
+ add the system-tools-backends module now that it has been splitted
+ from the GST frontend, added as a dependency to gnome-system-tools and
+ gnome-applets (in 2.10)
+
+2005-02-06 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/freedesktop.modules: Use the DBUS_0_23 tag of dbus and
+ the hal-0_4-stable-branch of hal so that they build, so that we can
+ build gnome-vfs, to fix the GNOME build. We can change these back to
+ the HEAD branch soon when hal has been ported to the new dbus API.
+
+2005-02-04 Matthias Clasen <mclasen@redhat.com>
+
+ * modulesets/gtk28.modules: Add a moduleset for building
+ the current GTK+ development stack.
+
+2005-02-04 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.10.modules: meta-gnome-desktop: Added totem,
+ sound-juicer, gnome-menus, and gnome-backgrounds - the new modules in
+ 2.10.
+ gnome-vfs: Added dependency on hal, because configure checks for it.
+
+2005-02-01 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.10.modules, gnome28.modules: Use the
+ release-1-2-branch of libgda. I would like to add an extra module
+ for libgda2 in the HEAD branch, which installs in parallel, but I
+ can not figure out how. Also use the libgda-1-2 branch of libgdamm.
+
+2005-01-28 JP Rosevear <jpr@novell.com>
+
+ * modulesets/gnome-2.10.modules: set libsoup revision to
+ gnome-2-10
+
+2005-01-27 Crispin Flowerday <gnome@flowerday.cx>
+
+ * modulesets/gnome-2.10.modules: Add the pyphany module
+
+2005-01-17 Mikael Hallendal <micke@imendio.com>
+
+ * modulesets/gnome-2.10.modules:
+ * modulesets/gnome28.modules:
+ - Added guile and autogen as tarball deps of anjuta.
+ - Also update to anjuta HEAD by request from naba.
+ - Make anjuta depend on gnome-build
+
+2005-01-11 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/freedesktop.modules: Added dbus-cpp.
+
+2005-01-10 Elijah Newren <newren@gmail.com>
+
+ * modulesets/gnome-2.10.modules: GLib branch is glib-2-6, not
+ glib-1-6.
+
+2005-01-10 Owen Taylor <otaylor@redhat.com>
+
+ * modulesets/gnome-2.10.modules: GTK+/GLib branched.
+
+2005-01-08 Matthias Clasen <mclasen@redhat.com>
+
+ * modulesets/gnome-2.10.modules: pango branched.
+
+2005-01-07 Paolo Borelli <pborelli@katamail.com>
+
+ * modulesets/gnome28.modules: gtksourceview branched.
+
+2005-01-07 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome-2.10.modules: Make gnome-games depend
+ on gob.
+
+2005-01-06 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * jhbuild/modtypes/base.py:
+ make sure we use the default makeargs, similar to autogenargs
+
+2005-01-06 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * modulesets/gnome-2.10.modules:
+ add mozilla dep to evolution-data-server so it properly builds SSL
+ stuff
+ add nautilus-python as a module so jhbuild can build it
+
+2005-01-04 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome-2.10.modules, gnome28.modules: bakery is now in the
+ GNOME cvs. Removed bakery_gnomeui because it is mostly abandoned.
+
+2005-01-03 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * jhbuild/utils/trayicon.py (TrayIcon._self_cmd): Don't print
+ errno.
+
+2004-12-29 Johan Dahlin <johan@gnome.org>
+
+ * modulesets/gnome28.modules:
+ Use pygtk-2-4 branch
+
+2004-12-27 Mikael Hallendal <micke@imendio.com>
+
+ * modulesets/gnome-2.10.modules:
+ * modulesets/gnome24.modules:
+ * modulesets/gnome26.modules:
+ * modulesets/gnome28.modules:
+ - Use gossip-0-8 branch
+
+2004-12-25 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome28.modules: Use the gnome-2-8 branch of libxml++.
+
+2004-12-23 Bryan Clark <clarkbw@cvs.gnome.org>
+
+ * modulesets/gnome-2.10.modules: reverting the accidental mono
+ addition
+
+2004-12-23 Fernando Herrera <fherrera@onirica.com>
+
+ * modulesets/gnome-2.10.modules: updated xchat to 2.4.1 version
+
+2004-12-22 Bryan Clark <clarkbw@cvs.gnome.org>
+
+ * modulesets/gnome-2.10.modules: slayed the libbonoboui dep, YAY
+ we're free!
+
+2004-12-21 Bryan Clark <clarkbw@cvs.gnome.org>
+
+ * modulesets/gnome-2.10.modules: add evince module
+
+2004-12-22 Vincent Untz <vincent@vuntz.net>
+
+ * modulesets/gnome26.modules (libwnck): use gnome-2-8 branch (there
+ is no gnome-2-6 branch)
+ * modulesets/gnome28.modules (libwnck): use gnome-2-8 branch.
+
+2004-12-21 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome28.modules (gpdf): use gnome-2-8 branch.
+
+2004-12-15 Johan Dahlin <johan@gnome.org>
+
+ * modulesets/gnome-2.10.modules: Add gnome-python-extras and
+ remove suggests from gnome-python.
+
+2004-12-13 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * modulesets/gcj.modules (rhug.sources.redhat.com,
+ classpath.savannah.gnu.org, classpathx.savannah.gnu.org): add new
+ repositories.
+ (java-gcj-compat, ecj-for-jhbuild, jaxp, gjdoc): add new modules.
+ Patch from Anthony Green.
+ (gcj): use HEAD instead of java-gui-branch.
+
+ * jhbuild/modtypes/gcjmodule.py (GCJModule.do_install): create a
+ symlink for gcj-dbtool.
+ Patch from Anthony Green.
+
+2004-12-12 Luis Villa <luis.villa@gmail.com>
+
+ * modulesets/gnome-2.10.modules (gtksourceview): add gnome-vfs
+ dependency
+
+2004-12-11 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/main.py (help): fix up help string for --skip. Fixes
+ bug #161029.
+
+2004-12-10 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.10.modules (howl): add Howl.
+ (gnome-vfs): make howl a dependency.
+
+ * modulesets/bootstrap.modules (automake-1.9): update the size and
+ md5sum.
+
+2004-12-09 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome-2.10.modules (gnome-control-center): depend on
+ gnome-mneus. Fixes bug #160699.
+
+2004-12-07 Luis Villa <luis.villa@gmail.com>
+
+ * modulesets/gnome2-10.modules
+ (nautilus-cd-burner): add nautilus dependency (for
+ nautilus-extensions), remove everything else
+ (meta-gnome-proposed): created and added following modules
+ (totem): added nautilus-cd-burner dep
+ (gnome-schedule): created
+ (gnome-backgrounds): created
+
+2004-12-07 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome28.modules (nautilus-cd-burner): use gnome-2-8
+ branch.
+
+2004-12-06 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/bootstrap.modules (python): update to 2.4.
+ (automake-1.9): update to 1.9.3.
+
+2004-12-03 Bryan Clark <clarkbw@cvs.gnome.org>
+
+ * modulesets/gnome-2.10.modules: added an entry for monkey bubble
+
+2004-12-01 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome28.modules (glade): use gnome-2-8 branch.
+
+2004-11-30 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/freedesktop.modules (pycairo): add an entry for
+ pycairo.
+
+ * jhbuild/config.py (addpath): change logic to remove duplicate
+ directories from the path variable.
+
+ * modulesets/gnome28.modules (gconf): use gnome-2-8 branch.
+ (gnome-netstatus): use gnome-2-8 branch.
+
+2004-11-26 James Henstridge <james@jamesh.id.au>
+
+ * doc/jhbuild.xml: update documentation.
+
+ * modulesets/freedesktop.modules (hicolor-icon-theme): fix up
+ download location.
+
+2004-11-21 Marco Pesenti Gritti <marco@gnome.org>
+
+ * modulesets/gnome-2.10.modules:
+
+ shared-mime-info does not build out of src dir,
+ gnome-utils is now fixed
+
+2004-11-18 James Henstridge <james@jamesh.id.au>
+
+ * doc/jhbuild.xml: more FAQs, and some documentation on the config
+ file format.
+
+ * jhbuild/utils/httpcache.py (Cache.read_cache): only add items to
+ the cache index if the actual file exists.
+
+ * doc/custom.xsl: some XSLT customisations.
+
+ * doc/jhbuild.css: some simple CSS to make the documentation look
+ a bit nicer.
+
+ * doc/jhbuild.xml: add some FAQs to the documentation.
+
+2004-11-17 Marco Pesenti Gritti <marco@gnome.org>
+
+ * modulesets/freedesktop.modules:
+ * modulesets/gnome-2.10.modules:
+
+ More supports-non-srcdir-builds adjustements
+
+2004-11-17 Richard Hult <richard@imendio.com>
+
+ * modulesets/gnome28.modules: Use gnome-2-8 branch for atk.
+
+2004-11-16 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome28.modules: gnome-icon-theme branched.
+ And so did gok, gnome-media and librsvg.
+
+2004-11-15 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome28.modules: Add branch info for libbonobo,
+ libbonoboui, libgtop, procman and bug-buddy.
+
+2004-11-15 Marco Pesenti Gritti <marco@gnome.org>
+
+ * modulesets/gnome-2.10.modules:
+
+ Add a bunch of supports-non-srcdir-builds. I reported bugs
+ for all of them, so I'll remove it when they are fixed.
+
+Thu Nov 11 17:30:56 2004 Jonathan Blandford <jrb@redhat.com>
+
+ * modulesets/freedesktop.modules: Make Xtst depend on RecordExt.
+
+2004-11-10 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome28.modules (vino): use gnome-2-8 branch.
+ (gnome-session): use the gnome-2-8 branch.
+
+ * modulesets/gnome26.modules (libgpg-error, libgcrypt, gnutls):
+ same here.
+
+ * modulesets/gnome28.modules (libgpg-error, libgcrypt, gnutls):
+ same here.
+
+ * modulesets/gnome-2.10.modules (libgpg-error, libgcrypt, gnutls):
+ update to latest versions.
+
+ * jhbuild/modtypes/tarball.py (parse_tarball): add a hack to
+ remove --enable-maintainer-mode, since a tarball might not include
+ everything needed to compile in maintainer mode.
+
+2004-11-09 Mark McLoughlin <mark@skynet.ie>
+
+ * jhbuild/config.py: define $XDG_CONFIG_DIR
+
+ * modulesets/gnome-2.10.modules: add gnome-menus and make
+ gnome-panel depend on it.
+
+2004-11-08 Anders Carlsson <andersca@gnome.org>
+
+ * modulesets/gnome28.modules:
+ Use gnome-2-8 branch for gnome-libs.
+
+2004-11-08 Federico Mena Quintero <federico@ximian.com>
+
+ * jhbuild/commands/sanitycheck.py (do_sanitycheck): Remove the
+ "version" bit from the db2html regex, to make it work on NLD9 and
+ probably other SuSE derivatives.
+
+2004-11-05 Mariano Suárez-Alvarez <mariano@gnome.org>
+
+ * modulesets/gnome28.modules (gnome-terminal): grab the gnome-2-8 branch.
+
+2004-11-03 JP Rosevear <jpr@novell.com>
+
+ * modulesets/gnome-2.10.modules: make e-d-s depend on libgnomeui
+ for libedataserverui
+
+2004-11-03 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome28.modules (gnome-vfs, eel, nautilus): use the
+ gnome-2-8 branch. Fixes bug #156944.
+
+ * modulesets/gcj.modules (java-gnome): move "gcj" from
+ <dependencies> to <suggests> so that you can build java-gnome
+ without gcj but if you build both they will go in the right order.
+ Fixes bug #157181.
+
+2004-10-30 Luis Villa <louie@novell.com>
+
+ * modulesets/gnome-2.10.modules (gnome-applets): add dependency on
+ gucharmap
+
+2004-10-29 Luis Villa <louie@novell.com>
+
+ * modulesets/gnome-2.10.modules (gnome-media): add dependency on
+ nautilus-cd-burner
+
+2004-10-28 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/freedesktop.modules (hicolor-icon-theme): does not
+ support non-srcdir builds (fixes bug #156619).
+
+ * modulesets/gnome28.modules (audiofile): same here.
+
+ * modulesets/gnome-2.10.modules (audiofile): does not support
+ non-srcdir builds (fixes bug #156608).
+
+ * modulesets/gcj.modules (java-gnome): does not support non-srcdir
+ builds (from bug #156555).
+
+2004-10-27 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome28.modules (gnome-desktop): grab gnome-2-8
+ branch.
+
+ * modulesets/gcj.modules (java-gnome): use the correct gnome.org
+ CVS root. Fixes bug #156111.
+ (include): include the gnome-2.10 module set. Patch from Thomas
+ Fitzsimmons (bug #156555).
+
+ * modulesets/gnome-2.10.modules (librsvg): same here.
+
+ * modulesets/gnome28.modules (librsvg): depend on
+ libgnomeprintui. Fixes bug #155529.
+
+2004-10-26 James Henstridge <james@jamesh.id.au>
+
+ Should fix bug #137469.
+
+ * modulesets/bootstrap.modules (libtool): apply the new patch.
+
+ * patches/libtool-1.5.10-deplibs-in-conv.patch: new patch from
+ Scott that fixes up some problems with multiple versions of a
+ library in the search path. This fixes up parallel install and
+ $DESTDIR install problems.
+
+2004-10-25 James Henstridge <james@jamesh.id.au>
+
+ * doc/jhbuild.xml: flesh out the command reference section.
+
+2004-10-24 Fernando Herrera <fherrera@onirica.com>
+
+ * modulesets/gnome-2.10.modules: (xchat):
+ * modulesets/gnome28.modules: (xchat): update to 2.4.0 release
+
+Sat Oct 23 23:52:53 2004 Jonathan Blandford <jrb@redhat.com>
+
+ * modulesets/gnome28.modules: branch libglade
+
+2004-10-22 Fernando Herrera <fherrera@onirica.com>
+
+ * modulesets/gnome28.modules: (gnome-utils): use gnome-2-8
+ branch.
+
+Thu Oct 21 15:23:04 2004 Owen Taylor <otaylor@redhat.com>
+
+ * modulesets/freedesktop.modules: Add RecordExt, lightpipe.
+
+2004-10-18 James Henstridge <james@jamesh.id.au>
+
+ * vbs-head.jhbuildrc: same here.
+
+ * sample.jhbuildrc: update comment to reflect that default is
+ gnome-2.10.
+
+ * jhbuild/defaults.jhbuildrc (moduleset): change default moduleset
+ to gnome-2.10.
+
+2004-10-15 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome28.modules (gnome-control-center): use gnome-2-8
+ branch. This also fixes a related libxklavier/libgswitchit
+ incompatibility (bug #155057).
+
+2004-10-14 Paolo Borelli <pborelli@katamail.com>
+
+ * modulesets/gnome28.modules (gedit): use gedit-2-8 branch.
+
+2004-10-14 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/modtypes/svnmodule.py (parse_svnmodule): fix up checking
+ of module specific autogen and make args.
+
+2004-10-13 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.format_line):
+ fix bug where normal lines weren't getting printed when outputting
+ pretty printed CVS output.
+
+2004-10-12 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome28.modules (evolution-webcal): use gnome-2-8
+ branch. Fixes bug #155153.
+
+ * modulesets/gnome-2.10.modules: remove a few gnome-2-8 branch tags.
+
+ * modulesets/gnome28.modules (metacity): use gnome-2-8 branch.
+
+2004-10-11 Mark McLoughlin <mark@skynet.ie>
+
+ * modulesets/gnome28.modules: use the gnome-2-8
+ branch for gnome-panel.
+
+2004-10-07 Fernando Herrera <fherrera@onirica.com>
+
+ * modulesets/gnome28.modules (gconf-editor): branched for gnome-2-8
+
+2004-10-05 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome28.modules (gnome-applets): use gnome-2-8 branch.
+
+ * modulesets/gnome26.modules (libxklavier): same here.
+
+ * modulesets/gnome28.modules (libxklavier): include here, picking
+ the 1.0x branch.
+
+ * modulesets/gnome-2.10.modules (libxklavier): actually, move
+ libxklavier here ...
+
+ * modulesets/freedesktop.modules (libxklavier): switch to the 1.0x
+ branch for now.
+
+2004-10-04 James Henstridge <james@jamesh.id.au>
+
+ * jamesh.jhbuildrc (moduleset): switch to 2.10 moduleset.
+
+ * modulesets/bootstrap.modules (automake-1.9): update to 1.9.2.
+ (libtool): update to 1.5.10, remove obsolete libtool.m4-x86_64
+ patch.
+
+2004-10-01 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/frontends/tinderbox.py (TinderboxBuildScript.__init__):
+ set $TERM to dumb, to suppress vt100 escape sequences from things
+ like autogen.sh.
+
+ * jhbuild/utils/cmds.py (execute_pprint): suppress
+ KeyboardInterrupt when reading from the child process.
+
+ * jhbuild/utils/trayicon.py (TrayIcon._run_zenity): do a manual
+ fork+exec rather than using os.popen(), so we can disassociate the
+ zenity process from the controlling terminal (so it doesn't get
+ killed by a ctrl+C.
+
+ * jhbuild/frontends/terminal.py (phase_map): base the icon choices
+ on the phase name rather than the action text. These are a bit
+ more regular and won't have translation issues, should jhbuild
+ ever be internationalised.
+ (TerminalBuildScript.start_phase): set the icon on the start of a
+ phase.
+
+ * jhbuild/frontends/tinderbox.py (TinderboxBuildScript.end_phase):
+ in the index page, make the build phase status messages into links
+ to the appropriate parts of the build log.
+
+2004-09-30 Jon K Hellan <hellan@acm.org>
+
+ * modulesets/gnome-2.10.modules, modulesets/gnome28.modules:
+ Remove autogenargs for gnumeric. The defaults suck in everything
+ they can.
+
+2004-10-01 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/frontends/tinderbox.py: lots of changes to format the
+ build log as HTML. This gives nicer output, and will allow
+ linking to a particular phase of a build through named anchors.
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.format_line):
+ fix up for new execute_pprint().
+
+ * jhbuild/utils/cmds.py (execute_pprint): change over to a simpler
+ implementation using popen2. This doesn't look like a terminal to
+ the process being run, but it should be less error prone on weird
+ platforms.
+
+2004-09-30 James Henstridge <james@jamesh.id.au>
+
+ Implements the feature mentioned in bug #151004. Davyd Madeley's
+ code was used as a base, but the implementation uses Zenity.
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.__init__):
+ create a trayicon when running in terminal mode.
+ (TerminalBuildScript.message): set tooltip of trayicon to the
+ message.
+ (TerminalBuildScript.set_action): set an image for the trayicon
+ corresponding to the build state.
+ (TerminalBuildScript.handle_error): show an error image in the
+ trayicon.
+
+ * jhbuild/utils/trayicon.py (TrayIcon): simple wrapper for a
+ zenity based tray icon.
+
+ * modulesets/freedesktop.modules: move shared-mime-info and
+ desktop-file-utils from here to gnome26.modules, gnome28.modules
+ and gnome-2.10.modules to resolve the dependency issues with
+ intltool and glib.
+
+ * modulesets/gnome28.modules, modulesets/gnome-2.10.modules:
+ change to the other solution for the build failure in
+ gnome-doc-utils: build xml2po separately before hand.
+
+ * modulesets/gnome-2.10.modules (gpdf): same here.
+ (gnome-doc-utils): same here.
+
+ * modulesets/gnome28.modules (gpdf): depend on libgnomeprintui.
+ Fixes bug #151966.
+ (gnome-applets): depend on gstreamer. Fixes bug #152496.
+ (gnome-doc-utils): disable build utils, based on suggestion from
+ shaunm. Fixes bug #153633.
+
+ * jhbuild/utils/cvs.py (CVSRoot.update): check to see whether the
+ working copy root is pointed at the expected CVS root. This
+ should detect the problem reported as bug #153539.
+
+ * jhbuild/commands/info.py (do_info): print info about arch
+ modules too.
+
+ Patches bug #145398:
+
+ * modulesets/gcj.modules: import Thomas Fitzsimmons's GCJ jhbuild
+ module defintions.
+
+ * jhbuild/modtypes/gdbmodule.py: import Thomas Fitzsimmons's GDB
+ module type.
+
+ * jhbuild/modtypes/gcjmodule.py: import Thomas Fitzsimmons's GCJ
+ module type.
+
+ Should fix bug #145394.
+
+ * jhbuild/modtypes/tarball.py (parse_tarball): same here.
+
+ * jhbuild/modtypes/mozillamodule.py (parse_mozillamodule): same
+ here.
+
+ * jhbuild/modtypes/archmodule.py (parse_archmodule): same here.
+
+ * jhbuild/modtypes/svnmodule.py (parse_svnmodule): same here.
+
+ * jhbuild/modtypes/base.py (parse_cvsmodule): make the
+ module_autogenargs replace the global autogenargs instead of the
+ ones defined in the moduleset. Same for makeargs.
+ (AutogenModule): since self.autogenargs and self.makeargs now
+ include the global options too, don't explicitly include them.
+
+ * README: update to indicate that tla is only needed to build
+ modules managed with Arch.
+
+ * modulesets/gnome-2.10.modules (rhythmbox): same here.
+
+ * modulesets/gnome28.modules (rhythmbox): add this back, and
+ change revision attribute to version.
+
+ * jhbuild/modtypes/archmodule.py (parse_archmodule): lookup the
+ full "archive/category--branch--version" string in the
+ config.branches directory, since if people are overriding the
+ location, they are probably overriding the fully specified one.
+
+ * jhbuild/moduleset.py (_parse_module_set): don't register arch
+ archives, and get rid of the config.arch_archives dictionary,
+ since it doesn't really add much above tla's internal archive
+ registration method.
+
+ * modulesets/gnome-2.10.modules: rename from gnome210.modules.
+
+2004-09-29 Matthias Clasen <mclasen@redhat.com>
+
+ * modulesets/gnome28.modules: Use the pango-1-6 branch.
+
+Mon Sep 27 01:36:07 2004 Jonathan Blandford <jrb@gnome.org>
+
+ * modulesets/gnome210.modules: add a yelp dependency on mozilla.
+
+2004-09-26 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome28.modules: Use glibmm-2-4 branch.
+
+2004-09-23 Fernando Herrera <fherrera@onirica.com>
+
+ * modulesets/gnome210.modules: make gnome-applets to depend
+ on gstreamer (for the new volume applet).
+
+2004-09-18 Elijah Newren <newren@math.utah.edu>
+
+ * modulesets/gnome28.modules: Malcom forgot gal; make sure it uses
+ the right branch too.
+
+2004-09-18 Shaun McCance <shaunm@gnome.org>
+
+ * modulesets/gnome28.modules:
+ - Removed the gnome-doc-utils dependency from yelp
+
+2004-09-17 Malcolm Tredinnick <malcolm@commsecure.com.au>
+
+ * modulesets/gnome28.modules: Use the right branches for evolution,
+ evolution-data-server and gtkhtml.
+
+2004-09-15 Fernando Herrera <fherrera@onirica.com>
+
+ * modulesets/gnome28.modules: Use "oldstatus" branch for gaim
+ (ie: 1.0 branch)
+
+2004-09-14 Calum Benson <calum.benson@sun.com>
+
+ * modulesets/gnome28.modules:
+
+ Use gnome-2-8 branch for gnome-themes.
+
+2004-09-14 Carlos Garnacho Parro <carlosg@gnome.org>
+
+ * modulesets/gnome28.modules: use gnome-2-8 branch for
+ gnome-system-tools
+
+2004-09-14 Vincent Untz <vincent@vuntz.net>
+
+ * modulesets/gnome28.modules: use gnome-2-8 branch for epiphany and
+ epiphany-extensions
+
+2004-09-12 Fernando Herrera <fherrera@onirica.com>
+
+ * modulesets/gnome28.modules:
+ - Gnome 2.8 uses Yelp 2.6, not HEAD
+
+2004-09-12 Shaun McCance <shaunm@gnome.org>
+
+ * modulesets/gnome28.modules:
+ - Gnome 2.8 uses Yelp 2.6, not HEAD
+
+2004-09-06 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome28.modules, gnome210.modules: Add evolution-webcal
+ to meta-gnome-desktop.
+
+2004-09-06 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/moduleset.py (ModuleSet.get_module_list): fix spelling
+ error in error message (pointed out by Jeff Waugh).
+
+2004-09-04 Murray Cumming <murrayc@murrayc.com>
+
+ * modules/gnome28.modules: re-added gnome-mime-data as a dependency of
+ gnome-vfs because we apparently still need it for now.
+
+2004-09-03 Murray Cumming <murrayc@murrayc.com>
+
+ * modules: Added gnome210.modules, so I can build a GNOME that uses
+ GTK+ 2.6.
+
+2004-09-03 Johan Dahlin <johan@gnome.org>
+
+ * jhbuild/modtypes/svnmodule.py (parse_svnmodule): assert if we
+ don't have an svnroot
+
+ * jhbuild/utils/svn.py (SVNRoot.checkout): Don't append checkout
+ dir twice.
+
+2004-09-02 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/commands/sanitycheck.py (do_sanitycheck): don't check
+ to see if automake-1.6 is installed.
+
+ * modulesets/bootstrap.modules: remove automake-1.6.
+
+2004-09-02 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome28.modules, gnome26.modules: Use gtkmm-2-4 branch of
+ gtkmm.
+
+2004-09-01 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome28.modules: Added gnome-volume-manager to
+ meta-gnome-desktop.
+
+da2004-09-01 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome28.modules: Added evolution, gnome-system-tools,
+ gnome-nettools, and vino to meta-gnome-desktop. These are new modules
+ in GNOME 2.8.
+
+2004-08-31 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome28.modules (gnopernicus): use gnome-2-8 branch.
+
+ * modulesets/gnome1.modules:
+ * modulesets/gnome20.modules:
+ * modulesets/gnome22.modules: remove ancient modulesets, since
+ they don't build anymore due to CVS modules being moved to
+ /cvs/archive. If anyone cares, they should be able to resurrect
+ these modulesets.
+
+ * modulesets/gnome26.modules (gnutls): update to 1.0.20.
+
+ * modulesets/gnome28.modules (gnutls): update to 1.0.20.
+
+ * jhbuild/commands/sanitycheck.py (do_sanitycheck): perform
+ sanitychecks on Automake 1.9 too.
+
+ * modulesets/bootstrap.modules (automake-1.9): update to 1.9.1.
+
+ * modulesets/gnome28.modules (vino): add a dependency on gnutls.
+ Fixes bug #150928.
+
+ * modulesets/gnome26.modules, gnome28.modules (intltool): depend
+ on gnome-common for the autogen script. Patch from bug #151189 by
+ Scott Tsai <scottt958@yahoo.com.tw>.
+
+2004-08-30 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome28.modules: Add e-d-s dependency to gnome-panel.
+
+2004-08-29 Manish Singh <yosh@gimp.org>
+
+ * jhbuild/utils/arch.py
+ * jhbuild/utils/cvs.py
+ * jhbuild/utils/svn.py: fix a few ytpos and cut'n'paste thinkos.
+
+2004-08-26 JP Rosevear <jpr@novell.com>
+
+ * modulesets/gnome28.modules: update soup branch
+
+2004-08-24 Calum Benson <calum.benson@sun.com>
+
+ * modulesets/gnome28.modules:
+
+ Build gnome-2-8 branch of gcalctool (which doesn't have
+ the new operator precedence features).
+
+2004-08-19 Tuomas Kuosmanen <tigert@novell.com>
+
+ * README (command): Added mention about gnu-arch requirement to
+ help users like me! :) with the wtf?-syndrome when jhbuild wouldnt
+ work at all unless "tla" (gnu-arch) is installed.. Feel free to
+ edit better, sorry to commit without your knowledge, but I couldnt
+ find you online and this seemed like an acute issue.
+
+2004-08-17 James Henstridge <james@jamesh.id.au>
+
+ Based on patch on bug 145393 by Thomas Fitzsimmons:
+
+ * jhbuild/config.py (prependpath): function to store path values
+ that will be prepended to various environment variables after
+ jhbuild has prepended its values.
+ (Config.setup_env): process the prepend values.
+
+2004-08-17 Christophe Fergeau <teuf@gnome.org>
+
+ * modulesets/gnome26.modules:
+ * modulesets/gnome28.modules: use latest gnutls and opencdk versions
+
+2004-08-11 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome28.modules (gnome-volume-manager): add
+ gnome-volume-manager. Patch from Darren Adams
+ <darrenadams@dsl.pipex.com> in bug #149067.
+
+ * jhbuild/frontends/tinderbox.py
+ (TinderboxBuildScript.start_module): sanitize the module name for
+ use as a filename. Patch from Olav Vitters
+ <bugzilla-gnome@bkor.dhs.org> in bug #148959.
+
+ * modulesets/bootstrap.modules (libtool): update to 1.5.8
+ (automake-1.9): add package.
+
+2004-08-09 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * modulesets/gnome24.modules:
+ * modulesets/gnome26.modules:
+ * modulesets/gnome28.modules:
+ remove disable-plugin-builddir from gst-plugins
+
+2004-08-09 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * jhbuild/frontends/buildscript.py:
+ create prefix and checkoutdir if they don't exist yet
+
+2004-08-05 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/modtypes/archmodule.py (ArchModule.__init__): I got rid
+ of the archmodule local here.
+
+ * jhbuild/moduleset.py (_parse_module_set): fix up some errors in
+ parsing <arch-archive> elements.
+
+ * modulesets/gnome28.modules (rhythmbox): Switch over to Arch archive.
+
+ * jhbuild/utils/arch.py (ArchArchive.update): forgot to update
+ this after renaming get_branch to get_revision.
+ (ArchArchive.get_revision): fix up a typo.
+
+2004-08-04 Mikael Hallendal <micke@imendio.com>
+
+ * modulesets/gnome26.modules: Use gnome-2-6 for libgail-gnome
+
+2004-08-02 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome28.modules: Make libgnomeprint
+ depend on libgnomecups.
+
+2004-08-01 Rodrigo Moya <rodrigo@gnome-db.org>
+
+ * modulesets/gnome28.modules: Added gnome-nettool module.
+
+2004-07-30 Anders Carlsson <andersca@gnome.org>
+
+ * modulesets/gnome28.modules: Remove gnome-mime-data.
+
+2004-07-30 Mikael Hallendal <micke@imendio.com>
+
+ * modulesets/gnome26.modules: use gnome-2-6 for metacity
+
+2004-07-30 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/moduleset.{rnc,dtd}: update schemas to match.
+
+ * jhbuild/modtypes/archmodule.py: new module type.
+
+ * jhbuild/config.py, jhbuild/defaults.jhbuildrc: add arch_archives
+ config dictionary.
+
+ * jhbuild/moduleset.py (_parse_module_set): add support for
+ <arch-archive> elements. Change the <svnroot> "root" attribute to
+ "href".
+
+ * jhbuild/utils/arch.py: some helper functions for working with
+ Arch working copies.
+
+ * modulesets/moduleset.{dtd,rnc}: change the svnroot attribute of
+ <svnmodule> to root.
+
+ * jhbuild/moduleset.py (_parse_module_set): rather than just
+ passing in the root as a string, pass a (roottype, root) tuple, so
+ that we can pick up errors where a CVS root is passed to
+ <svnmodule>
+
+ * jhbuild/modtypes/svnmodule.py (SVNModule): derive from
+ AutogenModule, and remove all the code that was in common with
+ CVSModule.
+
+ * jhbuild/modtypes/base.py (AutogenModule, CVSModule): split
+ CVSModule into two classes. All the generic code is in
+ AutogenModule, and then CVSModule adds the CVS specific code.
+
+ * jhbuild/modtypes/svnmodule.py (SVNModule.get_builddir):
+ s/self.module/self.svnmodule/.
+
+2004-07-29 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome26.modules (meta-gnome-desktop): same here.
+
+ * modulesets/gnome28.modules (nautilus-vcs): add module def.
+ (meta-gnome-devel-tools): add nautilus-vcs.
+ (meta-gnome-desktop): explicitly list libgail-gnome as a dep since
+ nothing else in the desktop has a build time dependency on it.
+
+ * jhbuild/commands/info.py (do_info): show information about
+ Subversion modules.
+
+ * jhbuild/modtypes/svnmodule.py (SVNModule.__init__): If no
+ checkout dir is given, set module name to the basename of
+ svnmodule rather than svnmodule.
+ (parse_svnmodule): there is no revision.
+
+2004-07-26 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/moduleset.py (_parse_module_set): put Subversion roots
+ and CVS roots in the same namespace as far as lookups go. Fixes
+ problems building Mozilla. Fixes bug #148338.
+
+2004-07-22 Keith Packard <keithp@keithp.com>
+
+ * modulesets/freedesktop.modules: add Xpm to Xaw dependency set
+
+2004-07-22 Crispin Flowerday <gnome@flowerday.cx>
+
+ * modulesets/gnome26.modules: Use gnome-2-6 branch for eel
+
+2004-07-22 JP Rosevear <jpr@novell.com>
+
+ * modulesets/bootstrap.modules: fix python directory for 2.3.4
+
+2004-07-22 Xavier Ordoquy <xordoquy@linovia.com>
+
+ * modulesets/freedesktop.modules:
+ Typo: XExt should be Xext in Xtst module.
+
+Wed Jul 21 22:24:38 2004 Jonathan Blandford <jrb@gnome.org>
+
+ * modulesets/freedesktop.modules: add desktop-file-utils
+ dependency.
+
+2004-07-20 Fernando Herrera <fherrera@onirica.com>
+
+ * modulesets/gnome28.modules: Add gnome-keyring-manager
+
+2004-07-20 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/gnome26.modules:
+ * modulesets/gnome28.modules (gnome-system-tools): fix
+ dependencies. Patch from Jaap A. Haitsma <jaap@haitsma.org> in
+ bug #147816.
+
+ * jhbuild/utils/svn.py (SVNRoot.update): add support for switching
+ a working copy to a different URI if it isn't pointing at the
+ right place.
+
+2004-07-20 James Henstridge <james@jamesh.id.au>
+
+ Based on patch from Christian Hammond <chipx86@gnupdate.org> in
+ bug #145159.
+
+ * modulesets/moduleset.dtd, modulesets/moduleset.rnc: add handling
+ of extra elements to schemas.
+
+ * jhbuild/modtypes/svnmodule.py: code for handling builds of
+ Subversion hosted modules.
+
+ * jhbuild/config.py (_known_keys): grab svnroots from config file.
+
+ * jhbuild/utils/svn.py: utility functions for subversion
+ manipulating working copies.
+
+ * jhbuild/moduleset.py (_parse_module_set): parse svnroot
+ elements.
+
+2004-07-20 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/freedesktop.modules: some changes from Daniel minus
+ the debrix ones (will need to wait til jhbuild supports Arch).
+ (from bug #144230).
+
+ * modulesets/bootstrap.modules (python): update to Python 2.3.4.
+
+ * modulesets/gnome28.modules (meta-storage): add storage modules
+ (from bug #144254).
+
+ * modulesets/gnome26.modules (audiofile): update to 0.2.6.
+
+ * modulesets/gnome28.modules (libgnomeprintui): add dependency on
+ gnome-icon-theme (fixes bug #144945).
+ (audiofile): update to 0.2.6.
+
+ * jhbuild/modtypes/tarball.py (Tarball.get_srcdir): don't use
+ get_localfile() in implementation, since config.tarballdir might
+ not be the same as checkoutroot (fixes bug #144994).
+ (Tarball.do_download): make sure tarballdir exists before
+ downloading (fixes bug #145460).
+
+2004-07-12 Mark McLoughlin <mark@skynet.ie>
+
+ * modulesets/gnome28.modules: add vino.
+
+ * modulesets/freedesktop.modules: xserver requires xkbfile.
+
+2004-07-04 Murray Cumming <murrayc@murrayc.com>
+
+ * Patch in #145397 from Thomas Fitzsimmons to add
+ supports-non-srcdir-builds to some modules.
+
+2004-06-24 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome28.modules: glom: Add dependency on libgnome.
+
+2004-06-24 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome28.modules: Use HEAD for pango.
+
+2004-06-18 Mikael Hallendal <micke@imendio.com>
+
+ * modulesets/gnome26.modules: Use gnome-2-6 branch of gail.
+
+2004-06-12 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/modtypes/tarball.py (Tarball.get_builddir): same here.
+
+ * jhbuild/modtypes/base.py (CVSModule.get_builddir): use
+ builddir_pattern to generate builddir name.
+
+ * jhbuild/defaults.jhbuildrc (builddir_pattern): default
+ builddir_pattern to '%s'.
+
+ * jhbuild/config.py (_known_keys): add builddir_pattern key.
+
+2004-06-11 James Henstridge <james@jamesh.id.au>
+
+ * jhbuild/modtypes/mozillamodule.py (MozillaModule.checkout): use
+ self.CVSRoot.
+
+ * jhbuild/modtypes/base.py (parse_cvsmodule): pass CVSModule as a
+ keyword argument, so that other similar module types can make use
+ of this function.
+ (CVSModule): add global attribute CVSRoot, set to cvs.CVSRoot.
+ (CVSModule.do_checkout): use self.CVSRoot instead of cvs.CVSRoot.
+ (CVSModule.do_force_checkout): same here.
+
+ * modulesets/gnome26.modules (gnome-desktop): require
+ scrollkeeper (fixes bug #143515).
+
+ * modulesets/gnome28.modules (gnome-desktop): require
+ scrollkeeper (fixes bug #143515).
+
+ * modulesets/freedesktop.modules (xkbfile): add module. Fixes bug
+ #144024.
+ (xtrans): grab the XTRANS-0_1-RELEASE tag, as suggested in bug
+ #143670.
+
+2004-06-11 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * modulesets/gnome2[68].modules (gnomemm/gtkmm_hello): New module.
+
+2004-06-11 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * modulesets/gnome2[68].modules (regexxer): Add dep on intltool.
+
+2004-06-10 James Henstridge <james@jamesh.id.au>
+
+ * modulesets/moduleset.dtd: update DTD.
+
+ * modulesets/moduleset.rnc: update RELAX-NG schema.
+
+ Based on a patch from Thomas Fitzsimmons:
+
+ * jhbuild/modtypes/tarball.py (Tarball.__init__): add makeargs
+ argument.
+ (Tarball.do_build): use makeargs if set.
+ (Tarball.do_install): same.
+ (parse_tarball): parse makeargs attribute.
+
+ * jhbuild/modtypes/mozillamodule.py (MozillaModule.__init__): add
+ makeargs argument.
+ (parse_mozillamodule): parse makeargs attribute.
+
+ * jhbuild/modtypes/base.py (CVSModule.__init__): add makeargs
+ argument.
+ (CVSModule.do_clean): use module local makeargs if set.
+ (CVSModule.do_build): same.
+ (CVSModule.do_check): same.
+ (CVSModule.do_install): same.
+ (parse_cvsmodule): allow module local makeargs.
+
+ * jhbuild/defaults.jhbuildrc (module_autogenargs): default key to
+ an empty dictionary.
+
+ * jhbuild/config.py (_known_keys): add 'module_makeargs' key.
+
+2004-06-04 James Henstridge <james@daa.com.au>
+
+ * modulesets/moduleset.rnc: same changes here.
+
+ * modulesets/moduleset.dtd: update DTD for
+ supports-non-srcdir-builds attribute on cvsmodule and tarball
+ elements.
+
+ * jhbuild/modtypes/tarball.py (Tarball.__init__): add
+ supports_non_srcdir_builds property.
+ (Tarball.get_builddir): check supports_non_srcdir_builds property.
+ (Tarball.do_configure): check supports_non_srcdir_builds property.
+ (parse_tarball): parse supports-non-srcdir-builds attribute in
+ XML.
+
+ * jhbuild/modtypes/mozillamodule.py (MozillaModule.__init__): set
+ supports_non_srcdir_builds to False.
+
+ * jhbuild/modtypes/base.py (CVSModule.__init__): add
+ supports_non_srcdir_builds property.
+ (CVSModule.get_builddir): if not supports_non_srcdir_builds, then
+ don't return a separate builddir.
+ (CVSModule.do_configure): check supports_non_srcdir_builds property.
+ (parse_cvsmodule): parse supports-non-srcdir-builds attribute in
+ XML.
+
+2004-06-10 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome26.modules: A lot of modules
+ have branched.
+
+2004-06-08 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome28.modules: Added glom.
+
+2004-06-06 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome26.modules: Use gnome-2-6 branch for libgnomeuimm.
+
+2004-06-05 Davyd Madeley <davyd@ucc.asn.au>
+
+ * contrib/jhbuild_completion.bash:
+ - Added -c option.
+ - Prevented tab completion from inadvertantly executing the GNU info
+ system.
+
+2004-06-05 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome28.modules: Added gnome-doc-utils and added it as
+ a dependency for yelp.
+
+2004-06-03 Marco Pesenti Gritti <marco@gnome.org>
+
+ * modulesets/gnome28.modules:
+
+ Epiphany now requires mozilla 1.7
+
+Sat May 29 20:53:33 2004 Jonathan Blandford <jrb@gnome.org>
+
+ * modulesets/gnome26.modules: change pango to use the 1.4 branch.
+ * modulesets/gnome28.modules: ditto
+
+Sat May 29 20:13:05 2004 Jonathan Blandford <jrb@gnome.org>
+
+ * modulesets/gnome28.modules: add dasher to
+ meta-gnome-accessibility.
+
+Mon May 24 16:53:14 2004 Jonathan Blandford <jrb@gnome.org>
+
+ * modulesets/gnome26.modules: update libgnetwork here as well
+
+Mon May 24 15:38:14 2004 Jonathan Blandford <jrb@gnome.org>
+
+ * modulesets/gnome28.modules: libgtcpsocket is dead. long live
+ libgnetwork. or something.
+
+2004-05-20 Mark McLoughlin <mark@skynet.ie>
+
+ * modulesets/gnome26.modules,
+ modulesets/gnome28.modules: update libtasn1 to
+ 0.2.10 since they seem to delete the old releases
+ when a new one comes out.
+
+2004-05-20 James Henstridge <james@daa.com.au>
+
+ * HACKING: add a file outlining cases when people can commit
+ without approval. This just codifies existing practice.
+
+ * modulesets/bootstrap.modules (python): compile with the
+ "--enable-shared" configure flag, so that it produces a shared
+ library.
+
+Wed May 19 14:30:03 2004 Jonathan Blandford <jrb@redhat.com>
+
+ * jhbuild/modtypes/mozillamodule.py (MozillaModule.get_builddir):
+ remove extraneous 'self' call to get_srcdir
+
+2004-05-19 James Henstridge <james@daa.com.au>
+
+ * modulesets/bootstrap.modules (automake-1.8): update to 1.8.5.
+
+ * jhbuild/modtypes/tarball.py (Tarball.do_configure): fix up some
+ breakage in tarball builds caused by yesterday's patch.
+
+ * modulesets/gnome26.modules (procman): use gnome-2-6 branch.
+
+2004-05-18 James Henstridge <james@daa.com.au>
+
+ * jhbuild/modtypes/__init__.py: don't import tarball and mozilla
+ modules -- instead let them be discovered as needed.
+
+ * jhbuild/modtypes/mozillamodule.py: rename from mozilla.py
+
+ * jhbuild/modtypes/base.py (parse_xml_node): if the module type is
+ unknown, try to import a module in the jhbuild.modtypes package by
+ the same name first.
+
+ Based on Thomas Fitzsimmons' GCJ patch (this isn't a complete
+ merge).
+
+ * jhbuild/modtypes/mozilla.py (MozillaModule.get_builddir): don't
+ bother supporting srcdir != builddir here.
+
+ * jhbuild/modtypes/tarball.py (Tarball.get_builddir): fix up for
+ srcdir != builddir installs.
+ (Tarball.do_unpack): check if srcdir exists after unpacking,
+ rather than builddir.
+ (Tarball.do_patch): apply patches in srcdir
+ (Tarball.do_configure): handle srcdir!=builddir case
+
+ * jhbuild/modtypes/base.py (Package.get_srcdir): add function.
+ (CVSModule.get_srcdir): implement for CVSModule.
+ (CVSModule.get_builddir): respect config.builddir, if set.
+ (CVSModule.do_checkout): use the srcdir for checkout.
+ (CVSModule.do_force_checkout): same here.
+ (CVSModule.do_configure): if srcdir != builddir, create the
+ builddir, and don't assume autogen.sh is in the local directory.
+
+ * jhbuild/defaults.jhbuildrc (builddir): default builddir to None.
+
+ * jhbuild/config.py (_known_keys): add builddir to list of
+ recognised keys.
+
+2004-05-18 Davyd Madeley <davyd@ucc.asn.au>
+
+ * contrib/jhbuild_completion.bash: Make the completion still work if
+ you specify -a or -n.
+
+2004-05-18 James Henstridge <james@daa.com.au>
+
+ * scripts/gnome-2.6.exceptions: information about some modules
+ required to build Gnome 2.6.x that aren't in the source dir.
+
+ * scripts/gnome-2.6.deps: dependencies for Gnome 2.6.x. Not
+ complete.
+
+ * scripts/mk-tarball-moduleset.py: a script for generating a
+ module set from a list of dependencies, a directory containing the
+ sources and a base URI where the sources are available.
+
+ * scripts/changecvsroot.py: move this script here. Change
+ arguments so that you need to specify the old CVS root as well as
+ the new CVS root, so that it can be used to update mixed working
+ copies.
+
+2004-05-17 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * modulesets/gnome28.modules (regexxer): Remove the cvsroot
+ specification for regexxer since it's now on cvs.gnome.org.
+
+ * modulesets/gnome2[68].modules (regexxer): Add dependency
+ on gnomemm/libglademm. Remove dependency on gnomemm/gnome-vfsmm.
+
+2004-05-17 Davyd Madeley <davyd@ucc.asn.au>
+
+ * contrib/jhbuild_completion.bash: add license header to file.
+
+2004-05-17 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome26.modules (libglade): update revision in module
+ set.
+
+2004-05-16 Davyd Madeley <davyd@ucc.asn.au>
+
+ * contrib/: Added in order to store contributions to jhbuild.
+ * contrib/jhbuild_completion.bash: Bash tab completion for jhbuild.
+ Simply source the file into your bashrc. Currently depends on having
+ functions from the standard bash completion sourced (_command and
+ _filedir). Closes #142612.
+
+2004-05-15 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * modulesets/gnome26.modules (libxml++): Use LIBXMLPP_BRANCH_2_6.
+
+2004-05-13 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome26.modules: use gnome-2-6 branch for
+ gnome-desktop, gnome-panel and gnome-session.
+
+2004-05-12 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * modulesets/gnome2[24].modules (regexxer): Add gnomemm/libglademm
+ to the list of dependencies.
+
+2004-05-09 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * modulesets/gnome26.modules:
+ use the 2.6 branch of gnome-media
+
+2004-05-08 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * modulesets/gnome2[0246].modules (regexxer): Remove the cvsroot
+ specification for regexxer since it's now on cvs.gnome.org. Supply
+ the correct revision for the gnome20/gnome22/gnome24 modulesets.
+
+2004-05-05 James Henstridge <james@daa.com.au>
+
+ * jamesh.jhbuildrc, sample.jhbuildrc, vbs-head.jhbuildrc: move to
+ gnome28 moduleset.
+
+2004-05-04 Matthias Clasen <mclasen@redhat.com>
+
+ * modulesets/gnome28.modules:
+ * modulesets/gnome26.modules: Use the 2.4 branches of GLib
+ and GTK+ for Gnome 2.6 and 2.8.
+
+2004-05-03 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome26.modules (evolution-webcal):
+ * modulesets/gnome28.modules (evolution-webcal): add new module.
+ Based on patch from Trent Lloyd <lathiat@bur.st> on bug #141087.
+
+ * modulesets/gnome28.modules: libgnomeprintuimm requires
+ libgnomeprintmm.
+
+ * modulesets/*.modules: use nxml-mode instead of xml-mode (psgml).
+
+ * modulesets/schemas.xml: add file to map moduleset.rnc to the
+ modules file for nxml-mode.
+
+ * modulesets/moduleset.rnc: Relax-NG schema for module sets.
+
+2004-05-03 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome28.modules, gnome26.modules: Make libgnomeuimm depend
+ on gnome-vfsmm.
+
+2004-05-02 Anders Carlsson <andersca@gnome.org>
+
+ * modulesets/gnome26.modules: Use gnome-2-6 for libgnome*
+
+2004-04-30 James Henstridge <james@daa.com.au>
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.execute): if
+ not pretty_print, don't try to syntax highlight output.
+
+ * jhbuild/config.py (_known_keys): add pretty_print option, that
+ defaults to True.
+
+2004-04-29 James Henstridge <james@daa.com.au>
+
+ * modulesets/freedesktop.modules (hicolor-icon-theme): add MD5
+ sum.
+
+ * modulesets/gnome28.modules: same updates as in gnome26.
+
+ * modulesets/gnome26.modules (scrollkeeper, audiofile,
+ gnutls+friends, xchat, camorama): add MD5 sums to tarball entries.
+
+ * modulesets/moduleset.dtd: update DTD for md5sum attribute on
+ <source> elements.
+
+ * modulesets/bootstrap.modules: add MD5 sums to all bootstrap
+ modules.
+
+ * jhbuild/modtypes/tarball.py (Tarball.get_localfile): new method
+ to get the location of the local filename for the tarball. Use
+ config.tarballdir instead of checkoutroot.
+
+ * jhbuild/config.py: add tarballdir config key that defaults to
+ checkoutroot.
+
+2004-04-28 James Henstridge <james@daa.com.au>
+
+ * jhbuild/modtypes/tarball.py (Tarball.__init__): add md5
+ attribute.
+ (Tarball.check_localfile): move download verification stuff here.
+ (Tarball.do_download): use check_localfile() to check result of
+ download.
+
+2004-04-26 Frederic Crozat <fcrozat@mandrakesoft.com>
+
+ * modulesets/gnome26.modules (eog): use gnome-2-6 branch.
+
+2004-04-26 Frederic Crozat <fcrozat@mandrakesoft.com>
+
+ * modulesets/gnome26.modules:
+ use gnome-2-6 branches for libgnomeprint(ui).
+
+2004-04-24 James Henstridge <james@daa.com.au>
+
+ * jhbuild/config.py (Config.setup_env): fix up error when we can't
+ create the prefix. Fix from Vee Satayamas <veetai@yahoo.com>
+ (from bug #140999).
+
+2004-04-23 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome26.modules (libcroco): use gnome-2-6 branch
+ (fixes bug 140797).
+
+2004-04-20 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome26.modules (gnome-icon-theme): use gnome-2-6 branch.
+ (atk): use gnome-2-6 branch.
+ (gnome-keyring): use gnome-2-6 branch.
+ (gnome-control-center): use gnome-2-6 branch.
+ (gtksourceview): use gnome-2-6 branch.
+
+2004-04-18 James Henstridge <james@daa.com.au>
+
+ * jhbuild/main.py (main): add a -m argument to override the
+ moduleset on the command line. Based on ideas from a patch by
+ Mark McLoughlin <mark@skynet.ie>.
+
+2004-04-14 James Henstridge <james@daa.com.au>
+
+ * jhbuild.py: remove this file, since it wasn't being used
+ anymore. After two months, most people should have seen the
+ message.
+
+2004-04-13 David Bolter <david.bolter@utoronto.ca>
+
+ * modulesets/gnome26.modules (gok): set branch to gnome-2-6.
+
+2004-04-13 Fernando Herrera <fherrera@onirica.com>
+
+ * modulesets/gnome26.modules (bug-buddy): set branch to gnome-2-6.
+
+2004-04-12 James Henstridge <james@daa.com.au>
+
+ * patches/libtool-1.4.2-multilib.patch:
+ * patches/libtool-1.5.4-ltmain-SED.patch: update patches from
+ latest Fedora devel RPM.
+
+ * modulesets/bootstrap.modules: update to libtool-1.5.6.
+
+ * modulesets/gnome26.modules (gconf-editor): set branch to gnome-2-6.
+
+ * jhbuild/modtypes/base.py (CVSModule.do_check): add check phase
+ for running test suites on modules.
+
+ * jhbuild/config.py (_known_keys): add a makecheck config key.
+
+ * jhbuild/modtypes/base.py (CVSModule.do_start): if makeclean,
+ then go to stage clean (if we aren't running checkout or
+ configure).
+ (CVSModule.do_checkout): check if makeclean is set.
+ (CVSModule.do_clean): add clean state.
+
+2004-04-10 James Henstridge <james@daa.com.au>
+
+ * jhbuild/main.py (help): add some help text.
+
+ * jhbuild/commands/info.py (do_info): add a "jhbuild info" routine
+ that prints some information about a module.
+
+2004-04-10 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome26.modules: Use gnome-2-6 branch for file-roller.
+
+2004-04-10 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome28.modules: same changes here.
+
+ * modulesets/gnome26.modules: add rules to build gnutls, needed
+ for SSL support in libsoup. Based on patch from sig@netdot.net
+ (fixes bug #132167).
+
+ * jhbuild/modtypes/tarball.py (parse_tarball): tarball
+ dependencies weren't being handled quite right.
+
+2004-04-08 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome26.modules, gnome28.modules: Removed duplicated
+ gnome-mag section.
+ * modulesets/gnome26.modules: Use gnome-2-6 branch for gnome-mag
+ and gnome-terminal.
+
+2004-04-07 James Henstridge <james@daa.com.au>
+
+ * modulesets/freedesktop.modules (hicolor-icon-theme): update to 0.5.
+
+2004-04-07 Paolo Borelli <pborelli@katamail.com>
+
+ * modulesets/gnome26.modules: use gnome-2-6 branch of gedit.
+
+2004-04-07 Jaka Mocnik <jaka@gnu.org>
+
+ * modulesets/gnome26.modules: build branch gnome-2-6 of ggv.
+
+2004-04-06 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome26.modules (gnome-mag): <dep> elements don't
+ take a revision tag.
+
+2004-04-06 Bill Haneman <billh@gnome.org>
+
+ * modulesets/gnome26.modules:
+ Use gnome-2-6 branch of gnome-mag.
+
+2004-04-06 James Henstridge <james@daa.com.au>
+
+ * modulesets/moduleset.dtd (tarball): allow autogenargs for
+ tarball element.
+
+ * jhbuild/modtypes/tarball.py (Tarball.do_configure): add autogen
+ args for tarball builds too. (to fix bug 138946).
+ (parse_tarball): parse autogenargs for tarballs.
+
+2004-04-05 James Henstridge <james@daa.com.au>
+
+ * jhbuild/utils/httpcache.py: same here.
+
+ * jhbuild/utils/packagedb.py: store dates in UTC rather than local
+ timezone.
+
+2004-04-04 Murray Cumming <murrayc@murrayc.com>
+
+ * modulesets/gnome28.modules: Fix bakery dependencies so they match
+ those in gnome26.modules. Corrected the gnome-vfsmm dependencies in
+ both.
+ * modulessets/gnome26.modules: Use gnome-2-6 branches for
+ nautilus-cd-burner, yelp, dasher, at-spi, gcalctool.
+
+2004-04-02 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome22.modules: get rid of versioncheck.
+
+ * jhbuild/modtypes/tarball.py: remove the versioncheck code, since
+ it isn't being used anymore, and was of questionable use.
+
+ * modulesets/gnome28.modules: same here.
+
+ * modulesets/gnome26.modules: fix up devhelp dependencies
+
+2004-04-01 Christophe Fergeau <teuf@gnome.org>
+
+ * modulesets/gnome24.modules
+ * modulesets/gnome26.modules
+ * modulesets/gnome28.modules: added dependency on libgnomeui to gossip
+ * modulesets/gnome26.modules: set gnome-vfs branch to gnome-2-6
+
+2004-03-31 James Henstridge <james@daa.com.au>
+
+ * jhbuild/utils/cvs.py (CVSRoot.checkout): add the -P (prune) flag
+ when doing initial checkout of a module.
+
+ * modulesets/bootstrap.modules (automake-1.8): update to version
+ 1.8.3.
+
+2004-03-30 Mark McLoughlin <mark@skynet.ie>
+
+ * modulesets/gnome26.modules: use the gnome-2-6 branch
+ for gconf.
+
+2004-03-30 Murray Cumming <murrayc@murrayc.com>
+
+ * modulessets/gnome26.modules, gnome28.modules: Use HEAD branch of
+ mergeant, because the other one is unmaintained and does not build.
+
+2004-03-29 Callum McKenzie <callum@physics.otago.ac.nz>
+
+ * modulesets/gnome26.modules: Fix typo from yesterday's
+ gnome-games change.
+
+2004-03-28 Callum McKenzie <callum@physics.otago.ac.nz>
+
+ * modulesets/gnome28.modules:
+ * modulesets/gnome26.modules: Add librsvg dependency to gnome-games.
+
+2004-03-27 Bryan Forbes <bryan@reigndropsfall.net>
+
+ * modulesets/gnome26.modules: added gnomemm/gnome-vfsmm dependency to
+ bakery.
+
+2004-03-26 Frederic Crozat <fcrozat@mandrakesoft.com>
+
+ * modulesets/gnome26.modules:
+ Use gnome-2-6 branch of librsvg.
+
+2004-03-25 Bill Haneman <billh@gnome.org>
+
+ * modulesets/gnome26.modules:
+ Use gnome-2-6 branch of at-spi.
+
+2004-03-25 Murray Cumming <murrayc@murrayc.com>
+
+ * Added modulessets/gnome28.modules, using HEAD.
+
+2004-03-25 James Henstridge <james@daa.com.au>
+
+ * modulesets/bootstrap.modules:
+ * modulesets/gnome1.modules:
+ * modulesets/gnome20.modules:
+ * modulesets/gnome22.modules:
+ * modulesets/gnome24.modules:
+ * modulesets/gnome26.modules: move audiofile from bootstraps to
+ the main module set.
+
+ * modulesets/gnome20.modules (scrollkeeper): same here.
+ * modulesets/gnome22.modules (scrollkeeper): same here.
+ * modulesets/gnome24.modules (scrollkeeper): same here.
+
+ * modulesets/gnome26.modules (scrollkeeper): remove version check
+ so that we always build a scrollkeeper in the build root. This is
+ so that modules we build can register in the catalog.
+
+2004-03-24 Bryan Forbes <bryan@reigndropsfall.net>
+
+ * modulesets/gnome26.modules: added gnomemm/gconfmm dependency to
+ bakery.
+
+2004-03-24 Bryan Forbes <bryan@reigndropsfall.net>
+
+ * modulesets/gnome26.modules: added gnomemm/libglademm dependency
+ to bakery.
+
+2004-03-23 Calum Benson <calum.benson@sun.com>
+
+ * modulesets/gnome26.modules:
+
+ Use gnome-2-6 branch of gnome-themes from now on.
+
+2004-03-23 James Henstridge <james@daa.com.au>
+
+ * jhbuild/commands/tinderbox.py (do_tinderbox): same here.
+
+ * jhbuild/commands/base.py (do_update): raise an error if the
+ module list is empty after removing modules before "startat".
+ This indicates that startat wasn't in the module list.
+ (do_build): same here.
+
+ * README (command): update information about initial setup.
+
+ * jhbuild/modtypes/tarball.py (parse_tarball): fix up parsing of
+ <patch> subelements.
+
+ * jhbuild/commands/bootstrap.py (do_bootstrap): change code so
+ that it simply calls the build engine on the 'meta-bootstrap'
+ module in the 'bootstrap' module set.
+
+ * jhbuild/moduleset.py (load): allow specifying of a different
+ moduleset URI.
+
+ * modulesets/bootstrap.modules: a modules file containing all the
+ current bootstraps.
+
+ * modulesets/moduleset.dtd: update DTD.
+
+ * jhbuild/modtypes/tarball.py (Tarball.do_patch): look for patches
+ in $(topdir)/patches, like we currently do for bootstrap.
+ (parse_tarball): fix parsing of patch elements, and add support
+ for a strip attribute for the patch.
+
+ * jhbuild/modtypes/base.py (CVSModule.do_install): add module to
+ packagedb on successful install.
+
+ * jhbuild/modtypes/tarball.py (Tarball.do_start): instead of
+ writing a file in the build directory as a tag that we have
+ already build/installed this tarball, use the PackageDB. Since
+ this is installed in the install prefix, we will rebuild the
+ tarball if the install prefix is wiped.
+ (Tarball.do_install): on successful install, add to packagedb.
+
+ * jhbuild/frontends/buildscript.py (BuildScript.__init__): create
+ a PackageDB for the buildscript.
+ (BuildScript.build): if a module successfully builds, add it to
+ the package database.
+
+ * jhbuild/utils/packagedb.py (PackageDB): new file to keep track
+ of installed versions of various packages.
+
+2004-03-21 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome26.modules: Fix branch for gnome-games,
+ gnome-netstatus, gnomemeeting.
+
+2004-03-21 Christian Persch <chpe@cvs.gnome.org>
+
+ * modulesets/gnome26.modules:
+ Use gnome-2-6 branch for epiphany-extensions.
+
+2004-03-19 James Henstridge <james@daa.com.au>
+
+ * Makefile: fix up the "make dist" target to do something useful.
+ This is in case I want to produce tarball releases ...
+
+2004-03-18 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome26.modules (libgail-gnome): requires
+ gnome-panel. Fixes bug #137154.
+
+ * jhbuild/commands/base.py (run): don't print a traceback for
+ unknown command names. Fixes bug #136445. Based on a patch by
+ Paolo Borelli <pborelli@katamail.com>.
+
+ * jhbuild/commands/tinderbox.py (do_tinderbox): raise a UsageError
+ if no output directory specified (related to bug 136638).
+
+ * jhbuild/frontends/tinderbox.py (TinderboxBuildScript.end_build):
+ fix printing of error values.
+
+2004-03-18 Frederic Crozat <fcrozat@mandrakesoft.com>
+
+ * modulesets/gnome24.modules:
+ Use gnome-2-4 branch for zenity.
+
+2004-03-17 Frederic Crozat <fcrozat@mandrakesoft.com>
+
+ * modulesets/gnome24.modules:
+ Oops, reverting previous commit, I committed the wrong file.
+
+ * modulesets/gnome26.modules:
+ Really commit the good file this time.
+
+2004-03-17 Frederic Crozat <fcrozat@mandrakesoft.com>
+
+ * modulesets/gnome26.modules:
+ Disable mozilla freetype2 support. It is not needed since
+ we use Xft instead and doesn't build with freetype2 HEAD.
+
+2004-03-17 Frederic Crozat <fcrozat@mandrakesoft.com>
+
+ * modulesets/gnome24.modules:
+ Use libcroco-0-4 branch for libcroco.
+
+2004-03-17 Marco Pesenti Gritti <marco@gnome.org>
+
+ * modulesets/gnome26.modules:
+
+ Use gnome-2-6 branch for epiphany
+
+2004-03-16 Kristian Rietveld <kris@babi-pangang.org>
+
+ * jhbuild/main.py (main): write error message to stderr
+ when reading the config file fails.
+
+ * jhbuild/config.py (Config): raise an exception when
+ the creation of the aclocaldir fails.
+
+2004-03-16 Johan Dahlin <johan@gnome.org>
+
+ * jhbuild/config.py (Config.setup_env): If PKG_CONFIG_PATH is
+ unset, set it to $libdir/pkgconfig:/usr/lib/pkgconfig, so a
+ mozilla installation in /usr can be used.
+
+2004-03-04 James Henstridge <james@daa.com.au>
+
+ * README, jhbuild/main.py: some help updates from Andreas
+ Persenius <ndap@ndap.net>.
+
+2004-03-03 James Henstridge <james@daa.com.au>
+
+ * jhbuild/main.py (main): treat getopt.error like UsageError
+
+ * jhbuild/moduleset.py (_parse_module_set): don't download module
+ files from network if nonetwork is true.
+
+ * jhbuild/utils/httpcache.py (Cache.load): add a nonetwork
+ optional argument. If nonetwork is True, files will be returned
+ from cache even if it is expired. If the file is not in the
+ cache, raise an error.
+ (load): pass through the nonetwork argument.
+
+ * jhbuild/main.py (main): remove the catch-all except clause,
+ instead replacing it with clauses for UsageError (print error and
+ a usage message) and FatalError (print error). This way real
+ jhbuild bugs should result in useful tracebacks while simple
+ runtime errors should result in nice error messages.
+
+ * jhbuild/modtypes/tarball.py (Tarball.do_unpack): raise
+ FatalError instead of TypeError.
+
+ * jhbuild/modtypes/mozilla.py (MozillaModule.get_mozilla_ver):
+ raise FatalError.
+
+ * jhbuild/frontends/buildscript.py (BuildScript.__init__): raise
+ FatalError rather than use asserts.
+
+ * jhbuild/commands/sanitycheck.py (do_sanitycheck): raise
+ UsageError if extra arguments found.
+
+ * jhbuild/commands/bootstrap.py (do_bootstrap): raise UsageError
+ rather than getopt.error.
+
+ * jhbuild/commands/base.py (run): raise FatalError instead of
+ RuntimeError.
+ (do_update_one): raise FatalError rather than SystemExit.
+ (do_build_one): same here.
+
+ * jhbuild/config.py (Config.__init__): print tracebacks for bugs
+ in config files.
+
+ * jhbuild/moduleset.py (ModuleSet.get_module_list): raise
+ UsageError instead of ValueError.
+
+ * jhbuild/errors.py: new file for common exceptions used by
+ jhbuild. Currently just a "UsageError" one.
+
+2004-02-24 James Henstridge <james@daa.com.au>
+
+ * jhbuild/frontends/tinderbox.py (TinderboxBuildScript.end_phase):
+ flush the index file fp after each stage.
+
+2004-02-27 Murray Cumming <murrayc@gnome.org>
+
+ * modulesets/gnome26.modules: Added gnome-netstatus, because it is new
+ in GNOME 2.6. meta-gnome-desktop: Added gnome-netstatus and moved
+ gnomemeeting and file-roller to the bottom because they never build.
+
+2004-02-22 Marco Pesenti Gritti <marco@gnome.org>
+
+ * modulesets/gnome26.modules:
+
+ epiphany-extensions is not part of the desktop
+
+2004-02-21 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome26.modules (gnome-python/gnome-python): add
+ suggestions.
+
+ * modulesets/freedesktop.modules (shared-mime-info): add a
+ suggestion of intltool. Not exactly correct, but will get things
+ ordered correctly if you build both packages.
+
+ * modulesets/moduleset.dtd: add suggests element to DTD.
+
+ * jhbuild/moduleset.py (ModuleSet.get_module_list): add support
+ for suggestions.
+
+ * jhbuild/modtypes/mozilla.py (MozillaModule.__init__): and here.
+ (parse_mozillamodule): and here.
+
+ * jhbuild/modtypes/tarball.py (Tarball.__init__): and here.
+ (parse_tarball): and here.
+
+ * jhbuild/modtypes/base.py (parse_xml_node): pass the suggests
+ argument.
+ (Package.__init__): same here.
+ (CVSModule.__init__): and here.
+ (parse_cvsmodule): and here.
+ (parse_metamodule): and here.
+
+ * jhbuild/moduleset.py (_parse_module_set): parse a "suggests"
+ element for all module nodes.
+
+2004-02-19 James Henstridge <james@daa.com.au>
+
+ * jhbuild/frontends/tinderbox.py
+ (TinderboxBuildScript.start_build): include the distribution name
+ in the tinderbox build header.
+
+ * jhbuild/commands/tinderbox.py (do_tinderbox): add extra options
+ to "jhbuild tinderbox" build. Patch from <torkel@acc.umu.se>
+ (fixes bug #134254).
+
+ * jhbuild/modtypes/base.py (CVSModule.do_force_checkout): if
+ nobuild config key is set, then skip to done in this mode. Fix
+ based on patch from Trent Lloyd <lathiat@bur.st>
+
+ * jhbuild/commands/bootstrap.py (libtool): don't apply
+ expsym-linux patch, since libtool-1.5.2 doesn't need it.
+
+2004-02-16 Telsa Gwynne <hobbit@aloss.ukuu.org.uk>
+
+ * modulesets/gnome26.modules: Added dasher and conglomerate
+
+2004-02-16 Murray Cumming <murrayc@murrayc.com>
+
+ * modulessets/gnome26.modules: Added gnomemm/libpanelappletmm.
+
+2004-02-16 James Henstridge <james@daa.com.au>
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.execute): if
+ we are running CVS, preprocess its output to highlight modified
+ and conflicting files. Also print out a summary of conflicts at
+ the end of the run.
+ (TerminalBuildScript.execute): fix a small typo.
+
+ * jhbuild/utils/cvs.py (CVSRoot.checkout, CVSRoot.update): set the
+ hint argument to 'cvs' when running the cvs command.
+
+ * jhbuild/utils/cmds.py: new file containing utility routines for
+ running commands and grabbing their output.
+
+2004-02-15 James Henstridge <james@daa.com.au>
+
+ * jhbuild/commands/bootstrap.py (bootstraps): remove some of the
+ libtool patches we apply during bootstrap (that aren't needed
+ anymore), and add some AMD64 ones from the RH rpm.
+
+2004-02-14 Alex Duggan <aldug@astrolinux.com>
+
+ * modulesets/gnome26.modules: remove gnome-vfs-extras since the smb
+ method is now im gnome-vfs
+
+2004-02-12 James Henstridge <james@daa.com.au>
+
+ * jhbuild/utils/httpcache.py (Cache.load): use urlparse instead of
+ urlsplit, to give compatibility with Python < 2.2 (fixes bug
+ #134151).
+
+ * modulesets/gnome22.modules (meta-gnome-c++): add missing quote
+ to bakery_gnomeui dependency.
+
+ * modulesets/moduleset.dtd: add the include element to DTD.
+
+ * modulesets/gnome24.modules (gnome-icon-theme): depend on
+ hicolor-icon-theme.
+
+ * modulesets/gnome26.modules (gnome-icon-theme): depend on
+ hicolor-icon-theme.
+
+ * modulesets/freedesktop.modules (hicolor-icon-theme): download as
+ a tarball, now that it builds using the standard "configure; make;
+ make install" commands.
+
+2004-02-10 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome26.modules: change libsigc++1.2 to libsigc++2.
+
+2004-02-10 James Henstridge <james@daa.com.au>
+
+ * jhbuild/commands/sanitycheck.py (do_sanitycheck): add XML
+ catalog checks to sanitycheck.
+ (do_sanitycheck): check for various
+ (do_sanitycheck): check if db2html exists.
+
+ * modulesets/freedesktop.modules (xcompmgr): add dependency on
+ Xrender.
+
+ * jhbuild/commands/sanitycheck.py (do_sanitycheck): add checks to
+ see whether the checkout root and install prefix are directories
+ and writable.
+
+ * jhbuild/main.py (main): turn off traceback printing, so we just
+ get the error message.
+
+ * jhbuild/moduleset.py (ModuleSet.get_module_list): adjust so that
+ exception messages are a bit more meaningful.
+
+2004-02-09 James Henstridge <james@daa.com.au>
+
+ * jhbuild/frontends/gtkui.py (GtkBuildScript.handle_error): fix up
+ the "terminal" option to actually work. Patch by Thom May (fixes
+ bug #133630).
+
+ * jhbuild/main.py (help): add a line to the help text.
+
+ * jhbuild/commands/tinderbox.py (do_tinderbox): same here.
+
+ * jhbuild/commands/base.py (do_update): add support for -D option
+ to specify a sticky date.
+ (do_update_one): same here.
+ (do_build): same here.
+ (do_build_one): same here.
+
+ * jhbuild/modtypes/mozilla.py (MozillaModule.checkout): same here.
+
+ * jhbuild/modtypes/base.py (CVSModule.do_checkout): pass
+ sticky_date to "cvs update".
+ (CVSModule.do_force_checkout): same here.
+
+ * jhbuild/defaults.jhbuildrc, jhbuild/config.py: declare
+ sticky_date config value.
+
+ * jhbuild/commands/tinderbox.py (do_tinderbox): same here.
+
+ * jhbuild/commands/base.py (do_update): convert the bunch of if
+ statements to a single get_module_list() call.
+ (do_build): same here.
+ (do_list): same here.
+
+ * jhbuild/moduleset.py (ModuleSet.get_module_list): make this
+ handle the case of the module list being equal to 'all', so we can
+ simplify the callers of this code.
+
+ * jhbuild/modtypes/base.py (CVSModule.do_checkout): pass
+ checkoutdir as keyword argument.
+ (CVSModule.do_force_checkout): same here.
+
+ * jhbuild/utils/cvs.py (CVSRoot.checkout): add a "date" argument.
+ (CVSRoot.update): same here.
+
+2004-02-08 James Henstridge <james@daa.com.au>
+
+ * jhbuild/commands/bootstrap.py: import getopt.
+
+ * jhbuild/frontends/tinderbox.py (TinderboxBuildScript.execute):
+ add hint argument (currently unused).
+ (TinderboxBuildScript.handle_error): remove interract argument.
+
+ * jhbuild/frontends/terminal.py (TerminalBuildScript.execute): add
+ currently unused "hint" argument.
+ (TerminalBuildScript.handle_error): remove unused interact argument.
+ (TerminalBuildScript.handle_error): put in a dummy assert to
+ indicate that control shouldn't reach the end of this function.
+
+ * jhbuild/frontends/buildscript.py (BuildScript.message): last
+ argument should be optional (it is in all the concrete subclasses).
+
+ * jhbuild/modtypes/mozilla.py (MozillaModule.do_checkout): remove
+ unused force_checkout argument.
+ (MozillaModule.do_force_checkout): fix up return of next state
+ when an error occurs.
+
+ * jhbuild/modtypes/tarball.py (Tarball.__init__): correctly set
+ patches attribute.
+ (parse_tarball): fix up parsing of patch XML nodes.
+
+ * jhbuild/modtypes/base.py (CVSModule.do_checkout): remove unused
+ force_checkout argument.
+
+ * jhbuild/moduleset.py (ModuleSet.add): remove unused addmod()
+ method.
+
+Sun Feb 8 01:19:57 2004 Matthias Clasen <maclas@gmx.de>
+
+ * jhbuild/modtypes/mozilla.py: Import os, for os.path.join.
+
+2004-02-07 James Henstridge <james@daa.com.au>
+
+ * jhbuild/utils/cvs.py (login): same here.
+
+ * jhbuild/config.py (Config.setup_env): same here.
+
+ * jhbuild/commands/base.py: convert uses of string module
+ functions to string methods.
+
+2004-02-06 James Henstridge <james@daa.com.au>
+
+ * *.jhbuildrc: update sample jhbuildrc files to take into account
+ recent changes.
+
+ * jhbuild/frontends/gtkui.py (BUILD_SCRIPT): define BUILD_SCRIPT
+ in this module, so that "jhbuild gui" doesn't raise an uncaught
+ exception. Reported as bug #133630.
+
+ * jhbuild/commands/base.py (do_shell): fix up reference to
+ "user_shell" that broke in the reorg. This command should work
+ again now (fixes bug #133594).
+
+ * jhbuild/modtypes/tarball.py (Tarball.do_start): replace use of
+ string.find with a string method, and remove the import of the
+ string module.
+
+2004-02-05 Marco Pesenti Gritti <marco@gnome.org>
+
+ * modulesets/gnome26.modules:
+
+ Use mozilla 1.6
+
+2004-02-05 Johan Dahlin <johan@gnome.org>
+
+ * jhbuild/modtypes/tarball.py: Import os and string here
+
+ * jhbuild/modtypes/tarball.py (Tarball.do_configure): s/ret/res/
+
+2004-02-05 James Henstridge <james@daa.com.au>
+
+ Modified version of Paolo Borelli's patch from bug #123304:
+ * jhbuild/main.py (help): add to help output.
+
+ * jhbuild/commands/base.py (do_list): add -r flag.
+
+ * jhbuild/modtypes/tarball.py (Tarball.get_revision): return
+ package version.
+
+ * jhbuild/modtypes/base.py (Package.get_revision): function to get
+ version/revision of package.
+ (CVSModule.get_revision): return CVS revision/branch tag.
+
+2004-02-05 James Henstridge <james@daa.com.au>
+
+ * modulesets/freedesktop.modules (hal): applied patch from Thom
+ May to build freedesktop.org HAL (bug #133314).
+ (icon-slicer): another patch from Thom (bug #133430).
+
+ * *: merge the jhbuild-ng branch back to head. Things appear to
+ be functioning correctly now.
+
+2004-02-05 James Henstridge <james@daa.com.au>
+
+ * jhbuild/commands/sanitycheck.py (do_sanitycheck): new "jhbuild
+ sanitycheck" that can be used to check whether the build
+ environment is sane. At the moment, it just checks whether
+ various tools are available. Will be expanded later on.
+
+ * jhbuild/frontends/tinderbox.py (TinderboxBuildScript.execute):
+ change how we wrap the command being executed, so that it is more
+ like what the commands stdlib module does.
+
+2004-02-04 James Henstridge <james@daa.com.au>
+
+ * Makefile (install): use template to create ~/bin/jhbuild.
+
+ * jhbuild.in: template for the script installed in ~/bin.
+
+2004-02-03 James Henstridge <james@daa.com.au>
+
+ * jhbuild/frontends/tinderbox.py
+ (TinderboxBuildScript.end_module): flush the index.html file
+ descriptor after writing each module's status.
+ (TinderboxBuildScript.end_build): add a final line to the
+ index.html table, giving the finish time.
+ (TinderboxBuildScript.start_build): add some information about the
+ build platform before the build results.
+ (TinderboxBuildScript.end_build): list failed modules at end of page.
+
+ * jhbuild/config.py, jhbuild/defaults.jhbuildrc: add
+ tinderbox_outputdir config key.
+
+ * jhbuild/commands/tinderbox.py (do_tinderbox): add a tinderbox
+ command.
+
+ * jhbuild/frontends/tinderbox.py: new, non-interactive buildscript
+ that writes all the results to files.
+
+ * jhbuild/commands/base.py: add missing include of "os".
+
+ * jhbuild/config.py (Config.__init__): make sure we aren't trying
+ to set environment variables to None.
+
+ * jhbuild/frontends/gtkui.py: lots more cleanups to get it to work
+ correctly, and changes to make it look less like C. The "jhbuild
+ gui" command now starts again.
+
+ * jhbuild/frontends/gtkui.py: rename from gtk.py -- was causing
+ problems with imports of the toplevel gtk module ...
+ (get_glade_filename): fix to work with reorganisation.
+ (GtkBuildScript.build): don't override this function, instead use
+ the hooks now provided by the base BuildScript class.
+
+ * jhbuild/commands/gui.py (do_gui): some small fixes.
+
+ * Makefile (install): modify rule used to create jhbuild wrapper
+ script.
+
+ * jhbuild/commands/bootstrap.py (Bootstrap.build): find patches in
+ the patches/ subdirectory now.
+
+ * *.patch: move to a patches/ subdirectory, to keep things neat.
+
+ * jhbuild.py: replace jhbuild.py with a simple script that tells
+ people to rerun "make install".
+
+ * *.py: remove old jhbuild files.
+
+ * *: branch the rest of the module (except for moduleset
+ definitions).
+
+2004-02-03 James Henstridge <james@daa.com.au>
+
+ * jhbuild/config.py (_known_keys): same here.
+
+ * jhbuild/defaults.jhbuildrc (makeargs): add makeargs.
+
+ * jhbuild/modtypes/tarball.py: s/setAction/set_action/
+
+ * jhbuild/modtypes/mozilla.py: s/setAction/set_action/
+
+ * jhbuild/modtypes/base.py: s/setAction/set_action/
+
+ * jhbuild/main.py (main): remove BuildScript selection code from
+ main function.
+
+ * jhbuild/commands/gui.py (do_gui): same here.
+
+ * jhbuild/commands/base.py: use
+ jhbuild.frontends.get_buildscript() to create the buildscript.
+
+ * jhbuild/frontends/__init__.py (get_buildscript): function to
+ load up the appropriate buildscript.
+
+ * jhbuild/config.py (_known_keys): add a "buildscript" config
+ value to specify which buildscript is to be used.
+
+ * jhbuild/frontends/buildscript.py: abstract base class for
+ buildscripts.
+
+ * jhbuild/moduleset.py: remove unnused import of string module.
+
+ * jhbuild/commands/bootstrap.py (do_bootstrap): same here.
+ (bootstraps): remove uses of the string module.
+
+ * jhbuild/commands/base.py: remove interact function argument from
+ all commands.
+
+ * jhbuild/main.py (main): if --no-interact is passed, just set the
+ config value, rather than passing it to the subcommand. The
+ subcommand is already being passed the config object, so there
+ should be no problem.
+
+ * jhbuild/config.py (_known_keys): make "interact" a config value,
+ rather than passing it around separately everywhere.
+
+ * jhbuild/modtypes/tarball.py (Tarball.do_configure): honour
+ use_lib64 setting.
+
+ * jhbuild/main.py: add the remainder of jhbuild.py to this file.
+
+ * jhbuild/commands/bootstrap.py (do_bootstrap): move bootstrap
+ code into commands subpackage.
+ (Bootstrap.build): if use_lib64 is true, pass --libdir when
+ configuring bootstrap packages.
+
+ * jhbuild/commands/__init__.py:
+ * jhbuild/commands/base.py: move implementations of commands here.
+
+ * jhbuild/config.py (Config.setup_env): add environment setup code
+ to the config module.
+
+ * jhbuild/modtypes/mozilla.py (MozillaModule.do_configure): ditto.
+
+ * jhbuild/modtypes/base.py (CVSModule.do_configure): if use_lib64
+ is set, then pass --libdir when configuring the package.
+
+ * jhbuild/config.py, jhbuild/defaults.jhbuildrc: config file
+ parsing.
+
+2004-02-02 James Henstridge <james@daa.com.au>
+
+ * jhbuild/utils/__init__.py:
+ * jhbuild/utils/cvs.py:
+ * jhbuild/utils/httpcache.py: various utility modules, which could
+ be useful elsewhere.
+
+ * jhbuild/moduleset.py: the remainder of module.py -- only
+ contains the ModuleSet class, and the skeleton XML module file
+ reader.
+
+ * jhbuild/modtypes/__init__.py:
+ * jhbuild/modtypes/base.py:
+ * jhbuild/modtypes/tarball.py:
+ * jhbuild/modtypes/mozilla.py: refactor module type code so that
+ it is easy to add new types of modules to jhbuild (rather than
+ having to edit a monolithic module.py file.
+
+ * jhbuild/__init__.py: start refactoring jhbuild.
+
+2004-02-01 Sri Ramkrishna,,, <sri@aracnet.com>
+
+ * modulesets/gnome26.modules:added epiphany-extensions and
+ and added it to default meta-gnome-desktop
+
+
+2004-02-01 Anders Carlsson <andersca@gnome.org>
+
+ * modulesets/gnome26.modules: Planner depends on libgsf.
+
+2004-01-19 Fernando Herrera <fherrera@onirica.com>
+
+ * libtool-1.3.5-mktemp.patch: update so it can be applied to
+ libtool-1.5.2
+
+2004-01-28 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome26.modules (regexxer): add back -- it is in 5th
+ toe, so may as well be here. Add dependencies on gconfmm and
+ gnome-vfsmm, as reported in bug 131497.
+
+ * Makefile (install): update target so that the created shell
+ script exec's python instead of just running it. Results in one
+ less process.
+
+ * terminal_buildscript.py (TerminalBuildScript.handle_error): if
+ we can't change to the build dir when the user chooses to start a
+ shell, change to the checkout root. Fixes bug #117406.
+
+ * modulesets/gnome26.modules (gtk+): depend on shared-mime-info
+ (bug #127319).
+ (gtksourceview): depend on libxml2 and libgnomeprint (bug #124198).
+
+ * bootstrap.py (automake-1.8): update to 1.8.2.
+ (audiofile): update the version to 0.2.5 (fixes bug #131915).
+ (libtool): update to 1.5.2.
+
+ * module.py (parse_module_set): use httpcache so we can load
+ module sets via HTTP.
+ (read_module_set): if the moduleset config item contains a slash,
+ assume that it is a URI. Otherwise, look for it in the old
+ location.
+
+ * httpcache.py: new file that implements a simple web cache.
+
+2004-01-24 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome26.modules: Remove a lot of cruft that
+ never should have been here in the first place. mcs, mono,
+ gtk-sharp, gtkglarea, regexxer. Mono and mcs had no chance
+ of compiling at all, and requires mono being installed
+ anyway so why compile it from scratch?
+
+2004-01-20 Xavier Ordoquy <xordoquy@wanadoo.fr>
+
+ * modulesets/gnome26.modules: sodipodi depends on libgnomeprintui
+ and not libgnomeprintui-2.0 that has been removed.
+
+2004-01-19 Jon K Hellan <hellan@acm.org>
+
+ * modulesets/gnome26.modules: Fetch libxklavier from freedesktop
+ cvs, not gnome.
+
+2004-01-18 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome26.modules: Remove fontilus since that has
+ been integrated into the control-center.
+
+2004-01-18 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome24.modules: Remove libgnomeprint[ui]-2.0 since
+ nothing depends on it.
+ * modulesets/gnome26.modules: Same here. Also fetch libxklavier
+ from CVS instead of using a tarball.
+
+2004-01-17 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome24.modules: Same as below.
+
+2004-01-17 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome26.modules: Remove gael for now.
+ Remove dia-newcanvas too since gael was the only user.
+
+2004-01-17 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/freedesktop.modules: Add dep on CompositeExt to
+ xserver to make it build on a fresh checkout.
+
+2004-01-16 Kjartan Maraas <kmaraas@gnome.org>
+
+ * bootstrap.py: Update audiofile to 0.2.5.
+
+2004-01-14 Jeroen Zwartepoorte <jeroen@xs4all.nl>
+
+ * modulesets/gnome26.modules: Removed separate acme module since it's now
+ part of gnome-control-center.
+
+2004-01-12 James Henstridge <james@daa.com.au>
+
+ * bootstrap.py (automake-1.8): update to 1.8.1.
+
+2004-01-09 Jon K Hellan <hellan@acm.org>
+
+ * modulesets/gnome26.modules: Added libxklavier dependency for
+ gnome-applets. http://bugzilla.gnome.org/show_bug.cgi?id=130972.
+
+2004-01-08 Sri Ramkrishna <sri@aracnet.com>
+
+ * modulesets/gnome26.modules: added gst-plugin dependency for acme
+ fixes bug #130865
+
+2004-01-08 Christophe Fergeau <teuf@gnome.org>
+
+ * modulesets/gnome22.modules
+ * modulesets/gnome24.modules
+ * modulesets/gnome26.modules: removed gnet dependency for gnomeicu
+
+Thu Jan 8 16:22:01 2004 Jonathan Blandford <jrb@gnome.org>
+
+ * modulesets/gnome26.modules: dependency on shared-mime-info.
+
+Wed Jan 7 13:45:34 2004 Jonathan Blandford <jrb@gnome.org>
+
+ * modulesets/gnome26.modules: I was convinced by Alex to merge to
+ HEAD. MIME_REWRITE branch is no more.
+
+2004-01-08 Luis Villa <louie@ximian.com>
+
+ * modulsets/gnome26.modules: update to xchat 2.0.7
+
+Wed Jan 7 03:18:27 2004 Jonathan Blandford <jrb@gnome.org>
+
+ * modulesets/gnome26.modules: move to the MIME_REWRITE branch
+
+2004-01-05 Jonathan Blandford <jrb@redhat.com>
+
+ * modulesets/freedesktop.modules: add shared-mime-info
+
+2003-12-30 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * modulesets/gnome26.modules: update scrollkeeper version to 0.3.14,
+ which fixes the hardcoding of ${prefix}/var/log/scrollkeeper.log
+ as the logfile
+
+2003-12-22 Alex Duggan <aldug@astrolinux.com>
+
+ * modulesets/gnome26.modules: Removed duplicate gtkhtml dependency
+ for evolution
+
+2003-12-22 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * modulesets/gnome26.modules: Moved GStreamer CVS to freedesktop
+
+2003-12-19 Murray Cumming <murrayc@usa.net>
+
+ * modulesets/gnome26.modules: libxml++ has moved to the GNOME cvs.
+
+2003-12-17 James Henstridge <james@daa.com.au>
+
+ * bootstrap.py (bootstraps): change back to getting libtool from
+ gnu.org, since it is up again. Update Autoconf to 2.59,
+ Automake-1.7 to 1.7.9 and add Automake-1.8.
+
+2003-12-14 James Henstridge <james@daa.com.au>
+
+ * modulesets/freedesktop.modules: fix cairo's dependencies.
+
+2003-12-09 Alex Duggan <aldug@astrolinux.com>
+
+ * modulesets/gnome26.modules: remove linc
+
+2003-12-08 Murray Cumming <murrayc@usa.net>
+
+ * modulesets/gnome26.modules: Replaced mrproject and libmrproject
+ by planner.
+
+ * modulesets/gnome24.modules: ditto
+
+2003-12-08 Murray Cumming <murrayc@usa.net>
+
+ * modulesets/gnome26.modules: use HEAD branch of glade.
+
+2003-12-07 Murray Cumming <murrayc@usa.net>
+
+ * modulesets/gnome26.modules: USE head branch of gnomemeeting,
+ though I would be surprised if anybody can build the dependencies
+ for any branch.
+
+2003-12-05 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: use gnome-2-4 branch of libbonoboui.
+
+2003-12-04 Alex Graveley <orphennui@yahoo.com>
+
+ * modulesets/gnome26.modules: Add gnome-keyring, and make
+ libgnomeui depend on it.
+
+2003-12-04 Jon K Hellan <hellan@acm.org>
+
+ * modulesets/gnome26.modules: gnumeric depends on libgnomeprintui
+
+ * modulesets/gnome24.modules: ditto
+
+2003-12-02 Rodrigo Moya <rodrigo@gnome-db.org>
+
+ * modulesets/gnome2?.modules: made all use mergeant 0.12.x, HEAD
+ is just not ready for anything.
+
+2003-12-01 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: use gnome-2-4 branch of libbonobo.
+
+2003-11-21 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: use gnome-2-4 branch of libwnck.
+
+2003-11-20 Mark Finlay <sisobATtuxfamilyDOTorg>
+
+ * modulesets/freedesktop.modules:
+ Add the X composite Manager and deps. Transparencies! yum
+ xcompmgr still needs to be installed manually tho ala
+ http://www.freedesktop.org/Software/XserverInstallGuide
+
+2003-11-20 David Bordoley <bordoley@msu.edu>
+
+ *modulesets/gnome26.modules: Add OpenApplet.
+
+2003-11-13 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: gnome-session and gnome-desktop: use
+ gnome-2-4.
+
+2003-11-11 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome26.modules: get libxklavier from tarball in the
+ gnome26 moduleset at author's request.
+
+2003-11-10 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: gail, glade, file-roller, gok,
+ gnopernicus: use gnome-2-4.
+
+2003-11-07 Murray Cumming <murrayc@usa.net>
+
+ * modulessets/gnome26.modules: Removed duplicate procman which had
+ a false dependency on gal. The other one seems to be OK.libgtop:
+ Use HEAD, needed by procman.
+
+ * Renamed anjuta2 to scaffold and added anjuta.
+
+2003-11-06 James Henstridge <james@daa.com.au>
+
+ * modulesets/freedesktop.modules (cairo): depend on xrender and
+ not Xft.
+
+2003-11-05 Johan Dahlin <johan@gnome.org>
+
+ * jhbuild.py (read_config_file): Nicer error message when there is
+ no jhbuildrc.
+
+2003-11-05 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome26.modules (libxklavier): use the
+ freedesktop.modules version.
+
+ * modulesets/freedesktop.modules (libxklavier): add here, checking
+ out from freedesktop.org CVS.
+
+2003-11-05 Johan Dahlin <johan@gnome.org>
+
+ * modulesets/freedesktop.modules: Add support for all libs on
+ xlibs.freedesktop.org and xserver. Also reorganize the file a bit.
+
+2003-11-04 Johan Dahlin <johan@gnome.org>
+
+ * cvs.py (login): Allow empty newlines in .cvspass
+
+2003-11-04 Murray Cumming <murrayc@usa.net>
+
+ * modulesets/gnome26.modules: Removed gal dependency from gtkhtml,
+ because it does not seem to need it, which is nice because gal does
+ not build with GTK+ 2.3.
+
+Fri Oct 31 18:52:52 2003 Jonathan Blandford <jrb@gnome.org>
+
+ * jhbuild.py (addpath): add XDG_DATA_DIRS to the list of
+ environment variables.
+
+Fri Oct 31 18:09:41 2003 Jonathan Blandford <jrb@gnome.org>
+
+ * modulesets/gnome26.modules: change libgda/libgnomedb to be built
+ against HEAD as that's what mergeant requires.
+
+ * modulesets/gnome26.modules: remove monkey-media
+
+ * modulesets/gnome26.modules: remove drwright.
+
+Fri Oct 31 13:22:24 2003 Jonathan Blandford <jrb@gnome.org>
+
+ * modulesets/gnome26.modules: use gstreamer HEAD as gnome-media
+ now depends on it.
+
+2003-10-30 Murray Cumming <murrayc@usa.net>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branches for
+ gconfmm, libglademm, libgnomemm, libgnomeuimm.
+
+2003-10-28 Jody Goldberg <jody@gnome.org>
+
+ * modulesets/gnome26.modules : add libxklavier for and to
+ gnome-control-center.
+
+2003-10-24 James Henstridge <james@daa.com.au>
+
+ * sample.jhbuildrc (moduleset): same here.
+
+ * vbs-head.jhbuildrc (moduleset): switch to gnome 2.6.
+
+ * bootstrap.py (bootstraps): temporarily point it somewhere else
+ for libtool-1.5.tar.gz
+
+2003-10-22 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: use gnome-2-4 branch of gtkhtml2.
+
+2003-10-21 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: bug-buddy, libgtop, procman, gdm2,
+ gucharmap, gtksourceview, gpdf updated revision to gnome-2-4;
+ removed duplicate procman; changed dependency for sodipodi from
+ libgnomeprintui-2.0 to libgnomeprintui; use mozilla 1.5.
+
+2003-10-21 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome26.modules (acme): remove "gob" dependency.
+
+ * modulesets/gnome24.modules: same here.
+ (acme): remove "gob" dependency.
+
+ * modulesets/gnome26.modules: replace freedesktop modules with a
+ directive to include freedesktop.modules.
+
+ * modulesets/freedesktop.modules: move all the freedesktop stuff
+ out of gnome26.modules to here.
+
+ * module.py (read_module_set): don't error out if a default cvs
+ root isn't set in the modules file, unless some module tries to
+ use the default root.
+
+2003-10-20 Marco Pesenti Gritti <marco@gnome.org>
+
+ * modulesets/gnome26.modules:
+
+ Use mozilla 1.5
+
+2003-10-17 Will LaShell <will@lashell.net>
+ * modulesets/gnome24.modules: add camorama tarball package
+ * modulesets/gnome26.modules: add camorama tarball package
+
+2003-10-14 Will LaShell <will@lashell.net>
+ * modulesets/gnome24.modules: update xchat version to 2.0.5
+ * modulesets/gnome26.modules: update xchat version to 2.0.5
+
+2003-10-14 Will LaShell <will@lashell.net>
+
+ * bootstrap.py: missed a character change in the audiofile update
+
+2003-10-14 James Henstridge <james@daa.com.au>
+
+ * module.py (read_module_set): add support for an <include>
+ element.
+
+2003-10-13 Will LaShell <will@lashell.net>
+
+ * bootstrap.py: update audiofile-2.3 to 2.4
+
+ * bootstrap.py: update url to Michael Pruett's site for new version
+
+2003-10-13 Jens Finke <jens@triq.net>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branch of eog.
+ Depend on libgnomeprintui not only libgnomeprint.
+
+Mon Oct 13 13:36:54 2003 Jonathan Blandford <jrb@redhat.com>
+
+ * modulesets/gnome26.modules: fix a broken dependency.
+
+2003-10-12 James Henstridge <james@daa.com.au>
+
+ * bootstrap.py (bootstraps): update automake-1.7 to 1.7.8
+ (Bootstrap.build): support bootstrapping from .bz2 files.
+ (bootstraps): update Python in bootstraps from 2.2.2 to 2.3.2.
+
+2003-10-10 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: use gnome-2-4 revision of metacity.
+
+2003-10-08 James Henstridge <james@daa.com.au>
+
+ * jamesh.jhbuildrc: override cairo.freedesktop.org CVS root for my
+ config file.
+
+ * modulesets/gnome26.modules (cairo): same here.
+
+ * modulesets/gnome24.modules (cairo): change from keithp CVS to
+ freedesktop CVS.
+
+2003-10-07 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome26.modules: same changes here.
+
+ * modulesets/gnome24.modules (gcalctool): depends on scrollkeeper
+ (bug #117742).
+ (gnome-panel): move scrollkeeper dep from gnome-applets (bug #117890).
+
+ * bootstrap.py (bootstraps): update automake-1.7 to version 1.7.7.
+
+ * module.py (MozillaModule.do_checkout): redo checkout of mozilla
+ if client.mk sticky tag is wrong.
+
+ * cvs.py (check_sticky_tag): simple program to find the sticky tag
+ for a file.
+
+ * module.py (MozillaModule.checkout): use the code in the cvs
+ module to construct the CVS command line to checkout
+ mozilla/client.mk.
+ (MozillaModule.checkout): rather than exiting if you can't
+ checkout mozilla/client.mk, just return the error result code,
+ which do_checkout() should be able to handle correctly.
+
+ * terminal_buildscript.py (TerminalBuildScript.execute): print the
+ command that is about to be executed, like it did before.
+
+ * module.py (MozillaModule.do_checkout): construct the path
+ properly, so that it checks for Makefile.in in the mozilla
+ directory.
+
+2003-10-06 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome26.modules (mozilla): same here.
+
+ * modulesets/gnome24.modules (mozilla): change attribute name.
+
+ * module.py (read_module_set): s/branch/revision/ for
+ <mozillamodule> elements.
+ (MozillaModule.__init__): s/branch/revision/ here too for
+ completeness.
+
+2003-10-02 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome26.modules: readd dbus, now that hp has fixed
+ the CVS root.
+
+2003-10-01 Marco Pesenti Gritti <marco@gnome.org>
+
+ * gtk_buildscript.py:
+ * jhbuild.glade:
+ * jhbuild.py:
+
+ Add a "Do not build" option to the gui.
+
+2003-10-01 Murray Cumming <murrayc@usa.net>
+
+ * modulesets/gnome26.modules: commented-out dbus because jamesh
+ thinks that the dbus anon cvs needs fixing and it'll cause problems
+ for people who have used this when it is fixed.
+
+2003-10-01 Murray Cumming <murrayc@usa.net>
+
+ * modulesets/gnome26.modules: Added dbus.
+
+2003-10-01 Murray Cumming <murrayc@usa.net>
+
+ * modulesets/gnome26.modules: meta-gnome-c++: Added libgdamm and
+ libgnomeprint*mm.
+
+2003-09-30 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branch of ORBit2.
+
+Tue Sep 30 14:31:06 2003 Jonathan Blandford <jrb@redhat.com>
+
+ * modulesets/gnome26.modules: move to glib/pango/gtk+-HEAD.
+
+2003-09-29 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branch of gnome-speech.
+
+2003-09-29 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: Don't use gnome-2-4 branch for libbonoboui.
+
+2003-09-29 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branches of libgnomeui and
+ gconf.
+
+2003-09-29 Murray Cumming <murrayc@usa.net>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branches of
+ libgnomeprint*.
+
+2003-09-29 Anders Carlsson <andersca@gnome.org>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branches of libgnome:
+
+2003-09-27 Seth Nickell <seth@gnome.org>
+
+ * Makefile:
+ * jhbuild.desktop:
+
+ Install a .desktop file for the GUI mode.
+
+ * gtk_buildscript.py:
+
+ Require GConf.
+
+2003-09-26 Marco Pesenti Gritti <marco@gnome.org>
+
+ * gtk_buildscript.py:
+
+ Fix jhbuild gui to work also from outside jhbuild dir
+
+2003-09-24 James Henstridge <james@daa.com.au>
+
+ * module.py (user_shell): define this here, so that "jhbuild
+ shell" still works.
+
+2003-09-23 Frederic Crozat <fcrozat@mandrakesoft.com>
+
+ * modulesets/gnome22.modules:
+ * modulesets/gnome26.modules:
+ Oops, I forgot thoses modules.
+
+2003-09-23 Frederic Crozat <fcrozat@mandrakesoft.com>
+
+ * module.py:
+ * modulesets/gnome24.modules:
+ Fix options given to gstreamer/gst-plugins autogen.sh
+
+2003-09-22 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branch of gnome-terminal.
+
+2003-09-22 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome26.modules: same here.
+
+ * modulesets/gnome24.modules: same here.
+
+ * modulesets/gnome22.modules: Xft is under the /cvs/xlibs cvs root
+ now.
+
+2003-09-22 Seth Nickell <seth@gnome.org>
+
+ Add a GTK interface mode for jhbuild: "jhbuild gui"
+
+ * module.py:
+ * buildscript.py:
+ * terminal_buildscript.py:
+
+ Split BuildScript class into a separate module, containing
+ the basic logic for doing builds. Specific output commands
+ are refactored into terminal_buildscript.py. Also change
+ message method to the closely related setAction, which is
+ needed for doing good GUI output.
+
+ * gtk_buildscript.py:
+ * jhbuild.glade:
+
+ A buildscript flavour that displays using GTK instead.
+
+ * jhbuild.py:
+
+ Add the new gui mode, and add instantiation of different
+ buildscripts depending on whether you're in gui mode or
+ not. The idea is that eventually gui could be a flag not
+ a mode and the different commands would still work on it.
+
+2003-09-21 Anders Carlsson <andersca@gnome.org>
+
+ * modulesets/gnome26.modules: Update cvs roots.
+
+2003-09-21 James Henstridge <james@daa.com.au>
+
+ * changecvsroot.py (changecvsroot): short script that might be
+ helpful for some people.
+
+ * modulesets/gnome22.modules: similar changes here.
+
+ * modulesets/gnome24.modules: add some cvs roots.
+ (fontconfig): use fredesktop.org cvsroot.
+ (Render): same here.
+ (Xrender): same here.
+
+2003-09-19 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branch of gcalctool.
+
+2003-09-18 Murray Cumming <murrayc@usa.net>
+
+ * modulesets/gnome26.modules: Use the gtkmm and glibmm cvs
+ modules for 2.4.
+
+2003-09-18 Anders Carlsson <andersca@gnome.org>
+
+ * modulesets/gnome26.modules: Add gnome26 moduleset.
+
+2003-09-17 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branch of gnome-media.
+
+2003-09-17 James Henstridge <james@daa.com.au>
+
+ * module.py (_isxterm): same here.
+
+ * bootstrap.py (_isxterm): rxvt can do xterm title escapes.
+
+2003-09-15 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: Really use gnome-2-4 branch of gedit (oops);
+ Use gnome-2-4 branch of gnome-panel and gnome-applets.
+
+2003-09-15 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branch of gedit
+
+2003-09-12 Alex Duggan <aldug@astrolinux.com>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branch of gnome-utils
+
+2003-09-12 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branch of gnome-vfs, librsvg,
+ eel, and nautilus.
+
+2003-09-11 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branch of gnome-mime-data
+
+2003-09-11 Jeroen Zwartepoorte <jeroen@xs4all.nl>
+
+ * modulesets/gnome24.modules: Revert change by Bryan Forbes to make
+ glimmer use HEAD instead of the dead new-gtksourceview branch.
+
+2003-09-09 Calum Benson <calum.benson@sun.com>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branch of
+ for gnome-themes
+
+Mon Sep 8 16:35:26 2003 Jonathan Blandford <jrb@redhat.com>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branch
+
+2003-09-07 James Henstridge <james@daa.com.au>
+
+ * module.py (read_module_set): allow user to override branch tag
+ and autogen args for mozilla, like they can for other CVS modules.
+
+2003-09-06 Anders Carlsson <andersca@gnome.org>
+
+ * modulesets/gnome24.modules: Use gnome-2-4 branch
+ for gconf-editor.
+
+2003-09-05 Bryan Forbes <mxpxfifws@yahoo.com>
+
+ * modulesets/gnome22.modules:
+ * modulesets/gnome24.modules: added gnome-themes-extras, libgda, libgnomedb,
+ mergeant, gtranslator, gnome-spell, libgnomecups, gnome-cups-manager,
+ gnome-vfsmm, libxml++, bakery, bakery_gnomeui, gtk-sharp; added dependencies
+ and autogenargs for gnumeric and upped version of xchat, removed
+ monkey-media dependency for rhythmbox (22 only).
+ * modulesets/gnome24.modules (only): added cairo-gtk-engine; changed
+ revision of gnome-games, nautilus-cd-burner, yelp, and acme to gnome-2-4;
+ changed revision of gnomemeeting to gnome_2_4; changed revision of
+ evolution, gtkhtml, and gal to evolution-1-4-branch; changed revision of
+ glimmer to new-gtksourceview.
+
+2003-09-05 Jeroen Zwartepoorte <jeroen@xs4all.nl>
+
+ * modulesets/gnome24.modules: Glimmer "new-gtksourceview" branch has
+ been joined with HEAD.
+
+2003-09-02 Mark Finlay<sisob@tuxfamily.org>
+
+ * modulesets/gnome24.modules: Adding sound-juicer and gnome-network
+
+2003-08-31 Alex Duggan <aldug@astrolinux.com>
+
+ * modulesets/gnome24.modules: removed gal dep from gnumeric
+
+2003-08-30 Mark Finlay<sisob@tuxfamily.org>
+
+ * modulesets/gnome24.modules: Adding gst-plugins as a dep of gnome-media
+
+2003-08-28 Marco Pesenti Gritti <marco@gnome.org>
+
+ * modulesets/gnome24.modules:
+
+ Change epiphany branch to gnome-2-4
+
+Mon Aug 25 14:00:00 2003 Jonathan Blandford <jrb@redhat.com>
+
+ * modulesets/gnome24.modules: revert it back to TAG, as epiphany
+ doesn't build with 1.4.1pre yet. grr... BRANCH doesn't build
+ either with gcc 3.3. When 1.4.1 comes out we can build against
+ that.
+
+Mon Aug 25 10:57:13 2003 Jonathan Blandford <jrb@redhat.com>
+
+ * modulesets/gnome24.modules: change MOZILLA_1_4_TAG to
+ MOZILLA_1_4_BRANCH as the TAGGED version doesn't build with recent
+ compilers.
+
+ * modulesets/gnome24.modules: libsoup-2-0-branch
+
+2003-08-24 Andrew Sobala <aes@gnome.org>
+
+ * modulesets/gnome24.modules: added esound dep to libgnome
+
+2003-08-24 Mark Finlay<sisob@tuxfamily.org>
+
+ * modulesets/gnome24.modules: Added gossip
+ and loudmouth. Need more deps though.
+
+2003-08-23 Mark Finlay <sisob@tuxfamily.org>
+
+ * modulesets/gnome24.modules: changed gnome2-user-docs to
+ gnome-user-docs
+
+2003-08-23 Mark Finlay <sisob@tuxfamily.org>
+
+ * modulesets/gnome24.modules:
+ gnome-media, gnome-games, gnome2-user-docs,
+ gnome-system-monitor(procman) added to meta-gnome-desktop;
+ gconf-editor and gnome-utils higher up the deps list;
+ Removed monkey-media rhythmbox dependency.
+
+ * README: /r/--no-cvs/--no-network : bug #113652;
+ Update bootstap list; Add a "Starting Gnome" section;
+ Update/clarify one or two things.
+
+ * sample.jhbuildrc: Removing whitespace from commented out options:
+ fix for #113652
+
+ TODO: Finish deps for gnome2-user-docs and gnome-system-tools
+
+2003-08-20 Mark Finlay <sisob@tuxfamily.org>
+
+ * modulesets/gnome24.modules:
+
+ Added gconf-editor and gnome-utils to meta-gnome-desktop
+
+2003-08-19 Marco Pesenti Gritti <marco@.gnome.org>
+
+ * modulesets/gnome24.modules:
+
+ Use MOZILLA_1_4_RELEASE branch for mozilla to avoid api problems
+
+2003-08-14 Jaka Mocnik <jaka@gnu.org>
+
+ * modulesets/gnome24.modules: check out ggv from gnome-2-4 branch.
+
+2003-08-10 Andrew Sobala <aes@gnome.org>
+
+ * modulesets/gnome24.modules: totem is not in GNOME 2.4
+
+2003-08-05 Frederic Crozat <fcrozat@mandrakesoft.com>
+
+ * modulesets/gnome24.modules: Update dep chain for libcroco.
+
+2003-07-31 Anders Carlsson <andersca@codefactory.se>
+
+ * modulesets/gnome24.modules: Update dep chain for cairo.
+
+2003-07-23 James Henstridge <james@daa.com.au>
+
+ * module.py (read_module_set): override module specific
+ autogenargs if specified in jhbuildrc.
+
+ * jhbuild.py (default_config): add an module_autogenargs option to
+ the config file.
+
+2003-07-19 Anders Carlsson <andersca@codefactory.se>
+
+ * modulesets/gnome24.modules: Xr now goes by the name cairo.
+
+2003-07-18 James Henstridge <james@daa.com.au>
+
+ * bootstrap.py (bootstraps): update bootstraps to automake-1.7.6.
+
+ * modulesets/gnome24.modules (totem): depend on gnome-desktop (bug
+ #117165).
+ (gok): depend on scrollkeeper (bug #114760).
+ (libgtcpsocket): depend on intltool (bug #114760).
+
+2003-07-17 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome24.modules: add gnome-hello (bug #117615).
+ (gnopernicus): depend on linc (bug #116766).
+
+2003-07-05 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome22.modules: and here.
+
+ * modulesets/gnome24.modules: gnome-session depends on esound.
+
+2003-07-05 Marco Pesenti Gritti <marco@it.gnome.org>
+
+ * module.py:
+
+ Add the ability to specify a mozilla branch.
+
+ * modulesets/gnome24.modules:
+
+ Use 1.4 mozilla branch.
+
+2003-07-04 Murray Cumming <murrayc@usa.net>
+
+ * modulesets/gnome24.modules (meta-gnome-desktop): Replaced
+ meta-gnome-accessibilty dependency with gnopernicus+gok because
+ meta-gnome-accssibility contains extra stuff that is not part of
+ GNOME 2.4.
+
+2003-07-02 Andrew Sobala <aes@gnome.org>
+
+ * modulesets/gnome24.modules: added nautilus-cd-burner
+
+2003-07-02 Andrew Sobala <aes@gnome.org>
+
+ * modulesets/gnome24.modules: fixed up GNOME 2.4 modules (Murray :P)
+
+2003-07-01 Murray Cumming <murrayc@usa.net>
+
+ * modulesets/gnome24.modules:
+ Added GNOME 2.4 new modules to meta-gnome-desktop dependencies,
+ some implicitly through other modules. I put epiphany and gnomemeeting
+ at the end because they are probably harder to build.
+ Actually it fails after zenity so I hope someone can fix it.
+
+2003-06-29 Mark Finlay <sisob@eircom.net>
+
+ * modulesets/gnome24.modules:
+ Adding the gstreamer version of totem.
+
+2003-06-27 Matthias Clasen <maclas@gmx.de>
+
+ * module.py (BuildScript.build): Respect --no-interact.
+
+ * jhbuild.py: Pass --no-interact down to build.build().
+
+2003-06-25 Bill Haneman <bill.haneman@gnome.org>
+
+ * modulesets/gnome24.modules:
+ Removed erroneous gnome-2-0-0 tag from gnome-mag
+ module.
+
+2003-06-11 Mark McLoughlin <mark@skynet.ie>
+
+ * jhbuild.py: add libdir to LD_LIBRARY_PATH when
+ it contains libdir already, but not as the first
+ in the list.
+
+ * modulesets/gnome24.modules:
+ libwnck depends on startup-notification.
+ gnome-desktop doesn't depend on libwnck, but gnome-panel
+ does.
+
+2003-06-24 Ian McKellar <yakk@yakk.net>
+
+ * cvs.py:
+ Fixed error reporting
+
+2003-06-24 Anders Carlsson <andersca@codefactory.se>
+
+ * modulesets/gnome24.modules:
+ Remove thinice, it's now in gnome-themes.
+
+2003-06-21 Anders Carlsson <andersca@codefactory.se>
+
+ * modulesets/gnome24.modules: ORBit2 now depends
+ on gnome-common.
+
+2003-06-16 Murray Cumming <murray@usa.net>
+
+ * modulesets/gnome24.modules: meta-gnome-desktop:
+ Removed gedit-plugins. It was never part of GNOME Desktop.
+
+2003-06-15 Anders Carlsson <andersca@codefactory.se>
+
+ * modulesets/gnome24.modules: Add drwright.
+
+2003-06-13 Jeroen Zwartepoorte <jeroen@xs4all.nl>
+
+ * modulesets/gnome24.modules: Add gpdf.
+
+2003-06-11 Anders Carlsson <andersca@codefactory.se>
+
+ * modulesets/gnome24.modules: Add Xr and friends.
+
+2003-05-29 Glynn Foster <glynn.foster@sun.com>
+
+ * modulesets/gnome24.modules: Give jhbuild some zen power!
+
+2003-05-25 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome22.modules: Fix rhythmbox and glimmer
+ so they build.
+
+2003-05-18 Andrew Sobala <aes@gnome.org>
+
+ * modulesets/gnome24.modules: Add nautilus dep from control-center
+
+2003-05-09 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome22.modules: Remove rhythmbox and monkey-media
+ add net-rhythmbox HEAD. Also remove gael. It doesn't build for
+ all people and it's been effectively dead for a long time now.
+ Also correct branches for libgnome, libgnomecanvas and libgnomeui.
+
+2003-05-08 Johan Dahlin <jdahlin@async.com.br>
+
+ * module.py (MozillaModule): More fixes, most important, don't do
+ checkout mozilla/client.mk every time and don't run a full
+ checkout, if we already have checkout the tree, use fast-update
+ instead.
+
+2003-05-07 Anders Carlsson <andersca@codefactory.se>
+
+ * modulesets/gnome24.modules: gtksourceview uses HEAD now
+
+2003-05-05 Johan Dahlin <jdahlin@async.com.br>
+
+ * bootstrap.py: python seems to be confused about __file__ when
+ doing os.chdir(), save the absolute path before calling os.chdir().
+ (Bootstrap.build): Use jhbuild_directory here.
+ (Bootstrap.build): Use .endswith instead of slicing.
+ (bootstraps): Simplify autoconf check
+ (_boldcode, _normal): Use commands.getoutput() here.
+
+2003-05-05 Johan Dahlin <jdahlin@async.com.br>
+
+ * module.py: Import check for xml.dom.minidom.
+ refactor get_mozilla_ver and put it under __init__
+ remove MozillaModule.do_install method, since it was on crack
+ Use .endswith instead of slicing in a couple of places
+ Add a few assertions
+ Make list comprehensions more readable
+ Strip text from raw_input()
+
+2003-05-05 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome24.modules: linc now requires the gnome-common
+ autogen.sh script, so mark it as a dependency (fixes bug #112205).
+
+2003-04-29 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome22.modules: Update XChat
+ * modulesets/gnome24.modules: Same.
+
+2003-04-23 James Henstridge <james@daa.com.au>
+
+ * jamesh.jhbuildrc (branches): set a custom branch to test things.
+
+ * module.py (read_module_set): if a branch is listed in the
+ branches dict, use it instead of the branch tag in the module set.
+
+ * jhbuild.py (read_config_file): backward compat for 'cvsroot'
+ setting was broken (key for gnome cvs is 'gnome.org'; not 'gnome').
+ (default_config): add a branches dictionary.
+
+ * jhbuild.py (do_update_one): add "jhbuild updateone" command
+ (suggested by bug #109617).
+
+ * modulesets/gnome24.modules: add evolution to this moduleset too.
+
+ * modulesets/moduleset.xsl: update this too.
+
+ * modulesets/moduleset.dtd: remove fcpackage element from DTD.
+
+ * module.py (FcPackage): remove specialised fcpackage build rules.
+ (read_module_set): get rid of parsing of <fcpackage> tags.
+
+ * modulesets/gnome22.modules: same here, but use the fc-2_2_branch
+ branch of fontconfig.
+
+ * modulesets/gnome24.modules: get fontconfig,etc from CVS.
+
+2003-04-22 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome1.modules: same here.
+
+ * modulesets/gnome24.modules: same here.
+
+ * modulesets/gnome22.modules: same here.
+
+ * modulesets/gnome20.modules: add cvs roots.
+
+ * jhbuild.py (*): fix up arguments to read_module_set.
+
+ * module.py (read_module_set): read a set of cvsroots from the XML
+ file that can be overriden from the jhbuildrc file.
+
+ * cvs.py (login): new function to perform a cvs checkout
+
+ * jhbuild.py (read_config_file): we now have a "cvsroots"
+ dictionary, mapping keys to cvs roots.
+
+2003-04-21 James Henstridge <james@daa.com.au>
+
+ * cvs.py (_scramble, _descramble): add functions to scramble and
+ descramble CVS passwords. Will be used to work around "cvs login"
+ needing user input.
+
+ * libtool-1.3.5-mktemp.patch: update to latest version from RH
+ packages, fixing a bug pointed out by Jeff.
+
+ * bootstrap.py (bootstraps): move up to libtool-1.5, which is
+ required to build fontconfig, etc from CVS. Also add RH's
+ ltmain-SED patch that patches over problems when people use old
+ libtool.m4 with new ltmain.sh.
+
+2003-04-21 Jens Finke <jens@triq.net>
+
+ * modulesets/gnome24.modules:
+ * modulesets/gnome22.modules: Added eel dep for eog.
+
+2003-04-21 Jon Svendsen <jon-sven@frisurf.no>
+
+ * modulesets/gnome20.modules:
+ * modulesets/gnome22.modules:
+ * modulesets/gnome24.modules: Added eog to meta-gnome-desktop in
+ 2.0, 2.2 and 2.4 modulesets (bug #108017).
+
+2003-04-17 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome22.modules: Make gtkhtml depend on gal.
+
+2003-04-14 Jeroen Zwartepoorte <jeroen@xs4all.nl>
+
+ * module.py: Remove some more runsocks mumbo jumbo.
+ * modulesets/gnome24.modules: gedit & glimmer now depend on
+ gtksourceview revision "toward-gedit-integration".
+
+2003-04-12 Mikael Hallendal <micke@codefactory.se>
+
+ * modulesets/gnome24.modules: Don't build bonobo-activation, moved
+ the deps from bonobo-activation to libbonobo to be safe.
+
+2003-04-11 Mikael Hallendal <micke@codefactory.se>
+
+ * cvs.py: Removed sun runsocks mumbo jumbo... :)
+
+2003-04-03 Bill Haneman <bill.haneman@sun.com>
+
+ * modulesets/gnome24.modules:
+ * modulesets/gnome22.modules:
+ remove redundant at-spi entries.
+
+2003-04-02 Biswapesh Chattopadhyay <biswapesh_chatterjee@tcscal.co.in>
+
+ * modulesets/gnome22.modules: Use gnome-2-2 branch for librsvg
+ * modulesets/gnome22.modules: Use gnome22branch for gnome-mime-data
+
+2003-04-02 Frederic Crozat <fcrozat@mandrakesoft.com>
+
+ * modulesets/gnome24.modules: libcroco is now a librsvg dependency
+
+2003-04-01 Frederic Crozat <fcrozat@mandrakesoft.com>
+
+ * modulesets/gnome24.modules: add galeon (was only in gnome22.modules)
+
+2003-04-01 Bill Haneman <bill.haneman@sun.com>
+
+ * modulesets/gnome24.modules: remove gnome-2-2 tag
+ for atk, gail, and at-spi;
+ (HEAD of these modules is currently gtk+-2.2-compatible).
+ * modulesets/gnome22.modules: change gnome-2-0 tag
+ on at-spi to gnome-2-2 tag.
+
+2003-03-31 Alex Duggan <aldug@astrolinux.com>
+
+ * modulesets/gnome22.modules: use gnome-2-2 branch for
+ for gnome-icon-theme, gnome-vfs, eel, nautilus
+
+2003-03-31 Mikael Hallendal <micke@codefactory.se>
+
+ * modulesets/gnome22.modules: use gnome-2-2 branch of Yelp
+
+Wed Mar 26 18:06:43 2003 Jonathan Blandford <jrb@redhat.com>
+
+ * modulesets/gnome24.modules: require gnome-2-2 version of gail.
+
+2003-03-20 Mikael Hallendal <micke@codefactory.se>
+
+ * modulesets/gnome22.modules: use revision gnome-2-2 of gail.
+
+2003-03-19 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome22.modules: This is the janitor. Please
+ clean up after yourself. Your mother does not work here.
+
+2003-03-17 Kjartan Maraas <kmaraas@gnome.org>
+
+ * modulesets/gnome22.modules: Added libgsf dep for eog.
+ Updated xchat tarball version.
+
+2003-03-07 Biswapesh Chattopadhyay <biswapesh_chatterjee@tcscal.co.in>
+
+ * modulesets/gnome22.modules: Added libzvt, anjuta, gtkhtml,
+ evolution, glade3. Updated anjuta2 dependency.
+ Added stable gnome-2-2 revisions.
+
+2003-03-07 Havoc Pennington <hp@pobox.com>
+
+ * modulesets/gnome22.modules: gconf stable is on gnome-2-2 branch
+
+2003-03-06 James Willcox <jwillcox@gnome.org>
+
+ * modulesets/gnome24.modules: Added the gedit-plugins module
+
+2003-03-05 Alex Duggan <aldug@astrolinux.com>
+
+ * modulesets/gnome24.modules: remove --with-widget=vte autogen
+ args from gnome-termainal, since it no longer supports libzvt and
+ requires vte
+
+2003-03-06 James Henstridge <james@daa.com.au>
+
+ * jhbuild.py (help): update help message to indicate that -s and
+ -t are valid for the "jhbuild update" command now.
+
+2003-03-05 James Henstridge <james@daa.com.au>
+
+ * module.py (_isxterm): set to true if the string "xterm" is found
+ anywhere in $TERM, rather than just if $TERM==xterm.
+
+ * jhbuild.py (do_update): take arguments similar to build and
+ buildone.
+
+ * modulesets/gnome24.modules: add new moduleset for gnome 2.4.
+
+ * modulesets/gnome*.modules: update to scrollkeeper-0.3.12.
+
+2003-03-02 James Henstridge <james@daa.com.au>
+
+ * bootstrap.py (automake-1.7): update to automake 1.7.3
+ (pkg-config): update to 0.15.0
+
+2003-02-25 Alex Duggan <aldug@astrolinux.com>
+
+ * modulesets/gnome22.modules: update libbonoboui to use
+ gnome-2-2 branch
+
+2003-02-22 Alex Duggan <aldug@astrolinux.com>
+
+ * modulesets/gnome22.modules: update ggv to use gnome-2-2 branch
+
+2003-02-20 Frederic Crozat <fcrozat@mandrakesoft.com>
+
+ * modulesets/gnome22.modules:
+ Updated vte to use gnome-2-2 branch.
+
+2003-02-19 Calum Benson <calum.benson@sun.com>
+
+ * modulesets/gnome22.modules:
+
+ Updated gnome-themes to use gnome-2-2 branch.
+
+2003-02-19 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome22.modules (gnome-session): fix typo in revision
+ name.
+ (gtkhtml2): move to gnome-2-2 branch.
+
+2003-02-17 Will LaShell <will@lashell.net>
+
+ * modulesets/gnome22.modules: Update following modules to
+ their 2.2 branches [ linc, ORBit2, gnome-session, eog ]
+
+2003-01-13 Alex Duggan <aldug@astrolinux.com>
+
+ * modulesets/gnome22.modules: update procman branch
+ to gnome-2-2
+
+2003-02-12 Marco Pesenti Gritti <marco@it.gnome.org>
+
+ * module.py: Add a MozillaModule class
+ * modulesets/gnome22.modules: Add epiphany and mozilla
+
+2003-02-12 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome22.modules (xchat): update to 2.0.0.
+ (gnet): check out the GNET_1_1 branch. Fixes bug 105589.
+ (gaim): add gaim, using patch from bug 105769.
+
+2003-02-11 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome22.modules: fix up dependencies of the xchat
+ module from Will's patch (bug 105766).
+
+2003-02-10 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome20.modules (pango): same.
+
+ * modulesets/gnome22.modules (pango): move the autogenargs from
+ gtk+.
+
+2003-02-09 James Henstridge <james@daa.com.au>
+
+ * modulesets/gnome22.modules (xchat): add xchat (as a tarball).
+ (gtk-engines-cleanice): add cleanice engine (fixes bug 104256).
+ (orbit-python): remove from modules list (fixes bug 104937).
+
+2003-02-06 Paolo Maggi <paolo.maggi@polito.it>
+
+ * modulesets/gnome22.modules: make gnome-themes depends on thinice2
+
+2003-02-05 Alex Duggan <aldug@astrolinux.com>
+
+ * modulesets/gnome22.modules: update control-center branch
+ to gnome-2-2
+
+2003-02-04 Alex Duggan <aldug@astrolinux.com>
+
+ * modulesets/gnome22.modules: remove libole2, use gal head
+
+2003-02-01 Alex Duggan <aldug@astrolinux.com>
+
+ * modulesets/gnome22.modules: make acme depend on libwnck
+
+2003-02-01 Alex Duggan <aldug@astrolinux.com>
+
+ * modulesets/gnome22.modules: use gnome-2-2 bug-buddy branch
+
+2003-02-01 Alex Duggan <aldug@astrolinux.com>
+
+ * modulesets/gnome22.modules: make anjuta2 depend on vte, not libzvt
+
+2003-01-29 James Henstridge <james@daa.com.au>
+
+ * modulesets/moduleset.xsl: simple XSL file to display module sets
+ as HTML.
+
+ * README: update minimum required python version to 2.0, to
+ reflect reality.
+
+ * modulesets/moduleset.dtd: dtd for module sets.
+
+ * modulesets/gnome*.modules: add module set files. Obsolete the
+ moduleinfo.py file.
+
+ * module.py (read_module_set): new function to load up a moduleset
+ from an XML file.
+
+2003-01-28 Alex Duggan <aldug@astrolinux.com>
+
+ * moduleinfo.py (gnome22): gnome-games branch gnome-2-2
+
+2003-01-28 Alex Duggan <aldug@astrolinux.com>
+
+ * moduleinfo.py (gnome22): gedit branch gnome-2-2
+
+2003-01-27 Glynn Foster <glynn.foster@sun.com>
+
+ * moduleinfo.py (gnome22): gnome-utils branch gnome-2-2
+
+2003-01-20 Havoc Pennington <hp@redhat.com>
+
+ * moduleinfo.py (gnome22): metacity branch gnome-2-2
+
+2003-01-26 Alex Duggan <aldug@astrolinux.com>
+
+ * moduleinfo.py (gnome22.gnome-applets): use gnome-2-2 branch
+
+2003-01-26 Alex Duggan <aldug@astrolinux.com>
+
+ * moduleinfo.py (gnome22.gnome-themes): make it depend on gtk-engines.
+ Fixes #104466
+
+2003-01-24 Alex Duggan <aldug@astrolinux.com>
+
+ * moduleinfo.py (gnome20.pan): add gnet dep to pan. Fixes #104358
+
+2003-01-23 Murray Cumming <murrayc@usa.net>
+
+ * moduleinfo.py (gnome22): Added gnome-media to meta-gnome-desktop..
+
+2003-01-23 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * moduleinfo.py (gnome20): Add gucharmap module.
+
+2003-01-23 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * moduleinfo.py: check out BRANCH-GSTREAMER-0_6 for gstreamer and
+ gst-plugins
+
+2003-01-23 Murray Cumming <murrayc@usa.net>
+
+ * moduleinfo.py (gnome22): Use gnome-2-2 branch of fileroller.
+
+2003-01-23 Murray Cumming <murrayc@usa.net>
+
+ * moduleinfo.py (gnome22): Don't build nautilus-gtkhmtml because
+ it is not part of GNOME 2.2.
+
+2003-01-22 Alex Duggan <aldug@astrolinux.com>
+
+ * moduleinfo.py (gnome22): Use 2.2 branches for libgnomeprint
+ and libgnomeprintui
+
+2003-01-21 Christian Meyer <chrisime@gnome.org>
+
+ * moduleinfo.py (gnome22): oops, forgot to add the correct file size.
+
+2003-01-21 Christian Meyer <chrisime@gnome.org>
+
+ * moduleinfo.py (gnome22): Updated to startupnotification 0.5.
+
+2003-01-21 Murray Cumming <murrayc@usa.net>
+
+ * moduleinfo.py (gnome22): Use gnome 2.2 branches for glib, pango,
+ gtk+, and atk+.
+
+2003-01-20 Alex Duggan <aldug@astrolinux.com>
+
+ * moduleinfo.py (gnome22.libwnck), (gnome22.gnome-terminal):
+ use the gnome-2-2 branch
+
+2003-01-19 Havoc Pennington <hp@redhat.com>
+
+ * moduleinfo.py: add support for gnomechat
+
+2003-01-13 Johan Dahlin <jdahlin@async.com.br>
+
+ * moduleinfo.py: Update URL for fontconfig
+
+2003-01-12 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (gnome22.glimmer): require libgnomeprint 2.2 now.
+
+ * vbs-head.jhbuildrc: similar changes here.
+
+ * sample.jhbuildrc: update sample config file for gnome22, and
+ only build 'meta-gnome-desktop' by default, rather than 'all'.
+
+ * module.py (Tarball.do_patch): if nobuild is set, go to
+ STATE_DONE on completion, rather than STATE_CONFIGURE.
+
+2003-01-10 Alex Duggan <aldug@gnome.org>
+
+ * moduleinfo.py (gnome22.gnome-panel): get gnome-2-2 branch
+
+2003-01-03 Paolo Maggi <maggi@athena.polito.it>
+
+ * moduleinfo.py (gnome20.gedit): get gnome-2-0 branch. Added
+ gedit to meta-gnome-desktop
+ (gnome22): added gedit module. Added gedit to meta-gnome-desktop
+
+2002-12-24 Murray Cumming <murrayc@usa.net>
+
+ * moduleinfo.py (gnome22): Replaced the gnome22 gnome-meta-desktop
+ metamodule with one that includes the new modules such as acme,
+ file-roller, gstreamer, and nautilus-media.
+
+2002-12-24 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (gnome22.fcpackage): add fcpackage to gnome22
+ module set.
+ (gnome22.pango): depend on fcpackage.
+
+ * module.py (FcPackage): add a special Package subclass for
+ building fcpackage.
+
+ * jhbuild.py (do_build): change the code that removes entries from
+ the module list so that it doesn't cause an exception if you
+ specify a module name that won't be built.
+
+2002-12-23 James Henstridge <james@daa.com.au>
+
+ * bootstrap.py (bootstraps): add my libtool -export-dynamic patch.
+
+2002-12-23 <chema@celorio.com>
+
+ * moduleinfo.py (gnome22): add intltool dependency to
+ libgnomeprint
+
+2002-12-22 Murray Cumming <murrayc@usa.net>
+
+ * moduleinfo.py (gnome22): Made gnome-desktop dependent on
+ gnome-themes because it is part of the Desktop release.
+
+2002-12-22 Murray CUmming <murrayc@usa.net>
+
+ * moduleinfo.py (gnome22): Added gnome-themes module, because
+ the Theme control panel complains at runtime about it not being
+ installed.
+
+2002-12-20 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * moduleinfo.py (gnome20): Add accessibility modules at-spi,
+ libgail-gnome, at-poke, gnome-mag, gok, gnome-speech, gnopernicus,
+ plus the MetaModule meta-gnome-accessibility.
+ (gnome22): Override modules at-spi, libgail-gnome, gnome-mag to
+ check out the HEAD branch.
+
+2002-12-19 Biswapesh Chattopadhyay <biswapesh_chatterjee@tcscal.co.in>
+ * jhbuild.py: Move True/False definitions up - fixes undefined
+ errors for Python version < 2.2.1
+
+2002-12-19 Murray Cumming <murrayc@usa.net>
+
+ * moduleinfo.py: Commented out the metatheme module because the
+ release team think it probably isn't useful anymore, and because its
+ Desktop Theme capplet is confusingly similar to the new 2.2 Theme
+ capplet.
+
+2002-12-17 James Henstridge <james@daa.com.au>
+
+ * jhbuild.py: define True and False if they aren't defined in
+ __builtins__. This gets it to work with slightly older Pythons
+ (still need to decide whether to replace the other stuff using new
+ features).
+
+2002-12-16 James Henstridge <james@daa.com.au>
+
+ * cvs.py (CVSRoot._login): take a pointer to the buildscript, and
+ use it to execute the cvs login command.
+
+ * moduleinfo.py (gnome20.gnome-vfs-extras): add.
+ (gnome22.gnome-media): require gstreamer.
+ (gnome20.gnome-media): get gnome-2-0 branch.
+
+ * jhbuild.py (do_dot): allow user to run "jhbuild dot" to print a
+ dot file that can be processed with graphviz to produce a nice
+ directed graph of what will be built.
+ (do_list): "jhbuild list" outputs list of modules that would be
+ built, in build order.
+
+ * module.py (ModuleSet.write_dot): function to write out a dot
+ file for use with graphviz.
+
+ * moduleinfo.py (gnome22): add fontilus and sodipodi (although
+ sodipodi doesn't seem to want to build yet ...)
+
+2002-12-14 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * bootstrap.py (_normal): Use 'tput sgr0' instead of 'tput rmso'
+ to fix bold uglyness, as already done in module.py.
+
+2002-12-14 James Henstridge <james@daa.com.au>
+
+ * module.py (CVSModule.do_build): allow going to 'configure' state
+ if build fails.
+
+ * bootstrap.py (bootstraps): update libtool to 1.4.3.
+
+ * moduleinfo.py (gnome22.glimmer): depend on libgnomeprint-2.0
+ (gnome22.startup-notification): add libsnot.
+ (gnome22.gnome-terminal): remove libzvt from list of deps.
+
+2002-12-13 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * moduleinfo.py (gnome22): add nautilus-media.
+
+2002-12-13 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * moduleinfo.py: Add new module for regexxer. (#99780)
+
+2002-12-12 James Henstridge <james@daa.com.au>
+
+ * module.py (CVSModule.do_configure): fix bug.
+
+ * bootstrap.py (bootstraps): update versions of bootstraps.
+ Autoconf up to 2.57, Automake-1.7 up to 1.7.2 and gettext up to
+ 0.11.5.
+
+ * moduleinfo.py (gnome2): add scrollkeeper as a dep of various
+ modules.
+ (gnome20.scrollkeeper): require intltool. scrollkeeper checks for
+ it, even though it distributes its own version of it.
+ (gnome20.devhelp): require libgsf (from bug #100177).
+
+ * bootstrap.py (bootstraps): remove scrollkeeper from list of
+ bootstraps.
+
+ * moduleinfo.py (gnome20.scrollkeeper): add scrollkeeper as a
+ Tarball type package, with libxml2 and libxslt as dependencies.
+
+ * module.py (Tarball): another Package type, pulling most of the
+ logic from bootstrap.py. Can fit into dependency chains with CVS
+ modules. Not being used yet.
+ (Tarball.do_install): add a little build stamp when install has
+ completed.
+ (Tarball.do_start): if jhbuild-build-stamp exists, skip build.
+
+2002-12-11 James Henstridge <james@daa.com.au>
+
+ * cvs.py (CVSRoot.update): fix up call to self.checkout.
+
+ * moduleinfo.py (gnome22): add modules for the gnome 2.0 versions
+ of libgnomeprint{,ui}. Make changes to match updates to jhbuild.
+
+ * cvs.py (CVSRoot.checkout, CVSRoot.update): update.
+
+ * jhbuild.py: make it work with the refactored module.py
+
+ * module.py: refactor a bit, putting more intelligence into the
+ Module classes, simplifying the build loop.
+
+2002-12-10 Chema Celorio <chema@celorio.com>
+
+ * moduleinfo.py: Fix libgnomeprint[ui] deps. Remove bonobo,
+ add gnome-common & pango.
+ * add gnome-vfs & libbonobo for libgsf
+
+2002-11-28 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * module.py (_normal): Use 'tput sgr0' instead of 'tput rmso'.
+ According to the tput/terminfo manpages 'rmso' is meant to
+ complement 'smso', which isn't necessarily the same as 'bold'.
+ 'sgr0' turns off all attribute modes and works fine for me.
+
+2002-12-05 Glynn Foster <glynn.foster@sun.com>
+
+ * moduleinfo.py: Fix up the bonobo stuff for proper branches.
+ Change file-roller to get from cvs.gnome.org. Add gnome-utils
+ to the 2.2 list.
+
+2002-12-03 Chema Celorio <chema@celorio.com>
+
+ * moduleinfo.py: fix the libgnomeprint[ui] deps
+ (gnome22): fix the 22 version too
+
+2002-11-28 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * moduleinfo.py (gnome22): Add module for gnome-vfs HEAD,
+ overriding gnome-vfs in the gnome20 module set.
+ This means that gnome22 now uses gnome-vfs HEAD. It was using
+ the gnome-vfs gnome-2-0 branch before.
+
+2002-11-29 Murray Cumming <murrayc@usa.net>
+
+ * jhbuild.py: Commented-out the addpath() call that sets
+ C_INCLUDE_PATH. We don't know why this was set. Maybe we will find out
+ now. It seems to set the system directories, which leads to warnings
+ with gcc 3.x.
+
+2002-11-28 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * moduleinfo.py (gnome20): Fetch the gtkmm-2-0 branch of gtkmm2.
+ (gnome22): Override the gtkmm2 module to use the HEAD branch.
+
+2002-11-28 Murray Cumming <murrayc@usa.net>
+
+ * moduleinfo.py: dia-canvas requires pygtk.
+
+2002-11-20 Murray Cumming <murrayc@usa.net>
+
+ * Applied patch in bug #97786, which makes gal depend on
+ libgnomeprintui.
+
+2002-11-20 Murray Cumming <murrayc@usa.net>
+
+ * moduleinfo.py: gst-player requires gst-plugins, because it does a
+ pkg-config check for gstreamer-libs.
+
+2002-11-19 Murray Cumming <murrayc@usa.net>
+
+ * moduleinfo.py: (gnome22): gnome-control-center: Added dependency on
+ metacity, because it requires libmetacity-private.
+
+Thu Nov 7 16:01:40 2002 Jonathan Blandford <jrb@redhat.com>
+
+ * moduleinfo.py (gnome22): libgnomeprint/libgnomeprintui require
+ HEAD for gnome22
+
+2002-11-07 Ross Burton <ross@burtonini.com>
+
+ * moduleinfo.py: Change from orbit-python to gnome-python/pyorbit.
+
+2002-11-02 Murray Cumming <murrayc@usa.net>
+
+ * moduleinfo.py: gnomemm/libgnomuimm requires gnomemm/libgnomecanvasmm
+ and gnomemm/libglademm.
+
+2002-11-01 Murray Cumming <murrayc@usa.net>
+
+ * moduleinfo.py: gnomemm/libgnomeuimm: Now depends on libbonobouimm,
+ which needs the new orbitcpp module.
+
+2002-10-26 Sri Ramkrishna <sri@aracnet.com>
+
+ * moduleinfo.py: gnome-terminal HEAD(gnome22) uses vte widget
+ instead of zvt.
+
+2002-10-26 Anders Carlsson <andersca@gnu.org>
+
+ * moduleinfo.py: Upgrade pkg-config to 0.14.0 and remove the
+ patches since they've gone upstream.
+
+2002-10-24 Murray Cumming <murrayc@usa.net>
+
+ * moduleinfo.py: The gtkmm-1.3 virtual cvs module is now called gtkmm2.
+
+2002-10-13 Sriram Ramkrishna <sri@aracnet.com>
+ * moduleinfo.py: Added gnome-icon-theme as a dependency to libgnomeui
+
+2002-10-06 Anders Carlsson <andersca@gnu.org>
+
+ * bootstrap.py (bootstraps): Add bug-fix for pkgconfig.
+
+2002-10-05 Xavier Ordoquy <MCArkan@gael.sourceforge.net>
+
+ * moduleinfo.py: gael is now in gnome cvs
+
+2002-09-29 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py: update various modules to gnome-2-0 branches.
+
+ * jhbuild.py (help): update help output (bug 93563).
+
+ * moduleinfo.py (gnome2): add devhelp to meta-gnome-devel-tools
+ (bug 93563).
+
+ * bootstrap.py (bootstraps): update bootstraps to use
+ Autoconf-2.54 and Python-2.2.1. Add Automake-1.7 in addition to
+ 1.4 and 1.6.
+
+2002-09-26 Bastien Nocera <hadess@hadess.net>
+
+ * moduleinfo.py: update gnome-common branches (hope I'm not breaking
+ anything...)
+
+2002-09-26 Anders Carlsson <andersca@gnu.org>
+
+ * bootstrap.py:
+ * pkgconfig-0.13-include.patch:
+ Use pkg-config 0.13 and add an include fix.
+
+2002-09-18 Will LaShell <will@lashell.net>
+
+ * cvs.py: adding the -dP arguement to cvs update
+
+2002-09-18 Havoc Pennington <hp@pobox.com>
+
+ * moduleinfo.py (gnome2): use gconf-1-2 branch for gnome20,
+ add gconf HEAD to gnome22
+
+2002-09-17 Havoc Pennington <hp@redhat.com>
+
+ * moduleinfo.py (gnome2): pull gnome-2-0 branch of libwnck
+
+Mon Sep 16 15:12:31 2002 Jonathan Blandford <jrb@redhat.com>
+
+ * moduleinfo.py (gnome2): add '-- ' to gstreamers autogen.sh to
+ pass args on to configure. This still doesn't work with
+ --maintainer-mode etc., but people can fix that on their own.
+
+2002-09-16 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (gnome22): s/profterm/gnome-terminal/
+ (gnome22): add gnome-2-0 branch for libglade.
+
+Thu Sep 12 19:10:35 2002 Jonathan Blandford <jrb@redhat.com>
+
+ * moduleinfo.py (gnome2): libmrproject requires libgsf
+
+Thu Sep 12 19:08:58 2002 Jonathan Blandford <jrb@redhat.com>
+
+ * moduleinfo.py: s/monkey-sound/monkey-media/g
+
+2002-09-10 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (gnome2): get mrproject from GNOME CVS now (patch
+ from Xavier Ordoquy.
+
+2002-09-09 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (gnome2): updates from Will Lashell (bug #92581).
+
+2002-09-06 Havoc Pennington <hp@pobox.com>
+
+ * moduleinfo.py (gnome2): add right branch for gail
+
+Thu Sep 5 15:28:35 2002 Jonathan Blandford <jrb@redhat.com>
+
+ * moduleinfo.py (gnome-build): Require gtkhtml2 as well.
+
+2002-08-18 Anders Carlsson <andersca@gnu.org>
+
+ * bootstrap.py (bootstraps): Fetch automake-1.4 as well as
+ automake-1.6.
+
+2002-07-24 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (gnome-control-center): set to gnome-2-0 branch
+ for gnome20 module set (and head for gnome22).
+ (anjuta2): depends on libzvt (from bug #87661).
+
+2002-07-14 Havoc Pennington <hp@pobox.com>
+
+ * moduleinfo.py (gnome2): add branch to profterm
+ (gnome22): put profterm HEAD in gnome22
+
+2002-07-13 Xavier Ordoquy <MCArkan@gael.sourceforge.net>
+
+ * moduleinfo.py:
+ Added dia-newcanvas and gael2 to the gnome20 set.
+
+2002-07-05 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (gnome22): add start of gnome22 set (based on
+ gnome20), which at the moment just has head glib, pango and gtk+.
+
+ * module.py (ModuleSet.__init__): add optional "baseset" argument
+ to constructor, based on idea by hp.
+
+ * module.py (BuildScript.build): rest of jrb's patch.
+
+ * jhbuild.py (do_build): add --start-at arg from patch by Jonathan
+ Blandford <jrb@redhat.com> (from bug #87344)
+
+ * moduleinfo.py (rhythmbox): rhythmbox module is called rhythmbox
+ now. Patch from hingwah@gnupilgrims.org (from bug #85905).
+ (gnomeicu): Another patch from hingwah (from bug #85907).
+
+ * jhbuid.py, module.py: apply patch to add makeargs setting
+ contributed by C. Evans <ccevans@cox.net> (from bug #85228).
+
+Wed Jun 19 14:02:05 2002 Jonathan Blandford <jrb@redhat.com>
+
+ * moduleinfo.py (head): update rhythmbox dependencies and module
+
+2002-06-16 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (head): add libxslt dependency to gtk-doc.
+ (head): add sigc-1.1 dependency to gtkmm-1.3.
+
+2002-06-09 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py: add extra modules, based on patch by Gediminas
+ Paulauskas <menesis@delfi.lt>.
+
+ * bootstrap.py (Bootstrap.build): add support for multiple patch
+ files.
+ (bootstraps): add a number of the patches from the libtool-1.4.2-9
+ SRPM from Rawhide, so that we use a non sucky libtool.
+ (Bootstrap.wants_package): allow people to install bootstrap
+ packages they already have on their system.
+
+2002-06-08 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (head): add gtkmm-1.3 as a dependency for
+ gnomemm/libgnomecanvasmm (bug fix by Hing-Wah Wan
+ <hingwah@gnupilgrims.org>).
+
+2002-06-03 James Henstridge <james@daa.com.au>
+
+ * README: add note about filing jhbuild bugs in bugzilla.
+
+ * moduleinfo.py (head): fix up meta-gnome-c++ MetaModule def.
+
+2002-06-01 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (gnome2): add support for the gtk-- modules.
+ Patch from Ross Burton <r.burton@180sw.com> (from bug 82656).
+
+ * bootstrap.py (bootstraps): update list of bootstraps to latest
+ gettext, and also add scrollkeeper to list of imports.
+
+ Apply modified version of Dom's patch:
+
+ * module.py (BuildScript.build): keep a counter of which module we
+ are building.
+ (BuildScript._message): show the module number in the messages.
+
+2002-05-20 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py: add gnome-applets to meta-gnome-core module.
+
+2002-05-05 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (gnome-applets): add gail dependency for
+ gnome-applets (from Sam th).
+ (gnome2): rename the 'head' moduleset to 'gnome2'. A
+ compatibility set name has been added.
+
+ Merge in Johan Dahlin's updates:
+
+ * moduleinfo.py: add some module defs for stuff outside of the
+ gnome CVS repo.
+
+ * module.py (Module.__init__): optionally save a cvsroot string
+ with the module def.
+ (BuildScript.__init__): save checkoutroot on the BuildScript
+ object.
+ (BuildScript._cvscheckout): if module.cvsroot is not None, then
+ use it as the cvsroot.
+ (ModuleSet.addmod): new function as shorthand in the moduleinfo.py
+ file.
+
+2002-05-02 Benjamin Kahn <xkahn@ximian.com>
+
+ * bootstrap.py (bootstraps): Add audiofile to the bootstrap
+ list. Not everyone has it, and it isn't in GNOME CVS.
+
+2002-04-30 Malcolm Tredinnick <malcolm@commsecure.com.au>
+
+ * bootstrap.py: When there is an error downloading one of the
+ files in the bootstrap phase, report the error. Bitter
+ experience indicates that it might not be what you initially
+ expect.
+
+2002-04-28 Malcolm Tredinnick <malcolm@commsecure.com.au>
+
+ * README: Made the indicated tools' version numbers match what
+ is actually downloaded and installed.
+
+2002-04-26 Malcolm Tredinnick <malcolm@commsecure.com.au>
+
+ * Makefile: The install target depends on install-check.
+ Otherwise blindly following the instructions in the README leads
+ to tears.
+
+2002-04-25 Manish Singh <yosh@gimp.org>
+
+ * moduleinfo.py (head): eog requires libgnomeprint
+
+Mon Apr 15 11:51:26 2002 Owen Taylor <otaylor@redhat.com>
+
+ * moduleinfo.py (head): Point glib, gtk+ at 2-0 branches.
+
+2002-04-13 Alex Graveley <alex@ximian.com>
+
+ * moduleinfo.py (head): eel requires gail.
+
+Sat Apr 13 11:04:46 2002 Owen Taylor <otaylor@redhat.com>
+
+ * moduleinfo.py (head): Point pango at pango-1-0, since
+ pango HEAD is post GNOME-2.0.
+
+2002-04-05 Alex Graveley <alex@ximian.com>
+
+ * jhbuild.py (do_shell): Impl to allow starting a new blessed
+ shell from the command line.
+
+2002-04-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * bootstrap.py (Bootstrap.build): s/zcat/gunzip -dc/ -
+ unfortunately zcat does not work so well on Solaris. Hopefully I
+ will not anger the gods by committing this :-)
+
+2002-03-27 Manish Singh <yosh@gimp.org>
+
+ * install-check.c: check for *.c as well (gobject installs a .c
+ file as a public header)
+
+2002-03-20 Johan Dahlin <jdahlin@telia.com>
+
+ * jhbuild.py: if prefix don't exist, create it.
+
+ * moduleinfo.py: Add gail as a dependency to gnome-media module.
+
+ * moduleinfo.py: Add gnome-panel as a dependency to gnome-utils module.
+
+ * moduleinfo.py: Add gnome-desktop as a dependency to
+ gnome-control-center module.
+
+2002-03-19 Manish Singh <yosh@gimp.org>
+
+ * install-check.c: So my assumption was wrong. Add cases for *.idl
+ and orbit-idl-2
+
+2002-03-18 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py: apply Greg Schafer's patch for the gnome1
+ build rules.
+
+2002-03-15 Manish Singh <yosh@gimp.org>
+
+ * Makefile
+ * install-check.c: rewrote install-check in C. Much faster now.
+ I also did a check for .h[^.]*$ to make it only cmp on header
+ files. Not entirely sure that is completely valid (are there any
+ installed headers that don't end in .h?)
+
+2002-03-15 Dave Neary <bolsh@gimp.org>
+
+ * moduleinfo.py (head): Added sawfish and it's
+ dependencies. Watch out for librep trying to install
+ rep.m4 in /usr/shar/aclocal.
+
+2002-03-14 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (head): add glade2c.
+
+ * bootstrap.py (bootstraps): update versions to bootstrap with.
+
+ * jhbuild.py (addpath): set ACLOCAL_AMFLAGS as well. This should
+ make things work a bit better with automake-1.6.
+
+2002-03-06 Havoc Pennington <hp@redhat.com>
+
+ * moduleinfo.py (gnome1): remove libzvt dep from gnome1 gnome-core
+
+2002-03-06 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (head): add a meta-gnome-devel-tools meta module.
+
+ * module.py (BuildScript._*): force a chdir before configure,
+ make, etc.
+ (BuildScript.__init__): create a CVSRoot object to handle
+ checkouts.
+ (BuildScript._cvscheckout): simplify to use the CVSRoot object.
+ (BuildScript._configure): use the CVSRoot to find the checkoutdir
+ (BuildScript._makeclean): same here.
+ (BuildScript._make): same here.
+ (BuildScript._makeinstall): same here.
+ (Module): remove the cvs args stuff.
+
+2002-03-05 James Henstridge <james@daa.com.au>
+
+ * module.py (BuildScript.build): if we are forcing a configure,
+ also force a checkout, rather than update.
+
+ * moduleinfo.py (head): s/Task/MetaModule/, and rename meta
+ modules to begin with meta-, so they match the GARNOME naming.
+
+ * module.py (MetaModule): rename from Task.
+
+2002-03-02 Havoc Pennington <hp@pobox.com>
+
+ * moduleinfo.py: add bug-buddy to 'desktop' task
+
+2002-02-20 James Henstridge <james@daa.com.au>
+
+ * module.py (BuildScript.login): make python 1.5 compatible. And
+ make it work with both new and old style lines in the .cvspass
+ file.
+
+2002-02-20 Johan Dahlin <jdahlin@telia.com>
+
+ * bootstrap.py: use version from autoconf2.50 is it exists (which is
+ the case on debian systems)
+
+ * jhbuild.py: Add nicer output if the config file isn't found,
+ create $PREFIX/share and $PREFIX/share/aclocal if they don't exist
+
+ * module.py: strip out port when checking for cvs server in ~/.cvspass
+
+2002-02-20 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (head): add extra dep for nautilus. Patch from
+ Wan Hing Wah <hingwah@computer.org>.
+
+2002-02-18 Manish Singh <yosh@gimp.org>
+
+ * jhbuild.py: allow a default list of modules to skip in the
+ config file
+
+2002-02-14 Johan Dahlin <jdahlin@telia.com>
+
+ * moduleinfo.py: make libgnomecanvas depends on gnome-common
+
+2002-02-13 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (head): add tasks gnome-libs, gnome-core and
+ desktop (if anyone else has good ideas for tasks, please suggest
+ them).
+ (head): fix up deps for the split up gnome-core.
+
+ * module.py (Task): simple class for mapping a single name to a
+ list of modules to build.
+ (ModuleSet.__expand_mod_list): function for expanding a list of
+ strings to a list of Module instances. Takes task objects into
+ account.
+ (ModuleSet.get_module_list): use __expand_mod_list() to expand
+ module lists, so we get task support.
+
+2002-02-13 Xavier Ordoquy <MCArkan@gael.sourceforge.net>
+
+ * moduleinfo.py: changed gnome-core to
+ gnome-desktop/panel/session.
+
+2002-02-12 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py: add glade (glade-gnome2-branch).
+
+2002-02-05 Gediminas Paulauskas <menesis@delfi.lt>
+
+ * moduleinfo.py (head): add gnome-media, bug-buddy, gnome-games;
+ remove libcapplet; fix gal
+
+2002-02-01 Havoc Pennington <hp@pobox.com>
+
+ * Makefile (bindir): use a "bindir" variable so "make install
+ bindir=/foo" works
+
+ * jhbuild.py (do_build): if passing extra args to build mode,
+ take them as a list of modules to build
+
+ * moduleinfo.py (head): make metacity depend on gconf
+
+Thu Jan 24 13:12:08 2002 Jonathan Blandford <jrb@redhat.com>
+
+ * moduleinfo.py (head): add libgnomeprint, libgnomeprintui, and gedit
+
+Sat Jan 19 20:31:16 2002 Owen Taylor <otaylor@redhat.com>
+
+ * moduleinfo.py (head): Add gtk-engines.
+
+Thu Jan 17 15:07:15 2002 Jonathan Blandford <jrb@redhat.com>
+
+ * moduleinfo.py (head): add profterm and gdm2
+
+2002-01-16 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (head): add orbit-python info.
+
+ * jhbuild.py (do_build): expand the skip list to include dependent
+ modules. So --skip=libgnomeui will skip glib, gtk+, libgnome,
+ etc. Now it is actually useful.
+
+2002-01-14 Alex Graveley <alex@ximian.com>
+
+ * bootstrap.py (bootstraps): Add python bootstrap for 2.x.
+ (Bootstrap.build): Allow tarballs to end in tgz,
+ (Bootstrap.wants_package): Remove 'x' in the version string to let
+ us display "checking for python 2.x" but really just look for '2.'
+ This should probably use regexps.
+
+2002-01-12 Xavier Ordoquy <MCArkan@gael.sourceforge.net>
+
+ * moduleinfo.py: added gnome-common to gnome-mime-data
+ and libgtop to gnome-core.
+
+Fri Jan 11 12:08:14 2002 Owen Taylor <otaylor@redhat.com>
+
+ * moduleinfo.py (head): gtkhtml2 now depends on gail, not
+ vice-versa.
+
+Thu Jan 10 16:18:20 2002 Jonathan Blandford <jrb@redhat.com>
+
+ * module.py (BuildScript.build): Allow you to re ./configure on
+ error.
+ (moduleinfo.py): Update dependencies on gnome-control-center
+
+Tue Jan 8 12:05:06 2002 Jonathan Blandford <jrb@redhat.com>
+
+ * moduleinfo.py: whoops. add esound. Also add gconf-editor
+
+Mon Jan 7 20:00:42 2002 Jonathan Blandford <jrb@redhat.com>
+
+ * moduleinfo.py: nautilus depends on esound. gnome-control-center
+ doesn't depend on libcapplet or bonobo-config.
+
+2002-01-04 Alex Graveley <alex@ximian.com>
+
+ * jhbuild.py (addpath): Fix LD_PRELOAD munging so entire path to
+ libgdkxft is removed, not just the library name.
+
+2002-01-04 James Henstridge <james@daa.com.au>
+
+ * jhbuild.py (setup_env): get rid of libgdkxft.so from LD_PRELOAD
+ if it is in there. Can fix some build errors for people.
+
+2002-01-03 Alex Graveley <alex@ximian.com>
+
+ * moduleinfo.py (head): libzvt depends on gnome-common for
+ gnome-autogen.sh.
+
+2001-12-24 James Henstridge <james@daa.com.au>
+
+ * bootstrap.py (Bootstrap._bold): same here.
+ (Bootstrap.wants_package): string.find returns -1 on error -- not 0
+
+ * module.py (BuildScript._message): if it is an xterm, also put
+ messages in the window title.
+
+2001-12-17 Xavier Ordoquy <mcarkan@users.sourceforge.net>
+
+ * moduleinfo.py: added zvt dependance to gnome-core.
+
+2001-12-09 James Henstridge <james@daa.com.au>
+
+ * bootstrap.py: fix up bug for patch apply code found by Josh Lucas
+ <josh@stonecottage.com>
+
+2001-12-05 Owen Taylor <otaylor@redhat.com>
+
+ * moduleinfo.py (head): Add dependency on gnome-common
+ for librsvg, libzvt for gnome-core. Add gnome-utils.
+
+2001-12-04 James Henstridge <james@daa.com.au>
+
+ * README: more documentation updates.
+
+ * gettext-changelog.patch: a patch to make gettextize not suck.
+
+ * bootstrap.py (build_bootstraps): code to handle building
+ required tools, such as autoconf, etc.
+
+ * module.py (BuildScript.__init__): get rid of code setting up the
+ environment from here.
+
+ * jhbuild.py (addpath): move code that sets up the environment to
+ this file.
+
+ * README: update readme to reflect changed command line args.
+
+ * jhbuild.py (main): rearrange the argument parsing a bit.
+
+Mon Dec 3 23:31:43 2001 Owen Taylor <otaylor@redhat.com>
+
+ * moduleinfo.py: Added a whole bunch more GNOME-2.0 modules.
+
+2001-11-30 James Henstridge <james@daa.com.au>
+
+ * jamesh.jhbuildrc: add --enable-maintainer-mode for packages whose
+ autogen scripts don't automatically.
+
+ * moduleinfo.py: fix up dependencies a bit.
+
+2001-11-19 James Henstridge <james@daa.com.au>
+
+ * module.py (BuildScript.__addpath): prepend the new path element,
+ rather than appending it.
+
+2001-10-26 James Henstridge <james@daa.com.au>
+
+ * module.py (Module.cvs_update_args): add -P -d arguments to cvs
+ update commands for people who don't have them hard coded in their
+ ~/.cvsrc file.
+
+2001-10-25 James Henstridge <james@daa.com.au>
+
+ * moduleinfo.py (gnome1): add initial (untested) support for
+ building the gnome 1.x platform.
+
+# Local Variables:
+# coding:utf-8
+# End:
diff --git a/build-scripts/jhbuild/HACKING b/build-scripts/jhbuild/HACKING
new file mode 100644
index 0000000..f5b03b9
--- /dev/null
+++ b/build-scripts/jhbuild/HACKING
@@ -0,0 +1,46 @@
+The jhbuild module consists of a package build framework, and a number
+of configuration files for building various Gnome releases. The rules
+for checkins differ for each.
+
+Modifications to the build framework should be submitted as bug
+reports at http://bugzilla.gnome.org/ where they can be reviewed
+before being committed. The exception to this is build sheriff style
+commits for small errors that prevent people from using jhbuild. When
+in doubt, submit a bug report.
+
+The modulesets/ directory contains configuration files that describe
+how to build various versions of Gnome. The file gnomeXY.modules
+contains rules needed to build the stable version X.Y of Gnome or the
+development branch leading up to that version. Changes of the
+following types can be committed without approval:
+
+ - Updating the branch tag for a module if it is incorrect for that
+ Gnome release.
+
+ - Updating to a new version of a tarball for tarball type
+ defintions, provided the new version is appropriate for that Gnome
+ release.
+
+ - Adding a definition for a module that is part of the Gnome desktop,
+ developer platform, 5th toe or bindings release, etc, but is
+ missing from the module set.
+
+ - Removal of module definitions where the associated module has been
+ removed/obsoleted from the particular Gnome version (eg. acme was
+ removed from gnome26 when it got integrated into control-center).
+
+A number of modules that fall outside of a Gnome release but are
+related to Gnome are also included in the module set. This includes
+software that may be under development and not ready for general use.
+
+If you would like to add a module to one of the standard module sets,
+submit a bug report as detailed above. If it is Gnome related, it
+will probably get accepted.
+
+If your module is not Gnome related, it may get rejected. Keep in
+mind that jhbuild supports external module sets that are identified by
+a full URI, which allows third parties to maintain module sets
+independently.
+
+
+James Henstridge.
diff --git a/build-scripts/jhbuild/Makefile b/build-scripts/jhbuild/Makefile
new file mode 100644
index 0000000..2d0ae4d
--- /dev/null
+++ b/build-scripts/jhbuild/Makefile
@@ -0,0 +1,64 @@
+PACKAGE = jhbuild
+VERSION = 0.1
+
+CC = gcc
+CFLAGS = -Wall -O2
+
+bindir=$(HOME)/bin
+desktopdir=$(HOME)/.local/share/applications
+
+all: install-check
+ @echo 'Run "make install" to install.'
+
+install-check: install-check.c
+ $(CC) $(CFLAGS) -o install-check install-check.c
+
+update:
+ svn update --quiet
+
+install: install-check
+ @echo "Creating $(bindir)/jhbuild"
+ @mkdir -p $(bindir)
+ @sed "s,@jhbuilddir@,`pwd`,g" < jhbuild.in > $(bindir)/jhbuild
+ @chmod a+x $(bindir)/jhbuild
+
+ @echo "Creating $(desktopdir)/jhbuild.desktop"
+ @mkdir -p $(desktopdir)
+ @cp jhbuild.desktop $(desktopdir)
+ @echo "Exec=$(bindir)/jhbuild gui" >> $(desktopdir)/jhbuild.desktop
+
+ @[ -f $(HOME)/.jhbuildrc ]||echo "Don't forget to create ~/.jhbuildrc"
+ install -m755 install-check $(bindir)/install-check
+
+distdir = $(PACKAGE)-$(VERSION)
+dist:
+ -rm -rf $(distdir)
+ mkdir $(distdir)
+ cp -p README COPYING ChangeLog Makefile jhbuild.in jhbuild.desktop $(distdir)/
+ cp -p *.c *.jhbuildrc $(distdir)/
+ mkdir $(distdir)/modulesets
+ cp -p modulesets/*.modules $(distdir)/modulesets/
+ cp -p modulesets/moduleset.dtd modulesets/moduleset.xsl $(distdir)/modulesets/
+ mkdir $(distdir)/patches
+ cp -p patches/*.patch $(distdir)/patches/
+ mkdir $(distdir)/jhbuild
+ cp -p jhbuild/*.py jhbuild/defaults.jhbuildrc $(distdir)/jhbuild/
+ mkdir $(distdir)/jhbuild/commands
+ cp -p jhbuild/commands/*.py $(distdir)/jhbuild/commands/
+ mkdir $(distdir)/jhbuild/frontends
+ cp -p jhbuild/frontends/*.py $(distdir)/jhbuild/frontends/
+ cp -p jhbuild/frontends/jhbuild.glade $(distdir)/jhbuild/frontends/
+ mkdir $(distdir)/jhbuild/modtypes
+ cp -p jhbuild/modtypes/*.py $(distdir)/jhbuild/modtypes/
+ mkdir $(distdir)/jhbuild/utils
+ cp -p jhbuild/utils/*.py $(distdir)/jhbuild/utils/
+ mkdir $(distdir)/scripts
+ cp -p scripts/*.py scripts/*.xsl scripts/*.deps scripts/*.exceptions $(distdir)/scripts/
+ mkdir $(distdir)/scripts/branch-violations
+ cp -p scripts/branch-violations/README scripts/branch-violations/find-branch-* \
+ $(distdir)/scripts/branch-violations/
+ chmod -R a+r $(distdir)
+ tar czf $(distdir).tar.gz $(distdir)
+ rm -rf $(distdir)
+
+.PHONY: all update install
diff --git a/build-scripts/jhbuild/README b/build-scripts/jhbuild/README
new file mode 100644
index 0000000..47f46c5
--- /dev/null
+++ b/build-scripts/jhbuild/README
@@ -0,0 +1,215 @@
+Yet Another Gnome 2 Build Script
+================================
+
+This is another set of scripts for building GNOME 2. They are still a
+little rough around the edges, but may still be useful to you.
+
+They don't enforce any particular checkout, build or install
+directories for your gnome2 setup (this is deduced from the config
+file).
+
+You must have python >= 2.2 installed for jhbuild to run.
+
+Note that the included module sets build most software from CVS (or
+equivalent), so you may encounter occasional build failures.
+
+If you want to build from released tarballs instead, some options
+include:
+
+ * use a jhbuild module set comprised of tarball releases:
+ http://blogs.gnome.org/view/newren/2005/10/04/0
+
+ * use GARNOME: a GAR configuration for building Gnome from tarballs:
+ http://www.gnome.org/projects/garnome/
+
+
+Why use jhbuild?
+----------------
+
+I wrote jhbuild because there were a few features missing from
+vicious-build-scripts that I wanted. The main one is dependency
+handling.
+
+With vicious-build-scripts, there is a list of modules that get built
+in order. In contrast, jhbuild stores a list of modules along with
+their dependencies. In the config file, you specify what modules you
+want to end up with, and it will work out what dependencies need to be
+built.
+
+The other main feature of jhbuild is its error handling. If an error
+occurs while building a module, you are given a number of options:
+rerun the build stage, start a shell, give up on the module, or ignore
+the error. If you give up on the module, then jhbuild will not
+attempt to build any module that depends on it (taking into account
+transitive dependencies, as needed). At the end of the build, a list
+of unbuilt modules is printed.
+
+If you wish to run a non interactive build, you can pass the
+--no-interact option.
+
+
+Configuring
+-----------
+
+To install the scripts run "make install", and then copy
+sample.jhbuildrc to you home directory, rename it to .jhbuildrc
+and edit to match your setup. My rc file is provided for reference as
+jamesh.jhbuildrc.
+
+For people using vicious-build-scripts to build gnome 2.0, the
+vbs-head.jhbuildrc sample configuration file might be a good one to
+start with.
+
+Before you can build packages from CVS, you will need to have various
+build tools installed. Currently, these include:
+ gettext >= 0.10.40
+ libtool >= 1.5
+ autoconf >= 2.58
+ automake 1.4-p6
+ automake 1.6.x
+ automake 1.7.x
+ automake 1.8.x
+ pkg-config >= 0.14
+ python >= 2.2
+ audiofile
+
+Some modules may be managed with Subversion or GNU Arch, so you will
+need those tools to build affected modules:
+ subversion http://subversion.tigris.org/
+ bazaar http://bazaar.canonical.com/ (an Arch implementation)
+
+You can check whether the tools are available by running the following
+command:
+ jhbuild sanitycheck
+
+If any problems are reported, you have two options:
+
+1) install packages from your distribution to satisfy the
+ requirements. You may need to pull some packages from the
+ development branch of your distro (eg. for Red Hat 9 or Fedora Core
+ 1 you would need updated automake packages from
+ rawhide/development).
+
+2) Run jhbuild's bootstrap procedure to install all the build tools to
+ your jhbuild installroot. This can be done by running the
+ following command:
+ jhbuild bootstrap
+
+ Note that if you depend on m4 macros or pkg-config files in /usr,
+ you might need to adjust ACLOCAL_FLAGS and PKG_CONFIG_PATH after
+ running bootstrap. This can be done by adding the following lines
+ to your ~/.jhbuildrc file:
+ addpath('ACLOCAL_FLAGS', '/usr/share/aclocal')
+ addpath('PKG_CONFIG_PATH', '/usr/lib/pkgconfig')
+
+After installing the required build tools, rerun sanitycheck to make
+sure everything is okay.
+
+Bootstrapping should only need to be done once (unless the
+requirements of some package change).
+
+
+Using jhbuild
+-------------
+
+To build everything, just type 'jhbuild build', or just 'jhbuild'.
+Some useful options that this command takes include:
+
+ --autogen always run autogen.sh
+ --clean run "make clean" before make when building
+ --no-network don't update source from cvs
+ --skip=MODULES skip building the given modules
+ --start-at=MODULE start building at the given module
+
+If you just want to checkout the latest versions of everything, run:
+ jhbuild update
+
+If you want to build everything without updating from CVS (for
+instance, when disconnected from the internet), use the following
+command:
+ jhbuild build --no-network
+
+(this command takes the same options as 'jhbuild build').
+
+If you want to run a command in the build environment (PATH,
+LD_LIBRARY_PATH, etc all configured), use the following command:
+ jhbuild run program
+
+For example, to start a shell in the build environment:
+ jhbuild run bash
+
+To build a single module with no dependencies, use the following
+command:
+ jhbuild buildone modulename
+
+(this command takes the same extra options as 'jhbuild build').
+
+To run an unattended build and create a status page showing the
+results of building each package:
+ jhbuild tinderbox --output=/dir/to/store/build/logs
+
+(this command takes the same extra options as 'jhbuild build').
+
+For details of all jbhuild's command line options:
+ jhbuild --help
+
+
+Error handling
+--------------
+
+When an error is encountered while building, you will be given a
+chance to fix the problem. You can choose to rerun that part of the
+build, start a shell to give you a chance to fix things, give up on
+the module all together, or ignore the error (useful for certain cvs
+errors).
+
+If you give up on building a module, all modules that depend on it
+will be skipped. If you would prefer the build not to ask questions
+on errors, you can pass the --no-interact switch, which is equivalent
+to always choosing give up.
+
+
+Module info
+-----------
+
+Information about how to build the modules is contained in the
+moduleinfo.py file. This file needs to be modified when dependencies
+between modules change (usually, no change to the ~/.jhbuildrc will be
+needed).
+
+
+Running Gnome
+--------------
+
+Once you have built Gnome with jhbuild you need a way to start it:
+
+If you use GDM to log into Gnome you need to create a session file in
+/usr/share/xsessions/ (directory may be different on non-redhat systems).
+Call it 'jhbuild.desktop' and make it executable. Then add the lines:
+
+[Desktop Entry]
+Encoding=UTF-8
+Name=Gnome-cvs
+Comment=This session logs you into Gnome-cvs
+Exec=jhbuild run gnome-session
+Type=Application
+
+In order to have the name & comment show up in your native language, you will
+have to add lines similar to the following:
+
+Name[es]=Gnome-cvs
+Comment[es]=Con esta sesión accede a gnome-cvs
+
+If you use startx to run gnome just add 'exec jhbuild run gnome-session'
+to your ~/.xinitrc
+
+
+Reporting Bugs
+--------------
+
+If you find any bugs in jhbuild, or have feature requests (or
+implementations :), please file them in bugzilla at:
+
+ http://bugzilla.gnome.org/enter_bug.cgi?product=jhbuild
+
+This will make sure I don't lose your request.
diff --git a/build-scripts/jhbuild/contrib/jhbuild_completion.bash b/build-scripts/jhbuild/contrib/jhbuild_completion.bash
new file mode 100644
index 0000000..2f1b502
--- /dev/null
+++ b/build-scripts/jhbuild/contrib/jhbuild_completion.bash
@@ -0,0 +1,85 @@
+#!/bin/bash
+#
+# jhbuild tab completion for bash.
+# (c) 2004, Davyd Madeley <davyd@ucc.asn.au>
+#
+# 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, 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.
+#
+# To use this completion function simply source this file into your bashrc
+# with:
+# . ~/path/to/jhbuild/contrib/jhbuild_completion.bash
+# This completion function depends on helper functions from the main set of
+# bash completions, ensure you've sourced /etc/bash_completion before sourcing
+# this file.
+#
+
+_jhbuild()
+{
+ local cur prev command_list i v
+
+ cur=${COMP_WORDS[COMP_CWORD]}
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ case "$prev" in
+ gui|tinderbox|shell|sanitycheck|bootstrap)
+ command_list=""
+ ;;
+ update|updateone|build|buildone|list|dot|info|-t|-s|-a|-n|-c)
+ # FIXME: some of these options can take multiple module names
+ # give them a list of modules
+ command_list="`jhbuild list`"
+ ;;
+ run)
+ # give them a list of commands
+ COMP_WORDS=(COMP_WORDS[0] $cur)
+ COMP_CWORD=1
+ _command
+ ;;
+ -f|-m)
+ # give them file completion
+ _filedir
+ ;;
+ -o)
+ # give them directory completion
+ _filedir -d
+ ;;
+ *)
+ command_list="gui update updateone build buildone tinderbox run shell sanitycheck bootstrap list dot info"
+
+ v=false
+ if [ $COMP_CWORD -gt 2 ]; then
+ for i in $command_list; do
+ if [ "${COMP_WORDS[COMP_CWORD-2]}" == "$i" ]; then
+ v=true
+ break
+ fi
+ done
+ fi
+
+ if $v; then
+ command_list=""
+ fi
+ ;;
+ esac
+
+ for i in $command_list; do
+ if [ -z "${i/$cur*}" ]; then
+ COMPREPLY=( ${COMPREPLY[@]} $i )
+ fi
+ done
+}
+
+# load the completion
+complete -F _jhbuild jhbuild
diff --git a/build-scripts/jhbuild/doc/custom.xsl b/build-scripts/jhbuild/doc/custom.xsl
new file mode 100644
index 0000000..5b96d76
--- /dev/null
+++ b/build-scripts/jhbuild/doc/custom.xsl
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:param name="shade.verbatim.style" select="1"/>
+ <xsl:param name="use.id.as.filename" select="1"/>
+ <xsl:param name="html.stylesheet" select="'jhbuild.css'"/>
+
+</xsl:stylesheet>
diff --git a/build-scripts/jhbuild/doc/jhbuild.css b/build-scripts/jhbuild/doc/jhbuild.css
new file mode 100644
index 0000000..a08067b
--- /dev/null
+++ b/build-scripts/jhbuild/doc/jhbuild.css
@@ -0,0 +1,20 @@
+tr.question > td > :first-child, tr.answer > td > :first-child,
+tr.qandadiv > td > h4, tr.toc > td > :first-child {
+ margin-top: 0em;
+}
+
+.variablelist > table td {
+ vertical-align: top;
+}
+
+.programlisting {
+ background: #eeeeff;
+ border: solid 1px #aaaaff;
+ padding: 0.5em;
+}
+
+.screen {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+ padding: 0.5em;
+}
diff --git a/build-scripts/jhbuild/doc/jhbuild.xml b/build-scripts/jhbuild/doc/jhbuild.xml
new file mode 100644
index 0000000..0f658b5
--- /dev/null
+++ b/build-scripts/jhbuild/doc/jhbuild.xml
@@ -0,0 +1,1579 @@
+<?xml version="1.0" standalone="no"?><!--*- mode: nxml -*-->
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+<!-- process to HTML with: xmlto xhtml-nochunks -m custom.xsl jhbuild.xml -->
+<article id="index">
+ <articleinfo>
+ <title>JHBuild Manual</title>
+ <authorgroup>
+ <author>
+ <firstname>James</firstname>
+ <surname>Henstridge</surname>
+ </author>
+ </authorgroup>
+ <copyright>
+ <year>2004</year>
+ <holder>James Henstridge</holder>
+ </copyright>
+ </articleinfo>
+
+ <section id="introduction">
+ <title>Introduction</title>
+
+ <para>JHBuild is a tool designed to make building collections of
+ source packages (also known as modules). It uses <quote>module
+ set</quote> files to describe the modules available to build.
+ These files include dependency information that allows JHBuild to
+ work out what modules need to be built and in what order to build
+ what the user requested.</para>
+
+ <para>JHBuild was originally written for building <ulink
+ url="http://www.gnome.org">GNOME</ulink>, but has since been
+ extended to make it usable with other projects. A <quote>module
+ set</quote> file can be hosted on a web server, allowing people to
+ provide build rules independent of the JHBuild.</para>
+
+ <para>JHBuild can build modules from a variety of sources,
+ including:</para>
+
+ <itemizedlist>
+ <listitem>
+ <simpara><ulink url="http://www.cvshome.org/">CVS</ulink>
+ repositories</simpara>
+ </listitem>
+ <listitem>
+ <simpara><ulink
+ url="http://subversion.tigris.org/">Subversion</ulink>
+ repositories</simpara>
+ </listitem>
+ <listitem>
+ <simpara><ulink url="http://wiki.gnuarch.org/">Arch</ulink>
+ archives</simpara>
+ </listitem>
+ <listitem>
+ <simpara>Tar archives hosted on web or ftp sites.</simpara>
+ </listitem>
+ </itemizedlist>
+
+ <para>JHBuild is not intended as a replacement for the
+ distribution's package management system. Instead, it makes it
+ easy to build everything into a separate install prefix so that it
+ doesn't interfere with the rest of the system.</para>
+
+ </section>
+
+ <section id="getting-started">
+ <title>Getting Started</title>
+
+ <para>JHBuild takes a bit of work to set up on a system. As well
+ as installing JHBuild's prerequisites, it is necessary to install
+ the prerequisite tools needed to build the software in CVS (or
+ where ever else it is stored).</para>
+
+ <section id="getting-started-install">
+ <title>Installing JHBuild</title>
+
+ <para>Before downloading JHBuild, you should make sure you have
+ a copy of Python &gt;= 2.0 installed on your system. It is also
+ essential that the Expat XML parser extension is installed.
+ This will be the case if you are using Python &gt;= 2.3, or had
+ expat installed when building Python. You can check whether
+ this is the case by running the following simple command from
+ the Python interpreter:</para>
+
+ <screen><prompt>&gt;&gt;&gt;</prompt> <userinput>import xml.parsers.expat</userinput>
+<prompt>&gt;&gt;&gt;</prompt></screen>
+
+ <para>If this completes without an exception, then it is
+ installed correctly.</para>
+
+ <para>At the moment, the only way to download JHBuild is via
+ CVS. This can be achieved with the following commands. They
+ should be run in the directory where jhbuild will be installed
+ (for example, <filename>~/cvs/gnome2</filename>).</para>
+
+ <screen><prompt>$</prompt> <userinput>cvs -d :pserver:anonymous@anoncvs.gnome.org:/cvs/gnome login</userinput>
+<computeroutput>Logging in to :pserver:anonymous@anoncvs.gnome.org:2401/cvs/gnome
+CVS password: </computeroutput><userinput><replaceable>press enter</replaceable></userinput>
+<prompt>$</prompt> <userinput>cvs -d :pserver:anonymous@anoncvs.gnome.org:/cvs/gnome checkout jhbuild</userinput>
+<prompt>$</prompt></screen>
+
+ <para>This will download JHBuild into a
+ <filename>jhbuild</filename> folder under the current
+ directory. Now to build and install it:</para>
+
+ <screen><prompt>$</prompt> <userinput>cd jhbuild</userinput>
+<prompt>$</prompt> <userinput>make</userinput>
+<computeroutput>...</computeroutput>
+<prompt>$</prompt> <userinput>make install</userinput>
+<computeroutput>...</computeroutput>
+<prompt>$</prompt></screen>
+
+ <para>If these steps complete successfully, a small shell script
+ should be installed in <filename>~/bin</filename> to start
+ JHBuild. If this directory is not in the <envar>PATH</envar>,
+ it will need to be added (possibly by editing
+ <filename>~/.profile</filename> or
+ <filename>~/.bashrc</filename>).</para>
+
+ <para>Before JHBuild can be run, it will be necessary to set up
+ a <filename>~/.jhbuildrc</filename> file that configures how
+ JHBuild will behave.</para>
+ </section>
+
+ <section id="getting-started-configure">
+ <title>Configuring JHBuild</title>
+
+ <para>The <filename>~/.jhbuildrc</filename> file uses Python
+ syntax to set a number of configuration variables for JHBuild.
+ A minimal configuration file might look something like
+ this:</para>
+
+ <programlisting>
+moduleset = 'gnome-2.10'
+modules = [ 'meta-gnome-desktop' ]
+checkoutroot = os.path.join(os.environ['HOME'], 'cvs', 'gnome2')
+prefix = os.path.join(os.environ['HOME'], 'prefix')
+os.environ['INSTALL'] = os.path.join(os.environ['HOME'],
+ 'bin', 'install-check')
+</programlisting>
+
+ <para>This will get JHBuild to build the
+ <application>meta-gnome-desktop</application> module (and its
+ dependencies) from the <systemitem>gnome-2.10</systemitem> module
+ set. It will unpack source trees to
+ <filename>~/cvs/gnome2</filename> and install modules to
+ <filename>~/prefix</filename>. It also sets the
+ <envar>INSTALL</envar> environment variable to a program that
+ handles installation of headers specially in order to decrease
+ the work during a rebuild.</para>
+
+ <para>Some of configuration variables available include:</para>
+
+ <variablelist>
+ <?dbhtml list-presentation="table"?>
+ <varlistentry>
+ <term><varname>moduleset</varname></term>
+ <listitem>
+ <simpara>A string or list of strings giving the name(s) of
+ the module set(s) to use. If a module set name is a fully
+ qualified URL, then the module set will be cached locally
+ and regularly updated. If two module sets contain a
+ module with the same name, then the last module set listed
+ wins.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>modules</varname></term>
+ <listitem>
+ <simpara>A list of strings giving the modules you want to
+ build. The list of modules actually built will be
+ recursively expanded to include all the
+ dependencies.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>checkoutroot</varname></term>
+ <listitem>
+ <simpara>The base directory where all source modules
+ should be unpacked.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>prefix</varname></term>
+ <listitem>
+ <simpara>The directory prefix to install modules
+ to.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>os.environ</varname></term>
+ <listitem>
+ <simpara>A dictionary representing the environment. This
+ can be used to set or get environment variable values as
+ seen in the example above.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>skip</varname></term>
+ <listitem>
+ <simpara>A list of module names that should not be
+ included when deciding what to build. One use of this
+ variable is to use the version of a package included with
+ the distribution instead of building it</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>autogenargs</varname></term>
+ <listitem>
+ <simpara>A string listing arguments that should be passed
+ to the <command>autogen.sh</command> or
+ <command>configure</command> scripts for
+ modules.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>makeargs</varname></term>
+ <listitem>
+ <simpara>A string listing arguments that should be passed
+ to <command>make</command>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>cvsroots</varname></term>
+ <listitem>
+ <simpara>By default, JHBuild will check out code from CVS
+ using an anonymous CVS root. This dictionary is used to
+ tell JHBuild to use an alternative CVS root for a
+ particular repository (a developer would probably want to
+ do this). This variable is a dictionary where the keys
+ are short repository names (for example, <systemitem
+ class="systemname">gnome.org</systemitem> is used for the
+ GNOME CVS repository), and the values are the alternative
+ CVS root strings.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>svnroots</varname></term>
+ <listitem>
+ <simpara>Similar to <varname>cvsroots</varname> but for
+ Subversion repositories.</simpara>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+
+ <section id="getting-started-bootstrap">
+ <title>Build Prerequisites</title>
+
+ <para>Before any modules can be built, it is necessary to have
+ certain build tools installed. These include the GNU auto tools
+ (<application>autoconf</application>,
+ <application>automake</application>,
+ <application>libtool</application> and
+ <application>gettext</application>), pkg-config nad
+ Python.</para>
+
+ <para>JHBuild can check if your distro has installed these tools
+ using the <command>sanitycheck</command> command:</para>
+
+ <screen><prompt>$</prompt> <userinput>jhbuild sanitycheck</userinput></screen>
+
+ <para>If this command prints any messages, these can be fixed in
+ one of two ways:</para>
+
+ <orderedlist>
+ <listitem>
+ <simpara>Install the required package from the
+ distribution. The <command>sanitycheck</command> command
+ should be run again afterwards to make sure everything is
+ okay.</simpara>
+ </listitem>
+ <listitem>
+ <simpara>Run the <command>bootstrap</command> command to
+ install the build prerequsites.</simpara>
+ </listitem>
+ </orderedlist>
+
+ <para>The <command>bootstrap</command> command can be invoked
+ like so:</para>
+
+ <screen><prompt>$</prompt> <userinput>jhbuild bootstrap</userinput></screen>
+
+ <para>This will download and install all the build
+ prerequisites. Once it is finished, the
+ <command>sanitycheck</command> command should be rerun to verify
+ that everything is in place.</para>
+
+ <note>
+ <para>The <command>bootstrap</command> command does not build
+ all the packages required by these tools. If the OS does not
+ provide those packages, then they will need to be built
+ separately.</para>
+
+ <para>Some packages to check for include
+ <application>m4</application>, <application>perl</application>
+ and a C compiler.</para>
+ </note>
+ </section>
+
+ <section id="getting-started-use">
+ <title>Using JHBuild</title>
+
+ <para>Now that everything is set up, JHBuild can be used to
+ build some software. To build all the modules selected in the
+ <filename>~/.jhbuildrc</filename> file, run the following command:</para>
+
+ <screen><prompt>$</prompt> <userinput>jhbuild build</userinput></screen>
+
+ <para>This will download, configure, compile and install each of
+ the modules. If an error occurs at any stage, JHBuild will
+ present a menu asking the user what to do. These choices
+ include dropping to a shell to fix the error, rerunning the
+ build stage, giving up on the module (which will also cause any
+ modules depending on it to fail), or ignore the error and
+ continue.</para>
+
+ <para>It is also possible to build a different set of modules
+ (and their dependencies) by passing their names as arguments to
+ the <command>build</command> command:</para>
+
+ <screen><prompt>$</prompt> <userinput>jhbuild build gtk+</userinput></screen>
+
+ <para>If you exit JHBuild part way through a build for some
+ reason, it is possible to pick up a build at a particular
+ package using the <option>--start-at</option> option:</para>
+
+ <screen><prompt>$</prompt> <userinput>jhbuild build --start-at=pango</userinput></screen>
+
+ <para>To build one or more modules, without their dependencies,
+ the <command>buildone</command> command can be used:</para>
+
+ <screen><prompt>$</prompt> <userinput>jhbuild buildone gtk+</userinput></screen>
+
+ <para>To get a list of the modules jhbuild will build, and the
+ order they will be built in, use the <command>list</command>
+ command:</para>
+
+ <screen><prompt>$</prompt> <userinput>jhbuild list</userinput></screen>
+
+ <para>To get information about a particular module, the
+ <command>info</command> command can be used:</para>
+
+ <screen><prompt>$</prompt> <userinput>jhbuild info gtk+</userinput></screen>
+
+ <para>If your internet bandwidth varies, you can get JHBuild to
+ download or update all the software it will build in one go
+ without actually building it:</para>
+
+ <screen><prompt>$</prompt> <userinput>jhbuild update</userinput></screen>
+
+ <para>Later on, you can tell JHBuild to build everything without
+ downloading or updating:</para>
+
+ <screen><prompt>$</prompt> <userinput>jhbuild build --no-network</userinput></screen>
+
+ <para>If you want to run a particular command with the same
+ environment variables set that JHBuild uses, use the
+ <command>run</command> command:</para>
+
+ <screen><prompt>$</prompt> <userinput>jhbuild run <replaceable>program</replaceable></userinput></screen>
+
+ <para>To start a shell with that environment, use the
+ <command>shell</command> command:</para>
+
+ <screen><prompt>$</prompt> <userinput>jhbuild shell</userinput></screen>
+
+ </section>
+ </section>
+
+ <section id="command-reference">
+ <title>Command Reference</title>
+
+ <para>JHBuild uses a command line syntax similar to tools like CVS:</para>
+
+ <cmdsynopsis>
+ <command>jhbuild</command>
+ <arg><replaceable>global-options</replaceable></arg>
+ <arg choice="plain">command</arg>
+ <arg><replaceable>command-arguments</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>The global jhbuild options are:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-f</option>, <option>--file</option>
+ <replaceable>config</replaceable></term>
+ <listitem>
+ <simpara>Use an alternative configuration file, instead of
+ the default <filename>~/.jhbuildrc</filename>.</simpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-m</option>, <option>--moduleset</option>
+ <replaceable>moduleset</replaceable></term>
+ <listitem>
+ <simpara>Use a module set other than the one listed in the
+ configuration file.</simpara>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Command specific options are listed below.</para>
+
+ <section id="command-reference-bootstrap">
+ <title>bootstrap</title>
+
+ <para>The <command>bootstrap</command> command is used to
+ install a set of build utilities required to build most modules
+ (eg. autoconf, automake, etc).</para>
+
+ <cmdsynopsis>
+ <command>jhbuild bootstrap</command>
+ </cmdsynopsis>
+
+ <para>Internally <command>bootstrap</command> is implemented
+ using the same code as <command>build</command>, using the
+ <filename>bootstrap.modules</filename> moduleset.</para>
+
+ </section>
+
+ <section id="command-reference-build">
+ <title>build</title>
+
+ <para>The <command>build</command> command is used to build one
+ or more packages, including their dependencies.</para>
+
+ <cmdsynopsis>
+ <command>jhbuild build</command>
+ <arg>--autogen</arg>
+ <arg>--clean</arg>
+ <arg>--no-network</arg>
+ <arg rep="repeat">--skip=<replaceable>module</replaceable></arg>
+ <arg>--start-at=<replaceable>module</replaceable></arg>
+ <arg>-D <replaceable>date</replaceable></arg>
+ <arg rep="repeat">module</arg>
+ </cmdsynopsis>
+
+ <para>If no module names are given on the command line, then the
+ module list found in the configuration file will be used.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-a</option>, <option>--autogen</option></term>
+ <listitem>
+ <simpara>Always run <command>autogen.sh</command>
+ before building modules. By default,
+ <command>autogen.sh</command> will only be called if the
+ toplevel makefile is missing. Otherwise, it relies on the
+ package's makefiles to detect if configure needs to be
+ rebuilt or rerun.</simpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-c</option>, <option>--clean</option></term>
+ <listitem>
+ <simpara>Run <command>make clean</command> before building
+ modules.</simpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-n</option>, <option>--no-network</option></term>
+ <listitem>
+ <simpara>Do not access the network when building modules.
+ This will skip download or update stages in a build. If a
+ module can't be built without network access, it will
+ fail.</simpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-s</option>,
+ <option>--skip</option>=<replaceable>module,...</replaceable></term>
+ <listitem>
+ <simpara>Ignore the named modules when following
+ dependencies to expand the list of modules to be
+ built.</simpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-t</option>,
+ <option>--start-at</option>=<replaceable>module</replaceable></term>
+ <listitem>
+ <simpara>After expanding the list of modules to build,
+ start at the named module rather than at the beginning of
+ the list. This is useful if the build was interrupted for
+ some reason.</simpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-D</option>
+ <replaceable>date</replaceable></term>
+ <listitem>
+ <simpara>If the underlying version control system supports
+ it, try to update the source tree to its state at the
+ given date before building. The date string should be in
+ ISO format.</simpara>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </section>
+
+ <section id="command-reference-buildone">
+ <title>buildone</title>
+
+ <para>The <command>buildone</command> command is similar to
+ <command>build</command>, but it does not use dependency
+ information to expand the module list. It is useful for quickly
+ rebuilding one or more modules.</para>
+
+ <cmdsynopsis>
+ <command>jhbuild buildone</command>
+ <arg>--autogen</arg>
+ <arg>--clean</arg>
+ <arg>--no-network</arg>
+ <arg>-D <replaceable>date</replaceable></arg>
+ <arg choice="plain" rep="repeat">module</arg>
+ </cmdsynopsis>
+
+ <para>The <option>--autogen</option>, <option>--clean</option>,
+ <option>--no-network</option> and <option>-D</option> options
+ are processed the same as for <command>build</command>.</para>
+
+ <para>Unlike <command>build</command>, at least one module must
+ be listed on the command line.</para>
+
+ </section>
+
+ <section id="command-reference-dot">
+ <title>dot</title>
+
+ <para>The <command>dot</command> command generates a file
+ describing the directed graph formed by the dependencies between
+ a set of modules. This file can then be processed using the
+ <ulink url="http://www.graphviz.org/">GraphViz</ulink> software
+ to produce a nice diagram.</para>
+
+ <cmdsynopsis>
+ <command>jhbuild dot</command>
+ <arg rep="repeat">module</arg>
+ </cmdsynopsis>
+
+ <para>If no module names are given on the command line, then the
+ module list found in the configuration file will be used.</para>
+
+ <para>The output of this command can easily be piped to the
+ <command>dot</command> utility to generate a postscript
+ file:</para>
+
+ <screen><prompt>$</prompt> <userinput>jhbuild dot <replaceable>modules</replaceable> | dot -Tps > dependencies.ps</userinput></screen>
+
+ </section>
+
+ <section id="command-reference-info">
+ <title>info</title>
+
+ <para>The <command>info</command> command is used to display
+ information about one or more modules.</para>
+
+ <cmdsynopsis>
+ <command>jhbuild info</command>
+ <arg choice="plain" rep="repeat">module</arg>
+ </cmdsynopsis>
+
+ <para>The command prints the module name, type, dependencies,
+ dependent packages, and the time it was last installed with
+ JHBuild. It may also print some information specific to the
+ module type, such as the CVS repository or download URL.</para>
+
+ </section>
+
+ <section id="command-reference-list">
+ <title>list</title>
+
+ <para>The <command>list</command> command is used to show the
+ expanded list of modules the <command>build</command> command
+ would build.</para>
+
+ <cmdsynopsis>
+ <command>jhbuild list</command>
+ <arg>--show-revision</arg>
+ <arg rep="repeat">module</arg>
+ </cmdsynopsis>
+
+ <para>If no module names are given on the command line, then the
+ module list found in the configuration file will be used.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-r</option>,
+ <option>--show-revision</option></term>
+ <listitem>
+ <simpara>If a particular module is being checked out on a
+ branch, show the branch tag name with the module
+ name.</simpara>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </section>
+
+ <section id="command-reference-run">
+ <title>run</title>
+
+ <para>The <command>run</command> command is used to run an
+ arbitrary command using the same environment as JHBuild uses
+ when building modules.</para>
+
+ <cmdsynopsis>
+ <command>jhbuild run</command>
+ <arg choice="plain"><replaceable>program</replaceable></arg>
+ <arg rep="repeat"><replaceable>argument</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>If using JHBuild to build GNOME, this command can be
+ useful in X startup scripts.</para>
+ </section>
+
+ <section id="command-reference-sanitycheck">
+ <title>sanitycheck</title>
+
+ <para>The <command>sanitycheck</command> command performs a
+ number of checks to see whether the build environment is
+ okay.</para>
+
+ <cmdsynopsis>
+ <command>jhbuild sanitycheck</command>
+ </cmdsynopsis>
+
+ <para>Some of the checks include:</para>
+
+ <itemizedlist>
+ <listitem>
+ <simpara>That the checkout and install prefixes are
+ writable.</simpara>
+ </listitem>
+ <listitem>
+ <simpara>That some of the required build tools are
+ installed.</simpara>
+ </listitem>
+ <listitem>
+ <simpara>That some commonly used macros are available in the
+ search paths of the <command>aclocal</command> commands
+ associated with the various versions of
+ <command>automake</command>.</simpara>
+ </listitem>
+ <listitem>
+ <simpara>That the XML catalog contains the DocBook DTD and
+ stylesheets.</simpara>
+ </listitem>
+ </itemizedlist>
+
+ </section>
+
+ <section id="command-reference-shell">
+ <title>shell</title>
+
+ <para>The <command>shell</command> command starts the user's
+ shell with the same environment as JHBuild uses when building
+ modules.</para>
+
+ <cmdsynopsis>
+ <command>jhbuild shell</command>
+ </cmdsynopsis>
+
+ <para>This command is roughly equivalent to the
+ following:</para>
+
+ <screen><prompt>$</prompt> <userinput>jhbuild run $SHELL</userinput></screen>
+ </section>
+
+ <section id="command-reference-tinderbox">
+ <title>tinderbox</title>
+
+ <para>The <command>tinderbox</command> command is similar to
+ <command>build</command>, but writes all terminal output to HTML
+ files suitable for publishing on a website. It can be used to
+ set up systems similar to Mozilla's Tinderbox, or Debian's
+ Buildd.</para>
+
+ <cmdsynopsis>
+ <command>jhbuild tinderbox</command>
+ <arg>--autogen</arg>
+ <arg>--clean</arg>
+ <arg>--no-network</arg>
+ <arg>--output=<replaceable>directory</replaceable></arg>
+ <arg rep="repeat">--skip=<replaceable>module</replaceable></arg>
+ <arg>--start-at=<replaceable>module</replaceable></arg>
+ <arg>-D <replaceable>date</replaceable></arg>
+ <arg rep="repeat">module</arg>
+ </cmdsynopsis>
+
+ <para>The <option>--autogen</option>, <option>--clean</option>,
+ <option>--no-network</option>, <option>--skip</option>,
+ <option>--start-at</option> and <option>-D</option> options are
+ processed the same as for <command>build</command>.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-o</option>,
+ <option>--output</option>=<replaceable>directory</replaceable></term>
+ <listitem>
+ <simpara>The directory to write the HTML build
+ logs.</simpara>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </section>
+
+ <section id="command-reference-update">
+ <title>update</title>
+
+ <para>The <command>update</command> command is similar to
+ <command>build</command>, but only performs the download or
+ update stage for modules without building them.</para>
+
+ <cmdsynopsis>
+ <command>jhbuild update</command>
+ <arg rep="repeat">--skip=<replaceable>module</replaceable></arg>
+ <arg>--start-at=<replaceable>module</replaceable></arg>
+ <arg>-D <replaceable>date</replaceable></arg>
+ <arg rep="repeat">module</arg>
+ </cmdsynopsis>
+
+ <para>The <option>--skip</option>, <option>--start-at</option>
+ and <option>-D</option> options are processed the same as for
+ <command>build</command>.</para>
+
+ </section>
+
+ <section id="command-reference-updateone">
+ <title>updateone</title>
+
+ <para>The <command>updateone</command> command is similar to
+ <command>update</command>, but it does not use dependency
+ information to expand the module list. It is useful for quickly
+ updating one or more modules.</para>
+
+ <cmdsynopsis>
+ <command>jhbuild updateone</command>
+ <arg>-D <replaceable>date</replaceable></arg>
+ <arg choice="plain" rep="repeat">module</arg>
+ </cmdsynopsis>
+
+ <para>The <option>-D</option> option is processed the same as
+ for <command>update</command>.</para>
+
+ <para>Unlike <command>update</command>, at least one module must
+ be listed on the command line.</para>
+ </section>
+
+ </section>
+
+ <section id="config-reference">
+ <title>Configuration File Reference</title>
+
+ <para>The <filename>~/.jhbuildrc</filename> file uses standard
+ Python syntax. The file is run, and the resulting variables
+ defined in the namespace are used to control how JHBuild acts. A
+ set of default values are inserted into the namespace before
+ running the user's configuration file.</para>
+
+ <section id="config-reference-variables">
+ <title>Configuration Variables</title>
+
+ <variablelist>
+ <?dbhtml list-presentation="table"?>
+ <varlistentry>
+ <term><varname>alwaysautogen</varname></term>
+ <listitem>
+ <simpara>If set to <constant>True</constant>, then always
+ run <command>autogen.sh</command> before
+ <command>make</command> even if a makefile exists. This
+ is equivalent to passing <option>--always-autogen</option>
+ option to JHBuild. Defaults to
+ <constant>False</constant>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>autogenargs</varname></term>
+ <listitem>
+ <simpara>A string containing arguments passed to the
+ <command>autogen.sh</command> script of all modules. Can
+ be overriden for particular modules using the
+ <varname>module_autogenargs</varname>
+ dictionary.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>builddir_pattern</varname></term>
+ <listitem>
+ <simpara>A <function>printf</function> style formatting
+ pattern used to generate build directory names. This is
+ only used when using separate source and build trees. The
+ <literal>%s</literal> in the format string will be
+ replaced with the source directory name. Defaults to
+ <literal>'%s'</literal>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>buildroot</varname></term>
+ <listitem>
+ <simpara>A string giving the parent directory to place
+ build trees. Defaults to <constant>None</constant>, which
+ causes builds to be performed within the source
+ trees.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>checkoutroot</varname></term>
+ <listitem>
+ <simpara>A string giving the directory to unpack source
+ trees to. Unless <varname>buildroot</varname> is set,
+ builds will occur in this directory too. Defaults to
+ <filename>~/cvs/gnome2</filename>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>cvsroots</varname></term>
+ <listitem>
+ <simpara>A dictionary that can be used to change the CVS
+ roots used to check out source code. If you have a CVS
+ account for a particular project, you can set the
+ associated key to use that account rather than the
+ anonymous account. For example, you might want to set
+ <literal>'gnome.org'</literal> to
+ <literal>':ext:<replaceable>username</replaceable>@cvs.gnome.org:/cvs/gnome'</literal>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>branches</varname></term>
+ <listitem>
+ <simpara>A dictionary that can be used to override the
+ branch used for a particular module. This is useful if
+ you are doing some changes on a branch of a module and
+ want JHBuild to build that branch instead of the one
+ listed in the module set.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>makeargs</varname></term>
+ <listitem>
+ <simpara>A string listing additional arguments to be
+ passed to <command>make</command>. Defaults to
+ <literal>''</literal>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>makecheck</varname></term>
+ <listitem>
+ <simpara>A boolean value specifying whether to run
+ <command>make check</command> after
+ <command>make</command>. This might be useful in a
+ tinderbox-style setup. Defaults to
+ <constant>False</constant>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>makeclean</varname></term>
+ <listitem>
+ <simpara>A boolean value specifying whether to run
+ <command>make clean</command> before
+ <command>make</command>. Defaults to
+ <constant>False</constant>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>module_autogenargs</varname></term>
+ <listitem>
+ <simpara>A dictionary mapping module names to strings
+ giving arguments to be passed to
+ <command>autogen.sh</command>. If a particular module
+ isn't listed in the dictionary, the global
+ <varname>autogenargs</varname> will be used
+ instead.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>module_makeargs</varname></term>
+ <listitem>
+ <simpara>A dictionary mapping module names to strings
+ giving arguments to be passed to <command>make</command>.
+ If a particular module isn't listed in the dictionary, the
+ global <varname>makeargs</varname> will be used
+ instead.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>modules</varname></term>
+ <listitem>
+ <simpara>A list of module names to build. This list will
+ be expanded using the dependency information found in the
+ module set. Defaults to <literal>[ 'meta-gnome-desktop'
+ ]</literal>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>moduleset</varname></term>
+ <listitem>
+ <simpara>A string giving the name of the module set to
+ use. This can either be a short string to refer to one of
+ JHBuild's included module sets, or a full HTTP URL to
+ refer to an externally managed module set. Currently
+ defaults to <literal>'gnome-2.10'</literal>, but is
+ usually updated as GNOME development progresses.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>nonetwork</varname></term>
+ <listitem>
+ <simpara>A boolean value saying whether to access the
+ network or not. This affects checking out or updating CVS
+ modules, downloading tarballs and updating module sets.
+ Setting this to <constant>True</constant> is equivalent to
+ passing the <option>--no-network</option> option to
+ JHBuild. Defaults to
+ <constant>False</constant>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>prefix</varname></term>
+ <listitem>
+ <simpara>A string giving the prefix to install modules to.
+ Defaults to <literal>'/opt/gnome2'</literal>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>pretty_print</varname></term>
+ <listitem>
+ <simpara>A boolean value that can be used to disable
+ pretty printing of subprocess output. Currently there is
+ only support for pretty printing CVS output. You probably
+ only want to disable this if the pretty printing causes
+ problems. Defaults to <literal>True</literal>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>skip</varname></term>
+ <listitem>
+ <simpara>A list of modules to skip when expanding the list
+ of modules to build. This is similar to the
+ <option>--skip</option> option (in fact, the
+ <option>--skip</option> option extends this list). This
+ list is empty by default.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>sticky_date</varname></term>
+ <listitem>
+ <simpara>If set, JHBuild will attempt to check out modules
+ as they existed at the given date. The date should be
+ given in the form
+ <literal>'<replaceable>yyyy</replaceable>-<replaceable>mm</replaceable>-<replaceable>dd</replaceable>'</literal>.
+ Defaults to <constant>None</constant>.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>svnroots</varname></term>
+ <listitem>
+ <simpara>Similar to <varname>cvsroots</varname> but for
+ Subversion repositories.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>tarballdir</varname></term>
+ <listitem>
+ <simpara>If set, tarballs will be downloaded to this
+ directory instead of <varname>checkoutroot</varname>.
+ This is useful if you have multiple JHBuild environments
+ or regularly blow away your
+ <varname>checkoutroot</varname> and want to reduce
+ bandwidth usage.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>tinderbox_outputdir</varname></term>
+ <listitem>
+ <simpara>A string giving the directory to store
+ <command>jhbuild tinderbox</command> output. This string
+ can be overridden by the <option>--output</option> option.
+ Defaults to <constant>None</constant>, so either the
+ command line option must be used or this variable must be
+ set in the configuration file.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>use_lib64</varname></term>
+ <listitem>
+ <simpara>A boolean value that specifies whether to install
+ libraries to <filename>lib64</filename> directories. If
+ this is set,
+ <literal>--libdir=\${exec_prefix}/lib64</literal> will be
+ passed to configure. Defaults to
+ <constant>True</constant> if running on
+ <literal>x86_64</literal>, <literal>ppc64</literal> or
+ <literal>s390x</literal> Linux, and
+ <constant>False</constant> on other systems.</simpara>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+
+ <section id="config-reference-other">
+ <title>Other Configuration File Structures</title>
+
+ <para>In addition to the above variables, there are some other
+ things that can be set in the configuration file:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><varname>os.environ</varname></term>
+ <listitem>
+ <para>This is dictionary represents the environment of the
+ process (which also gets passed on to processes that
+ JHBuild spawns).</para>
+ <para>Some environment variables you may want to set
+ include <envar>CFLAGS</envar>, <envar>INSTALL</envar> (to
+ use the more efficient <command>install-check</command>
+ program included with JHBuild) and
+ <envar>LDFLAGS</envar>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><function>addpath</function>(<parameter>envvar</parameter>,
+ <parameter>pathname</parameter>)</term>
+ <listitem>
+ <para>This will add a directory to a
+ <envar>PATH</envar>-style environment variable. It will
+ correctly handle the case when the environment variable is
+ initially empty (having a stray colon at the beginning or
+ end of an environment variable can have unexpected
+ consequences).</para>
+ <para>This function has special handling for the
+ <envar>ACLOCAL_FLAGS</envar> environment variable, which
+ expects paths to be listed in the form <literal>-I
+ <replaceable>pathname</replaceable></literal>.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><function>prependpath</function>(<parameter>envvar</parameter>,
+ <parameter>pathname</parameter>)</term>
+ <listitem>
+ <para>After processing the configuration file, JHBuild
+ will alter some paths based on variables such as
+ <varname>prefix</varname> (eg. adding
+ <literal>$prefix/bin</literal> to the start of
+ <envar>PATH</envar>).</para>
+ <para>The <function>prependpath</function> function works
+ like <function>addpath</function>, except that the
+ environment variable is modified after JHBuild has made
+ its changes to the environment.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ </section>
+
+ <section id="moduleset-syntax">
+ <title>Module Set File Syntax</title>
+
+ <para>JHBuild uses simple XML files to describe the dependencies
+ between modules. A RELAX-NG schema and Document Type Definition
+ are included with JHBuild in the <filename>modulesets/</filename>
+ directory. The RELAX-NG schema makes it trivial to edit module
+ set files using <literal>nxml-mode</literal> in Emacs.</para>
+
+ <para>The toplevel element in a module set file is <sgmltag
+ class="element">moduleset</sgmltag> element. Currently no XML
+ namespace is used, but in the future this might change. The
+ elements below the toplevel come in three types: module sources,
+ include statements and module definitions.</para>
+
+ <section id="moduleset-syntax-sources">
+ <title>Module Sources</title>
+
+ <para>Rather than listing the full location of every module, a
+ number of "module sources" are listed in the module set, and
+ then referenced by name in the module definitions. As well as
+ reducing the amount of redundant information in the module set,
+ it makes it easy for a user to specify an alternative source for
+ those modules (for CVS and Subversion, it is common for
+ developers and users to use different repository access
+ methods).</para>
+
+ <section id="moduleset-syntax-sources-cvsroot">
+ <title>cvsroot</title>
+
+ <para>The <sgmltag class="element">cvsroot</sgmltag> element
+ is used to describe a CVS repository.</para>
+
+ <programlisting>
+&lt;cvsroot name="<replaceable>rootname</replaceable>"
+ [ default="<replaceable>yes|no</replaceable>" ]
+ root="<replaceable>anon-cvsroot</replaceable>"
+ password="<replaceable>anon-password</replaceable>"/&gt;
+</programlisting>
+
+ <para>The <sgmltag class="attribute">name</sgmltag> attribute
+ should be a unique identifier for the CVS repository.</para>
+
+ <para>If <sgmltag class="attribute">default</sgmltag>
+ attribute says whether this is the default module source for
+ this module set file.</para>
+
+ <para>The <sgmltag class="attribute">root</sgmltag> attribute
+ lists the CVS root used for anonymous access to this
+ repository, and the <sgmltag
+ class="attribute">password</sgmltag> attribute gives the
+ password used for anonymous access.</para>
+ </section>
+
+ <section id="moduleset-syntax-sources-svnroot">
+ <title>svnroot</title>
+
+ <para>The <sgmltag class="element">svnroot</sgmltag> element
+ is used to describe a Subversion repository.</para>
+
+ <programlisting>
+&lt;svnroot name="<replaceable>rootname</replaceable>"
+ [ default="<replaceable>yes|no</replaceable>" ]
+ href="<replaceable>anon-svnroot</replaceable>"/&gt;
+</programlisting>
+
+ <para>The <sgmltag class="attribute">name</sgmltag> attribute
+ should be a unique identifier for the Subversion
+ repository.</para>
+
+ <para>If <sgmltag class="attribute">default</sgmltag>
+ attribute says whether this is the default module source for
+ this module set file.</para>
+
+ <para>The <sgmltag class="attribute">href</sgmltag> attribute
+ lists the base URL for the repository. This will probably be
+ either a <literal>http</literal>, <literal>https</literal> or
+ <literal>svn</literal> URL.</para>
+ </section>
+
+ <section id="moduleset-syntax-sources-arch-archive">
+ <title>arch-archive</title>
+
+ <para>The <sgmltag class="element">arch-archive</sgmltag> element
+ is used to describe a GNU Arch archive.</para>
+
+ <programlisting>
+&lt;arch-archive name="<replaceable>archivename</replaceable>"
+ [ default="<replaceable>yes|no</replaceable>" ]
+ href="<replaceable>mirror-url</replaceable>"/&gt;
+</programlisting>
+
+ <para>The <sgmltag class="attribute">name</sgmltag> attribute
+ should be the Arch archive name.</para>
+
+ <para>If <sgmltag class="attribute">default</sgmltag>
+ attribute says whether this is the default module source for
+ this module set file.</para>
+
+ <para>The <sgmltag class="attribute">href</sgmltag> attribute
+ lists a public mirror URL for the archive.</para>
+ </section>
+ </section>
+
+ <section id="moduleset-syntax-includes">
+ <title>Including Other Module Sets</title>
+
+ <para>JHBuild allows one module set to include the contents of
+ another by reference using the <sgmltag
+ class="element">include</sgmltag> element.</para>
+
+ <programlisting>
+&lt;include href="<replaceable>uri</replaceable>"/&gt;
+</programlisting>
+
+ <para>The <sgmltag class="attribute">href</sgmltag> is a URI
+ reference to the module set to be included, relative to the file
+ containing the <sgmltag class="element">include</sgmltag>
+ element.</para>
+
+ <para>Only module definitions are imported from the referenced
+ module set &mdash; module sources are not. Multiple levels of
+ includes are allowed, but include loops are not (there isn't any
+ code to handle loops at the moment).</para>
+ </section>
+
+ <section id="moduleset-syntax-defs">
+ <title>Module Definitions</title>
+
+ <para>There are various types of module definitions that can be
+ used in a module set file, and the list can easily be extended.
+ Only the most common ones will be mentioned here.</para>
+
+ <section id="moduleset-syntax-defs-cvsmodule">
+ <title>cvsmodule</title>
+
+ <para>The <sgmltag class="element">cvsmodule</sgmltag> element
+ is used to define a module that is to be built from
+ CVS.</para>
+
+ <programlisting>
+&lt;cvsmodule module="<replaceable>modulename</replaceable>"
+ [ revision="<replaceable>branch-or-tag</replaceable>" ]
+ [ checkoutdir="<replaceable>directory</replaceable>" ]
+ [ root="<replaceable>rootname</replaceable>" ]
+ [ autogenargs="<replaceable>autogenargs</replaceable>" ]
+ [ makeargs="<replaceable>makeargs</replaceable>" ]
+ [ supports-non-srcdir-builds="<replaceable>yes|no</replaceable>" ]&gt;
+ &lt;dependencies&gt;
+ &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
+ ...
+ &lt;/dependencies&gt;
+ &lt;suggests&gt;
+ &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
+ ...
+ &lt;/suggests&gt;
+&lt;/cvsmodule&gt;
+</programlisting>
+
+ <para>The <sgmltag class="attribute">module</sgmltag>,
+ <sgmltag class="attribute">revision</sgmltag> and <sgmltag
+ class="attribute">root</sgmltag> attributes identify the
+ module to check out from CVS. The <sgmltag
+ class="attribute">checkoutdir</sgmltag> attribute can be used
+ to specify an alternative directory to check out to (by
+ default, the value of <sgmltag
+ class="attribute">module</sgmltag> is used).</para>
+
+ <para>The <sgmltag class="attribute">autogenargs</sgmltag>,
+ <sgmltag class="attribute">makeargs</sgmltag> and <sgmltag
+ class="attribute">supports-non-srcdir-builds</sgmltag>
+ attributes are common to many different module types. The
+ <sgmltag class="attribute">autogenargs</sgmltag> attribute
+ lists additional arguments to be passed to
+ <command>autogen.sh</command>, and <sgmltag
+ class="attribute">makeargs</sgmltag> lists additional
+ arguments to be passed to <command>make</command>. The
+ <sgmltag
+ class="attribute">supports-non-srcdir-builds</sgmltag>
+ attribute is used to mark modules that can't be cleanly built
+ using a separate source directory.</para>
+
+ <para>The <sgmltag class="element">dependencies</sgmltag> and
+ <sgmltag class="element">suggests</sgmltag> elements are used
+ to declare the dependencies of the module. Any modules listed
+ in the <sgmltag class="element">dependencies</sgmltag> element
+ will be added to the module list for <command>jhbuild
+ build</command> if it isn't already included, and make sure
+ the dependent modules are built first.</para>
+
+ <para>After generating the modules list, the modules listed in
+ the <sgmltag class="element">suggests</sgmltag> element will
+ be used to further sort the modules list (although it will not
+ pull any additional modules). This is intended for cases
+ where a module has an optional dependency on another
+ module.</para>
+ </section>
+
+ <section id="moduleset-syntax-defs-svnmodule">
+ <title>svnmodule</title>
+
+ <para>The <sgmltag class="element">svnmodule</sgmltag> element
+ is used to define a module that is to be built from
+ Subversion.</para>
+
+ <programlisting>
+&lt;svnmodule module="<replaceable>modulename</replaceable>"
+ [ checkoutdir="<replaceable>directory</replaceable>" ]
+ [ root="<replaceable>rootname</replaceable>" ]
+ [ autogenargs="<replaceable>autogenargs</replaceable>" ]
+ [ makeargs="<replaceable>makeargs</replaceable>" ]
+ [ supports-non-srcdir-builds="<replaceable>yes|no</replaceable>" ]&gt;
+ &lt;dependencies&gt;
+ &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
+ ...
+ &lt;/dependencies&gt;
+ &lt;suggests&gt;
+ &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
+ ...
+ &lt;/suggests&gt;
+&lt;/svnmodule&gt;
+</programlisting>
+ <para>The <sgmltag class="attribute">module</sgmltag>
+ attribute gives the path of the module relative to the
+ repository URI. All other options for this element are
+ processed as for <link
+ linkend="moduleset-syntax-defs-cvsmodule"><sgmltag
+ class="element">cvsmodule</sgmltag></link>.</para>
+ </section>
+
+ <section id="moduleset-syntax-defs-archmodule">
+ <title>archmodule</title>
+
+ <para>The <sgmltag class="element">archmodule</sgmltag> element
+ is used to define a module that is to be built from
+ a GNU Arch archive.</para>
+
+ <programlisting>
+&lt;archmodule version="<replaceable>modulename</replaceable>"
+ [ checkoutdir="<replaceable>directory</replaceable>" ]
+ [ root="<replaceable>rootname</replaceable>" ]
+ [ autogenargs="<replaceable>autogenargs</replaceable>" ]
+ [ makeargs="<replaceable>makeargs</replaceable>" ]
+ [ supports-non-srcdir-builds="<replaceable>yes|no</replaceable>" ]&gt;
+ &lt;dependencies&gt;
+ &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
+ ...
+ &lt;/dependencies&gt;
+ &lt;suggests&gt;
+ &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
+ ...
+ &lt;/suggests&gt;
+&lt;/archmodule&gt;
+</programlisting>
+ <para>The <sgmltag class="attribute">version</sgmltag>
+ attribute gives the version to be checked out from the archive
+ specified by <sgmltag class="attribute">root</sgmltag>. All
+ other options for this element are processed as for <link
+ linkend="moduleset-syntax-defs-cvsmodule"><sgmltag
+ class="element">cvsmodule</sgmltag></link>.</para>
+ </section>
+
+ <section id="moduleset-syntax-defs-tarball">
+ <title>tarball</title>
+
+ <para>The <sgmltag class="element">tarball</sgmltag> element
+ is used to define a module that is to be built from
+ a tarball.</para>
+
+ <programlisting>
+&lt;tarball id="<replaceable>modulename</replaceable>"
+ [ version="<replaceable>version</replaceable>" ]
+ [ autogenargs="<replaceable>autogenargs</replaceable>" ]
+ [ makeargs="<replaceable>makeargs</replaceable>" ]
+ [ supports-non-srcdir-builds="<replaceable>yes|no</replaceable>" ]&gt;
+ &lt;source href="<replaceable>source-url</replaceable>"
+ [ size="<replaceable>source-size</replaceable>" ]
+ [ md5sum="<replaceable>source-md5sum</replaceable>" ]/&gt;
+ &lt;patches&gt;
+ &lt;patch file="<replaceable>filename</replaceable>" strip="<replaceable>level</replaceable>"/&gt;
+ ...
+ &lt;/patches&gt;
+ &lt;dependencies&gt;
+ &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
+ ...
+ &lt;/dependencies&gt;
+ &lt;suggests&gt;
+ &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
+ ...
+ &lt;/suggests&gt;
+&lt;/tarball&gt;
+</programlisting>
+ <para>The <sgmltag class="attribute">id</sgmltag> and <sgmltag
+ class="attribute">version</sgmltag> attributes are used to
+ identify the module.</para>
+ <para>The <sgmltag class="element">source</sgmltag> element
+ specifies the file to download and compile. The <sgmltag
+ class="attribute">href</sgmltag> attribute is mandatory, while
+ the <sgmltag class="attribute">size</sgmltag> and <sgmltag
+ class="attribute">md5sum</sgmltag> attributes are optional.
+ If the last two attributes are present, they are used to check
+ that the source package was downloaded correctly.</para>
+ <para>The <sgmltag class="element">patches</sgmltag> element
+ is used to specify one or more patches to apply to the source
+ tree after unpacking. The patch files are looked up in the
+ <filename>jhbuild/patches/</filename> directory, and the
+ <sgmltag class="attribute">strip</sgmltag> attribute says how
+ many levels of directories to prune when applying the
+ patch.</para>
+ <para>The other attributes and the <sgmltag
+ class="element">dependencies</sgmltag> and <sgmltag
+ class="element">suggests</sgmltag> sub-elements are processed
+ as for <link
+ linkend="moduleset-syntax-defs-cvsmodule"><sgmltag
+ class="element">cvsmodule</sgmltag></link>.</para>
+ </section>
+
+ <section id="moduleset-syntax-defs-metamodule">
+ <title>metamodule</title>
+
+ <para>The <sgmltag class="element">metamodule</sgmltag>
+ element defines a module that doesn't actually do anythin.
+ The only purpose of a module of this type is its
+ dependencies.</para>
+
+ <programlisting>
+&lt;metamodule id="<replaceable>modulename</replaceable>"&gt;
+ &lt;dependencies&gt;
+ &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
+ ...
+ &lt;/dependencies&gt;
+ &lt;suggests&gt;
+ &lt;dep package="<replaceable>modulename</replaceable>"/&gt;
+ ...
+ &lt;/suggests&gt;
+&lt;/metamodule&gt;
+</programlisting>
+ <para>The <sgmltag class="attribute">id</sgmltag> attribute
+ gives the name of the module. The child elements are handled
+ as for <link
+ linkend="moduleset-syntax-defs-cvsmodule"><sgmltag
+ class="element">cvsmodule</sgmltag></link>.</para>
+ </section>
+ </section>
+ </section>
+
+ <section id="faq">
+ <title>Frequently Asked Questions</title>
+
+ <qandaset defaultlabel="qanda">
+ <qandadiv>
+ <title>General JHBuild Questions</title>
+ <qandaentry>
+ <question>
+ <simpara>The <command>wget</command> command can't
+ download any tarballs. How do I get it to work with my
+ firewall?</simpara>
+ </question>
+ <answer>
+ <para>This can be fixed by creating or editing a
+ <filename>~/.wgetrc</filename> file. If you need to go
+ through an HTTP proxy to access FTP sites, add a line like
+ the following to the file:</para>
+ <programlisting>ftp_proxy = http://<replaceable>hostname</replaceable>:<replaceable>port</replaceable>/</programlisting>
+ <para>If you just need to use passive FTP connections
+ (sometimes needed with NAT firewalls), add the following
+ line:</para>
+ <programlisting>passive_ftp = on</programlisting>
+ <para>This will fix all uses of the
+ <command>wget</command> command.</para>
+ </answer>
+ </qandaentry>
+ <qandaentry>
+ <question>
+ <simpara>Building stuff is slow. Is there any way I can
+ speed it up?</simpara>
+ </question>
+ <answer>
+ <para>Other than buying a faster CPU, hard disk or getting
+ more memory, you might want to install <ulink
+ url="http://ccache.samba.org/">CCache</ulink>, which can
+ cache compilation results for you. It is available with
+ most distributions.</para>
+ <para>After installing CCache, set the cache size with the
+ following command:</para>
+ <programlisting>ccache -M 2G</programlisting>
+ <para>(replace <literal>2G</literal> with the size you
+ want for your cache). Then create symlinks to CCache for
+ your compiler in <filename>~/bin</filename>:</para>
+ <programlisting>cd ~/bin
+for cmd in cc gcc c++ g++; do
+ ln -s /usr/bin/ccache $cmd
+done</programlisting>
+ <para>You can check the status of your cache (such as
+ cache hit rates) with the following command:</para>
+ <programlisting>ccache -s</programlisting>
+ </answer>
+ </qandaentry>
+ <qandaentry>
+ <question>
+ <simpara>Is there a better way to monitor the status of
+ the build than looking at terminal window?</simpara>
+ </question>
+ <answer>
+ <para>If you have Zenity >= 2.9 installed on your system,
+ JHBuild will display an icon in the system tray. The icon
+ will display the current build stage, and the tooltip will
+ show the last message from JHBuild.</para>
+ <para>In the future, the icon may get support for popping
+ up a balloon on error.</para>
+ </answer>
+ </qandaentry>
+ </qandadiv>
+ <qandadiv>
+ <title>Building GNOME</title>
+ <qandaentry>
+ <question>
+ <simpara>What other prerequisites are needed to build GNOME
+ with JHBuild?</simpara>
+ </question>
+ <answer>
+ <para>Some of the packages you will need on your system
+ include:</para>
+ <itemizedlist>
+ <listitem>
+ <simpara>DocBook XML DTD and XSLT stylesheets. These
+ need to be registered in the XML catalog
+ (<filename>/etc/xml/catalog</filename>).</simpara>
+ </listitem>
+ <listitem>
+ <simpara>X libraries</simpara>
+ </listitem>
+ <listitem>
+ <simpara>fam or gamin (used by gnome-vfs for file
+ monitoring).</simpara>
+ </listitem>
+ <listitem>
+ <simpara><filename>libsmbclient</filename> from Samba
+ (used for browsing Windows networks).</simpara>
+ </listitem>
+ <listitem>
+ <simpara><filename>libbz2</filename> from
+ bzip2.</simpara>
+ </listitem>
+ <listitem>
+ <simpara><filename>libpng</filename>,
+ <filename>libjpeg</filename> and
+ <filename>libtiff</filename> (used for image
+ loading).</simpara>
+ </listitem>
+ </itemizedlist>
+ <para>If you are installing distro packages, you may need
+ to install corresponding "dev" or "devel" packages. Note
+ that this list is just a starting point &mdash; not a
+ comprehensive list.</para>
+ </answer>
+ </qandaentry>
+ <qandaentry>
+ <question>
+ <simpara>I've built GNOME with JHBuild. How do I run
+ it?</simpara>
+ </question>
+ <answer>
+ <para>You will want to create a
+ <filename>~/.xsession</filename> file, which is run by the
+ display manager when you log in. This file should look
+ something like this:</para>
+ <programlisting>#!/bin/sh
+exec jhbuild run gnome-session</programlisting>
+ <para>Finally, you should make sure that the
+ <filename>~/.xsession</filename> file is executable.</para>
+ </answer>
+ </qandaentry>
+ <qandaentry>
+ <question>
+ <simpara>I built GNOME using JHBuild with
+ <varname>prefix</varname> set to <filename>/usr</filename>,
+ and now my system is broken. What should I do?</simpara>
+ </question>
+ <answer>
+ <para>Don't set <varname>prefix</varname> to
+ <filename>/usr</filename>.</para>
+ </answer>
+ </qandaentry>
+ <qandaentry>
+ <question>
+ <simpara>How do I get
+ <command>gnome-volume-manager</command> to work when
+ running in a prefix?</simpara>
+ </question>
+ <answer>
+ <para>The <command>gnome-volume-manager</command> program
+ reacts to messages from <command>hald</command> over the
+ system message bus, which must be running as root.
+ Assuming that your distribution comes with
+ <acronym>HAL</acronym>, the main problem is getting
+ <command>gnome-volume-manager</command> to talk to the
+ system message bus.</para>
+ <para>Since communication is done over a UNIX domain
+ socket, the easiest way to do this is to create a symlink
+ from <filename>/var/run/dbus</filename> to
+ <filename>$prefix/var/run/dbus</filename>:</para>
+ <programlisting>mkdir -p $prefix/var/run
+cd $prefix/var/run
+ln -s /var/run/dbus dbus</programlisting>
+ <para>You may also have trouble building HAL with JHBuild,
+ since it tries to install some things outside of its build
+ root. Running <userinput>make -k install</userinput> in
+ the hal directory might help here.</para>
+ </answer>
+ </qandaentry>
+ </qandadiv>
+ </qandaset>
+ </section>
+</article>
diff --git a/build-scripts/jhbuild/install-check.c b/build-scripts/jhbuild/install-check.c
new file mode 100644
index 0000000..743d213
--- /dev/null
+++ b/build-scripts/jhbuild/install-check.c
@@ -0,0 +1,119 @@
+/* install-check
+ * Copyright (C) 2002 Manish Singh
+ *
+ * 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.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+
+static void
+compare (const char *f1,
+ const char *f2)
+{
+ struct stat b1, b2;
+ int status;
+ pid_t pid, rpid;
+
+ if (stat (f2, &b2) || stat (f1, &b1))
+ return;
+
+ if (b1.st_size != b2.st_size)
+ return;
+
+ pid = fork ();
+
+ if (pid == 0)
+ execlp ("cmp", "cmp", "-s", f1, f2, NULL);
+ else if (pid < 0)
+ return;
+
+ do
+ rpid = waitpid (pid, &status, 0);
+ while (rpid == -1 && errno == EINTR);
+
+ if (rpid != pid)
+ status = -1;
+
+ if (status != -1 && WIFEXITED (status) && WEXITSTATUS (status) == 0)
+ exit (0);
+}
+
+int
+main (int argc,
+ char **argv)
+{
+ struct stat buf;
+ char **args;
+ int i, len;
+ char *dot, *lastarg, *start;
+
+ lastarg = argv[argc - 1];
+
+ dot = strrchr (lastarg, '.');
+ if (dot == NULL)
+ {
+ len = strlen (lastarg);
+ if (len < strlen ("orbit-idl-2"))
+ goto install;
+
+ start = lastarg + len - strlen ("orbit-idl-2");
+ if (strcmp (start, "orbit-idl-2") != 0)
+ goto install;
+ }
+ else if (dot[1] != 'h' && dot[1] != 'c' && strcmp (dot + 1, "idl") != 0)
+ goto install;
+
+ if ((argc == 4) &&
+ (strcmp (argv[1], "-c") == 0) &&
+ (strcmp (argv[2], "-d") != 0) &&
+ !stat (argv[3], &buf) &&
+ !S_ISDIR (buf.st_mode))
+ compare (argv[2], argv[3]);
+ else if ((argc == 3) &&
+ (strcmp (argv[1], "-d") != 0) &&
+ !stat (argv[2], &buf) &&
+ !S_ISDIR (buf.st_mode))
+ compare (argv[1], argv[2]);
+ else if ((argc == 6) &&
+ (strcmp (argv[1], "-c") == 0) &&
+ (strcmp (argv[2], "-m") == 0) &&
+ !stat (argv[5], &buf) &&
+ !S_ISDIR (buf.st_mode))
+ compare (argv[4], argv[5]);
+ else if ((argc == 5) &&
+ (strcmp (argv[1], "-m") == 0) &&
+ !stat (argv[4], &buf) &&
+ !S_ISDIR (buf.st_mode))
+ compare (argv[3], argv[4]);
+
+install:
+ args = malloc (sizeof (char *) * (argc + 1));
+
+ args[0] = "/usr/bin/install";
+
+ for (i = 1; i < argc; i++)
+ args[i] = argv[i];
+
+ args[argc] = NULL;
+
+ return execv (args[0], args);
+}
diff --git a/build-scripts/jhbuild/jamesh.jhbuildrc b/build-scripts/jhbuild/jamesh.jhbuildrc
new file mode 100644
index 0000000..7e9b282
--- /dev/null
+++ b/build-scripts/jhbuild/jamesh.jhbuildrc
@@ -0,0 +1,37 @@
+# -*- mode: python -*-
+
+# information about cvs server
+repos['gnome.org'] = ':ext:jamesh@cvs.gnome.org:/cvs/gnome'
+repos['cairo.freedesktop.org'] = ':ext:james@cvs.freedesktop.org:/cvs/cairo'
+
+# modules to build (deps are also built)
+moduleset = 'gnome-2.16'
+modules = ['gtk+', 'meta-gnome-desktop', 'meta-gnome-devel-tools' ]
+
+skip = [ 'mozilla' ]
+
+# the prefix to install things to (user must have write access)
+prefix = os.path.expanduser('~/prefix')
+
+# where the sources are checked out to
+checkoutroot = os.path.expanduser('~/cvs/gnome2')
+
+# where to put downloaded tarballs.
+tarballdir = os.path.join(checkoutroot, 'pkgs')
+
+# arguments to pass to autogen script
+autogenargs='--enable-maintainer-mode --disable-static --disable-gtk-doc'
+
+os.environ['INSTALL'] = os.path.expanduser('~/bin/install-check')
+
+branches['gnome-common'] = None
+
+#branches['libglade'] = 'libglade-gobject-support-branch'
+module_autogenargs['gnome-vfs'] = autogenargs + ' --enable-hal'
+module_autogenargs['gimp'] = autogenargs + ' --disable-print --enable-python'
+module_autogenargs['planner'] = autogenargs + ' --enable-database'
+
+#module_autogenargs['howl'] = autogenargs.replace('--disable-static', '')
+module_autogenargs['totem'] = autogenargs + ' --disable-gstreamer --disable-mozilla'
+
+addpath('XDG_DATA_DIRS', '/usr/share')
diff --git a/build-scripts/jhbuild/jhbuild.desktop b/build-scripts/jhbuild/jhbuild.desktop
new file mode 100644
index 0000000..48b1562
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Build GNOME Modules
+Icon=gnome-devel.png
+Terminal=false
+Type=Application
+Categories=GNOME;Development;Application;
+StartupNotify=true
+X-Desktop-File-Install-Version=0.3
+
diff --git a/build-scripts/jhbuild/jhbuild.in b/build-scripts/jhbuild/jhbuild.in
new file mode 100644
index 0000000..1f88aab
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild.in
@@ -0,0 +1,6 @@
+#!/usr/bin/env python
+import sys
+sys.path.insert(0, '@jhbuilddir@')
+
+import jhbuild.main
+jhbuild.main.main(sys.argv[1:])
diff --git a/build-scripts/jhbuild/jhbuild/.cvsignore b/build-scripts/jhbuild/jhbuild/.cvsignore
new file mode 100644
index 0000000..0d20b64
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/.cvsignore
@@ -0,0 +1 @@
+*.pyc
diff --git a/build-scripts/jhbuild/jhbuild/__init__.py b/build-scripts/jhbuild/jhbuild/__init__.py
new file mode 100644
index 0000000..7cdb30e
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/__init__.py
@@ -0,0 +1,19 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# 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
+
+from jhbuild import monkeypatch
+del monkeypatch
diff --git a/build-scripts/jhbuild/jhbuild/commands/.cvsignore b/build-scripts/jhbuild/jhbuild/commands/.cvsignore
new file mode 100644
index 0000000..0d20b64
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/commands/.cvsignore
@@ -0,0 +1 @@
+*.pyc
diff --git a/build-scripts/jhbuild/jhbuild/commands/__init__.py b/build-scripts/jhbuild/jhbuild/commands/__init__.py
new file mode 100644
index 0000000..4c99961
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/commands/__init__.py
@@ -0,0 +1,77 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# __init__.py: a package holding the various jhbuild subcommands
+#
+# 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
+
+__metaclass__ = type
+__all__ = [
+ 'Command',
+ 'register_command',
+ 'run'
+ ]
+
+import optparse
+
+from jhbuild.errors import UsageError, FatalError
+
+
+class Command:
+ """Base class for Command objects"""
+
+ name = None
+ usage_args = '[ options ... ]'
+
+ def __init__(self, options=[]):
+ self.options = options
+
+ def execute(self, config, args):
+ options, args = self.parse_args(args)
+ self.run(config, options, args)
+
+ def parse_args(self, args):
+ parser = optparse.OptionParser(
+ usage='%%prog %s %s' % (self.name, self.usage_args),
+ description=self.__doc__)
+ parser.add_options(self.options)
+ return parser.parse_args(args)
+
+ def run(self, config, options, args):
+ """The body of the command"""
+ raise NotImplementedError
+
+
+# handle registration of new commands
+_commands = {}
+def register_command(command_class):
+ _commands[command_class.name] = command_class
+
+def run(command, config, args):
+ # if the command hasn't been registered, load a module by the same name
+ if command not in _commands:
+ try:
+ __import__('jhbuild.commands.%s' % command)
+ except ImportError:
+ pass
+ if command not in _commands:
+ raise FatalError('command not found')
+
+ command_class = _commands[command]
+ cmd = command_class()
+ cmd.execute(config, args)
+
+
+from jhbuild.commands import base
diff --git a/build-scripts/jhbuild/jhbuild/commands/autobuild.py b/build-scripts/jhbuild/jhbuild/commands/autobuild.py
new file mode 100644
index 0000000..c54c1d5
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/commands/autobuild.py
@@ -0,0 +1,85 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2004 James Henstridge
+#
+# autobuild.py: non-interactive build that generates a report
+#
+# 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
+
+from optparse import make_option
+
+from jhbuild.errors import UsageError
+from jhbuild.commands.base import Command, register_command
+import jhbuild.frontends
+
+class cmd_autobuild(Command):
+ '''Distributed tinderbox for jhbuild'''
+
+ name = 'autobuild'
+
+ def __init__(self):
+ Command.__init__(self, [
+ make_option('-a', '--autogen',
+ action='store_true', dest='autogen', default=False,
+ help='always run autogen.sh'),
+ make_option('-c', '--clean',
+ action='store_true', dest='clean', default=False,
+ help='run make clean before make'),
+ make_option('-s', '--skip', metavar='MODULES',
+ action='append', dest='skip', default=[],
+ help='treat the given modules as up to date'),
+ make_option('-t', '--start-at', metavar='MODULE',
+ action='store', dest='startat', default=None,
+ help='start building at the given module'),
+ make_option('-r', '--report-url',
+ action='store', dest='reporturl', default=None,
+ help='jhautobuild report URL'),
+ make_option('-v', '--verbose',
+ action='store_true', dest='verbose', default=False,
+ help='verbose mode'),
+ ])
+
+ def run(self, config, options, args):
+ config.buildscript = 'autobuild'
+
+ config.autobuild_report_url = None
+ config.verbose = False
+
+ if options.autogen:
+ config.alwaysautogen = True
+ if options.clean:
+ config.makeclean = True
+ if options.reporturl is not None:
+ config.autobuild_report_url = options.reporturl
+ if options.verbose:
+ config.verbose = True
+
+ if not config.autobuild_report_url:
+ raise UsageError('report url for autobuild not specified')
+
+ module_set = jhbuild.moduleset.load(config)
+ module_list = module_set.get_module_list(args or config.modules,
+ config.skip)
+
+ # remove modules up to startat
+ if options.startat:
+ while module_list and module_list[0].name != options.startat:
+ del module_list[0]
+ if not module_list:
+ raise FatalError('%s not in module list' % options.startat)
+
+ build = jhbuild.frontends.get_buildscript(config, module_list)
+ build.build()
+
+register_command(cmd_autobuild)
diff --git a/build-scripts/jhbuild/jhbuild/commands/base.py b/build-scripts/jhbuild/jhbuild/commands/base.py
new file mode 100644
index 0000000..3762f2b
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/commands/base.py
@@ -0,0 +1,288 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# base.py: the most common jhbuild commands
+#
+# 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
+
+import os
+from optparse import make_option
+
+import jhbuild.moduleset
+import jhbuild.frontends
+from jhbuild.errors import UsageError, FatalError
+from jhbuild.commands import Command, register_command
+
+
+class cmd_update(Command):
+ """Pull updates from the version control system for one or more modules,
+ plus its dependencies."""
+
+ name = 'update'
+ usage_args = '[ options ... ] [ modules ... ]'
+
+ def __init__(self):
+ Command.__init__(self, [
+ make_option('-s', '--skip', metavar='MODULES',
+ action='append', dest='skip', default=[],
+ help='treat the given modules as up to date'),
+ make_option('-t', '--start-at', metavar='MODULE',
+ action='store', dest='startat', default=None,
+ help='start building at the given module'),
+ make_option('-D', metavar='DATE-SPEC',
+ action='store', dest='sticky_date', default=None,
+ help='set a sticky date when checking out modules'),
+ ])
+
+ def run(self, config, options, args):
+ for item in options.skip:
+ config.skip += item.split(',')
+ if options.sticky_date is not None:
+ config.sticky_date = options.sticky_date
+
+ module_set = jhbuild.moduleset.load(config)
+ module_list = module_set.get_module_list(args or config.modules,
+ config.skip)
+ # remove modules up to startat
+ if options.startat:
+ while module_list and module_list[0].name != options.startat:
+ del module_list[0]
+ if not module_list:
+ raise FatalError('%s not in module list' % options.startat)
+
+ # don't actually perform build ...
+ config.nobuild = True
+ config.nonetwork = False
+
+ build = jhbuild.frontends.get_buildscript(config, module_list)
+ build.build()
+
+register_command(cmd_update)
+
+
+class cmd_updateone(Command):
+ """Pull updates from the version control system for one or more modules."""
+
+ name = 'updateone'
+ usage_args = '[ options ... ] [ modules ... ]'
+
+ def __init__(self):
+ Command.__init__(self, [
+ make_option('-D', metavar='DATE-SPEC',
+ action='store', dest='sticky_date', default=None,
+ help='set a sticky date when checking out modules'),
+ ])
+
+ def run(self, config, options, args):
+ if options.sticky_date is not None:
+ config.sticky_date = options.sticky_date
+
+ module_set = jhbuild.moduleset.load(config)
+ try:
+ module_list = [module_set.modules[modname] for modname in args]
+ except KeyError, e:
+ raise FatalError("A module called '%s' could not be found."
+ % str(e))
+
+ # don't actually perform build ...
+ config.nobuild = True
+ config.nonetwork = False
+
+ build = jhbuild.frontends.get_buildscript(config, module_list)
+ build.build()
+
+register_command(cmd_updateone)
+
+
+class cmd_build(Command):
+ """Pull updates from the version control system for one or more modules,
+ plus its dependencies."""
+
+ name = 'build'
+ usage_args = '[ options ... ] [ modules ... ]'
+
+ def __init__(self):
+ Command.__init__(self, [
+ make_option('-a', '--autogen',
+ action='store_true', dest='autogen', default=False,
+ help='always run autogen.sh'),
+ make_option('-c', '--clean',
+ action='store_true', dest='clean', default=False,
+ help='run make clean before make'),
+ make_option('-n', '--no-network',
+ action='store_true', dest='nonetwork', default=False,
+ help='skip version control update'),
+ make_option('-s', '--skip', metavar='MODULES',
+ action='append', dest='skip', default=[],
+ help='treat the given modules as up to date'),
+ make_option('-t', '--start-at', metavar='MODULE',
+ action='store', dest='startat', default=None,
+ help='start building at the given module'),
+ make_option('-D', metavar='DATE-SPEC',
+ action='store', dest='sticky_date', default=None,
+ help='set a sticky date when checking out modules'),
+ ])
+
+ def run(self, config, options, args):
+ if options.autogen:
+ config.alwaysautogen = True
+ if options.clean:
+ config.makeclean = True
+ if options.nonetwork:
+ config.nonetwork = True
+ for item in options.skip:
+ config.skip += item.split(',')
+ if options.sticky_date is not None:
+ config.sticky_date = options.sticky_date
+
+ module_set = jhbuild.moduleset.load(config)
+ module_list = module_set.get_module_list(args or config.modules,
+ config.skip)
+ # remove modules up to startat
+ if options.startat:
+ while module_list and module_list[0].name != options.startat:
+ del module_list[0]
+ if not module_list:
+ raise FatalError('%s not in module list' % options.startat)
+
+ build = jhbuild.frontends.get_buildscript(config, module_list)
+ build.build()
+
+register_command(cmd_build)
+
+
+class cmd_buildone(Command):
+ """Pull updates from the version control system for one or more modules."""
+
+ name = 'buildone'
+ usage_args = '[ options ... ] [ modules ... ]'
+
+ def __init__(self):
+ Command.__init__(self, [
+ make_option('-a', '--autogen',
+ action='store_true', dest='autogen', default=False,
+ help='always run autogen.sh'),
+ make_option('-c', '--clean',
+ action='store_true', dest='clean', default=False,
+ help='run make clean before make'),
+ make_option('-n', '--no-network',
+ action='store_true', dest='nonetwork', default=False,
+ help='skip version control update'),
+ make_option('-D', metavar='DATE-SPEC',
+ action='store', dest='sticky_date', default=None,
+ help='set a sticky date when checking out modules'),
+ ])
+
+ def run(self, config, options, args):
+ if options.autogen:
+ config.alwaysautogen = True
+ if options.clean:
+ config.makeclean = True
+ if options.nonetwork:
+ config.nonetwork = True
+ if options.sticky_date is not None:
+ config.sticky_date = options.sticky_date
+
+ module_set = jhbuild.moduleset.load(config)
+ try:
+ module_list = [module_set.modules[modname] for modname in args]
+ except KeyError, e:
+ raise FatalError("A module called '%s' could not be found."
+ % str(e))
+
+ build = jhbuild.frontends.get_buildscript(config, module_list)
+ build.build()
+
+register_command(cmd_buildone)
+
+
+class cmd_run(Command):
+ """Run a command under the jhbuild environment"""
+
+ name = 'run'
+ usage_args = 'program [ arguments ... ]'
+
+ def execute(self, config, args):
+ os.execlp(args[0], *args)
+
+register_command(cmd_run)
+
+
+class cmd_shell(Command):
+ """Run a command under the jhbuild environment"""
+
+ name = 'shell'
+ usage_args = ''
+
+ def execute(self, config, args):
+ user_shell = os.environ.get('SHELL', '/bin/sh')
+ os.execlp(user_shell, user_shell)
+
+register_command(cmd_shell)
+
+
+class cmd_list(Command):
+ """List the modules that would be built."""
+
+ name = 'list'
+ usage_args = '[ options ... ] [ modules ... ]'
+
+ def __init__(self):
+ Command.__init__(self, [
+ make_option('-r', '--show-revision',
+ action='store_true', dest='show_rev', default=False,
+ help='show which revision will be built'),
+ make_option('-s', '--skip', metavar='MODULES',
+ action='append', dest='skip', default=[],
+ help='treat the given modules as up to date'),
+ ])
+
+ def run(self, config, options, args):
+ for item in options.skip:
+ config.skip += item.split(',')
+ module_set = jhbuild.moduleset.load(config)
+ module_list = module_set.get_module_list(args or config.modules,
+ config.skip)
+
+ for mod in module_list:
+ if options.show_rev:
+ rev = mod.get_revision()
+ if rev:
+ print '%s (%s)' % (mod.name, rev)
+ else:
+ print mod.name
+ else:
+ print mod.name
+
+register_command(cmd_list)
+
+
+class cmd_dot(Command):
+ """Output a Graphviz input file for the given modules"""
+
+ name = 'dot'
+ usage_args = '[ modules ... ]'
+
+ def run(self, config, options, args):
+ module_set = jhbuild.moduleset.load(config)
+ if args:
+ modules = args
+ elif config.modules == 'all':
+ modules = None
+ else:
+ modules = config.modules
+ module_set.write_dot(modules)
+
+register_command(cmd_dot)
diff --git a/build-scripts/jhbuild/jhbuild/commands/bootstrap.py b/build-scripts/jhbuild/jhbuild/commands/bootstrap.py
new file mode 100644
index 0000000..a148d0a
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/commands/bootstrap.py
@@ -0,0 +1,41 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# bootstrap.py: code to check whether prerequisite modules are installed
+#
+# 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
+
+import os
+import urllib
+
+import jhbuild.moduleset
+import jhbuild.frontends
+from jhbuild.commands import Command, register_command
+
+class cmd_bootstrap(Command):
+ """Build required support tools."""
+
+ name = 'bootstrap'
+ usage_args = ''
+
+ def run(self, config, options, args):
+ # load the bootstrap module set
+ module_set = jhbuild.moduleset.load(config, 'bootstrap')
+ module_list = module_set.get_module_list(['meta-bootstrap'])
+
+ build = jhbuild.frontends.get_buildscript(config, module_list)
+ build.build()
+
+register_command(cmd_bootstrap)
diff --git a/build-scripts/jhbuild/jhbuild/commands/gui.py b/build-scripts/jhbuild/jhbuild/commands/gui.py
new file mode 100644
index 0000000..0b465c5
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/commands/gui.py
@@ -0,0 +1,56 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+# Copyright (C) 2003-2004 Seth Nickell
+#
+# gui.py: the GTK interface for jhbuild
+#
+# 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
+
+from jhbuild.commands import Command, register_command
+import jhbuild.frontends
+from jhbuild.frontends.gtkui import Configuration
+
+
+class cmd_gui(Command):
+ """GTK frontend for jhbuild"""
+
+ name = 'gui'
+ usage_args = ''
+
+ def run(self, config, options, args):
+ # request GTK build script.
+ config.buildscript = 'gtkui'
+
+ configuration = Configuration(config, args)
+ (module_list, start_at,
+ run_autogen, cvs_update, no_build) = configuration.run()
+
+ if start_at:
+ while module_list and module_list[0].name != start_at:
+ del module_list[0]
+
+ if run_autogen:
+ config.alwaysautogen = True
+ elif not cvs_update:
+ config.nonetwork = True
+
+ if no_build:
+ config.nobuild = True
+
+ if module_list != None:
+ build = jhbuild.frontends.get_buildscript(config, module_list)
+ build.build()
+
+register_command(cmd_gui)
diff --git a/build-scripts/jhbuild/jhbuild/commands/info.py b/build-scripts/jhbuild/jhbuild/commands/info.py
new file mode 100644
index 0000000..796a060
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/commands/info.py
@@ -0,0 +1,126 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# info.py: show information about a module
+#
+# 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
+
+import sys
+import time
+
+import jhbuild.moduleset
+import jhbuild.frontends
+from jhbuild.errors import FatalError
+from jhbuild.commands import Command, register_command
+from jhbuild.modtypes import MetaModule
+from jhbuild.modtypes.autotools import AutogenModule
+from jhbuild.modtypes.mozillamodule import MozillaModule
+from jhbuild.modtypes.tarball import Tarball
+from jhbuild.versioncontrol.cvs import CVSBranch
+from jhbuild.versioncontrol.svn import SubversionBranch
+from jhbuild.versioncontrol.arch import ArchBranch
+from jhbuild.versioncontrol.darcs import DarcsBranch
+from jhbuild.versioncontrol.git import GitBranch
+from jhbuild.versioncontrol.tarball import TarballBranch
+
+
+class cmd_info(Command):
+ """Display information about one or more modules"""
+
+ name = 'info'
+ usage_args = '[ modules ... ]'
+
+ def run(self, config, options, args):
+ packagedb = jhbuild.frontends.get_buildscript(config, []).packagedb
+ module_set = jhbuild.moduleset.load(config)
+
+ for modname in args:
+ try:
+ module = module_set.modules[modname]
+ except KeyError:
+ raise FatalError('unknown module %s' % modname)
+ self.show_info(module, packagedb, module_set)
+
+ def show_info(self, module, packagedb, module_set):
+ if isinstance(module, MozillaModule):
+ installdate = packagedb.installdate(module.name,
+ module.get_revision() or '')
+ elif isinstance(module, AutogenModule):
+ installdate = packagedb.installdate(module.name,
+ module.branch.branchname or '')
+ elif isinstance(module, Tarball):
+ installdate = packagedb.installdate(module.name,
+ module.version or '')
+ else:
+ installdate = packagedb.installdate(module.name)
+
+ print 'Name:', module.name
+ print 'Type:', module.type
+
+ if installdate is not None:
+ print 'Install-date:', time.strftime('%Y-%m-%d %H:%M:%S',
+ time.localtime(installdate))
+ else:
+ print 'Install-date:', 'not installed'
+
+ if isinstance(module, MozillaModule):
+ print 'CVS-Root:', module.repository.cvsroot
+ if module.revision is not None:
+ print 'CVS-Revision:', module.revision
+ if module.projects:
+ print 'Moz-Projects:', ', '.join(module.projects)
+ elif isinstance(module, AutogenModule):
+ if isinstance(module.branch, CVSBranch):
+ print 'CVS-Root:', module.branch.repository.cvsroot
+ print 'CVS-Module:', module.branch.module
+ if module.branch.revision:
+ print 'CVS-Revision:', module.branch.revision
+ elif isinstance(module.branch, SubversionBranch):
+ print 'Subversion-Module:', module.branch.module
+ elif isinstance(module.branch, ArchBranch):
+ print 'Arch-Version:', module.branch.module
+ elif isinstance(module.branch, DarcsBranch):
+ print 'Darcs-Archive:', module.branch.module
+ elif isinstance(module.branch, GitBranch):
+ print 'Git-Module:', module.branch.module
+ elif isinstance(module.branch, TarballBranch):
+ print 'URL:', module.branch.module
+ print 'Version:', module.branch.version
+ try:
+ tree_id = module.branch.tree_id()
+ print 'Tree-ID:', tree_id
+ except NotImplementedError:
+ pass
+ elif isinstance(module, Tarball):
+ print 'URL:', module.source_url
+ print 'Version:', module.version
+
+ # dependencies
+ if module.dependencies:
+ print 'Requires:', ', '.join(module.dependencies)
+ requiredby = [ mod.name for mod in module_set.modules.values()
+ if module.name in mod.dependencies ]
+ if requiredby:
+ print 'Required-by:', ', '.join(requiredby)
+ if module.after:
+ print 'After:', ', '.join(module.after)
+ before = [ mod.name for mod in module_set.modules.values()
+ if module.name in mod.after ]
+ if before:
+ print 'Before:', ', '.join(before)
+
+ print
+
+register_command(cmd_info)
diff --git a/build-scripts/jhbuild/jhbuild/commands/sanitycheck.py b/build-scripts/jhbuild/jhbuild/commands/sanitycheck.py
new file mode 100644
index 0000000..53f6b6b
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/commands/sanitycheck.py
@@ -0,0 +1,153 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# sanitycheck.py: check whether build environment is sane
+#
+# 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
+
+import sys
+import os
+import re
+
+from jhbuild.commands import Command, register_command
+from jhbuild.utils.cmds import get_output
+from jhbuild.errors import UsageError, FatalError
+
+def check_version(cmd, regexp, minver):
+ try:
+ data = get_output(cmd)
+ except:
+ return False
+ match = re.match(regexp, data, re.MULTILINE)
+ if not match: return False
+ version = match.group(1)
+
+ version = version.split('.')
+ for i, ver in enumerate(version):
+ part = re.sub(r'^[^\d]*(\d+).*$', r'\1', ver)
+ if not part:
+ version[i] = None
+ else:
+ version[i] = int(part)
+ minver = minver.split('.')
+ for i, ver in enumerate(minver):
+ part = re.sub(r'^[^\d]*(\d+).*$', r'\1', ver)
+ if not part:
+ minver[i] = None
+ else:
+ minver[i] = int(part)
+ return version >= minver
+
+def get_aclocal_path(version):
+ data = get_output(['aclocal-%s' % version, '--print-ac-dir'])
+ path = [data[:-1]]
+ env = os.environ.get('ACLOCAL_FLAGS', '').split()
+ i = 0
+ while i < len(env):
+ if env[i] == '-I':
+ path.append(env[i+1])
+ i = i + 2
+ else:
+ i = i + 1
+ return path
+
+def inpath(filename, path):
+ for dir in path:
+ if os.path.isfile(os.path.join(dir, filename)):
+ return True
+ return False
+
+
+class cmd_sanitycheck(Command):
+ """Check that required support tools are available"""
+
+ name = 'sanitycheck'
+ usage_args = ''
+
+ def run(self, config, options, args):
+ if args:
+ raise UsageError('no extra arguments expected')
+
+ # check whether the checkout root and install prefix are writable
+ if not (os.path.isdir(config.checkoutroot) and
+ os.access(config.checkoutroot, os.R_OK|os.W_OK|os.X_OK)):
+ print 'checkout root is not writable'
+ if not (os.path.isdir(config.prefix) and
+ os.access(config.prefix, os.R_OK|os.W_OK|os.X_OK)):
+ print 'install prefix is not writable'
+
+ # check whether various tools are installed
+ if not check_version(['libtoolize', '--version'],
+ r'libtoolize \([^)]*\) ([\d.]+)', '1.5'):
+ print 'libtool >= 1.5 not found'
+ if not check_version(['gettext', '--version'],
+ r'gettext \([^)]*\) ([\d.]+)', '0.10.40'):
+ print 'gettext >= 0.10.40 not found'
+ if not check_version(['pkg-config', '--version'],
+ r'^([\d.]+)', '0.14.0'):
+ print 'pkg-config >= 0.14.0 not found'
+ if not check_version(['db2html', '--version'],
+ r'.* ([\d.]+)', '0.0'):
+ print 'db2html not found'
+ if not check_version(['autoconf', '--version'],
+ r'autoconf \([^)]*\) ([\d.]+)', '2.53'):
+ print 'autoconf >= 2.53 not found'
+ if not check_version(['automake-1.4', '--version'],
+ r'automake \([^)]*\) ([\d.]+)', '1.4'):
+ print 'automake-1.4 not found'
+ if not check_version(['automake-1.7', '--version'],
+ r'automake \([^)]*\) ([\d.]+)', '1.7'):
+ print 'automake-1.7 not found'
+ if not check_version(['automake-1.8', '--version'],
+ r'automake \([^)]*\) ([\d.]+)', '1.8'):
+ print 'automake-1.8 not found'
+ if not check_version(['automake-1.9', '--version'],
+ r'automake \([^)]*\) ([\d.]+)', '1.9'):
+ print 'automake-1.9 not found'
+
+ for amver in ('1.4', '1.7', '1.8', '1.9'):
+ try:
+ path = get_aclocal_path(amver)
+ except:
+ continue # exception raised if aclocal-ver not runnable
+
+ if not inpath('libtool.m4', path):
+ print "aclocal-%s can't see libtool macros" % amver
+ if not inpath('gettext.m4', path):
+ print "aclocal-%s can't see gettext macros" % amver
+ if not inpath('pkg.m4', path):
+ print "aclocal-%s can't see pkg-config macros" % amver
+
+ # XML catalog sanity checks
+ if not os.access('/etc/xml/catalog', os.R_OK):
+ print 'Could not find XML catalog'
+ else:
+ for (item, name) in [('-//OASIS//DTD DocBook XML V4.1.2//EN',
+ 'DocBook XML DTD V4.1.2'),
+ ('http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl',
+ 'DocBook XSL Stylesheets')]:
+ try:
+ data = get_output(['xmlcatalog', '/etc/xml/catalog', item])
+ except:
+ print 'Could not find %s in XML catalog' % name
+
+ # Perl modules used by tools such as intltool:
+ for perlmod in [ 'XML::Parser' ]:
+ try:
+ get_output(['perl', '-M%s' % perlmod, '-e', 'exit'])
+ except:
+ print 'Could not find the perl module %s' % perlmod
+
+register_command(cmd_sanitycheck)
diff --git a/build-scripts/jhbuild/jhbuild/commands/tinderbox.py b/build-scripts/jhbuild/jhbuild/commands/tinderbox.py
new file mode 100644
index 0000000..19ac5ee
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/commands/tinderbox.py
@@ -0,0 +1,92 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# tinderbox.py: non-interactive build that generates a report
+#
+# 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
+
+from optparse import make_option
+
+from jhbuild.errors import UsageError
+from jhbuild.commands import Command, register_command
+import jhbuild.frontends
+
+
+class cmd_tinderbox(Command):
+ """Build modules non-interactively and store build logs"""
+
+ name = 'tinderbox'
+ usage_args = '[ options ... ] [ modules ... ]'
+
+ def __init__(self):
+ Command.__init__(self, [
+ make_option('-a', '--autogen',
+ action='store_true', dest='autogen', default=False,
+ help='always run autogen.sh'),
+ make_option('-c', '--clean',
+ action='store_true', dest='clean', default=False,
+ help='run make clean before make'),
+ make_option('-n', '--no-network',
+ action='store_true', dest='nonetwork', default=False,
+ help='skip version control update'),
+ make_option('-o', '--output', metavar='DIR',
+ action='store', dest='outputdir', default=None,
+ help='directory to store build logs in'),
+ make_option('-s', '--skip', metavar='MODULES',
+ action='append', dest='skip', default=[],
+ help='treat the given modules as up to date'),
+ make_option('-t', '--start-at', metavar='MODULE',
+ action='store', dest='startat', default=None,
+ help='start building at the given module'),
+ make_option('-D', metavar='DATE-SPEC',
+ action='store', dest='sticky_date', default=None,
+ help='set a sticky date when checking out modules'),
+ ])
+
+ def run(self, config, options, args):
+ config.buildscript = 'tinderbox'
+
+ if options.autogen:
+ config.alwaysautogen = True
+ if options.clean:
+ config.makeclean = True
+ if options.nonetwork:
+ config.nonetwork = True
+ if options.outputdir is not None:
+ config.tinderbox_outputdir = options.outputdir
+ for item in options.skip:
+ config.skip += item.split(',')
+ if options.sticky_date is not None:
+ config.sticky_date = options.sticky_date
+
+ if not config.tinderbox_outputdir:
+ raise UsageError('output directory for tinderbox build '
+ 'not specified')
+
+ module_set = jhbuild.moduleset.load(config)
+ module_list = module_set.get_module_list(args or config.modules,
+ config.skip)
+
+ # remove modules up to startat
+ if options.startat:
+ while module_list and module_list[0].name != options.startat:
+ del module_list[0]
+ if not module_list:
+ raise FatalError('%s not in module list' % options.startat)
+
+ build = jhbuild.frontends.get_buildscript(config, module_list)
+ build.build()
+
+register_command(cmd_tinderbox)
diff --git a/build-scripts/jhbuild/jhbuild/config.py b/build-scripts/jhbuild/jhbuild/config.py
new file mode 100644
index 0000000..0c2df18
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/config.py
@@ -0,0 +1,185 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# config.py: configuration file parser
+#
+# 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
+
+import os
+import traceback
+
+from jhbuild.errors import UsageError, FatalError
+
+__all__ = [ 'Config' ]
+
+_defaults_file = os.path.join(os.path.dirname(__file__), 'defaults.jhbuildrc')
+_default_jhbuildrc = os.path.join(os.environ['HOME'], '.jhbuildrc')
+
+_known_keys = [ 'moduleset', 'modules', 'skip', 'prefix',
+ 'checkoutroot', 'buildroot', 'autogenargs', 'makeargs',
+ 'repos', 'branches',
+ 'builddir_pattern', 'module_autogenargs', 'module_makeargs',
+ 'interact', 'buildscript', 'nonetwork',
+ 'alwaysautogen', 'nobuild', 'makeclean', 'makecheck',
+ 'use_lib64', 'tinderbox_outputdir', 'sticky_date',
+ 'tarballdir', 'pretty_print' ]
+
+env_prepends = {}
+def prependpath(envvar, path):
+ env_prepends.setdefault(envvar, []).append(path)
+
+def addpath(envvar, path):
+ '''Adds a path to an environment variable.'''
+ # special case ACLOCAL_FLAGS
+ if envvar in [ 'ACLOCAL_FLAGS' ]:
+ envval = os.environ.get(envvar, '-I %s' % path)
+ parts = ['-I', path] + envval.split()
+ i = 2
+ while i < len(parts)-1:
+ if parts[i] == '-I':
+ # check if "-I parts[i]" comes earlier
+ for j in range(0, i-1):
+ if parts[j] == '-I' and parts[j+1] == parts[i+1]:
+ del parts[i:i+2]
+ break
+ else:
+ i += 2
+ else:
+ i += 1
+ envval = ' '.join(parts)
+ else:
+ envval = os.environ.get(envvar, path)
+ parts = envval.split(':')
+ parts.insert(0, path)
+ # remove duplicate entries:
+ i = 1
+ while i < len(parts):
+ if parts[i] in parts[:i]:
+ del parts[i]
+ else:
+ i += 1
+ envval = ':'.join(parts)
+
+ os.environ[envvar] = envval
+
+class Config:
+ def __init__(self, filename=_default_jhbuildrc):
+ config = {
+ '__file__': _defaults_file,
+ 'addpath': addpath,
+ 'prependpath': prependpath
+ }
+ env_prepends.clear()
+ try:
+ execfile(_defaults_file, config)
+ except:
+ traceback.print_exc()
+ raise FatalError('could not load config defaults')
+ config['__file__'] = filename
+ try:
+ execfile(filename, config)
+ except:
+ traceback.print_exc()
+ raise FatalError('could not load config file')
+
+ # backward compatibility, from the days when jhbuild only
+ # supported Gnome.org CVS.
+ if config.has_key('cvsroot'):
+ config['cvsroots']['gnome.org'] = config['cvsroot']
+ if config.has_key('cvsroots'):
+ config['repos'].update(config['cvsroots'])
+ if config.has_key('svnroots'):
+ config['repos'].update(config['svnroots'])
+
+ # environment variables
+ if config.has_key('cflags') and config['cflags']:
+ os.environ['CFLAGS'] = config['cflags']
+ if config.has_key('installprog') and config['installprog']:
+ os.environ['INSTALL'] = config['installprog']
+
+ # copy known config keys to attributes on the instance
+ for name in _known_keys:
+ setattr(self, name, config[name])
+
+ # default tarballdir to checkoutroot
+ if not self.tarballdir: self.tarballdir = self.checkoutroot
+
+ self.setup_env()
+
+ def setup_env(self):
+ '''set environment variables for using prefix'''
+
+ if not os.path.exists(self.prefix):
+ try:
+ os.makedirs(self.prefix)
+ except:
+ raise FatalError("Can't create %s directory" % self.prefix)
+
+ #includedir = os.path.join(prefix, 'include')
+ #addpath('C_INCLUDE_PATH', includedir)
+
+ # LD_LIBRARY_PATH
+ if self.use_lib64:
+ libdir = os.path.join(self.prefix, 'lib64')
+ else:
+ libdir = os.path.join(self.prefix, 'lib')
+ addpath('LD_LIBRARY_PATH', libdir)
+
+ # PATH
+ bindir = os.path.join(self.prefix, 'bin')
+ addpath('PATH', bindir)
+
+ # PKG_CONFIG_PATH
+ pkgconfigdatadir = os.path.join(self.prefix, 'share', 'pkgconfig')
+ pkgconfigdir = os.path.join(libdir, 'pkgconfig')
+ addpath('PKG_CONFIG_PATH', pkgconfigdatadir)
+ addpath('PKG_CONFIG_PATH', pkgconfigdir)
+
+ # XDG_DATA_DIRS
+ xdgdatadir = os.path.join(self.prefix, 'share')
+ addpath('XDG_DATA_DIRS', xdgdatadir)
+
+ # XDG_CONFIG_DIRS
+ xdgconfigdir = os.path.join(self.prefix, 'etc', 'xdg')
+ addpath('XDG_CONFIG_DIRS', xdgconfigdir)
+
+ # ACLOCAL_FLAGS
+ aclocaldir = os.path.join(self.prefix, 'share', 'aclocal')
+ if not os.path.exists(aclocaldir):
+ try:
+ os.makedirs(aclocaldir)
+ except:
+ raise FatalError("Can't create %s directory" % aclocaldir)
+ addpath('ACLOCAL_FLAGS', aclocaldir)
+
+ # PERL5LIB
+ perl5lib = os.path.join(self.prefix, 'lib', 'perl5')
+ addpath('PERL5LIB', perl5lib)
+
+ os.environ['CERTIFIED_GNOMIE'] = 'yes'
+
+ # handle environment prepends ...
+ for envvar in env_prepends.keys():
+ for path in env_prepends[envvar]:
+ addpath(envvar, path)
+
+
+ # get rid of gdkxft from the env -- it will cause problems.
+ if os.environ.has_key('LD_PRELOAD'):
+ valarr = os.environ['LD_PRELOAD'].split(' ')
+ for x in valarr[:]:
+ if x.find('libgdkxft.so') >= 0:
+ valarr.remove(x)
+ os.environ['LD_PRELOAD'] = ' '.join(valarr)
diff --git a/build-scripts/jhbuild/jhbuild/cut_n_paste/.cvsignore b/build-scripts/jhbuild/jhbuild/cut_n_paste/.cvsignore
new file mode 100644
index 0000000..0d20b64
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/cut_n_paste/.cvsignore
@@ -0,0 +1 @@
+*.pyc
diff --git a/build-scripts/jhbuild/jhbuild/cut_n_paste/__init__.py b/build-scripts/jhbuild/jhbuild/cut_n_paste/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/cut_n_paste/__init__.py
diff --git a/build-scripts/jhbuild/jhbuild/cut_n_paste/optparse.py b/build-scripts/jhbuild/jhbuild/cut_n_paste/optparse.py
new file mode 100644
index 0000000..17daad6
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/cut_n_paste/optparse.py
@@ -0,0 +1,2008 @@
+"""optparse - a powerful, extensible, and easy-to-use option parser.
+
+By Greg Ward <gward@python.net>
+
+Originally distributed as Optik; see http://optik.sourceforge.net/ .
+
+If you have problems with this module, please do not file bugs,
+patches, or feature requests with Python; instead, use Optik's
+SourceForge project page:
+ http://sourceforge.net/projects/optik
+
+For support, use the optik-users@lists.sourceforge.net mailing list
+(http://lists.sourceforge.net/lists/listinfo/optik-users).
+"""
+
+# Python developers: please do not make changes to this file, since
+# it is automatically generated from the Optik source code.
+
+__version__ = "1.5.1"
+
+__all__ = ['Option',
+ 'SUPPRESS_HELP',
+ 'SUPPRESS_USAGE',
+ 'Values',
+ 'OptionContainer',
+ 'OptionGroup',
+ 'OptionParser',
+ 'HelpFormatter',
+ 'IndentedHelpFormatter',
+ 'TitledHelpFormatter',
+ 'OptParseError',
+ 'OptionError',
+ 'OptionConflictError',
+ 'OptionValueError',
+ 'BadOptionError']
+
+__copyright__ = """
+Copyright (c) 2001-2006 Gregory P. Ward. All rights reserved.
+Copyright (c) 2002-2006 Python Software Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of the author nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+"""
+
+import sys, os
+import string, re
+import types
+
+def _repr(self):
+ return "<%s at 0x%x: %s>" % (self.__class__.__name__, id(self), self)
+
+
+# This file was generated from:
+# Id: option_parser.py 509 2006-04-20 00:58:24Z gward
+# Id: option.py 509 2006-04-20 00:58:24Z gward
+# Id: help.py 509 2006-04-20 00:58:24Z gward
+# Id: errors.py 509 2006-04-20 00:58:24Z gward
+
+try:
+ from gettext import gettext
+except ImportError:
+ def gettext(message):
+ return message
+_ = gettext
+
+
+class OptParseError (Exception):
+ def __init__(self, msg):
+ self.msg = msg
+
+ def __str__(self):
+ return self.msg
+
+
+class OptionError (OptParseError):
+ """
+ Raised if an Option instance is created with invalid or
+ inconsistent arguments.
+ """
+
+ def __init__(self, msg, option):
+ self.msg = msg
+ self.option_id = str(option)
+
+ def __str__(self):
+ if self.option_id:
+ return "option %s: %s" % (self.option_id, self.msg)
+ else:
+ return self.msg
+
+class OptionConflictError (OptionError):
+ """
+ Raised if conflicting options are added to an OptionParser.
+ """
+
+class OptionValueError (OptParseError):
+ """
+ Raised if an invalid option value is encountered on the command
+ line.
+ """
+
+class BadOptionError (OptParseError):
+ """
+ Raised if an invalid option is seen on the command line.
+ """
+ def __init__(self, opt_str):
+ self.opt_str = opt_str
+
+ def __str__(self):
+ return _("no such option: %s") % self.opt_str
+
+class AmbiguousOptionError (BadOptionError):
+ """
+ Raised if an ambiguous option is seen on the command line.
+ """
+ def __init__(self, opt_str, possibilities):
+ BadOptionError.__init__(self, opt_str)
+ self.possibilities = possibilities
+
+ def __str__(self):
+ return (_("ambiguous option: %s (%s?)")
+ % (self.opt_str, ", ".join(self.possibilities)))
+
+
+class HelpFormatter:
+
+ """
+ Abstract base class for formatting option help. OptionParser
+ instances should use one of the HelpFormatter subclasses for
+ formatting help; by default IndentedHelpFormatter is used.
+
+ Instance attributes:
+ parser : OptionParser
+ the controlling OptionParser instance
+ indent_increment : int
+ the number of columns to indent per nesting level
+ max_help_position : int
+ the maximum starting column for option help text
+ help_position : int
+ the calculated starting column for option help text;
+ initially the same as the maximum
+ width : int
+ total number of columns for output (pass None to constructor for
+ this value to be taken from the $COLUMNS environment variable)
+ level : int
+ current indentation level
+ current_indent : int
+ current indentation level (in columns)
+ help_width : int
+ number of columns available for option help text (calculated)
+ default_tag : str
+ text to replace with each option's default value, "%default"
+ by default. Set to false value to disable default value expansion.
+ option_strings : { Option : str }
+ maps Option instances to the snippet of help text explaining
+ the syntax of that option, e.g. "-h, --help" or
+ "-fFILE, --file=FILE"
+ _short_opt_fmt : str
+ format string controlling how short options with values are
+ printed in help text. Must be either "%s%s" ("-fFILE") or
+ "%s %s" ("-f FILE"), because those are the two syntaxes that
+ Optik supports.
+ _long_opt_fmt : str
+ similar but for long options; must be either "%s %s" ("--file FILE")
+ or "%s=%s" ("--file=FILE").
+ """
+
+ NO_DEFAULT_VALUE = "none"
+
+ def __init__(self,
+ indent_increment,
+ max_help_position,
+ width,
+ short_first):
+ self.parser = None
+ self.indent_increment = indent_increment
+ self.help_position = self.max_help_position = max_help_position
+ if width is None:
+ try:
+ width = int(os.environ['COLUMNS'])
+ except (KeyError, ValueError):
+ width = 80
+ width -= 2
+ self.width = width
+ self.current_indent = 0
+ self.level = 0
+ self.help_width = None # computed later
+ self.short_first = short_first
+ self.default_tag = "%default"
+ self.option_strings = {}
+ self._short_opt_fmt = "%s %s"
+ self._long_opt_fmt = "%s=%s"
+
+ def set_parser(self, parser):
+ self.parser = parser
+
+ def set_short_opt_delimiter(self, delim):
+ if delim not in ("", " "):
+ raise ValueError(
+ "invalid metavar delimiter for short options: %r" % delim)
+ self._short_opt_fmt = "%s" + delim + "%s"
+
+ def set_long_opt_delimiter(self, delim):
+ if delim not in ("=", " "):
+ raise ValueError(
+ "invalid metavar delimiter for long options: %r" % delim)
+ self._long_opt_fmt = "%s" + delim + "%s"
+
+ def indent(self):
+ self.current_indent += self.indent_increment
+ self.level += 1
+
+ def dedent(self):
+ self.current_indent -= self.indent_increment
+ assert self.current_indent >= 0, "Indent decreased below 0."
+ self.level -= 1
+
+ def format_usage(self, usage):
+ raise NotImplementedError, "subclasses must implement"
+
+ def format_heading(self, heading):
+ raise NotImplementedError, "subclasses must implement"
+
+ def _format_text(self, text):
+ """
+ Format a paragraph of free-form text for inclusion in the
+ help output at the current indentation level.
+ """
+ text_width = self.width - self.current_indent
+ indent = " "*self.current_indent
+ return fill(text,
+ text_width,
+ initial_indent=indent,
+ subsequent_indent=indent)
+
+ def format_description(self, description):
+ if description:
+ return self._format_text(description) + "\n"
+ else:
+ return ""
+
+ def format_epilog(self, epilog):
+ if epilog:
+ return "\n" + self._format_text(epilog) + "\n"
+ else:
+ return ""
+
+
+ def expand_default(self, option):
+ if self.parser is None or not self.default_tag:
+ return option.help
+
+ default_value = self.parser.defaults.get(option.dest)
+ if default_value is NO_DEFAULT or default_value is None:
+ default_value = self.NO_DEFAULT_VALUE
+
+ return option.help.replace(self.default_tag, str(default_value))
+
+ def format_option(self, option):
+ # The help for each option consists of two parts:
+ # * the opt strings and metavars
+ # eg. ("-x", or "-fFILENAME, --file=FILENAME")
+ # * the user-supplied help string
+ # eg. ("turn on expert mode", "read data from FILENAME")
+ #
+ # If possible, we write both of these on the same line:
+ # -x turn on expert mode
+ #
+ # But if the opt string list is too long, we put the help
+ # string on a second line, indented to the same column it would
+ # start in if it fit on the first line.
+ # -fFILENAME, --file=FILENAME
+ # read data from FILENAME
+ result = []
+ opts = self.option_strings[option]
+ opt_width = self.help_position - self.current_indent - 2
+ if len(opts) > opt_width:
+ opts = "%*s%s\n" % (self.current_indent, "", opts)
+ indent_first = self.help_position
+ else: # start help on same line as opts
+ opts = "%*s%-*s " % (self.current_indent, "", opt_width, opts)
+ indent_first = 0
+ result.append(opts)
+ if option.help:
+ help_text = self.expand_default(option)
+ help_lines = wrap(help_text, self.help_width)
+ result.append("%*s%s\n" % (indent_first, "", help_lines[0]))
+ result.extend(["%*s%s\n" % (self.help_position, "", line)
+ for line in help_lines[1:]])
+ elif opts[-1] != "\n":
+ result.append("\n")
+ return "".join(result)
+
+ def store_option_strings(self, parser):
+ self.indent()
+ max_len = 0
+ for opt in parser.option_list:
+ strings = self.format_option_strings(opt)
+ self.option_strings[opt] = strings
+ max_len = max(max_len, len(strings) + self.current_indent)
+ self.indent()
+ for group in parser.option_groups:
+ for opt in group.option_list:
+ strings = self.format_option_strings(opt)
+ self.option_strings[opt] = strings
+ max_len = max(max_len, len(strings) + self.current_indent)
+ self.dedent()
+ self.dedent()
+ self.help_position = min(max_len + 2, self.max_help_position)
+ self.help_width = self.width - self.help_position
+
+ def format_option_strings(self, option):
+ """Return a comma-separated list of option strings & metavariables."""
+ if option.takes_value():
+ metavar = option.metavar or option.dest.upper()
+ short_opts = [self._short_opt_fmt % (sopt, metavar)
+ for sopt in option._short_opts]
+ long_opts = [self._long_opt_fmt % (lopt, metavar)
+ for lopt in option._long_opts]
+ else:
+ short_opts = option._short_opts
+ long_opts = option._long_opts
+
+ if self.short_first:
+ opts = short_opts + long_opts
+ else:
+ opts = long_opts + short_opts
+
+ return ", ".join(opts)
+
+class IndentedHelpFormatter (HelpFormatter):
+ """Format help with indented section bodies.
+ """
+
+ def __init__(self,
+ indent_increment=2,
+ max_help_position=24,
+ width=None,
+ short_first=1):
+ HelpFormatter.__init__(
+ self, indent_increment, max_help_position, width, short_first)
+
+ def format_usage(self, usage):
+ return _("Usage: %s\n") % usage
+
+ def format_heading(self, heading):
+ return "%*s%s:\n" % (self.current_indent, "", heading)
+
+
+class TitledHelpFormatter (HelpFormatter):
+ """Format help with underlined section headers.
+ """
+
+ def __init__(self,
+ indent_increment=0,
+ max_help_position=24,
+ width=None,
+ short_first=0):
+ HelpFormatter.__init__ (
+ self, indent_increment, max_help_position, width, short_first)
+
+ def format_usage(self, usage):
+ return "%s %s\n" % (self.format_heading(_("Usage")), usage)
+
+ def format_heading(self, heading):
+ return "%s\n%s\n" % (heading, "=-"[self.level] * len(heading))
+
+
+def _parse_num(val, type):
+ if val[:2].lower() == "0x": # hexadecimal
+ radix = 16
+ elif val[:2].lower() == "0b": # binary
+ radix = 2
+ val = val[2:] or "0" # have to remove "0b" prefix
+ elif val[:1] == "0": # octal
+ radix = 8
+ else: # decimal
+ radix = 10
+
+ return type(val, radix)
+
+def _parse_int(val):
+ return _parse_num(val, int)
+
+def _parse_long(val):
+ return _parse_num(val, long)
+
+_builtin_cvt = { "int" : (_parse_int, _("integer")),
+ "long" : (_parse_long, _("long integer")),
+ "float" : (float, _("floating-point")),
+ "complex" : (complex, _("complex")) }
+
+def check_builtin(option, opt, value):
+ (cvt, what) = _builtin_cvt[option.type]
+ try:
+ return cvt(value)
+ except ValueError:
+ raise OptionValueError(
+ _("option %s: invalid %s value: %r") % (opt, what, value))
+
+def check_choice(option, opt, value):
+ if value in option.choices:
+ return value
+ else:
+ choices = ", ".join(map(repr, option.choices))
+ raise OptionValueError(
+ _("option %s: invalid choice: %r (choose from %s)")
+ % (opt, value, choices))
+
+# Not supplying a default is different from a default of None,
+# so we need an explicit "not supplied" value.
+NO_DEFAULT = ("NO", "DEFAULT")
+
+
+class Option:
+ """
+ Instance attributes:
+ _short_opts : [string]
+ _long_opts : [string]
+
+ action : string
+ type : string
+ dest : string
+ default : any
+ nargs : int
+ const : any
+ choices : [string]
+ callback : function
+ callback_args : (any*)
+ callback_kwargs : { string : any }
+ help : string
+ metavar : string
+ """
+
+ # The list of instance attributes that may be set through
+ # keyword args to the constructor.
+ ATTRS = ['action',
+ 'type',
+ 'dest',
+ 'default',
+ 'nargs',
+ 'const',
+ 'choices',
+ 'callback',
+ 'callback_args',
+ 'callback_kwargs',
+ 'help',
+ 'metavar']
+
+ # The set of actions allowed by option parsers. Explicitly listed
+ # here so the constructor can validate its arguments.
+ ACTIONS = ("store",
+ "store_const",
+ "store_true",
+ "store_false",
+ "append",
+ "append_const",
+ "count",
+ "callback",
+ "help",
+ "version")
+
+ # The set of actions that involve storing a value somewhere;
+ # also listed just for constructor argument validation. (If
+ # the action is one of these, there must be a destination.)
+ STORE_ACTIONS = ("store",
+ "store_const",
+ "store_true",
+ "store_false",
+ "append",
+ "append_const",
+ "count")
+
+ # The set of actions for which it makes sense to supply a value
+ # type, ie. which may consume an argument from the command line.
+ TYPED_ACTIONS = ("store",
+ "append",
+ "callback")
+
+ # The set of actions which *require* a value type, ie. that
+ # always consume an argument from the command line.
+ ALWAYS_TYPED_ACTIONS = ("store",
+ "append")
+
+ # The set of actions which take a 'const' attribute.
+ CONST_ACTIONS = ("store_const",
+ "append_const")
+
+ # The set of known types for option parsers. Again, listed here for
+ # constructor argument validation.
+ TYPES = ("string", "int", "long", "float", "complex", "choice")
+
+ # Dictionary of argument checking functions, which convert and
+ # validate option arguments according to the option type.
+ #
+ # Signature of checking functions is:
+ # check(option : Option, opt : string, value : string) -> any
+ # where
+ # option is the Option instance calling the checker
+ # opt is the actual option seen on the command-line
+ # (eg. "-a", "--file")
+ # value is the option argument seen on the command-line
+ #
+ # The return value should be in the appropriate Python type
+ # for option.type -- eg. an integer if option.type == "int".
+ #
+ # If no checker is defined for a type, arguments will be
+ # unchecked and remain strings.
+ TYPE_CHECKER = { "int" : check_builtin,
+ "long" : check_builtin,
+ "float" : check_builtin,
+ "complex": check_builtin,
+ "choice" : check_choice,
+ }
+
+
+ # CHECK_METHODS is a list of unbound method objects; they are called
+ # by the constructor, in order, after all attributes are
+ # initialized. The list is created and filled in later, after all
+ # the methods are actually defined. (I just put it here because I
+ # like to define and document all class attributes in the same
+ # place.) Subclasses that add another _check_*() method should
+ # define their own CHECK_METHODS list that adds their check method
+ # to those from this class.
+ CHECK_METHODS = None
+
+
+ # -- Constructor/initialization methods ----------------------------
+
+ def __init__(self, *opts, **attrs):
+ # Set _short_opts, _long_opts attrs from 'opts' tuple.
+ # Have to be set now, in case no option strings are supplied.
+ self._short_opts = []
+ self._long_opts = []
+ opts = self._check_opt_strings(opts)
+ self._set_opt_strings(opts)
+
+ # Set all other attrs (action, type, etc.) from 'attrs' dict
+ self._set_attrs(attrs)
+
+ # Check all the attributes we just set. There are lots of
+ # complicated interdependencies, but luckily they can be farmed
+ # out to the _check_*() methods listed in CHECK_METHODS -- which
+ # could be handy for subclasses! The one thing these all share
+ # is that they raise OptionError if they discover a problem.
+ for checker in self.CHECK_METHODS:
+ checker(self)
+
+ def _check_opt_strings(self, opts):
+ # Filter out None because early versions of Optik had exactly
+ # one short option and one long option, either of which
+ # could be None.
+ opts = filter(None, opts)
+ if not opts:
+ raise TypeError("at least one option string must be supplied")
+ return opts
+
+ def _set_opt_strings(self, opts):
+ for opt in opts:
+ if len(opt) < 2:
+ raise OptionError(
+ "invalid option string %r: "
+ "must be at least two characters long" % opt, self)
+ elif len(opt) == 2:
+ if not (opt[0] == "-" and opt[1] != "-"):
+ raise OptionError(
+ "invalid short option string %r: "
+ "must be of the form -x, (x any non-dash char)" % opt,
+ self)
+ self._short_opts.append(opt)
+ else:
+ if not (opt[0:2] == "--" and opt[2] != "-"):
+ raise OptionError(
+ "invalid long option string %r: "
+ "must start with --, followed by non-dash" % opt,
+ self)
+ self._long_opts.append(opt)
+
+ def _set_attrs(self, attrs):
+ for attr in self.ATTRS:
+ if attrs.has_key(attr):
+ setattr(self, attr, attrs[attr])
+ del attrs[attr]
+ else:
+ if attr == 'default':
+ setattr(self, attr, NO_DEFAULT)
+ else:
+ setattr(self, attr, None)
+ if attrs:
+ raise OptionError(
+ "invalid keyword arguments: %s" % ", ".join(attrs.keys()),
+ self)
+
+
+ # -- Constructor validation methods --------------------------------
+
+ def _check_action(self):
+ if self.action is None:
+ self.action = "store"
+ elif self.action not in self.ACTIONS:
+ raise OptionError("invalid action: %r" % self.action, self)
+
+ def _check_type(self):
+ if self.type is None:
+ if self.action in self.ALWAYS_TYPED_ACTIONS:
+ if self.choices is not None:
+ # The "choices" attribute implies "choice" type.
+ self.type = "choice"
+ else:
+ # No type given? "string" is the most sensible default.
+ self.type = "string"
+ else:
+ # Allow type objects or builtin type conversion functions
+ # (int, str, etc.) as an alternative to their names. (The
+ # complicated check of __builtin__ is only necessary for
+ # Python 2.1 and earlier, and is short-circuited by the
+ # first check on modern Pythons.)
+ import __builtin__
+ if ( type(self.type) is types.TypeType or
+ (hasattr(self.type, "__name__") and
+ getattr(__builtin__, self.type.__name__, None) is self.type) ):
+ self.type = self.type.__name__
+
+ if self.type == "str":
+ self.type = "string"
+
+ if self.type not in self.TYPES:
+ raise OptionError("invalid option type: %r" % self.type, self)
+ if self.action not in self.TYPED_ACTIONS:
+ raise OptionError(
+ "must not supply a type for action %r" % self.action, self)
+
+ def _check_choice(self):
+ if self.type == "choice":
+ if self.choices is None:
+ raise OptionError(
+ "must supply a list of choices for type 'choice'", self)
+ elif type(self.choices) not in (types.TupleType, types.ListType):
+ raise OptionError(
+ "choices must be a list of strings ('%s' supplied)"
+ % str(type(self.choices)).split("'")[1], self)
+ elif self.choices is not None:
+ raise OptionError(
+ "must not supply choices for type %r" % self.type, self)
+
+ def _check_dest(self):
+ # No destination given, and we need one for this action. The
+ # self.type check is for callbacks that take a value.
+ takes_value = (self.action in self.STORE_ACTIONS or
+ self.type is not None)
+ if self.dest is None and takes_value:
+
+ # Glean a destination from the first long option string,
+ # or from the first short option string if no long options.
+ if self._long_opts:
+ # eg. "--foo-bar" -> "foo_bar"
+ self.dest = self._long_opts[0][2:].replace('-', '_')
+ else:
+ self.dest = self._short_opts[0][1]
+
+ def _check_const(self):
+ if self.action not in self.CONST_ACTIONS and self.const is not None:
+ raise OptionError(
+ "'const' must not be supplied for action %r" % self.action,
+ self)
+
+ def _check_nargs(self):
+ if self.action in self.TYPED_ACTIONS:
+ if self.nargs is None:
+ self.nargs = 1
+ elif self.nargs is not None:
+ raise OptionError(
+ "'nargs' must not be supplied for action %r" % self.action,
+ self)
+
+ def _check_callback(self):
+ if self.action == "callback":
+ if not callable(self.callback):
+ raise OptionError(
+ "callback not callable: %r" % self.callback, self)
+ if (self.callback_args is not None and
+ type(self.callback_args) is not types.TupleType):
+ raise OptionError(
+ "callback_args, if supplied, must be a tuple: not %r"
+ % self.callback_args, self)
+ if (self.callback_kwargs is not None and
+ type(self.callback_kwargs) is not types.DictType):
+ raise OptionError(
+ "callback_kwargs, if supplied, must be a dict: not %r"
+ % self.callback_kwargs, self)
+ else:
+ if self.callback is not None:
+ raise OptionError(
+ "callback supplied (%r) for non-callback option"
+ % self.callback, self)
+ if self.callback_args is not None:
+ raise OptionError(
+ "callback_args supplied for non-callback option", self)
+ if self.callback_kwargs is not None:
+ raise OptionError(
+ "callback_kwargs supplied for non-callback option", self)
+
+
+ CHECK_METHODS = [_check_action,
+ _check_type,
+ _check_choice,
+ _check_dest,
+ _check_const,
+ _check_nargs,
+ _check_callback]
+
+
+ # -- Miscellaneous methods -----------------------------------------
+
+ def __str__(self):
+ return "/".join(self._short_opts + self._long_opts)
+
+ __repr__ = _repr
+
+ def takes_value(self):
+ return self.type is not None
+
+ def get_opt_string(self):
+ if self._long_opts:
+ return self._long_opts[0]
+ else:
+ return self._short_opts[0]
+
+
+ # -- Processing methods --------------------------------------------
+
+ def check_value(self, opt, value):
+ checker = self.TYPE_CHECKER.get(self.type)
+ if checker is None:
+ return value
+ else:
+ return checker(self, opt, value)
+
+ def convert_value(self, opt, value):
+ if value is not None:
+ if self.nargs == 1:
+ return self.check_value(opt, value)
+ else:
+ return tuple([self.check_value(opt, v) for v in value])
+
+ def process(self, opt, value, values, parser):
+
+ # First, convert the value(s) to the right type. Howl if any
+ # value(s) are bogus.
+ value = self.convert_value(opt, value)
+
+ # And then take whatever action is expected of us.
+ # This is a separate method to make life easier for
+ # subclasses to add new actions.
+ return self.take_action(
+ self.action, self.dest, opt, value, values, parser)
+
+ def take_action(self, action, dest, opt, value, values, parser):
+ if action == "store":
+ setattr(values, dest, value)
+ elif action == "store_const":
+ setattr(values, dest, self.const)
+ elif action == "store_true":
+ setattr(values, dest, True)
+ elif action == "store_false":
+ setattr(values, dest, False)
+ elif action == "append":
+ values.ensure_value(dest, []).append(value)
+ elif action == "append_const":
+ values.ensure_value(dest, []).append(self.const)
+ elif action == "count":
+ setattr(values, dest, values.ensure_value(dest, 0) + 1)
+ elif action == "callback":
+ args = self.callback_args or ()
+ kwargs = self.callback_kwargs or {}
+ self.callback(self, opt, value, parser, *args, **kwargs)
+ elif action == "help":
+ parser.print_help()
+ parser.exit()
+ elif action == "version":
+ parser.print_version()
+ parser.exit()
+ else:
+ raise RuntimeError, "unknown action %r" % self.action
+
+ return 1
+
+# class Option
+
+
+SUPPRESS_HELP = "SUPPRESS"+"HELP"
+SUPPRESS_USAGE = "SUPPRESS"+"USAGE"
+
+# For compatibility with Python 2.2
+try:
+ True, False
+except NameError:
+ (True, False) = (1, 0)
+
+def isbasestring(x):
+ return isinstance(x, types.StringType) or isinstance(x, types.UnicodeType)
+
+class Values:
+
+ def __init__(self, defaults=None):
+ if defaults:
+ for (attr, val) in defaults.items():
+ setattr(self, attr, val)
+
+ def __str__(self):
+ return str(self.__dict__)
+
+ __repr__ = _repr
+
+ def __cmp__(self, other):
+ if isinstance(other, Values):
+ return cmp(self.__dict__, other.__dict__)
+ elif isinstance(other, types.DictType):
+ return cmp(self.__dict__, other)
+ else:
+ return -1
+
+ def _update_careful(self, dict):
+ """
+ Update the option values from an arbitrary dictionary, but only
+ use keys from dict that already have a corresponding attribute
+ in self. Any keys in dict without a corresponding attribute
+ are silently ignored.
+ """
+ for attr in dir(self):
+ if dict.has_key(attr):
+ dval = dict[attr]
+ if dval is not None:
+ setattr(self, attr, dval)
+
+ def _update_loose(self, dict):
+ """
+ Update the option values from an arbitrary dictionary,
+ using all keys from the dictionary regardless of whether
+ they have a corresponding attribute in self or not.
+ """
+ self.__dict__.update(dict)
+
+ def _update(self, dict, mode):
+ if mode == "careful":
+ self._update_careful(dict)
+ elif mode == "loose":
+ self._update_loose(dict)
+ else:
+ raise ValueError, "invalid update mode: %r" % mode
+
+ def read_module(self, modname, mode="careful"):
+ __import__(modname)
+ mod = sys.modules[modname]
+ self._update(vars(mod), mode)
+
+ def read_file(self, filename, mode="careful"):
+ vars = {}
+ execfile(filename, vars)
+ self._update(vars, mode)
+
+ def ensure_value(self, attr, value):
+ if not hasattr(self, attr) or getattr(self, attr) is None:
+ setattr(self, attr, value)
+ return getattr(self, attr)
+
+
+class OptionContainer:
+
+ """
+ Abstract base class.
+
+ Class attributes:
+ standard_option_list : [Option]
+ list of standard options that will be accepted by all instances
+ of this parser class (intended to be overridden by subclasses).
+
+ Instance attributes:
+ option_list : [Option]
+ the list of Option objects contained by this OptionContainer
+ _short_opt : { string : Option }
+ dictionary mapping short option strings, eg. "-f" or "-X",
+ to the Option instances that implement them. If an Option
+ has multiple short option strings, it will appears in this
+ dictionary multiple times. [1]
+ _long_opt : { string : Option }
+ dictionary mapping long option strings, eg. "--file" or
+ "--exclude", to the Option instances that implement them.
+ Again, a given Option can occur multiple times in this
+ dictionary. [1]
+ defaults : { string : any }
+ dictionary mapping option destination names to default
+ values for each destination [1]
+
+ [1] These mappings are common to (shared by) all components of the
+ controlling OptionParser, where they are initially created.
+
+ """
+
+ def __init__(self, option_class, conflict_handler, description):
+ # Initialize the option list and related data structures.
+ # This method must be provided by subclasses, and it must
+ # initialize at least the following instance attributes:
+ # option_list, _short_opt, _long_opt, defaults.
+ self._create_option_list()
+
+ self.option_class = option_class
+ self.set_conflict_handler(conflict_handler)
+ self.set_description(description)
+
+ def _create_option_mappings(self):
+ # For use by OptionParser constructor -- create the master
+ # option mappings used by this OptionParser and all
+ # OptionGroups that it owns.
+ self._short_opt = {} # single letter -> Option instance
+ self._long_opt = {} # long option -> Option instance
+ self.defaults = {} # maps option dest -> default value
+
+
+ def _share_option_mappings(self, parser):
+ # For use by OptionGroup constructor -- use shared option
+ # mappings from the OptionParser that owns this OptionGroup.
+ self._short_opt = parser._short_opt
+ self._long_opt = parser._long_opt
+ self.defaults = parser.defaults
+
+ def set_conflict_handler(self, handler):
+ if handler not in ("error", "resolve"):
+ raise ValueError, "invalid conflict_resolution value %r" % handler
+ self.conflict_handler = handler
+
+ def set_description(self, description):
+ self.description = description
+
+ def get_description(self):
+ return self.description
+
+
+ def destroy(self):
+ """see OptionParser.destroy()."""
+ del self._short_opt
+ del self._long_opt
+ del self.defaults
+
+
+ # -- Option-adding methods -----------------------------------------
+
+ def _check_conflict(self, option):
+ conflict_opts = []
+ for opt in option._short_opts:
+ if self._short_opt.has_key(opt):
+ conflict_opts.append((opt, self._short_opt[opt]))
+ for opt in option._long_opts:
+ if self._long_opt.has_key(opt):
+ conflict_opts.append((opt, self._long_opt[opt]))
+
+ if conflict_opts:
+ handler = self.conflict_handler
+ if handler == "error":
+ raise OptionConflictError(
+ "conflicting option string(s): %s"
+ % ", ".join([co[0] for co in conflict_opts]),
+ option)
+ elif handler == "resolve":
+ for (opt, c_option) in conflict_opts:
+ if opt.startswith("--"):
+ c_option._long_opts.remove(opt)
+ del self._long_opt[opt]
+ else:
+ c_option._short_opts.remove(opt)
+ del self._short_opt[opt]
+ if not (c_option._short_opts or c_option._long_opts):
+ c_option.container.option_list.remove(c_option)
+
+ def add_option(self, *args, **kwargs):
+ """add_option(Option)
+ add_option(opt_str, ..., kwarg=val, ...)
+ """
+ if type(args[0]) is types.StringType:
+ option = self.option_class(*args, **kwargs)
+ elif len(args) == 1 and not kwargs:
+ option = args[0]
+ if not isinstance(option, Option):
+ raise TypeError, "not an Option instance: %r" % option
+ else:
+ raise TypeError, "invalid arguments"
+
+ self._check_conflict(option)
+
+ self.option_list.append(option)
+ option.container = self
+ for opt in option._short_opts:
+ self._short_opt[opt] = option
+ for opt in option._long_opts:
+ self._long_opt[opt] = option
+
+ if option.dest is not None: # option has a dest, we need a default
+ if option.default is not NO_DEFAULT:
+ self.defaults[option.dest] = option.default
+ elif not self.defaults.has_key(option.dest):
+ self.defaults[option.dest] = None
+
+ return option
+
+ def add_options(self, option_list):
+ for option in option_list:
+ self.add_option(option)
+
+ # -- Option query/removal methods ----------------------------------
+
+ def get_option(self, opt_str):
+ return (self._short_opt.get(opt_str) or
+ self._long_opt.get(opt_str))
+
+ def has_option(self, opt_str):
+ return (self._short_opt.has_key(opt_str) or
+ self._long_opt.has_key(opt_str))
+
+ def remove_option(self, opt_str):
+ option = self._short_opt.get(opt_str)
+ if option is None:
+ option = self._long_opt.get(opt_str)
+ if option is None:
+ raise ValueError("no such option %r" % opt_str)
+
+ for opt in option._short_opts:
+ del self._short_opt[opt]
+ for opt in option._long_opts:
+ del self._long_opt[opt]
+ option.container.option_list.remove(option)
+
+
+ # -- Help-formatting methods ---------------------------------------
+
+ def format_option_help(self, formatter):
+ if not self.option_list:
+ return ""
+ result = []
+ for option in self.option_list:
+ if not option.help is SUPPRESS_HELP:
+ result.append(formatter.format_option(option))
+ return "".join(result)
+
+ def format_description(self, formatter):
+ return formatter.format_description(self.get_description())
+
+ def format_help(self, formatter):
+ result = []
+ if self.description:
+ result.append(self.format_description(formatter))
+ if self.option_list:
+ result.append(self.format_option_help(formatter))
+ return "\n".join(result)
+
+
+class OptionGroup (OptionContainer):
+
+ def __init__(self, parser, title, description=None):
+ self.parser = parser
+ OptionContainer.__init__(
+ self, parser.option_class, parser.conflict_handler, description)
+ self.title = title
+
+ def _create_option_list(self):
+ self.option_list = []
+ self._share_option_mappings(self.parser)
+
+ def set_title(self, title):
+ self.title = title
+
+ def destroy(self):
+ """see OptionParser.destroy()."""
+ OptionContainer.destroy(self)
+ del self.option_list
+
+ # -- Help-formatting methods ---------------------------------------
+
+ def format_help(self, formatter):
+ result = formatter.format_heading(self.title)
+ formatter.indent()
+ result += OptionContainer.format_help(self, formatter)
+ formatter.dedent()
+ return result
+
+
+class OptionParser (OptionContainer):
+
+ """
+ Class attributes:
+ standard_option_list : [Option]
+ list of standard options that will be accepted by all instances
+ of this parser class (intended to be overridden by subclasses).
+
+ Instance attributes:
+ usage : string
+ a usage string for your program. Before it is displayed
+ to the user, "%prog" will be expanded to the name of
+ your program (self.prog or os.path.basename(sys.argv[0])).
+ prog : string
+ the name of the current program (to override
+ os.path.basename(sys.argv[0])).
+ epilog : string
+ paragraph of help text to print after option help
+
+ option_groups : [OptionGroup]
+ list of option groups in this parser (option groups are
+ irrelevant for parsing the command-line, but very useful
+ for generating help)
+
+ allow_interspersed_args : bool = true
+ if true, positional arguments may be interspersed with options.
+ Assuming -a and -b each take a single argument, the command-line
+ -ablah foo bar -bboo baz
+ will be interpreted the same as
+ -ablah -bboo -- foo bar baz
+ If this flag were false, that command line would be interpreted as
+ -ablah -- foo bar -bboo baz
+ -- ie. we stop processing options as soon as we see the first
+ non-option argument. (This is the tradition followed by
+ Python's getopt module, Perl's Getopt::Std, and other argument-
+ parsing libraries, but it is generally annoying to users.)
+
+ process_default_values : bool = true
+ if true, option default values are processed similarly to option
+ values from the command line: that is, they are passed to the
+ type-checking function for the option's type (as long as the
+ default value is a string). (This really only matters if you
+ have defined custom types; see SF bug #955889.) Set it to false
+ to restore the behaviour of Optik 1.4.1 and earlier.
+
+ rargs : [string]
+ the argument list currently being parsed. Only set when
+ parse_args() is active, and continually trimmed down as
+ we consume arguments. Mainly there for the benefit of
+ callback options.
+ largs : [string]
+ the list of leftover arguments that we have skipped while
+ parsing options. If allow_interspersed_args is false, this
+ list is always empty.
+ values : Values
+ the set of option values currently being accumulated. Only
+ set when parse_args() is active. Also mainly for callbacks.
+
+ Because of the 'rargs', 'largs', and 'values' attributes,
+ OptionParser is not thread-safe. If, for some perverse reason, you
+ need to parse command-line arguments simultaneously in different
+ threads, use different OptionParser instances.
+
+ """
+
+ standard_option_list = []
+
+ def __init__(self,
+ usage=None,
+ option_list=None,
+ option_class=Option,
+ version=None,
+ conflict_handler="error",
+ description=None,
+ formatter=None,
+ add_help_option=True,
+ prog=None,
+ epilog=None):
+ OptionContainer.__init__(
+ self, option_class, conflict_handler, description)
+ self.set_usage(usage)
+ self.prog = prog
+ self.version = version
+ self.allow_interspersed_args = True
+ self.process_default_values = True
+ if formatter is None:
+ formatter = IndentedHelpFormatter()
+ self.formatter = formatter
+ self.formatter.set_parser(self)
+ self.epilog = epilog
+
+ # Populate the option list; initial sources are the
+ # standard_option_list class attribute, the 'option_list'
+ # argument, and (if applicable) the _add_version_option() and
+ # _add_help_option() methods.
+ self._populate_option_list(option_list,
+ add_help=add_help_option)
+
+ self._init_parsing_state()
+
+
+ def destroy(self):
+ """
+ Declare that you are done with this OptionParser. This cleans up
+ reference cycles so the OptionParser (and all objects referenced by
+ it) can be garbage-collected promptly. After calling destroy(), the
+ OptionParser is unusable.
+ """
+ OptionContainer.destroy(self)
+ for group in self.option_groups:
+ group.destroy()
+ del self.option_list
+ del self.option_groups
+ del self.formatter
+
+
+ # -- Private methods -----------------------------------------------
+ # (used by our or OptionContainer's constructor)
+
+ def _create_option_list(self):
+ self.option_list = []
+ self.option_groups = []
+ self._create_option_mappings()
+
+ def _add_help_option(self):
+ self.add_option("-h", "--help",
+ action="help",
+ help=_("show this help message and exit"))
+
+ def _add_version_option(self):
+ self.add_option("--version",
+ action="version",
+ help=_("show program's version number and exit"))
+
+ def _populate_option_list(self, option_list, add_help=True):
+ if self.standard_option_list:
+ self.add_options(self.standard_option_list)
+ if option_list:
+ self.add_options(option_list)
+ if self.version:
+ self._add_version_option()
+ if add_help:
+ self._add_help_option()
+
+ def _init_parsing_state(self):
+ # These are set in parse_args() for the convenience of callbacks.
+ self.rargs = None
+ self.largs = None
+ self.values = None
+
+
+ # -- Simple modifier methods ---------------------------------------
+
+ def set_usage(self, usage):
+ if usage is None:
+ self.usage = _("%prog [options]")
+ elif usage is SUPPRESS_USAGE:
+ self.usage = None
+ # For backwards compatibility with Optik 1.3 and earlier.
+ elif usage.lower().startswith("usage: "):
+ self.usage = usage[7:]
+ else:
+ self.usage = usage
+
+ def enable_interspersed_args(self):
+ self.allow_interspersed_args = True
+
+ def disable_interspersed_args(self):
+ self.allow_interspersed_args = False
+
+ def set_process_default_values(self, process):
+ self.process_default_values = process
+
+ def set_default(self, dest, value):
+ self.defaults[dest] = value
+
+ def set_defaults(self, **kwargs):
+ self.defaults.update(kwargs)
+
+ def _get_all_options(self):
+ options = self.option_list[:]
+ for group in self.option_groups:
+ options.extend(group.option_list)
+ return options
+
+ def get_default_values(self):
+ if not self.process_default_values:
+ # Old, pre-Optik 1.5 behaviour.
+ return Values(self.defaults)
+
+ defaults = self.defaults.copy()
+ for option in self._get_all_options():
+ default = defaults.get(option.dest)
+ if isbasestring(default):
+ opt_str = option.get_opt_string()
+ defaults[option.dest] = option.check_value(opt_str, default)
+
+ return Values(defaults)
+
+
+ # -- OptionGroup methods -------------------------------------------
+
+ def add_option_group(self, *args, **kwargs):
+ # XXX lots of overlap with OptionContainer.add_option()
+ if type(args[0]) is types.StringType:
+ group = OptionGroup(self, *args, **kwargs)
+ elif len(args) == 1 and not kwargs:
+ group = args[0]
+ if not isinstance(group, OptionGroup):
+ raise TypeError, "not an OptionGroup instance: %r" % group
+ if group.parser is not self:
+ raise ValueError, "invalid OptionGroup (wrong parser)"
+ else:
+ raise TypeError, "invalid arguments"
+
+ self.option_groups.append(group)
+ return group
+
+ def get_option_group(self, opt_str):
+ option = (self._short_opt.get(opt_str) or
+ self._long_opt.get(opt_str))
+ if option and option.container is not self:
+ return option.container
+ return None
+
+
+ # -- Option-parsing methods ----------------------------------------
+
+ def _get_args(self, args):
+ if args is None:
+ return sys.argv[1:]
+ else:
+ return args[:] # don't modify caller's list
+
+ def parse_args(self, args=None, values=None):
+ """
+ parse_args(args : [string] = sys.argv[1:],
+ values : Values = None)
+ -> (values : Values, args : [string])
+
+ Parse the command-line options found in 'args' (default:
+ sys.argv[1:]). Any errors result in a call to 'error()', which
+ by default prints the usage message to stderr and calls
+ sys.exit() with an error message. On success returns a pair
+ (values, args) where 'values' is an Values instance (with all
+ your option values) and 'args' is the list of arguments left
+ over after parsing options.
+ """
+ rargs = self._get_args(args)
+ if values is None:
+ values = self.get_default_values()
+
+ # Store the halves of the argument list as attributes for the
+ # convenience of callbacks:
+ # rargs
+ # the rest of the command-line (the "r" stands for
+ # "remaining" or "right-hand")
+ # largs
+ # the leftover arguments -- ie. what's left after removing
+ # options and their arguments (the "l" stands for "leftover"
+ # or "left-hand")
+ self.rargs = rargs
+ self.largs = largs = []
+ self.values = values
+
+ try:
+ stop = self._process_args(largs, rargs, values)
+ except (BadOptionError, OptionValueError), err:
+ self.error(str(err))
+
+ args = largs + rargs
+ return self.check_values(values, args)
+
+ def check_values(self, values, args):
+ """
+ check_values(values : Values, args : [string])
+ -> (values : Values, args : [string])
+
+ Check that the supplied option values and leftover arguments are
+ valid. Returns the option values and leftover arguments
+ (possibly adjusted, possibly completely new -- whatever you
+ like). Default implementation just returns the passed-in
+ values; subclasses may override as desired.
+ """
+ return (values, args)
+
+ def _process_args(self, largs, rargs, values):
+ """_process_args(largs : [string],
+ rargs : [string],
+ values : Values)
+
+ Process command-line arguments and populate 'values', consuming
+ options and arguments from 'rargs'. If 'allow_interspersed_args' is
+ false, stop at the first non-option argument. If true, accumulate any
+ interspersed non-option arguments in 'largs'.
+ """
+ while rargs:
+ arg = rargs[0]
+ # We handle bare "--" explicitly, and bare "-" is handled by the
+ # standard arg handler since the short arg case ensures that the
+ # len of the opt string is greater than 1.
+ if arg == "--":
+ del rargs[0]
+ return
+ elif arg[0:2] == "--":
+ # process a single long option (possibly with value(s))
+ self._process_long_opt(rargs, values)
+ elif arg[:1] == "-" and len(arg) > 1:
+ # process a cluster of short options (possibly with
+ # value(s) for the last one only)
+ self._process_short_opts(rargs, values)
+ elif self.allow_interspersed_args:
+ largs.append(arg)
+ del rargs[0]
+ else:
+ return # stop now, leave this arg in rargs
+
+ # Say this is the original argument list:
+ # [arg0, arg1, ..., arg(i-1), arg(i), arg(i+1), ..., arg(N-1)]
+ # ^
+ # (we are about to process arg(i)).
+ #
+ # Then rargs is [arg(i), ..., arg(N-1)] and largs is a *subset* of
+ # [arg0, ..., arg(i-1)] (any options and their arguments will have
+ # been removed from largs).
+ #
+ # The while loop will usually consume 1 or more arguments per pass.
+ # If it consumes 1 (eg. arg is an option that takes no arguments),
+ # then after _process_arg() is done the situation is:
+ #
+ # largs = subset of [arg0, ..., arg(i)]
+ # rargs = [arg(i+1), ..., arg(N-1)]
+ #
+ # If allow_interspersed_args is false, largs will always be
+ # *empty* -- still a subset of [arg0, ..., arg(i-1)], but
+ # not a very interesting subset!
+
+ def _match_long_opt(self, opt):
+ """_match_long_opt(opt : string) -> string
+
+ Determine which long option string 'opt' matches, ie. which one
+ it is an unambiguous abbrevation for. Raises BadOptionError if
+ 'opt' doesn't unambiguously match any long option string.
+ """
+ return _match_abbrev(opt, self._long_opt)
+
+ def _process_long_opt(self, rargs, values):
+ arg = rargs.pop(0)
+
+ # Value explicitly attached to arg? Pretend it's the next
+ # argument.
+ if "=" in arg:
+ (opt, next_arg) = arg.split("=", 1)
+ rargs.insert(0, next_arg)
+ had_explicit_value = True
+ else:
+ opt = arg
+ had_explicit_value = False
+
+ opt = self._match_long_opt(opt)
+ option = self._long_opt[opt]
+ if option.takes_value():
+ nargs = option.nargs
+ if len(rargs) < nargs:
+ if nargs == 1:
+ self.error(_("%s option requires an argument") % opt)
+ else:
+ self.error(_("%s option requires %d arguments")
+ % (opt, nargs))
+ elif nargs == 1:
+ value = rargs.pop(0)
+ else:
+ value = tuple(rargs[0:nargs])
+ del rargs[0:nargs]
+
+ elif had_explicit_value:
+ self.error(_("%s option does not take a value") % opt)
+
+ else:
+ value = None
+
+ option.process(opt, value, values, self)
+
+ def _process_short_opts(self, rargs, values):
+ arg = rargs.pop(0)
+ stop = False
+ i = 1
+ for ch in arg[1:]:
+ opt = "-" + ch
+ option = self._short_opt.get(opt)
+ i += 1 # we have consumed a character
+
+ if not option:
+ raise BadOptionError(opt)
+ if option.takes_value():
+ # Any characters left in arg? Pretend they're the
+ # next arg, and stop consuming characters of arg.
+ if i < len(arg):
+ rargs.insert(0, arg[i:])
+ stop = True
+
+ nargs = option.nargs
+ if len(rargs) < nargs:
+ if nargs == 1:
+ self.error(_("%s option requires an argument") % opt)
+ else:
+ self.error(_("%s option requires %d arguments")
+ % (opt, nargs))
+ elif nargs == 1:
+ value = rargs.pop(0)
+ else:
+ value = tuple(rargs[0:nargs])
+ del rargs[0:nargs]
+
+ else: # option doesn't take a value
+ value = None
+
+ option.process(opt, value, values, self)
+
+ if stop:
+ break
+
+
+ # -- Feedback methods ----------------------------------------------
+
+ def get_prog_name(self):
+ if self.prog is None:
+ return os.path.basename(sys.argv[0])
+ else:
+ return self.prog
+
+ def expand_prog_name(self, s):
+ return s.replace("%prog", self.get_prog_name())
+
+ def get_description(self):
+ return self.expand_prog_name(self.description)
+
+ def exit(self, status=0, msg=None):
+ if msg:
+ sys.stderr.write(msg)
+ sys.exit(status)
+
+ def error(self, msg):
+ """error(msg : string)
+
+ Print a usage message incorporating 'msg' to stderr and exit.
+ If you override this in a subclass, it should not return -- it
+ should either exit or raise an exception.
+ """
+ self.print_usage(sys.stderr)
+ self.exit(2, "%s: error: %s\n" % (self.get_prog_name(), msg))
+
+ def get_usage(self):
+ if self.usage:
+ return self.formatter.format_usage(
+ self.expand_prog_name(self.usage))
+ else:
+ return ""
+
+ def print_usage(self, file=None):
+ """print_usage(file : file = stdout)
+
+ Print the usage message for the current program (self.usage) to
+ 'file' (default stdout). Any occurence of the string "%prog" in
+ self.usage is replaced with the name of the current program
+ (basename of sys.argv[0]). Does nothing if self.usage is empty
+ or not defined.
+ """
+ if self.usage:
+ print >>file, self.get_usage()
+
+ def get_version(self):
+ if self.version:
+ return self.expand_prog_name(self.version)
+ else:
+ return ""
+
+ def print_version(self, file=None):
+ """print_version(file : file = stdout)
+
+ Print the version message for this program (self.version) to
+ 'file' (default stdout). As with print_usage(), any occurence
+ of "%prog" in self.version is replaced by the current program's
+ name. Does nothing if self.version is empty or undefined.
+ """
+ if self.version:
+ print >>file, self.get_version()
+
+ def format_option_help(self, formatter=None):
+ if formatter is None:
+ formatter = self.formatter
+ formatter.store_option_strings(self)
+ result = []
+ result.append(formatter.format_heading(_("Options")))
+ formatter.indent()
+ if self.option_list:
+ result.append(OptionContainer.format_option_help(self, formatter))
+ result.append("\n")
+ for group in self.option_groups:
+ result.append(group.format_help(formatter))
+ result.append("\n")
+ formatter.dedent()
+ # Drop the last "\n", or the header if no options or option groups:
+ return "".join(result[:-1])
+
+ def format_epilog(self, formatter):
+ return formatter.format_epilog(self.epilog)
+
+ def format_help(self, formatter=None):
+ if formatter is None:
+ formatter = self.formatter
+ result = []
+ if self.usage:
+ result.append(self.get_usage() + "\n")
+ if self.description:
+ result.append(self.format_description(formatter) + "\n")
+ result.append(self.format_option_help(formatter))
+ result.append(self.format_epilog(formatter))
+ return "".join(result)
+
+ def print_help(self, file=None):
+ """print_help(file : file = stdout)
+
+ Print an extended help message, listing all options and any
+ help text provided with them, to 'file' (default stdout).
+ """
+ if file is None:
+ file = sys.stdout
+ file.write(self.format_help())
+
+# class OptionParser
+
+
+def _match_abbrev(s, wordmap):
+ """_match_abbrev(s : string, wordmap : {string : Option}) -> string
+
+ Return the string key in 'wordmap' for which 's' is an unambiguous
+ abbreviation. If 's' is found to be ambiguous or doesn't match any of
+ 'words', raise BadOptionError.
+ """
+ # Is there an exact match?
+ if wordmap.has_key(s):
+ return s
+ else:
+ # Isolate all words with s as a prefix.
+ possibilities = [word for word in wordmap.keys()
+ if word.startswith(s)]
+ # No exact match, so there had better be just one possibility.
+ if len(possibilities) == 1:
+ return possibilities[0]
+ elif not possibilities:
+ raise BadOptionError(s)
+ else:
+ # More than one possible completion: ambiguous prefix.
+ raise AmbiguousOptionError(s, possibilities)
+
+
+# Some day, there might be many Option classes. As of Optik 1.3, the
+# preferred way to instantiate Options is indirectly, via make_option(),
+# which will become a factory function when there are many Option
+# classes.
+make_option = Option
+
+# Hardcode the recognized whitespace characters to the US-ASCII
+# whitespace characters. The main reason for doing this is that in
+# ISO-8859-1, 0xa0 is non-breaking whitespace, so in certain locales
+# that character winds up in string.whitespace. Respecting
+# string.whitespace in those cases would 1) make textwrap treat 0xa0 the
+# same as any other whitespace char, which is clearly wrong (it's a
+# *non-breaking* space), 2) possibly cause problems with Unicode,
+# since 0xa0 is not in range(128).
+_whitespace = '\t\n\x0b\x0c\r '
+
+class TextWrapper:
+ """
+ Object for wrapping/filling text. The public interface consists of
+ the wrap() and fill() methods; the other methods are just there for
+ subclasses to override in order to tweak the default behaviour.
+ If you want to completely replace the main wrapping algorithm,
+ you'll probably have to override _wrap_chunks().
+
+ Several instance attributes control various aspects of wrapping:
+ width (default: 70)
+ the maximum width of wrapped lines (unless break_long_words
+ is false)
+ initial_indent (default: "")
+ string that will be prepended to the first line of wrapped
+ output. Counts towards the line's width.
+ subsequent_indent (default: "")
+ string that will be prepended to all lines save the first
+ of wrapped output; also counts towards each line's width.
+ expand_tabs (default: true)
+ Expand tabs in input text to spaces before further processing.
+ Each tab will become 1 .. 8 spaces, depending on its position in
+ its line. If false, each tab is treated as a single character.
+ replace_whitespace (default: true)
+ Replace all whitespace characters in the input text by spaces
+ after tab expansion. Note that if expand_tabs is false and
+ replace_whitespace is true, every tab will be converted to a
+ single space!
+ fix_sentence_endings (default: false)
+ Ensure that sentence-ending punctuation is always followed
+ by two spaces. Off by default because the algorithm is
+ (unavoidably) imperfect.
+ break_long_words (default: true)
+ Break words longer than 'width'. If false, those words will not
+ be broken, and some lines might be longer than 'width'.
+ """
+
+ whitespace_trans = string.maketrans(_whitespace, ' ' * len(_whitespace))
+
+ unicode_whitespace_trans = {}
+ uspace = ord(u' ')
+ for x in map(ord, _whitespace):
+ unicode_whitespace_trans[x] = uspace
+
+ # This funky little regex is just the trick for splitting
+ # text up into word-wrappable chunks. E.g.
+ # "Hello there -- you goof-ball, use the -b option!"
+ # splits into
+ # Hello/ /there/ /--/ /you/ /goof-/ball,/ /use/ /the/ /-b/ /option!
+ # (after stripping out empty strings).
+ wordsep_re = re.compile(
+ r'(\s+|' # any whitespace
+ r'[^\s\w]*\w+[a-zA-Z]-(?=\w+[a-zA-Z])|' # hyphenated words
+ r'(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))') # em-dash
+
+ # XXX this is not locale- or charset-aware -- string.lowercase
+ # is US-ASCII only (and therefore English-only)
+ sentence_end_re = re.compile(r'[%s]' # lowercase letter
+ r'[\.\!\?]' # sentence-ending punct.
+ r'[\"\']?' # optional end-of-quote
+ % string.lowercase)
+
+
+ def __init__(self,
+ width=70,
+ initial_indent="",
+ subsequent_indent="",
+ expand_tabs=True,
+ replace_whitespace=True,
+ fix_sentence_endings=False,
+ break_long_words=True):
+ self.width = width
+ self.initial_indent = initial_indent
+ self.subsequent_indent = subsequent_indent
+ self.expand_tabs = expand_tabs
+ self.replace_whitespace = replace_whitespace
+ self.fix_sentence_endings = fix_sentence_endings
+ self.break_long_words = break_long_words
+
+
+ # -- Private methods -----------------------------------------------
+ # (possibly useful for subclasses to override)
+
+ def _munge_whitespace(self, text):
+ """_munge_whitespace(text : string) -> string
+
+ Munge whitespace in text: expand tabs and convert all other
+ whitespace characters to spaces. Eg. " foo\tbar\n\nbaz"
+ becomes " foo bar baz".
+ """
+ if self.expand_tabs:
+ text = text.expandtabs()
+ if self.replace_whitespace:
+ if isinstance(text, types.StringType):
+ text = text.translate(self.whitespace_trans)
+ elif isinstance(text, types.UnicodeType):
+ text = text.translate(self.unicode_whitespace_trans)
+ return text
+
+
+ def _split(self, text):
+ """_split(text : string) -> [string]
+
+ Split the text to wrap into indivisible chunks. Chunks are
+ not quite the same as words; see wrap_chunks() for full
+ details. As an example, the text
+ Look, goof-ball -- use the -b option!
+ breaks into the following chunks:
+ 'Look,', ' ', 'goof-', 'ball', ' ', '--', ' ',
+ 'use', ' ', 'the', ' ', '-b', ' ', 'option!'
+ """
+ chunks = self.wordsep_re.split(text)
+ chunks = filter(None, chunks)
+ return chunks
+
+ def _fix_sentence_endings(self, chunks):
+ """_fix_sentence_endings(chunks : [string])
+
+ Correct for sentence endings buried in 'chunks'. Eg. when the
+ original text contains "... foo.\nBar ...", munge_whitespace()
+ and split() will convert that to [..., "foo.", " ", "Bar", ...]
+ which has one too few spaces; this method simply changes the one
+ space to two.
+ """
+ i = 0
+ pat = self.sentence_end_re
+ while i < len(chunks)-1:
+ if chunks[i+1] == " " and pat.search(chunks[i]):
+ chunks[i+1] = " "
+ i += 2
+ else:
+ i += 1
+
+ def _handle_long_word(self, reversed_chunks, cur_line, cur_len, width):
+ """_handle_long_word(chunks : [string],
+ cur_line : [string],
+ cur_len : int, width : int)
+
+ Handle a chunk of text (most likely a word, not whitespace) that
+ is too long to fit in any line.
+ """
+ space_left = max(width - cur_len, 1)
+
+ # If we're allowed to break long words, then do so: put as much
+ # of the next chunk onto the current line as will fit.
+ if self.break_long_words:
+ cur_line.append(reversed_chunks[-1][:space_left])
+ reversed_chunks[-1] = reversed_chunks[-1][space_left:]
+
+ # Otherwise, we have to preserve the long word intact. Only add
+ # it to the current line if there's nothing already there --
+ # that minimizes how much we violate the width constraint.
+ elif not cur_line:
+ cur_line.append(reversed_chunks.pop())
+
+ # If we're not allowed to break long words, and there's already
+ # text on the current line, do nothing. Next time through the
+ # main loop of _wrap_chunks(), we'll wind up here again, but
+ # cur_len will be zero, so the next line will be entirely
+ # devoted to the long word that we can't handle right now.
+
+ def _wrap_chunks(self, chunks):
+ """_wrap_chunks(chunks : [string]) -> [string]
+
+ Wrap a sequence of text chunks and return a list of lines of
+ length 'self.width' or less. (If 'break_long_words' is false,
+ some lines may be longer than this.) Chunks correspond roughly
+ to words and the whitespace between them: each chunk is
+ indivisible (modulo 'break_long_words'), but a line break can
+ come between any two chunks. Chunks should not have internal
+ whitespace; ie. a chunk is either all whitespace or a "word".
+ Whitespace chunks will be removed from the beginning and end of
+ lines, but apart from that whitespace is preserved.
+ """
+ lines = []
+ if self.width <= 0:
+ raise ValueError("invalid width %r (must be > 0)" % self.width)
+
+ # Arrange in reverse order so items can be efficiently popped
+ # from a stack of chucks.
+ chunks.reverse()
+
+ while chunks:
+
+ # Start the list of chunks that will make up the current line.
+ # cur_len is just the length of all the chunks in cur_line.
+ cur_line = []
+ cur_len = 0
+
+ # Figure out which static string will prefix this line.
+ if lines:
+ indent = self.subsequent_indent
+ else:
+ indent = self.initial_indent
+
+ # Maximum width for this line.
+ width = self.width - len(indent)
+
+ # First chunk on line is whitespace -- drop it, unless this
+ # is the very beginning of the text (ie. no lines started yet).
+ if chunks[-1].strip() == '' and lines:
+ del chunks[-1]
+
+ while chunks:
+ l = len(chunks[-1])
+
+ # Can at least squeeze this chunk onto the current line.
+ if cur_len + l <= width:
+ cur_line.append(chunks.pop())
+ cur_len += l
+
+ # Nope, this line is full.
+ else:
+ break
+
+ # The current line is full, and the next chunk is too big to
+ # fit on *any* line (not just this one).
+ if chunks and len(chunks[-1]) > width:
+ self._handle_long_word(chunks, cur_line, cur_len, width)
+
+ # If the last chunk on this line is all whitespace, drop it.
+ if cur_line and cur_line[-1].strip() == '':
+ del cur_line[-1]
+
+ # Convert current line back to a string and store it in list
+ # of all lines (return value).
+ if cur_line:
+ lines.append(indent + ''.join(cur_line))
+
+ return lines
+
+
+ # -- Public interface ----------------------------------------------
+
+ def wrap(self, text):
+ """wrap(text : string) -> [string]
+
+ Reformat the single paragraph in 'text' so it fits in lines of
+ no more than 'self.width' columns, and return a list of wrapped
+ lines. Tabs in 'text' are expanded with string.expandtabs(),
+ and all other whitespace characters (including newline) are
+ converted to space.
+ """
+ text = self._munge_whitespace(text)
+ chunks = self._split(text)
+ if self.fix_sentence_endings:
+ self._fix_sentence_endings(chunks)
+ return self._wrap_chunks(chunks)
+
+ def fill(self, text):
+ """fill(text : string) -> string
+
+ Reformat the single paragraph in 'text' to fit in lines of no
+ more than 'self.width' columns, and return a new string
+ containing the entire wrapped paragraph.
+ """
+ return "\n".join(self.wrap(text))
+
+
+# -- Convenience interface ---------------------------------------------
+
+def wrap(text, width=70, **kwargs):
+ """Wrap a single paragraph of text, returning a list of wrapped lines.
+
+ Reformat the single paragraph in 'text' so it fits in lines of no
+ more than 'width' columns, and return a list of wrapped lines. By
+ default, tabs in 'text' are expanded with string.expandtabs(), and
+ all other whitespace characters (including newline) are converted to
+ space. See TextWrapper class for available keyword args to customize
+ wrapping behaviour.
+ """
+ w = TextWrapper(width=width, **kwargs)
+ return w.wrap(text)
+
+def fill(text, width=70, **kwargs):
+ """Fill a single paragraph of text, returning a new string.
+
+ Reformat the single paragraph in 'text' to fit in lines of no more
+ than 'width' columns, and return a new string containing the entire
+ wrapped paragraph. As with wrap(), tabs are expanded and other
+ whitespace characters converted to space. See TextWrapper class for
+ available keyword args to customize wrapping behaviour.
+ """
+ w = TextWrapper(width=width, **kwargs)
+ return w.fill(text)
+
+
+# -- Loosely related functionality -------------------------------------
+
+def dedent(text):
+ """dedent(text : string) -> string
+
+ Remove any whitespace than can be uniformly removed from the left
+ of every line in `text`.
+
+ This can be used e.g. to make triple-quoted strings line up with
+ the left edge of screen/whatever, while still presenting it in the
+ source code in indented form.
+
+ For example:
+
+ def test():
+ # end first line with \ to avoid the empty line!
+ s = '''\
+ hello
+ world
+ '''
+ print repr(s) # prints ' hello\n world\n '
+ print repr(dedent(s)) # prints 'hello\n world\n'
+ """
+ lines = text.expandtabs().split('\n')
+ margin = None
+ for line in lines:
+ content = line.lstrip()
+ if not content:
+ continue
+ indent = len(line) - len(content)
+ if margin is None:
+ margin = indent
+ else:
+ margin = min(margin, indent)
+
+ if margin is not None and margin > 0:
+ for i in range(len(lines)):
+ lines[i] = lines[i][margin:]
+
+ return '\n'.join(lines)
diff --git a/build-scripts/jhbuild/jhbuild/cut_n_paste/subprocess.py b/build-scripts/jhbuild/jhbuild/cut_n_paste/subprocess.py
new file mode 100644
index 0000000..d115e87
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/cut_n_paste/subprocess.py
@@ -0,0 +1,1165 @@
+# subprocess - Subprocesses with accessible I/O streams
+#
+# For more information about this module, see PEP 324.
+#
+# Copyright (c) 2003-2004 by Peter Astrand <astrand@lysator.liu.se>
+#
+# By obtaining, using, and/or copying this software and/or its
+# associated documentation, you agree that you have read, understood,
+# and will comply with the following terms and conditions:
+#
+# Permission to use, copy, modify, and distribute this software and
+# its associated documentation for any purpose and without fee is
+# hereby granted, provided that the above copyright notice appears in
+# all copies, and that both that copyright notice and this permission
+# notice appear in supporting documentation, and that the name of the
+# author not be used in advertising or publicity pertaining to
+# distribution of the software without specific, written prior
+# permission.
+#
+# THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+# OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+r"""subprocess - Subprocesses with accessible I/O streams
+
+This module allows you to spawn processes, connect to their
+input/output/error pipes, and obtain their return codes. This module
+intends to replace several other, older modules and functions, like:
+
+os.system
+os.spawn*
+os.popen*
+popen2.*
+commands.*
+
+Information about how the subprocess module can be used to replace these
+modules and functions can be found below.
+
+
+
+Using the subprocess module
+===========================
+This module defines one class called Popen:
+
+class Popen(args, bufsize=0, executable=None,
+ stdin=None, stdout=None, stderr=None,
+ preexec_fn=None, close_fds=False, shell=False,
+ cwd=None, env=None, universal_newlines=False,
+ startupinfo=None, creationflags=0):
+
+
+Arguments are:
+
+args should be a string, or a sequence of program arguments. The
+program to execute is normally the first item in the args sequence or
+string, but can be explicitly set by using the executable argument.
+
+On UNIX, with shell=False (default): In this case, the Popen class
+uses os.execvp() to execute the child program. args should normally
+be a sequence. A string will be treated as a sequence with the string
+as the only item (the program to execute).
+
+On UNIX, with shell=True: If args is a string, it specifies the
+command string to execute through the shell. If args is a sequence,
+the first item specifies the command string, and any additional items
+will be treated as additional shell arguments.
+
+On Windows: the Popen class uses CreateProcess() to execute the child
+program, which operates on strings. If args is a sequence, it will be
+converted to a string using the list2cmdline method. Please note that
+not all MS Windows applications interpret the command line the same
+way: The list2cmdline is designed for applications using the same
+rules as the MS C runtime.
+
+bufsize, if given, has the same meaning as the corresponding argument
+to the built-in open() function: 0 means unbuffered, 1 means line
+buffered, any other positive value means use a buffer of
+(approximately) that size. A negative bufsize means to use the system
+default, which usually means fully buffered. The default value for
+bufsize is 0 (unbuffered).
+
+stdin, stdout and stderr specify the executed programs' standard
+input, standard output and standard error file handles, respectively.
+Valid values are PIPE, an existing file descriptor (a positive
+integer), an existing file object, and None. PIPE indicates that a
+new pipe to the child should be created. With None, no redirection
+will occur; the child's file handles will be inherited from the
+parent. Additionally, stderr can be STDOUT, which indicates that the
+stderr data from the applications should be captured into the same
+file handle as for stdout.
+
+If preexec_fn is set to a callable object, this object will be called
+in the child process just before the child is executed.
+
+If close_fds is true, all file descriptors except 0, 1 and 2 will be
+closed before the child process is executed.
+
+if shell is true, the specified command will be executed through the
+shell.
+
+If cwd is not None, the current directory will be changed to cwd
+before the child is executed.
+
+If env is not None, it defines the environment variables for the new
+process.
+
+If universal_newlines is true, the file objects stdout and stderr are
+opened as a text files, but lines may be terminated by any of '\n',
+the Unix end-of-line convention, '\r', the Macintosh convention or
+'\r\n', the Windows convention. All of these external representations
+are seen as '\n' by the Python program. Note: This feature is only
+available if Python is built with universal newline support (the
+default). Also, the newlines attribute of the file objects stdout,
+stdin and stderr are not updated by the communicate() method.
+
+The startupinfo and creationflags, if given, will be passed to the
+underlying CreateProcess() function. They can specify things such as
+appearance of the main window and priority for the new process.
+(Windows only)
+
+
+This module also defines two shortcut functions:
+
+call(*args, **kwargs):
+ Run command with arguments. Wait for command to complete, then
+ return the returncode attribute.
+
+ The arguments are the same as for the Popen constructor. Example:
+
+ retcode = call(["ls", "-l"])
+
+
+Exceptions
+----------
+Exceptions raised in the child process, before the new program has
+started to execute, will be re-raised in the parent. Additionally,
+the exception object will have one extra attribute called
+'child_traceback', which is a string containing traceback information
+from the childs point of view.
+
+The most common exception raised is OSError. This occurs, for
+example, when trying to execute a non-existent file. Applications
+should prepare for OSErrors.
+
+A ValueError will be raised if Popen is called with invalid arguments.
+
+
+Security
+--------
+Unlike some other popen functions, this implementation will never call
+/bin/sh implicitly. This means that all characters, including shell
+metacharacters, can safely be passed to child processes.
+
+
+Popen objects
+=============
+Instances of the Popen class have the following methods:
+
+poll()
+ Check if child process has terminated. Returns returncode
+ attribute.
+
+wait()
+ Wait for child process to terminate. Returns returncode attribute.
+
+communicate(input=None)
+ Interact with process: Send data to stdin. Read data from stdout
+ and stderr, until end-of-file is reached. Wait for process to
+ terminate. The optional stdin argument should be a string to be
+ sent to the child process, or None, if no data should be sent to
+ the child.
+
+ communicate() returns a tuple (stdout, stderr).
+
+ Note: The data read is buffered in memory, so do not use this
+ method if the data size is large or unlimited.
+
+The following attributes are also available:
+
+stdin
+ If the stdin argument is PIPE, this attribute is a file object
+ that provides input to the child process. Otherwise, it is None.
+
+stdout
+ If the stdout argument is PIPE, this attribute is a file object
+ that provides output from the child process. Otherwise, it is
+ None.
+
+stderr
+ If the stderr argument is PIPE, this attribute is file object that
+ provides error output from the child process. Otherwise, it is
+ None.
+
+pid
+ The process ID of the child process.
+
+returncode
+ The child return code. A None value indicates that the process
+ hasn't terminated yet. A negative value -N indicates that the
+ child was terminated by signal N (UNIX only).
+
+
+Replacing older functions with the subprocess module
+====================================================
+In this section, "a ==> b" means that b can be used as a replacement
+for a.
+
+Note: All functions in this section fail (more or less) silently if
+the executed program cannot be found; this module raises an OSError
+exception.
+
+In the following examples, we assume that the subprocess module is
+imported with "from subprocess import *".
+
+
+Replacing /bin/sh shell backquote
+---------------------------------
+output=`mycmd myarg`
+==>
+output = Popen(["mycmd", "myarg"], stdout=PIPE).communicate()[0]
+
+
+Replacing shell pipe line
+-------------------------
+output=`dmesg | grep hda`
+==>
+p1 = Popen(["dmesg"], stdout=PIPE)
+p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
+output = p2.communicate()[0]
+
+
+Replacing os.system()
+---------------------
+sts = os.system("mycmd" + " myarg")
+==>
+p = Popen("mycmd" + " myarg", shell=True)
+sts = os.waitpid(p.pid, 0)
+
+Note:
+
+* Calling the program through the shell is usually not required.
+
+* It's easier to look at the returncode attribute than the
+ exitstatus.
+
+A more real-world example would look like this:
+
+try:
+ retcode = call("mycmd" + " myarg", shell=True)
+ if retcode < 0:
+ print >>sys.stderr, "Child was terminated by signal", -retcode
+ else:
+ print >>sys.stderr, "Child returned", retcode
+except OSError, e:
+ print >>sys.stderr, "Execution failed:", e
+
+
+Replacing os.spawn*
+-------------------
+P_NOWAIT example:
+
+pid = os.spawnlp(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg")
+==>
+pid = Popen(["/bin/mycmd", "myarg"]).pid
+
+
+P_WAIT example:
+
+retcode = os.spawnlp(os.P_WAIT, "/bin/mycmd", "mycmd", "myarg")
+==>
+retcode = call(["/bin/mycmd", "myarg"])
+
+
+Vector example:
+
+os.spawnvp(os.P_NOWAIT, path, args)
+==>
+Popen([path] + args[1:])
+
+
+Environment example:
+
+os.spawnlpe(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg", env)
+==>
+Popen(["/bin/mycmd", "myarg"], env={"PATH": "/usr/bin"})
+
+
+Replacing os.popen*
+-------------------
+pipe = os.popen(cmd, mode='r', bufsize)
+==>
+pipe = Popen(cmd, shell=True, bufsize=bufsize, stdout=PIPE).stdout
+
+pipe = os.popen(cmd, mode='w', bufsize)
+==>
+pipe = Popen(cmd, shell=True, bufsize=bufsize, stdin=PIPE).stdin
+
+
+(child_stdin, child_stdout) = os.popen2(cmd, mode, bufsize)
+==>
+p = Popen(cmd, shell=True, bufsize=bufsize,
+ stdin=PIPE, stdout=PIPE, close_fds=True)
+(child_stdin, child_stdout) = (p.stdin, p.stdout)
+
+
+(child_stdin,
+ child_stdout,
+ child_stderr) = os.popen3(cmd, mode, bufsize)
+==>
+p = Popen(cmd, shell=True, bufsize=bufsize,
+ stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
+(child_stdin,
+ child_stdout,
+ child_stderr) = (p.stdin, p.stdout, p.stderr)
+
+
+(child_stdin, child_stdout_and_stderr) = os.popen4(cmd, mode, bufsize)
+==>
+p = Popen(cmd, shell=True, bufsize=bufsize,
+ stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
+(child_stdin, child_stdout_and_stderr) = (p.stdin, p.stdout)
+
+
+Replacing popen2.*
+------------------
+Note: If the cmd argument to popen2 functions is a string, the command
+is executed through /bin/sh. If it is a list, the command is directly
+executed.
+
+(child_stdout, child_stdin) = popen2.popen2("somestring", bufsize, mode)
+==>
+p = Popen(["somestring"], shell=True, bufsize=bufsize
+ stdin=PIPE, stdout=PIPE, close_fds=True)
+(child_stdout, child_stdin) = (p.stdout, p.stdin)
+
+
+(child_stdout, child_stdin) = popen2.popen2(["mycmd", "myarg"], bufsize, mode)
+==>
+p = Popen(["mycmd", "myarg"], bufsize=bufsize,
+ stdin=PIPE, stdout=PIPE, close_fds=True)
+(child_stdout, child_stdin) = (p.stdout, p.stdin)
+
+The popen2.Popen3 and popen3.Popen4 basically works as subprocess.Popen,
+except that:
+
+* subprocess.Popen raises an exception if the execution fails
+* the capturestderr argument is replaced with the stderr argument.
+* stdin=PIPE and stdout=PIPE must be specified.
+* popen2 closes all filedescriptors by default, but you have to specify
+ close_fds=True with subprocess.Popen.
+
+
+"""
+
+import sys
+mswindows = (sys.platform == "win32")
+
+import os
+import types
+import traceback
+
+if mswindows:
+ import threading
+ import msvcrt
+ if 0: # <-- change this to use pywin32 instead of the _subprocess driver
+ import pywintypes
+ from win32api import GetStdHandle, STD_INPUT_HANDLE, \
+ STD_OUTPUT_HANDLE, STD_ERROR_HANDLE
+ from win32api import GetCurrentProcess, DuplicateHandle, \
+ GetModuleFileName, GetVersion
+ from win32con import DUPLICATE_SAME_ACCESS, SW_HIDE
+ from win32pipe import CreatePipe
+ from win32process import CreateProcess, STARTUPINFO, \
+ GetExitCodeProcess, STARTF_USESTDHANDLES, \
+ STARTF_USESHOWWINDOW, CREATE_NEW_CONSOLE
+ from win32event import WaitForSingleObject, INFINITE, WAIT_OBJECT_0
+ else:
+ from _subprocess import *
+ class STARTUPINFO:
+ dwFlags = 0
+ hStdInput = None
+ hStdOutput = None
+ hStdError = None
+ class pywintypes:
+ error = IOError
+else:
+ import select
+ import errno
+ import fcntl
+ import pickle
+
+__all__ = ["Popen", "PIPE", "STDOUT", "call"]
+
+try:
+ MAXFD = os.sysconf("SC_OPEN_MAX")
+except:
+ MAXFD = 256
+
+# True/False does not exist on 2.2.0
+try:
+ False
+except NameError:
+ False = 0
+ True = 1
+
+_active = []
+
+def _cleanup():
+ for inst in _active[:]:
+ inst.poll()
+
+PIPE = -1
+STDOUT = -2
+
+
+def call(*args, **kwargs):
+ """Run command with arguments. Wait for command to complete, then
+ return the returncode attribute.
+
+ The arguments are the same as for the Popen constructor. Example:
+
+ retcode = call(["ls", "-l"])
+ """
+ return Popen(*args, **kwargs).wait()
+
+
+def list2cmdline(seq):
+ """
+ Translate a sequence of arguments into a command line
+ string, using the same rules as the MS C runtime:
+
+ 1) Arguments are delimited by white space, which is either a
+ space or a tab.
+
+ 2) A string surrounded by double quotation marks is
+ interpreted as a single argument, regardless of white space
+ contained within. A quoted string can be embedded in an
+ argument.
+
+ 3) A double quotation mark preceded by a backslash is
+ interpreted as a literal double quotation mark.
+
+ 4) Backslashes are interpreted literally, unless they
+ immediately precede a double quotation mark.
+
+ 5) If backslashes immediately precede a double quotation mark,
+ every pair of backslashes is interpreted as a literal
+ backslash. If the number of backslashes is odd, the last
+ backslash escapes the next double quotation mark as
+ described in rule 3.
+ """
+
+ # See
+ # http://msdn.microsoft.com/library/en-us/vccelng/htm/progs_12.asp
+ result = []
+ needquote = False
+ for arg in seq:
+ bs_buf = []
+
+ # Add a space to separate this argument from the others
+ if result:
+ result.append(' ')
+
+ needquote = (" " in arg) or ("\t" in arg)
+ if needquote:
+ result.append('"')
+
+ for c in arg:
+ if c == '\\':
+ # Don't know if we need to double yet.
+ bs_buf.append(c)
+ elif c == '"':
+ # Double backspaces.
+ result.append('\\' * len(bs_buf)*2)
+ bs_buf = []
+ result.append('\\"')
+ else:
+ # Normal char
+ if bs_buf:
+ result.extend(bs_buf)
+ bs_buf = []
+ result.append(c)
+
+ # Add remaining backspaces, if any.
+ if bs_buf:
+ result.extend(bs_buf)
+
+ if needquote:
+ result.extend(bs_buf)
+ result.append('"')
+
+ return ''.join(result)
+
+
+class Popen(object):
+ def __init__(self, args, bufsize=0, executable=None,
+ stdin=None, stdout=None, stderr=None,
+ preexec_fn=None, close_fds=False, shell=False,
+ cwd=None, env=None, universal_newlines=False,
+ startupinfo=None, creationflags=0):
+ """Create new Popen instance."""
+ _cleanup()
+
+ if not isinstance(bufsize, (int, long)):
+ raise TypeError("bufsize must be an integer")
+
+ if mswindows:
+ if preexec_fn is not None:
+ raise ValueError("preexec_fn is not supported on Windows "
+ "platforms")
+ if close_fds:
+ raise ValueError("close_fds is not supported on Windows "
+ "platforms")
+ else:
+ # POSIX
+ if startupinfo is not None:
+ raise ValueError("startupinfo is only supported on Windows "
+ "platforms")
+ if creationflags != 0:
+ raise ValueError("creationflags is only supported on Windows "
+ "platforms")
+
+ self.stdin = None
+ self.stdout = None
+ self.stderr = None
+ self.pid = None
+ self.returncode = None
+ self.universal_newlines = universal_newlines
+
+ # Input and output objects. The general principle is like
+ # this:
+ #
+ # Parent Child
+ # ------ -----
+ # p2cwrite ---stdin---> p2cread
+ # c2pread <--stdout--- c2pwrite
+ # errread <--stderr--- errwrite
+ #
+ # On POSIX, the child objects are file descriptors. On
+ # Windows, these are Windows file handles. The parent objects
+ # are file descriptors on both platforms. The parent objects
+ # are None when not using PIPEs. The child objects are None
+ # when not redirecting.
+
+ (p2cread, p2cwrite,
+ c2pread, c2pwrite,
+ errread, errwrite) = self._get_handles(stdin, stdout, stderr)
+
+ self._execute_child(args, executable, preexec_fn, close_fds,
+ cwd, env, universal_newlines,
+ startupinfo, creationflags, shell,
+ p2cread, p2cwrite,
+ c2pread, c2pwrite,
+ errread, errwrite)
+
+ if p2cwrite:
+ self.stdin = os.fdopen(p2cwrite, 'wb', bufsize)
+ if c2pread:
+ if universal_newlines:
+ self.stdout = os.fdopen(c2pread, 'rU', bufsize)
+ else:
+ self.stdout = os.fdopen(c2pread, 'rb', bufsize)
+ if errread:
+ if universal_newlines:
+ self.stderr = os.fdopen(errread, 'rU', bufsize)
+ else:
+ self.stderr = os.fdopen(errread, 'rb', bufsize)
+
+ _active.append(self)
+
+
+ def _translate_newlines(self, data):
+ data = data.replace("\r\n", "\n")
+ data = data.replace("\r", "\n")
+ return data
+
+
+ if mswindows:
+ #
+ # Windows methods
+ #
+ def _get_handles(self, stdin, stdout, stderr):
+ """Construct and return tupel with IO objects:
+ p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite
+ """
+ if stdin == None and stdout == None and stderr == None:
+ return (None, None, None, None, None, None)
+
+ p2cread, p2cwrite = None, None
+ c2pread, c2pwrite = None, None
+ errread, errwrite = None, None
+
+ if stdin == None:
+ p2cread = GetStdHandle(STD_INPUT_HANDLE)
+ elif stdin == PIPE:
+ p2cread, p2cwrite = CreatePipe(None, 0)
+ # Detach and turn into fd
+ p2cwrite = p2cwrite.Detach()
+ p2cwrite = msvcrt.open_osfhandle(p2cwrite, 0)
+ elif type(stdin) == types.IntType:
+ p2cread = msvcrt.get_osfhandle(stdin)
+ else:
+ # Assuming file-like object
+ p2cread = msvcrt.get_osfhandle(stdin.fileno())
+ p2cread = self._make_inheritable(p2cread)
+
+ if stdout == None:
+ c2pwrite = GetStdHandle(STD_OUTPUT_HANDLE)
+ elif stdout == PIPE:
+ c2pread, c2pwrite = CreatePipe(None, 0)
+ # Detach and turn into fd
+ c2pread = c2pread.Detach()
+ c2pread = msvcrt.open_osfhandle(c2pread, 0)
+ elif type(stdout) == types.IntType:
+ c2pwrite = msvcrt.get_osfhandle(stdout)
+ else:
+ # Assuming file-like object
+ c2pwrite = msvcrt.get_osfhandle(stdout.fileno())
+ c2pwrite = self._make_inheritable(c2pwrite)
+
+ if stderr == None:
+ errwrite = GetStdHandle(STD_ERROR_HANDLE)
+ elif stderr == PIPE:
+ errread, errwrite = CreatePipe(None, 0)
+ # Detach and turn into fd
+ errread = errread.Detach()
+ errread = msvcrt.open_osfhandle(errread, 0)
+ elif stderr == STDOUT:
+ errwrite = c2pwrite
+ elif type(stderr) == types.IntType:
+ errwrite = msvcrt.get_osfhandle(stderr)
+ else:
+ # Assuming file-like object
+ errwrite = msvcrt.get_osfhandle(stderr.fileno())
+ errwrite = self._make_inheritable(errwrite)
+
+ return (p2cread, p2cwrite,
+ c2pread, c2pwrite,
+ errread, errwrite)
+
+
+ def _make_inheritable(self, handle):
+ """Return a duplicate of handle, which is inheritable"""
+ return DuplicateHandle(GetCurrentProcess(), handle,
+ GetCurrentProcess(), 0, 1,
+ DUPLICATE_SAME_ACCESS)
+
+
+ def _find_w9xpopen(self):
+ """Find and return absolut path to w9xpopen.exe"""
+ w9xpopen = os.path.join(os.path.dirname(GetModuleFileName(0)),
+ "w9xpopen.exe")
+ if not os.path.exists(w9xpopen):
+ # Eeek - file-not-found - possibly an embedding
+ # situation - see if we can locate it in sys.exec_prefix
+ w9xpopen = os.path.join(os.path.dirname(sys.exec_prefix),
+ "w9xpopen.exe")
+ if not os.path.exists(w9xpopen):
+ raise RuntimeError("Cannot locate w9xpopen.exe, which is "
+ "needed for Popen to work with your "
+ "shell or platform.")
+ return w9xpopen
+
+
+ def _execute_child(self, args, executable, preexec_fn, close_fds,
+ cwd, env, universal_newlines,
+ startupinfo, creationflags, shell,
+ p2cread, p2cwrite,
+ c2pread, c2pwrite,
+ errread, errwrite):
+ """Execute program (MS Windows version)"""
+
+ if not isinstance(args, types.StringTypes):
+ args = list2cmdline(args)
+
+ # Process startup details
+ default_startupinfo = STARTUPINFO()
+ if startupinfo == None:
+ startupinfo = default_startupinfo
+ if not None in (p2cread, c2pwrite, errwrite):
+ startupinfo.dwFlags |= STARTF_USESTDHANDLES
+ startupinfo.hStdInput = p2cread
+ startupinfo.hStdOutput = c2pwrite
+ startupinfo.hStdError = errwrite
+
+ if shell:
+ default_startupinfo.dwFlags |= STARTF_USESHOWWINDOW
+ default_startupinfo.wShowWindow = SW_HIDE
+ comspec = os.environ.get("COMSPEC", "cmd.exe")
+ args = comspec + " /c " + args
+ if (GetVersion() >= 0x80000000L or
+ os.path.basename(comspec).lower() == "command.com"):
+ # Win9x, or using command.com on NT. We need to
+ # use the w9xpopen intermediate program. For more
+ # information, see KB Q150956
+ # (http://web.archive.org/web/20011105084002/http://support.microsoft.com/support/kb/articles/Q150/9/56.asp)
+ w9xpopen = self._find_w9xpopen()
+ args = '"%s" %s' % (w9xpopen, args)
+ # Not passing CREATE_NEW_CONSOLE has been known to
+ # cause random failures on win9x. Specifically a
+ # dialog: "Your program accessed mem currently in
+ # use at xxx" and a hopeful warning about the
+ # stability of your system. Cost is Ctrl+C wont
+ # kill children.
+ creationflags |= CREATE_NEW_CONSOLE
+
+ # Start the process
+ try:
+ hp, ht, pid, tid = CreateProcess(executable, args,
+ # no special security
+ None, None,
+ # must inherit handles to pass std
+ # handles
+ 1,
+ creationflags,
+ env,
+ cwd,
+ startupinfo)
+ except pywintypes.error, e:
+ # Translate pywintypes.error to WindowsError, which is
+ # a subclass of OSError. FIXME: We should really
+ # translate errno using _sys_errlist (or simliar), but
+ # how can this be done from Python?
+ raise WindowsError(*e.args)
+
+ # Retain the process handle, but close the thread handle
+ self._handle = hp
+ self.pid = pid
+ ht.Close()
+
+ # Child is launched. Close the parent's copy of those pipe
+ # handles that only the child should have open. You need
+ # to make sure that no handles to the write end of the
+ # output pipe are maintained in this process or else the
+ # pipe will not close when the child process exits and the
+ # ReadFile will hang.
+ if p2cread != None:
+ p2cread.Close()
+ if c2pwrite != None:
+ c2pwrite.Close()
+ if errwrite != None:
+ errwrite.Close()
+
+
+ def poll(self):
+ """Check if child process has terminated. Returns returncode
+ attribute."""
+ if self.returncode == None:
+ if WaitForSingleObject(self._handle, 0) == WAIT_OBJECT_0:
+ self.returncode = GetExitCodeProcess(self._handle)
+ _active.remove(self)
+ return self.returncode
+
+
+ def wait(self):
+ """Wait for child process to terminate. Returns returncode
+ attribute."""
+ if self.returncode == None:
+ obj = WaitForSingleObject(self._handle, INFINITE)
+ self.returncode = GetExitCodeProcess(self._handle)
+ _active.remove(self)
+ return self.returncode
+
+
+ def _readerthread(self, fh, buffer):
+ buffer.append(fh.read())
+
+
+ def communicate(self, input=None):
+ """Interact with process: Send data to stdin. Read data from
+ stdout and stderr, until end-of-file is reached. Wait for
+ process to terminate. The optional input argument should be a
+ string to be sent to the child process, or None, if no data
+ should be sent to the child.
+
+ communicate() returns a tuple (stdout, stderr)."""
+ stdout = None # Return
+ stderr = None # Return
+
+ if self.stdout:
+ stdout = []
+ stdout_thread = threading.Thread(target=self._readerthread,
+ args=(self.stdout, stdout))
+ stdout_thread.setDaemon(True)
+ stdout_thread.start()
+ if self.stderr:
+ stderr = []
+ stderr_thread = threading.Thread(target=self._readerthread,
+ args=(self.stderr, stderr))
+ stderr_thread.setDaemon(True)
+ stderr_thread.start()
+
+ if self.stdin:
+ if input != None:
+ self.stdin.write(input)
+ self.stdin.close()
+
+ if self.stdout:
+ stdout_thread.join()
+ if self.stderr:
+ stderr_thread.join()
+
+ # All data exchanged. Translate lists into strings.
+ if stdout != None:
+ stdout = stdout[0]
+ if stderr != None:
+ stderr = stderr[0]
+
+ # Translate newlines, if requested. We cannot let the file
+ # object do the translation: It is based on stdio, which is
+ # impossible to combine with select (unless forcing no
+ # buffering).
+ if self.universal_newlines and hasattr(open, 'newlines'):
+ if stdout:
+ stdout = self._translate_newlines(stdout)
+ if stderr:
+ stderr = self._translate_newlines(stderr)
+
+ self.wait()
+ return (stdout, stderr)
+
+ else:
+ #
+ # POSIX methods
+ #
+ def _get_handles(self, stdin, stdout, stderr):
+ """Construct and return tupel with IO objects:
+ p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite
+ """
+ p2cread, p2cwrite = None, None
+ c2pread, c2pwrite = None, None
+ errread, errwrite = None, None
+
+ if stdin == None:
+ pass
+ elif stdin == PIPE:
+ p2cread, p2cwrite = os.pipe()
+ elif type(stdin) == types.IntType:
+ p2cread = stdin
+ else:
+ # Assuming file-like object
+ p2cread = stdin.fileno()
+
+ if stdout == None:
+ pass
+ elif stdout == PIPE:
+ c2pread, c2pwrite = os.pipe()
+ elif type(stdout) == types.IntType:
+ c2pwrite = stdout
+ else:
+ # Assuming file-like object
+ c2pwrite = stdout.fileno()
+
+ if stderr == None:
+ pass
+ elif stderr == PIPE:
+ errread, errwrite = os.pipe()
+ elif stderr == STDOUT:
+ errwrite = c2pwrite
+ elif type(stderr) == types.IntType:
+ errwrite = stderr
+ else:
+ # Assuming file-like object
+ errwrite = stderr.fileno()
+
+ return (p2cread, p2cwrite,
+ c2pread, c2pwrite,
+ errread, errwrite)
+
+
+ def _set_cloexec_flag(self, fd):
+ try:
+ cloexec_flag = fcntl.FD_CLOEXEC
+ except AttributeError:
+ cloexec_flag = 1
+
+ old = fcntl.fcntl(fd, fcntl.F_GETFD)
+ fcntl.fcntl(fd, fcntl.F_SETFD, old | cloexec_flag)
+
+
+ def _close_fds(self, but):
+ for i in range(3, MAXFD):
+ if i == but:
+ continue
+ try:
+ os.close(i)
+ except:
+ pass
+
+
+ def _execute_child(self, args, executable, preexec_fn, close_fds,
+ cwd, env, universal_newlines,
+ startupinfo, creationflags, shell,
+ p2cread, p2cwrite,
+ c2pread, c2pwrite,
+ errread, errwrite):
+ """Execute program (POSIX version)"""
+
+ if isinstance(args, types.StringTypes):
+ args = [args]
+
+ if shell:
+ args = ["/bin/sh", "-c"] + args
+
+ if executable == None:
+ executable = args[0]
+
+ # For transferring possible exec failure from child to parent
+ # The first char specifies the exception type: 0 means
+ # OSError, 1 means some other error.
+ errpipe_read, errpipe_write = os.pipe()
+ self._set_cloexec_flag(errpipe_write)
+
+ self.pid = os.fork()
+ if self.pid == 0:
+ # Child
+ try:
+ # Close parent's pipe ends
+ if p2cwrite:
+ os.close(p2cwrite)
+ if c2pread:
+ os.close(c2pread)
+ if errread:
+ os.close(errread)
+ os.close(errpipe_read)
+
+ # Dup fds for child
+ if p2cread:
+ os.dup2(p2cread, 0)
+ if c2pwrite:
+ os.dup2(c2pwrite, 1)
+ if errwrite:
+ os.dup2(errwrite, 2)
+
+ # Close pipe fds. Make sure we doesn't close the same
+ # fd more than once.
+ if p2cread:
+ os.close(p2cread)
+ if c2pwrite and c2pwrite not in (p2cread,):
+ os.close(c2pwrite)
+ if errwrite and errwrite not in (p2cread, c2pwrite):
+ os.close(errwrite)
+
+ # Close all other fds, if asked for
+ if close_fds:
+ self._close_fds(but=errpipe_write)
+
+ if cwd != None:
+ os.chdir(cwd)
+
+ if preexec_fn:
+ apply(preexec_fn)
+
+ if env == None:
+ os.execvp(executable, args)
+ else:
+ os.execvpe(executable, args, env)
+
+ except:
+ exc_type, exc_value, tb = sys.exc_info()
+ # Save the traceback and attach it to the exception object
+ exc_lines = traceback.format_exception(exc_type,
+ exc_value,
+ tb)
+ exc_value.child_traceback = ''.join(exc_lines)
+ os.write(errpipe_write, pickle.dumps(exc_value))
+
+ # This exitcode won't be reported to applications, so it
+ # really doesn't matter what we return.
+ os._exit(255)
+
+ # Parent
+ os.close(errpipe_write)
+ if p2cread and p2cwrite:
+ os.close(p2cread)
+ if c2pwrite and c2pread:
+ os.close(c2pwrite)
+ if errwrite and errread:
+ os.close(errwrite)
+
+ # Wait for exec to fail or succeed; possibly raising exception
+ data = os.read(errpipe_read, 1048576) # Exceptions limited to 1 MB
+ os.close(errpipe_read)
+ if data != "":
+ os.waitpid(self.pid, 0)
+ child_exception = pickle.loads(data)
+ raise child_exception
+
+
+ def _handle_exitstatus(self, sts):
+ if os.WIFSIGNALED(sts):
+ self.returncode = -os.WTERMSIG(sts)
+ elif os.WIFEXITED(sts):
+ self.returncode = os.WEXITSTATUS(sts)
+ else:
+ # Should never happen
+ raise RuntimeError("Unknown child exit status!")
+
+ _active.remove(self)
+
+
+ def poll(self):
+ """Check if child process has terminated. Returns returncode
+ attribute."""
+ if self.returncode == None:
+ try:
+ pid, sts = os.waitpid(self.pid, os.WNOHANG)
+ if pid == self.pid:
+ self._handle_exitstatus(sts)
+ except os.error:
+ pass
+ return self.returncode
+
+
+ def wait(self):
+ """Wait for child process to terminate. Returns returncode
+ attribute."""
+ if self.returncode == None:
+ pid, sts = os.waitpid(self.pid, 0)
+ self._handle_exitstatus(sts)
+ return self.returncode
+
+
+ def communicate(self, input=None):
+ """Interact with process: Send data to stdin. Read data from
+ stdout and stderr, until end-of-file is reached. Wait for
+ process to terminate. The optional input argument should be a
+ string to be sent to the child process, or None, if no data
+ should be sent to the child.
+
+ communicate() returns a tuple (stdout, stderr)."""
+ read_set = []
+ write_set = []
+ stdout = None # Return
+ stderr = None # Return
+
+ if self.stdin:
+ # Flush stdio buffer. This might block, if the user has
+ # been writing to .stdin in an uncontrolled fashion.
+ self.stdin.flush()
+ if input:
+ write_set.append(self.stdin)
+ else:
+ self.stdin.close()
+ if self.stdout:
+ read_set.append(self.stdout)
+ stdout = []
+ if self.stderr:
+ read_set.append(self.stderr)
+ stderr = []
+
+ while read_set or write_set:
+ rlist, wlist, xlist = select.select(read_set, write_set, [])
+
+ if self.stdin in wlist:
+ # When select has indicated that the file is writable,
+ # we can write up to PIPE_BUF bytes without risk
+ # blocking. POSIX defines PIPE_BUF >= 512
+ bytes_written = os.write(self.stdin.fileno(), input[:512])
+ input = input[bytes_written:]
+ if not input:
+ self.stdin.close()
+ write_set.remove(self.stdin)
+
+ if self.stdout in rlist:
+ data = os.read(self.stdout.fileno(), 1024)
+ if data == "":
+ self.stdout.close()
+ read_set.remove(self.stdout)
+ stdout.append(data)
+
+ if self.stderr in rlist:
+ data = os.read(self.stderr.fileno(), 1024)
+ if data == "":
+ self.stderr.close()
+ read_set.remove(self.stderr)
+ stderr.append(data)
+
+ # All data exchanged. Translate lists into strings.
+ if stdout != None:
+ stdout = ''.join(stdout)
+ if stderr != None:
+ stderr = ''.join(stderr)
+
+ # Translate newlines, if requested. We cannot let the file
+ # object do the translation: It is based on stdio, which is
+ # impossible to combine with select (unless forcing no
+ # buffering).
+ if self.universal_newlines and hasattr(open, 'newlines'):
+ if stdout:
+ stdout = self._translate_newlines(stdout)
+ if stderr:
+ stderr = self._translate_newlines(stderr)
+
+ self.wait()
+ return (stdout, stderr)
+
+
+def _demo_posix():
+ #
+ # Example 1: Simple redirection: Get process list
+ #
+ plist = Popen(["ps"], stdout=PIPE).communicate()[0]
+ print "Process list:"
+ print plist
+
+ #
+ # Example 2: Change uid before executing child
+ #
+ if os.getuid() == 0:
+ p = Popen(["id"], preexec_fn=lambda: os.setuid(100))
+ p.wait()
+
+ #
+ # Example 3: Connecting several subprocesses
+ #
+ print "Looking for 'hda'..."
+ p1 = Popen(["dmesg"], stdout=PIPE)
+ p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
+ print repr(p2.communicate()[0])
+
+ #
+ # Example 4: Catch execution error
+ #
+ print
+ print "Trying a weird file..."
+ try:
+ print Popen(["/this/path/does/not/exist"]).communicate()
+ except OSError, e:
+ if e.errno == errno.ENOENT:
+ print "The file didn't exist. I thought so..."
+ print "Child traceback:"
+ print e.child_traceback
+ else:
+ print "Error", e.errno
+ else:
+ print >>sys.stderr, "Gosh. No error."
+
+
+def _demo_windows():
+ #
+ # Example 1: Connecting several subprocesses
+ #
+ print "Looking for 'PROMPT' in set output..."
+ p1 = Popen("set", stdout=PIPE, shell=True)
+ p2 = Popen('find "PROMPT"', stdin=p1.stdout, stdout=PIPE)
+ print repr(p2.communicate()[0])
+
+ #
+ # Example 2: Simple execution of program
+ #
+ print "Executing calc..."
+ p = Popen("calc")
+ p.wait()
+
+
+if __name__ == "__main__":
+ if mswindows:
+ _demo_windows()
+ else:
+ _demo_posix()
diff --git a/build-scripts/jhbuild/jhbuild/defaults.jhbuildrc b/build-scripts/jhbuild/jhbuild/defaults.jhbuildrc
new file mode 100644
index 0000000..019b19a
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/defaults.jhbuildrc
@@ -0,0 +1,69 @@
+# -*- mode: python -*-
+# This file holds the default values for the ~/.jhbuildrc file.
+# Do not copy this to ~/.jhbuildrc
+
+import os
+
+# what modules to build?
+moduleset = 'gnome-2.16'
+modules = [ 'meta-gnome-desktop' ]
+
+# modules to skip during dependency expansion
+skip = []
+
+# directories
+prefix = '/opt/gnome2'
+checkoutroot = os.path.join(os.environ['HOME'], 'cvs', 'gnome2')
+tarballdir = None # will default to checkoutroot
+buildroot = None # if set, packages will be build with srcdir!=builddir
+
+# When using srcdir!=builddir builds, this key allows you to use a
+# different builddir name. Some people like this because it reduces
+# the chance of mixing the two up. In the pattern, '%s' will be
+# substituted with the srcdir base component.
+builddir_pattern = '%s'
+
+# override environment variables, command line arguments, etc
+autogenargs = '--disable-static --disable-gtk-doc'
+makeargs = ''
+cflags = ''
+installprog = None
+
+# override cvs roots, branch tags, etc
+repos = {}
+cvsroots = {}
+svnroots = {}
+branches = {}
+module_autogenargs = {}
+module_makeargs = {}
+
+# control parts of the build process
+nonetwork = False # never touch the network
+alwaysautogen = False # call autogen.sh even if a makefile is found
+nobuild = False # don't actually build the packages
+makeclean = False # run make clean before building
+makecheck = False # run make check after building
+
+interact = True # whether to interact with the user.
+
+# whether to install to lib64 directories? Currently this will default to
+# True on Linux AMD64, PPC64 or S390x systems, and False everywhere else.
+# Patches accepted to fix the default for other architectures.
+uname = os.uname()
+use_lib64 = (uname[0], uname[4]) in [ ('Linux', 'x86_64'),
+ ('Linux', 'ppc64'),
+ ('Linux', 's390x') ]
+del uname
+
+# default buildscript. You should probably leave this as the default.
+# In particular, don't set it to 'gtk'.
+buildscript = 'terminal'
+
+# where to put tinderbox output
+tinderbox_outputdir = None
+
+# sticky date to perform historic checkouts
+sticky_date = None
+
+# whether to try and pretty print the output
+pretty_print = True
diff --git a/build-scripts/jhbuild/jhbuild/errors.py b/build-scripts/jhbuild/jhbuild/errors.py
new file mode 100644
index 0000000..bf36b9c
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/errors.py
@@ -0,0 +1,41 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# errors.py: definitions of exceptions used by jhbuild modules
+#
+# 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
+
+class UsageError(Exception):
+ '''An exception that should result in a usage message rather than
+ a full traceback.'''
+
+
+class ConfigError(Exception):
+ '''A problem in a configuration file.'''
+
+
+class FatalError(Exception):
+ '''An error not related to the user input.'''
+
+
+class CommandError(Exception):
+ '''An error occurred in an external command.'''
+
+ def __init__(self, message, returncode=None):
+ Exception.__init__(self, message)
+ self.returncode = returncode
+
+class BuildStateError(Exception):
+ '''An error occurred while processing a build state.'''
diff --git a/build-scripts/jhbuild/jhbuild/frontends/.cvsignore b/build-scripts/jhbuild/jhbuild/frontends/.cvsignore
new file mode 100644
index 0000000..0d20b64
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/frontends/.cvsignore
@@ -0,0 +1 @@
+*.pyc
diff --git a/build-scripts/jhbuild/jhbuild/frontends/__init__.py b/build-scripts/jhbuild/jhbuild/frontends/__init__.py
new file mode 100644
index 0000000..ba63ffa
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/frontends/__init__.py
@@ -0,0 +1,26 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# __init__.py: a package holding the various build frontends
+#
+# 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
+
+import sys
+
+def get_buildscript(config, module_list):
+ modname = 'jhbuild.frontends.%s' % config.buildscript
+ __import__(modname)
+ BuildScript = sys.modules[modname].BUILD_SCRIPT
+ return BuildScript(config, module_list)
diff --git a/build-scripts/jhbuild/jhbuild/frontends/autobuild.py b/build-scripts/jhbuild/jhbuild/frontends/autobuild.py
new file mode 100644
index 0000000..ffd9371
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/frontends/autobuild.py
@@ -0,0 +1,258 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2004 James Henstridge
+#
+# autobuild.py: build logic for a non-interactive reporting build
+#
+# 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
+
+import os
+import time
+import subprocess
+import sys
+import locale
+import socket
+
+from jhbuild.utils import cmds
+from jhbuild.errors import CommandError
+import buildscript
+
+import xmlrpclib
+import zlib
+from cStringIO import StringIO
+
+from tinderbox import get_distro
+from terminal import TerminalBuildScript, trayicon, t_bold, t_reset
+
+def escape(string):
+ return string.replace('&','&amp;').replace('<','&lt;').replace('>','&gt;')
+
+def fix_encoding(string):
+ charset = locale.getpreferredencoding()
+ s = 'VERY BORKEN ENCODING'
+ for encoding in [charset, 'utf-8', 'iso-8859-15']:
+ try:
+ s = unicode(string, encoding)
+ except:
+ continue
+ break
+ return s.encode('us-ascii', 'xmlcharrefreplace')
+
+def compress_data(data):
+ c_data = zlib.compress(data)
+ return xmlrpclib.Binary(c_data)
+
+class ServerProxy(xmlrpclib.ServerProxy):
+ verbose_timeout = False
+
+ def __request(self, methodname, params):
+ ITERS = 10
+ for i in range(ITERS):
+ try:
+ return xmlrpclib.ServerProxy.__request(self, methodname, params)
+ except xmlrpclib.ProtocolError, e:
+ if e.errcode != 500:
+ raise
+ except socket.error, e:
+ pass
+ if i < ITERS-1:
+ if self.verbose_timeout:
+ print >> sys.stderr, 'Server Error, retrying in %d seconds' % ((i+1)**2)
+ time.sleep((i+1)**2)
+ else:
+ if self.verbose_timeout:
+ print >> sys.stderr, 'Server Error, aborting'
+ raise e
+
+
+class AutobuildBuildScript(buildscript.BuildScript, TerminalBuildScript):
+ xmlrpc_report_url = None
+ verbose = False
+
+ def __init__(self, config, module_list):
+ buildscript.BuildScript.__init__(self, config, module_list)
+ self.xmlrpc_report_url = config.autobuild_report_url
+ self.verbose = config.verbose
+ self.server = None
+ self.modulefp = None
+ self.phasefp = None
+
+ # cleanup environment
+ os.environ['TERM'] = 'dumb'
+ os.environ['LANG'] = 'C'
+ for k in os.environ.keys():
+ if k.startswith('LC_'):
+ os.environ[k] = 'C'
+
+ if self.verbose:
+ self.trayicon = trayicon.TrayIcon()
+
+ def message(self, msg, module_num=-1, skipfp = False):
+ '''Display a message to the user'''
+ if not skipfp:
+ if self.phasefp:
+ fp = self.phasefp
+ elif self.modulefp:
+ fp = self.modulefp
+ else:
+ fp = None
+
+ if fp:
+ fp.write(msg + '\n')
+
+ if self.verbose:
+ TerminalBuildScript.message(self, msg, module_num)
+
+ def set_action(self, action, module, module_num=-1, action_target=None):
+ if module_num == -1:
+ module_num = self.module_num
+ if not action_target:
+ action_target = module.name
+ self.message('%s %s' % (action, action_target), module_num, skipfp = True)
+
+ def execute(self, command, hint=None, cwd=None, extra_env=None):
+ '''executes a command, and returns the error code'''
+ kws = {
+ 'close_fds': True
+ }
+ if isinstance(command, (str, unicode)):
+ displayed_command = command
+ kws['shell'] = True
+ else:
+ displayed_command = ' '.join(command)
+
+ self.phasefp.write('<span class="command">%s</span>\n' % escape(displayed_command))
+ if self.verbose:
+ print ' $', displayed_command
+
+ kws['stdin'] = subprocess.PIPE
+ kws['stdout'] = subprocess.PIPE
+ kws['stderr'] = subprocess.PIPE
+ if hint == 'cvs':
+ def format_line(line, error_output, fp=self.phasefp):
+ if line[-1] == '\n': line = line[:-1]
+ if self.verbose:
+ print line
+ if line.startswith('C '):
+ fp.write('<span class="conflict">%s</span>\n'
+ % escape(line))
+ else:
+ fp.write('%s\n' % escape(line))
+ kws['stderr'] = subprocess.STDOUT
+ else:
+ def format_line(line, error_output, fp=self.phasefp):
+ if line[-1] == '\n': line = line[:-1]
+ if self.verbose:
+ if error_output:
+ print >> sys.stderr, line
+ else:
+ print line
+ if error_output:
+ fp.write('<span class="error">%s</span>\n'
+ % escape(line))
+ else:
+ fp.write('%s\n' % escape(line))
+
+ if cwd is not None:
+ kws['cwd'] = cwd
+
+ if extra_env is not None:
+ kws['env'] = os.environ.copy()
+ kws['env'].update(extra_env)
+
+ try:
+ p = subprocess.Popen(command, **kws)
+ except OSError, e:
+ self.phasefp.write('<span class="error">Error: %s</span>\n' % escape(str(e)))
+ raise CommandError(str(e))
+
+ cmds.pprint_output(p, format_line)
+ if p.returncode != 0:
+ raise CommandError('Error running %s' % command, p.returncode)
+
+ def start_build(self):
+ self.server = ServerProxy(self.xmlrpc_report_url, allow_none = True)
+ if self.verbose:
+ self.server.verbose_timeout = True
+
+ # close stdin
+ os.close(0)
+
+ info = {}
+ import socket
+ un = os.uname()
+
+ info['build_host'] = socket.gethostname()
+ info['architecture'] = (un[0], un[2], un[4])
+
+ distro = get_distro()
+ if distro:
+ info['distribution'] = distro
+
+ info['module_set'] = self.config.moduleset
+
+ try:
+ self.build_id = self.server.start_build(info)
+ except xmlrpclib.ProtocolError, e:
+ if e.errcode == 403:
+ print >> sys.stderr, 'ERROR: Wrong credentials, please check username/password'
+ sys.exit(1)
+ raise
+
+
+ if self.verbose:
+ s = 'Starting Build #%s' % self.build_id
+ print s
+ print '=' * len(s)
+ print ''
+
+
+ def end_build(self, failures):
+ self.server.end_build(self.build_id, failures)
+ if self.verbose:
+ TerminalBuildScript.end_build(self, failures)
+
+
+ def start_module(self, module):
+ if self.verbose:
+ print '\n%s**** Starting module %s ****%s' % (t_bold, module, t_reset)
+ self.server.start_module(self.build_id, module)
+ self.current_module = module
+ self.modulefp = StringIO()
+
+
+ def end_module(self, module, failed):
+ log = fix_encoding(self.modulefp.getvalue())
+ self.modulefp = None
+ self.server.end_module(self.build_id, module, compress_data(log), failed)
+
+ def start_phase(self, module, state):
+ self.server.start_phase(self.build_id, module, state)
+ if self.verbose:
+ TerminalBuildScript.start_phase(self, module, state)
+ self.phasefp = StringIO()
+
+
+ def end_phase(self, module, state, error):
+ log = fix_encoding(self.phasefp.getvalue())
+ self.phasefp = None
+ self.server.end_phase(self.build_id, module, state, compress_data(log), error)
+
+ def handle_error(self, module, state, nextstate, error, altstates):
+ '''handle error during build'''
+ print 'handle error!'
+ return 'fail'
+
+
+BUILD_SCRIPT = AutobuildBuildScript
diff --git a/build-scripts/jhbuild/jhbuild/frontends/buildscript.py b/build-scripts/jhbuild/jhbuild/frontends/buildscript.py
new file mode 100644
index 0000000..04d519d
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/frontends/buildscript.py
@@ -0,0 +1,136 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+# Copyright (C) 2003-2004 Seth Nickell
+#
+# buildscript.py: base class of the various interface types
+#
+# 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
+
+import os
+
+from jhbuild.utils import packagedb
+from jhbuild.errors import FatalError
+
+class BuildScript:
+ def __init__(self, config, module_list):
+ if self.__class__ is BuildScript:
+ raise NotImplementedError('BuildScript is an abstract base class')
+
+ self.modulelist = module_list
+ self.module_num = 0
+
+ self.config = config
+
+ if not os.path.exists(self.config.checkoutroot):
+ os.mkdir(self.config.checkoutroot)
+ if not os.access(self.config.checkoutroot, os.R_OK|os.W_OK|os.X_OK):
+ raise FatalError('checkout root must be writable')
+ if not os.path.exists(self.config.prefix):
+ os.mkdir(self.config.prefix)
+ if not os.access(self.config.prefix, os.R_OK|os.W_OK|os.X_OK):
+ raise FatalError('install prefix must be writable')
+
+ packagedbdir = os.path.join(self.config.prefix, 'share', 'jhbuild')
+ try:
+ if not os.path.isdir(packagedbdir):
+ os.makedirs(packagedbdir)
+ except OSError:
+ raise FatalError('could not create directory %s' % packagedbdir)
+ self.packagedb = packagedb.PackageDB(os.path.join(packagedbdir,
+ 'packagedb.xml'))
+
+ def execute(self, command, hint=None, cwd=None, extra_env=None):
+ '''Executes the given command.
+
+ If an error occurs, CommandError is raised. The hint argument
+ gives a hint about the type of output to expect.
+ '''
+ raise NotImplementedError
+
+ def build(self):
+ '''start the build of the current configuration'''
+ self.start_build()
+
+ failures = [] # list of modules that couldn't be built
+ self.module_num = 0
+ for module in self.modulelist:
+ self.module_num = self.module_num + 1
+ self.start_module(module.name)
+ failed = False
+ for dep in module.dependencies:
+ if dep in failures:
+ self.message('module %s not built due to non buildable %s'
+ % (module.name, dep))
+ failed = True
+ if failed:
+ failures.append(module.name)
+ self.end_module(module.name, failed)
+ continue
+
+ state = module.STATE_START
+ while state != module.STATE_DONE:
+ self.start_phase(module.name, state)
+ nextstate, error, altstates = module.run_state(self, state)
+ self.end_phase(module.name, state, error)
+
+ if error:
+ newstate = self.handle_error(module, state,
+ nextstate, error,
+ altstates)
+ if newstate == 'fail':
+ failures.append(module.name)
+ failed = True
+ state = module.STATE_DONE
+ else:
+ state = newstate
+ else:
+ state = nextstate
+ self.end_module(module.name, failed)
+ self.end_build(failures)
+
+ def start_build(self):
+ '''Hook to perform actions at start of build.'''
+ pass
+ def end_build(self, failures):
+ '''Hook to perform actions at end of build.
+ The argument is a list of modules that were not buildable.'''
+ pass
+ def start_module(self, module):
+ '''Hook to perform actions before starting a build of a module.'''
+ pass
+ def end_module(self, module, failed):
+ '''Hook to perform actions after finishing a build of a module.
+ The argument is true if the module failed to build.'''
+ pass
+ def start_phase(self, module, state):
+ '''Hook to perform actions before starting a particular build phase.'''
+ pass
+ def end_phase(self, module, state, error):
+ '''Hook to perform actions after finishing a particular build phase.
+ The argument is a string containing the error text if something
+ went wrong.'''
+ pass
+
+ def message(self, msg, module_num=-1):
+ '''Display a message to the user'''
+ raise NotImplementedError
+
+ def set_action(self, action, module, module_num=-1, action_target=None):
+ '''inform the buildscript of a new stage of the build'''
+ raise NotImplementedError
+
+ def handle_error(self, module, state, nextstate, error, altstates):
+ '''handle error during build'''
+ raise NotImplementedError
diff --git a/build-scripts/jhbuild/jhbuild/frontends/gtkui.py b/build-scripts/jhbuild/jhbuild/frontends/gtkui.py
new file mode 100644
index 0000000..a4cb380
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/frontends/gtkui.py
@@ -0,0 +1,463 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+# Copyright (C) 2003-2004 Seth Nickell
+#
+# gtkui.py: build logic for a GTK interface
+#
+# 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
+
+import pygtk
+pygtk.require('2.0')
+
+import sys
+import time
+import os
+import signal
+import fcntl
+import select
+import subprocess
+
+import gobject
+import gtk
+import gtk.glade
+
+#FIXME: would be nice if we ran w/o GConf, do a try...except block around
+# the import and then set have_gconf to false
+import gconf
+have_gconf = True
+
+import buildscript
+import jhbuild.moduleset
+from jhbuild.modtypes import MetaModule
+from jhbuild.errors import CommandError
+
+def get_glade_filename():
+ return os.path.join(os.path.dirname(__file__), 'jhbuild.glade')
+
+class Configuration:
+ def __init__(self, config, args):
+ self.config = config
+ self.args = args
+
+ glade_filename = get_glade_filename()
+
+ # Fetch widgets out of the Glade
+ self.glade = gtk.glade.XML(glade_filename)
+ self.window = self.glade.get_widget("ConfigWindow")
+ self.meta_modules_list = self.glade.get_widget("ConfigMetaModules")
+ self.start_module_menu = self.glade.get_widget("ConfigStartModule")
+ self.run_autogen_checkbox = self.glade.get_widget("ConfigRunAutogen")
+ self.cvs_update_checkbox = self.glade.get_widget("ConfigCVSUpdate")
+ self.no_build_checkbox = self.glade.get_widget("ConfigNoBuild")
+ self.start_build_button = self.glade.get_widget("ConfigBuildButton")
+ self.cancel_button = self.glade.get_widget("ConfigCancelButton")
+
+ # Get settings for the checkboxes, etc
+ self._get_default_settings()
+
+ # Hook up the buttons / checkboxes
+ self.start_build_button.connect('clicked', lambda button: gtk.main_quit())
+ self.cancel_button.connect('clicked', lambda button: sys.exit(-1))
+ self.run_autogen_checkbox.connect('toggled', self._autogen_checkbox_toggled)
+ self.cvs_update_checkbox.connect('toggled', self._cvs_update_checkbox_toggled)
+ self.no_build_checkbox.connect('toggled', self._no_build_checkbox_toggled)
+ #self.start_module_menu.connect('clicked', self._start_module_menu_clicked)
+
+ # Get the list of meta modules
+ self.module_set = jhbuild.moduleset.load(config)
+ full_module_list = self.module_set.get_full_module_list()
+ self.meta_modules = []
+ self.name_to_meta_module = {}
+ for possible_meta_module in full_module_list:
+ if isinstance(possible_meta_module, MetaModule):
+ print "Found meta module %s" % possible_meta_module.name
+ self.meta_modules.append(possible_meta_module)
+ self.name_to_meta_module[possible_meta_module.name] = possible_meta_module
+
+ self._create_meta_modules_list_view(self.meta_modules)
+
+ self._build_start_module_menu()
+
+ def run(self):
+ self.window.show_all()
+ gtk.main()
+ self.window.hide()
+ self._set_default_settings()
+ return (self.module_list, self.start_at_module, self.run_autogen, self.cvs_update,
+ self.no_build)
+
+ def _get_default_settings(self):
+ if have_gconf:
+ client = gconf.client_get_default()
+ self.run_autogen = client.get_bool("/apps/jhbuild/always_run_autogen")
+ self.cvs_update = client.get_bool("/apps/jhbuild/update_from_cvs")
+ self.no_build = client.get_bool("/apps/jhbuild/no_build")
+ self.selected_modules = client.get_list("/apps/jhbuild/modules_to_build", gconf.VALUE_STRING)
+ self.start_at_module = client.get_string("/apps/jhbuild/start_at_module")
+ else:
+ self.run_autogen = False
+ self.cvs_update = True
+ self.no_build = False
+
+ self.run_autogen_checkbox.set_active(self.run_autogen)
+ self.cvs_update_checkbox.set_active(self.cvs_update)
+ self.no_build_checkbox.set_active(self.no_build)
+
+ def _set_default_settings(self):
+ if have_gconf:
+ client = gconf.client_get_default()
+ client.set_bool("/apps/jhbuild/always_run_autogen", self.run_autogen)
+ client.set_bool("/apps/jhbuild/update_from_cvs", self.cvs_update)
+ client.set_bool("/apps/jhbuild/no_build", self.no_build)
+ client.set_list("/apps/jhbuild/modules_to_build", gconf.VALUE_STRING, self.selected_modules)
+ if self.start_at_module:
+ client.set_string("/apps/jhbuild/start_at_module", self.start_at_module)
+ else:
+ client.set_string("/apps/jhbuild/start_at_module", "")
+
+ print ("Gconf setting for update from CVS is %d" % self.cvs_update)
+
+
+ def _meta_module_toggled(self, cell, path, model):
+ iter = model.get_iter((int(path),))
+ build = model.get_value(iter, 0)
+ build = not build
+ model.set(iter, 0, build)
+ self.selected_modules = self._get_selected_meta_modules()
+ self._build_start_module_menu()
+
+ def _create_meta_modules_list_view(self, meta_modules):
+ self.model = gtk.ListStore(gobject.TYPE_BOOLEAN, gobject.TYPE_STRING)
+ self.meta_modules_list.set_model(self.model)
+
+ for module in meta_modules:
+ iter = self.model.append()
+ if self.selected_modules:
+ selected = (module.name in self.selected_modules)
+ else:
+ selected = False
+ self.model.set(iter, 0, selected, 1, module.name)
+
+ renderer = gtk.CellRendererToggle()
+ renderer.connect('toggled', self._meta_module_toggled, self.model)
+ column = gtk.TreeViewColumn('Build', renderer, active=0)
+ column.set_clickable(True)
+ self.meta_modules_list.append_column(column)
+
+ column = gtk.TreeViewColumn('Module Group', gtk.CellRendererText(), text=1)
+ self.meta_modules_list.append_column(column)
+
+ def _get_selected_meta_modules(self):
+ modules = []
+ iter = self.model.get_iter_first()
+
+ while iter:
+ build = self.model.get_value(iter, 0)
+ if build:
+ name = self.model.get_value(iter, 1)
+ module = self.name_to_meta_module[name]
+ if module:
+ modules.append(module.name)
+ iter = self.model.iter_next(iter)
+
+ return modules
+
+
+ def _build_start_module_menu(self):
+ if not self.selected_modules:
+ return
+
+ self.module_list = self.module_set.get_module_list(self.selected_modules, self.config.skip)
+
+ menu = gtk.Menu()
+ menu.connect('selection-done', self._start_module_menu_clicked)
+
+ selected_item_number = None
+ i = 0
+ for module in self.module_list:
+ menu_item = gtk.MenuItem(module.name)
+ menu.append(menu_item)
+ if module.name == self.start_at_module:
+ selected_item_number = i
+ i = i + 1
+
+ self.start_module_menu.set_menu (menu)
+
+ if selected_item_number:
+ self.start_module_menu.set_history(selected_item_number)
+ else:
+ if self.module_list:
+ self.start_at_module = self.module_list[0].name
+ else:
+ self.start_at_module = None
+
+ menu.show_all()
+
+ def _start_module_menu_clicked(self, option_menu):
+ number = self.start_module_menu.get_history()
+ if self.module_list:
+ item = self.module_list[number]
+ self.start_at_module = item.name
+ else:
+ self.start_at_module = None
+
+ def _autogen_checkbox_toggled(self, checkbox):
+ self.run_autogen = not self.run_autogen
+
+ def _cvs_update_checkbox_toggled(self, checkbox):
+ self.cvs_update = not self.cvs_update
+
+ def _no_build_checkbox_toggled(self, checkbox):
+ self.no_build = not self.no_build
+
+def optionmenu_get_history(self):
+ menu = self.get_menu()
+ children = menu.children()
+ item = menu.get_active()
+
+ for i in range(len(children)):
+ if children[i] == item:
+ break
+
+ return i
+
+class GtkBuildScript(buildscript.BuildScript):
+ def __init__(self, config, module_list):
+ buildscript.BuildScript.__init__(self, config, module_list)
+ self.current_module = None
+ self._createWindow()
+ if have_gconf:
+ self.terminal_command = self._getTerminalCommand()
+ else:
+ self.terminal_command = "gnome-terminal"
+
+ def _getTerminalCommand(self):
+ client = gconf.client_get_default()
+ command = client.get_string("/desktop/gnome/applications/terminal/exec")
+ return command
+
+ def message(self, msg, module_num = -1):
+ '''shows a message to the screen'''
+
+ if module_num == -1:
+ module_num = self.module_num
+ dialog = gtk.MessageDialog(buttons=gtk.BUTTONS_OK, message_format=msg)
+ dialog.run()
+ dialog.hide()
+ return
+
+ def set_action(self, action, module, module_num=-1, action_target=None):
+ if module_num == -1:
+ module_num = self.module_num
+ if not action_target:
+ action_target = module.name
+ if self.current_module != module and self.current_module != None:
+ self.current_module._build_text_buffer = self.build_text
+ self.build_text = gtk.TextBuffer(self.tag_table)
+ self.build_text_view.set_buffer(self.build_text)
+ self.iter = self.build_text.get_end_iter()
+ self.current_module = module
+
+ num_modules = len(self.modulelist)
+ if module_num > 0:
+ self.build_progress.set_fraction(module_num / float(num_modules))
+ self.build_progress.set_text('%d of %d modules'
+ % (module_num, num_modules))
+
+ self.window.set_title('[%d/%d] %s %s' % (module_num, num_modules, action, module.name))
+ self.current_status_label.set_text('%s %s' % (action, module.name))
+
+ def _runEventLoop(self):
+ while gtk.events_pending():
+ gtk.main_iteration()
+
+ def _printToBuildOutput(self, output):
+ self.iter = self.build_text.get_end_iter()
+ self.build_text.insert(self.iter, output)
+ self.build_text.move_mark (self.ins_mark, self.iter)
+ self.build_text_view.scroll_to_mark (self.ins_mark, 0.0, True, 0.5, 0.5)
+
+ def _printToWarningOutput(self, output):
+ self.build_text.insert_with_tags_by_name(self.iter, output, "warning")
+
+ def _pauseBuild(self):
+ return self.pause_button.get_active()
+
+ def _makeNonBlocking(self, fd):
+ fl = fcntl.fcntl(fd, fcntl.F_GETFL)
+ fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NDELAY)
+
+
+ def execute(self, command, hint=None, cwd=None, extra_env=None):
+ '''executes a command, and returns the error code'''
+ return_code = -1
+
+ kws = {
+ 'close_fds': True,
+ 'shell': isinstance(command, (str,unicode)),
+ 'stdin': subprocess.PIPE,
+ 'stdout': subprocess.PIPE,
+ 'stderr': subprocess.PIPE,
+ }
+
+ if cwd is not None:
+ kws['cwd'] = cwd
+
+ if extra_env is not None:
+ kws['env'] = os.environ.copy()
+ kws['env'].update(extra_env)
+
+ try:
+ p = subprocess.Popen(command, **kws)
+ except OSError, e:
+ raise CommandError(str(e))
+
+ p.stdin.close()
+ self._makeNonBlocking(p.stdout)
+ self._makeNonBlocking(p.stderr)
+
+ build_paused = False
+ read_set = [p.stdout, p.stderr]
+
+ while read_set:
+ # Allow the frontend to get a little time
+ self._runEventLoop()
+
+ rlist, wlist, xlist = select.select(read_set, [], [], 0)
+
+ if p.stdout in rlist:
+ chunk = p.stdout.read()
+ if chunk == '':
+ p.stdout.close()
+ read_set.remove(p.stdout)
+ self._printToBuildOutput(chunk)
+
+ if p.stderr in rlist:
+ chunk = p.stderr.read()
+ if chunk == '':
+ p.stderr.close()
+ read_set.remove(p.stderr)
+ self._printToWarningOutput(chunk)
+
+ # See if we should pause the current command
+ if not build_paused and self._pauseBuild():
+ print ("Pausing this guy, sending os.kill to %d", p.pid)
+ os.kill(p.pid, signal.SIGSTOP)
+ build_paused = True
+ elif build_paused and not self._pauseBuild():
+ print ("Continuing him")
+ os.kill(p.pid, signal.SIGCONT)
+ build_paused = False
+
+ time.sleep(0.05)
+
+ return p.wait()
+
+ def start_build(self):
+ self.window.show_all()
+ def end_build(self, failures):
+ if len(failures) == 0:
+ self.message('success')
+ else:
+ self.message('the following modules were not built:\n%s'
+ % ', '.join(failures))
+ def start_module(self, module):
+ # Remember where we are in case something fails
+ if have_gconf:
+ client = gconf.client_get_default()
+ client.set_string("/apps/jhbuild/start_at_module", module)
+
+ def handle_error(self, module, state, nextstate, error, altstates):
+ '''Ask the user what to do about an error.
+
+ Returns one of ERR_RERUN, ERR_CONT or ERR_GIVEUP.''' #"
+
+ if not self.config.interact:
+ return 'fail'
+
+ dialog = gtk.Dialog('Error during %s for module %s' % (state, module.name))
+ dialog.add_button('_Try %s Again' % state, 1)
+ dialog.add_button('_Ignore Error', 2)
+ dialog.add_button('_Skip Module', 3)
+ dialog.add_button('_Terminal', 4)
+
+ for i, altstate in enumerate(altstates):
+ dialog.add_button('Go to %s' % altstate, i + 5)
+
+ text_view = gtk.TextView()
+ text_view.set_buffer(self.build_text)
+ text_view.set_wrap_mode(gtk.WRAP_WORD)
+
+ scroller = gtk.ScrolledWindow()
+ scroller.add(text_view)
+ dialog.vbox.pack_start(scroller)
+
+ scroller.set_size_request(-1, 250)
+ scroller.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
+ scroller.set_shadow_type(gtk.SHADOW_IN)
+ scroller.set_border_width(12)
+
+ while True:
+
+ #self.message('error during %s for module %s' % (state, module.name))
+
+ text_view.scroll_to_iter(self.build_text.get_end_iter(), 0.0, True, 0.5, 0.5)
+ dialog.show_all()
+
+ val = dialog.run()
+
+ if val != 4:
+ dialog.hide()
+ # If the dialog was destroyed, interpret that as try again.
+ if val in (1, gtk.RESPONSE_NONE, gtk.RESPONSE_DELETE_EVENT):
+ return state
+ elif val == 2:
+ return nextstate
+ elif val == 3:
+ return 'fail'
+ elif val == 4:
+ command = 'cd %s; %s' % (module.get_builddir(self),
+ self.terminal_command)
+ os.system(command)
+ else:
+ return altstates[val - 5]
+
+ def _createWindow(self):
+ glade_filename = get_glade_filename()
+ self.glade = gtk.glade.XML(glade_filename)
+
+ self.window = self.glade.get_widget("BuildWindow")
+ self.build_progress = self.glade.get_widget("BuildProgressBar")
+ self.build_text_view = self.glade.get_widget("BuildText")
+ self.current_status_label = self.glade.get_widget("CurrentStatusLabel")
+ self.pause_button = self.glade.get_widget("BuildPauseButton")
+ self.cancel_button = self.glade.get_widget("BuildCancelButton")
+ #self.expander_button = self.glade.get_widget("ExpanderButton")
+ #self.expander_arrow = self.glade.get_widget("ExpanderArrow")
+
+ self.window.connect('destroy', lambda win: sys.exit())
+ self.cancel_button.connect('clicked', lambda button: sys.exit())
+ #self.expander_button.connect('activate',
+
+ self.tag_table = gtk.TextTagTable()
+ self.build_text = gtk.TextBuffer(self.tag_table)
+ self.warning_tag = self.build_text.create_tag("warning")
+ self.warning_tag.set_property("foreground", "red")
+ self.build_text_view.set_buffer(self.build_text)
+ self.build_text_view.set_wrap_mode(gtk.WRAP_WORD)
+ self.iter = self.build_text.get_end_iter()
+ self.ins_mark = self.build_text.create_mark ("jhbuild-mark", self.iter, True);
+
+BUILD_SCRIPT = GtkBuildScript
diff --git a/build-scripts/jhbuild/jhbuild/frontends/icons/build.png b/build-scripts/jhbuild/jhbuild/frontends/icons/build.png
new file mode 100644
index 0000000..43f2267
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/frontends/icons/build.png
Binary files differ
diff --git a/build-scripts/jhbuild/jhbuild/frontends/icons/checkout.png b/build-scripts/jhbuild/jhbuild/frontends/icons/checkout.png
new file mode 100644
index 0000000..0c4a663
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/frontends/icons/checkout.png
Binary files differ
diff --git a/build-scripts/jhbuild/jhbuild/frontends/icons/configure.png b/build-scripts/jhbuild/jhbuild/frontends/icons/configure.png
new file mode 100644
index 0000000..7e9d696
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/frontends/icons/configure.png
Binary files differ
diff --git a/build-scripts/jhbuild/jhbuild/frontends/icons/error.png b/build-scripts/jhbuild/jhbuild/frontends/icons/error.png
new file mode 100644
index 0000000..3af3a69
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/frontends/icons/error.png
Binary files differ
diff --git a/build-scripts/jhbuild/jhbuild/frontends/icons/install.png b/build-scripts/jhbuild/jhbuild/frontends/icons/install.png
new file mode 100644
index 0000000..8d4e7bc
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/frontends/icons/install.png
Binary files differ
diff --git a/build-scripts/jhbuild/jhbuild/frontends/jhbuild.glade b/build-scripts/jhbuild/jhbuild/frontends/jhbuild.glade
new file mode 100644
index 0000000..6ec916d
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/frontends/jhbuild.glade
@@ -0,0 +1,534 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkWindow" id="BuildWindow">
+ <property name="border_width">12</property>
+ <property name="title" translatable="yes"></property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkVBox" id="Contents">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkVBox" id="ProgressBox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="CurrentStatusLabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkProgressBar" id="BuildProgressBar">
+ <property name="visible">True</property>
+ <property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
+ <property name="fraction">0</property>
+ <property name="pulse_step">0.1</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="BuildOutputBox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Build Output</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkArrow" id="arrow1">
+ <property name="visible">True</property>
+ <property name="arrow_type">GTK_ARROW_DOWN</property>
+ <property name="shadow_type">GTK_SHADOW_OUT</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTextView" id="BuildText">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="justification">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap_mode">GTK_WRAP_NONE</property>
+ <property name="cursor_visible">True</property>
+ <property name="pixels_above_lines">0</property>
+ <property name="pixels_below_lines">0</property>
+ <property name="pixels_inside_wrap">0</property>
+ <property name="left_margin">0</property>
+ <property name="right_margin">0</property>
+ <property name="indent">0</property>
+ <property name="text" translatable="yes"></property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="ButtonBox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToggleButton" id="BuildPauseButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">_Pause Build</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="BuildCancelButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+<widget class="GtkWindow" id="ConfigWindow">
+ <property name="border_width">12</property>
+ <property name="title" translatable="yes">Configure Build</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox4">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox4">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox5">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="ConfigMetaModules">
+ <property name="height_request">261</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox5">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox6">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Start Building At:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkOptionMenu" id="ConfigStartModule">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="history">-1</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="ConfigRunAutogen">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Always run autogen.sh</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="ConfigCVSUpdate">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Update from CVS</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="ConfigNoBuild">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Do not build</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox6">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="ConfigCancelButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="ConfigBuildButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Start _Build</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/build-scripts/jhbuild/jhbuild/frontends/terminal.py b/build-scripts/jhbuild/jhbuild/frontends/terminal.py
new file mode 100644
index 0000000..36bac2b
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/frontends/terminal.py
@@ -0,0 +1,213 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+# Copyright (C) 2003-2004 Seth Nickell
+#
+# terminal.py: build logic for a terminal interface
+#
+# 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
+
+import sys
+import os
+import signal
+import subprocess
+
+from jhbuild.frontends import buildscript
+from jhbuild.utils import cmds
+from jhbuild.utils import trayicon
+from jhbuild.errors import CommandError
+
+term = os.environ.get('TERM', '')
+is_xterm = term.find('xterm') >= 0 or term == 'rxvt'
+del term
+
+try: t_bold = cmds.get_output(['tput', 'bold'])
+except: t_bold = ''
+try: t_reset = cmds.get_output(['tput', 'sgr0'])
+except: t_reset = ''
+t_colour = [''] * 16
+try:
+ for i in range(8):
+ t_colour[i] = cmds.get_output(['tput', 'setf', '%d' % i])
+ t_colour[i+8] = t_bold + t_colour[i]
+except: pass
+
+user_shell = os.environ.get('SHELL', '/bin/sh')
+
+# tray icon stuff ...
+icondir = os.path.join(os.path.dirname(__file__), 'icons')
+phase_map = {
+ 'checkout': 'checkout.png',
+ 'force_checkout': 'checkout.png',
+ 'download': 'checkout.png',
+ 'unpack': 'checkout.png',
+ 'patch': 'checkout.png',
+ 'configure': 'configure.png',
+ #'clean': 'clean.png',
+ 'build': 'build.png',
+ #'check': 'check.png',
+ 'install': 'install.png',
+ }
+
+class TerminalBuildScript(buildscript.BuildScript):
+ def __init__(self, config, module_list):
+ buildscript.BuildScript.__init__(self, config, module_list)
+ self.trayicon = trayicon.TrayIcon()
+
+ def message(self, msg, module_num=-1):
+ '''Display a message to the user'''
+
+ if module_num == -1:
+ module_num = self.module_num
+ if module_num > 0:
+ progress = ' [%d/%d]' % (module_num, len(self.modulelist))
+ else:
+ progress = ''
+ print '%s*** %s ***%s%s' % (t_bold, msg, progress, t_reset)
+ if is_xterm:
+ print '\033]0;jhbuild: %s%s\007' % (msg, progress)
+ self.trayicon.set_tooltip('%s%s' % (msg, progress))
+
+ def set_action(self, action, module, module_num=-1, action_target=None):
+ if module_num == -1:
+ module_num = self.module_num
+ if not action_target:
+ action_target = module.name
+ self.message('%s %s' % (action, action_target), module_num)
+
+ def execute(self, command, hint=None, cwd=None, extra_env=None):
+ '''executes a command, and returns the error code'''
+ kws = {
+ 'close_fds': True
+ }
+ if isinstance(command, (str, unicode)):
+ kws['shell'] = True
+ pretty_command = command
+ else:
+ pretty_command = ' '.join(command)
+ print pretty_command
+
+ # get rid of hint if pretty printing is disabled.
+ if not self.config.pretty_print:
+ hint = None
+
+ kws['stdin'] = subprocess.PIPE
+ if hint == 'cvs':
+ kws['stdout'] = subprocess.PIPE
+ kws['stderr'] = subprocess.STDOUT
+ else:
+ kws['stdout'] = None
+ kws['stderr'] = None
+
+ if cwd is not None:
+ kws['cwd'] = cwd
+
+ if extra_env is not None:
+ kws['env'] = os.environ.copy()
+ kws['env'].update(extra_env)
+
+ try:
+ p = subprocess.Popen(command, **kws)
+ except OSError, e:
+ sys.stderr.write('Error: %s\n' % str(e))
+ raise CommandError(str(e))
+
+ if hint == 'cvs':
+ conflicts = []
+ def format_line(line, error_output, conflicts=conflicts):
+ if line[-1] == '\n': line = line[:-1]
+ if line.startswith('C '):
+ conflicts.append(line)
+ print '%s%s%s' % (t_colour[12], line, t_reset)
+ elif line.startswith('M '):
+ print '%s%s%s' % (t_colour[10], line, t_reset)
+ elif line.startswith('? '):
+ print '%s%s%s' % (t_colour[8], line, t_reset)
+ else:
+ print line
+ cmds.pprint_output(p, format_line)
+ if conflicts:
+ sys.stdout.write('\nConflicts during checkout:\n')
+ for line in conflicts:
+ sys.stdout.write('%s %s%s\n'
+ % (t_colour[12], line, t_reset))
+ # make sure conflicts fail
+ if p.returncode == 0: p.returncode = 1
+ else:
+ try:
+ p.communicate()
+ except KeyboardInterrupt:
+ try:
+ os.kill(p.pid, signal.SIGINT)
+ except OSError:
+ # process might already be dead.
+ pass
+ if p.wait() != 0:
+ raise CommandError('########## Error running %s' % pretty_command, p.returncode)
+
+ def start_phase(self, module, state):
+ self.trayicon.set_icon(os.path.join(icondir,
+ phase_map.get(state, 'build.png')))
+
+ def end_build(self, failures):
+ if len(failures) == 0:
+ self.message('success')
+ else:
+ self.message('the following modules were not built')
+ for module in failures:
+ print module,
+ print
+
+ def handle_error(self, module, state, nextstate, error, altstates):
+ '''handle error during build'''
+ self.message('error during stage %s of %s: %s' % (state, module.name,
+ error))
+ self.trayicon.set_icon(os.path.join(icondir, 'error.png'))
+
+ if not self.config.interact:
+ return 'fail'
+ while True:
+ print
+ print ' [1] rerun stage %s' % state
+ print ' [2] ignore error and continue to %s' % nextstate
+ print ' [3] give up on module'
+ print ' [4] start shell'
+ i = 5
+ for altstate in altstates:
+ print ' [%d] go to stage %s' % (i, altstate)
+ i = i + 1
+ val = raw_input('choice: ')
+ val = val.strip()
+ if val == '1':
+ return state
+ elif val == '2':
+ return nextstate
+ elif val == '3':
+ return 'fail'
+ elif val == '4':
+ try:
+ os.chdir(module.get_builddir(self))
+ except OSError:
+ os.chdir(self.config.checkoutroot)
+ print 'exit shell to continue with build'
+ os.system(user_shell)
+ else:
+ try:
+ val = int(val)
+ return altstates[val - 5]
+ except:
+ print 'invalid choice'
+ assert False, 'not reached'
+
+BUILD_SCRIPT = TerminalBuildScript
diff --git a/build-scripts/jhbuild/jhbuild/frontends/tinderbox.py b/build-scripts/jhbuild/jhbuild/frontends/tinderbox.py
new file mode 100644
index 0000000..a7e125a
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/frontends/tinderbox.py
@@ -0,0 +1,330 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# tinderbox.py: build logic for a non-interactive reporting build
+#
+# 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
+
+import os
+import time
+import subprocess
+import locale
+
+from jhbuild.utils import cmds
+from jhbuild.errors import CommandError
+import buildscript
+
+index_header = '''<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html%(charset)s">
+ <title>JHBuild Results</title>
+ <style type="text/css">
+ .section {
+ margin-after: 1.5em;
+ }
+ .success {
+ color: black;
+ background-color: #afa;
+ }
+ .failure {
+ color: black;
+ background-color: #faa;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>JHBuild Results</h1>
+
+ <div class="section">
+ <h2>Platform</h2>
+ %(buildplatform)s
+ </div>
+
+ <div class="section">
+ <h2>Summary</h2>
+ <table>
+ <tr>
+ <th>Time</th>
+ <th>Module</th>
+ <th>Phases</th>
+ <th>Status</th>
+ </tr>
+'''
+index_footer = '''
+ </table>
+ </div>
+
+ %(failures)s
+ </body>
+</html>
+'''
+
+buildlog_header = '''<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html%(charset)s">
+ <title>%(module)s Build Log</title>
+ <style type="text/css">
+ pre {
+ /* unfortunately, white-space: pre-wrap is not widely supported ... */
+ white-space: -moz-pre-wrap; /* Mozilla based browsers */
+ white-space: -pre-wrap; /* Opera 4 - 6 */
+ white-space: -o-pre-wrap; /* Opera >= 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ }
+ .message {
+ font-size: larger;
+ }
+ .timestamp{
+ font-size: smaller;
+ font-style: italic;
+ }
+ .command {
+ color: blue;
+ }
+ .conflict {
+ color: red;
+ }
+ .error {
+ color: red;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>%(module)s Build Log</h1>
+'''
+buildlog_footer = '''
+ </body>
+</html>
+'''
+
+def get_distro():
+ # try using the lsb_release tool to get the distro info
+ try:
+ distro = cmds.get_output(['lsb_release', '--short', '--id']).strip()
+ release = cmds.get_output(['lsb_release', '--short', '--release']).strip()
+ codename = cmds.get_output(['lsb_release', '--short', '--codename']).strip()
+ if codename:
+ return '%s %s (%s)' % (distro, release, codename)
+ else:
+ return '%s %s' % (distro, release)
+ except (CommandError, IOError):
+ pass
+
+ # otherwise, look for a /etc/*-release file
+ release_files = ['/etc/redhat-release', '/etc/debian_version' ]
+ release_files.extend([ os.path.join('/etc', fname)
+ for fname in os.listdir('/etc')
+ if fname.endswith('release') \
+ and fname != 'lsb-release' ])
+ for filename in release_files:
+ if os.path.exists(filename):
+ return open(filename, 'r').readline().strip()
+
+ # else:
+ return None
+
+def escape(string):
+ return string.replace('&','&amp;').replace('<','&lt;').replace('>','&gt;')
+
+class TinderboxBuildScript(buildscript.BuildScript):
+ def __init__(self, config, module_list):
+ buildscript.BuildScript.__init__(self, config, module_list)
+ self.indexfp = None
+ self.modulefp = None
+
+ self.outputdir = os.path.abspath(config.tinderbox_outputdir)
+ if not os.path.exists(self.outputdir):
+ os.makedirs(self.outputdir)
+
+ os.environ['TERM'] = 'dumb'
+
+ charset = locale.getpreferredencoding()
+ if charset:
+ self.charset = ';charset=%s' % charset
+ else:
+ self.charset = ''
+
+ def timestamp(self):
+ tm = time.time()
+ s = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(tm))
+ msecs = max(int((tm - int(tm)) * 1000), 0)
+ return '%s.%03d' % (s, msecs)
+
+ def message(self, msg, module_num=-1):
+ '''Display a message to the user'''
+ if self.modulefp:
+ self.modulefp.write('<div><b class="message">%s</b> '
+ '<span class="timestamp">%s</span></div>\n'
+ % (escape(msg), self.timestamp()))
+ else:
+ # do something with messages outside of builds of module builds
+ pass
+
+ def set_action(self, action, module, module_num=-1, action_target=None):
+ if module_num == -1:
+ module_num = self.module_num
+ if not action_target:
+ action_target = module.name
+ self.message('%s %s' % (action, action_target), module_num)
+
+ def execute(self, command, hint=None, cwd=None, extra_env=None):
+ '''executes a command, and returns the error code'''
+ assert self.modulefp, 'not currently building a module'
+
+ kws = {
+ 'close_fds': True
+ }
+ self.modulefp.write('<pre>')
+ if isinstance(command, (str, unicode)):
+ self.modulefp.write('<span class="command">%s</span>\n'
+ % escape(command))
+ kws['shell'] = True
+ else:
+ self.modulefp.write('<span class="command">%s</span>\n'
+ % escape(' '.join(command)))
+ kws['stdin'] = subprocess.PIPE
+ kws['stdout'] = subprocess.PIPE
+ kws['stderr'] = subprocess.PIPE
+ if hint == 'cvs':
+ def format_line(line, error_output, fp=self.modulefp):
+ if line[-1] == '\n': line = line[:-1]
+ if line.startswith('C '):
+ fp.write('<span class="conflict">%s</span>\n'
+ % escape(line))
+ else:
+ fp.write('%s\n' % escape(line))
+ kws['stderr'] = subprocess.STDOUT
+ else:
+ def format_line(line, error_output, fp=self.modulefp):
+ if line[-1] == '\n': line = line[:-1]
+ if error_output:
+ fp.write('<span class="error">%s</span>\n'
+ % escape(line))
+ else:
+ fp.write('%s\n' % escape(line))
+
+ if cwd is not None:
+ kws['cwd'] = cwd
+
+ if extra_env is not None:
+ kws['env'] = os.environ.copy()
+ kws['env'].update(extra_env)
+
+ try:
+ p = subprocess.Popen(command, **kws)
+ except OSError, e:
+ self.modulefp.write('<span class="error">Error: %s</span>\n'
+ % escape(str(e)))
+ raise CommandError(str(e))
+ cmds.pprint_output(p, format_line)
+ self.modulefp.write('</pre>\n')
+ self.modulefp.flush()
+ if p.returncode != 0:
+ raise CommandError('Error running %s' % command, p.returncode)
+
+ def start_build(self):
+ assert self.outputdir
+
+ # close stdin
+ os.close(0)
+
+ info = []
+ import socket
+ un = os.uname()
+
+ info.append(('Build Host', socket.gethostname()))
+ info.append(('Architecture', '%s %s (%s)' % (un[0], un[2], un[4])))
+
+ distro = get_distro()
+ if distro:
+ info.append(('Distribution', distro))
+
+ info.append(('Module Set', self.config.moduleset))
+ info.append(('Start Time', self.timestamp()))
+
+ buildplatform = '<table>\n'
+ for (key, val) in info:
+ buildplatform += '<tr><th align="left">%s</th><td>%s</td></tr>\n' \
+ % (key, val)
+ buildplatform += '</table>\n'
+
+ self.indexfp = open(os.path.join(self.outputdir, 'index.html'), 'w')
+
+ self.indexfp.write(index_header % { 'buildplatform': buildplatform,
+ 'charset': self.charset })
+ self.indexfp.flush()
+
+ def end_build(self, failures):
+ self.indexfp.write('<tr>'
+ '<td>%s</td>'
+ '<td>finish</td>'
+ '</tr>\n' % self.timestamp())
+ if failures:
+ info = '<p>The following modules failed to build</p>\n'
+ info += '<blockquote>\n'
+ info += ', '.join(failures)
+ info += '</blockquote>\n'
+ else:
+ info = ''
+ self.indexfp.write(index_footer % { 'failures': info })
+ self.indexfp.close()
+ self.indexfp = None
+
+ def start_module(self, module):
+ self.modulefilename='%s.html' % module.replace('/','_')
+ self.indexfp.write('<tr>'
+ '<td>%s</td>'
+ '<td><a href="%s">%s</a></td>'
+ '<td>\n' % (self.timestamp(), self.modulefilename,
+ module))
+ self.modulefp = open(os.path.join(self.outputdir,
+ self.modulefilename), 'w')
+ self.modulefp.write(buildlog_header % { 'module': module,
+ 'charset': self.charset })
+ def end_module(self, module, failed):
+ if failed:
+ self.message('Failed')
+ else:
+ self.message('Succeeded')
+ self.modulefp.write(buildlog_footer)
+ self.modulefp.close()
+ self.modulefp = None
+ self.indexfp.write('</td>\n')
+ if failed:
+ self.indexfp.write('<td class="failure">failed</td>\n')
+ else:
+ self.indexfp.write('<td class="success">ok</td>\n')
+ self.indexfp.write('</tr>\n\n')
+ self.indexfp.flush()
+
+ def start_phase(self, module, state):
+ self.modulefp.write('<a name="%s"></a>\n' % state)
+ def end_phase(self, module, state, error):
+ if error:
+ self.indexfp.write('<a class="failure" title="%s" href="%s#%s">%s</a>\n'
+ % (error, self.modulefilename, state, state))
+ else:
+ self.indexfp.write('<a class="success" href="%s#%s">%s</a>\n'
+ % (self.modulefilename, state, state))
+ self.indexfp.flush()
+
+ def handle_error(self, module, state, nextstate, error, altstates):
+ '''handle error during build'''
+ self.message('error during stage %s of %s: %s' % (state, module.name,
+ error))
+ return 'fail'
+
+BUILD_SCRIPT = TinderboxBuildScript
diff --git a/build-scripts/jhbuild/jhbuild/main.py b/build-scripts/jhbuild/jhbuild/main.py
new file mode 100644
index 0000000..8af8620
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/main.py
@@ -0,0 +1,102 @@
+#!/usr/bin/env python
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# main.py: parses command line arguments and starts the build
+#
+# 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
+
+import sys, os
+import optparse
+import traceback
+
+import jhbuild.config
+import jhbuild.commands
+from jhbuild.errors import UsageError, FatalError
+
+def help_commands(option, opt_str, value, parser):
+ commands = [
+ ('build', 'update and compile (the default)'),
+ ('buildone', 'modules build a single module'),
+ ('update', 'update from version control'),
+ ('updateone', 'update a fixed set of modules'),
+ ('list', 'list what modules would be built'),
+ ('info', 'prints information about modules'),
+ ('tinderbox', 'build non-interactively with logging'),
+ ('gui', 'build targets from a gui app'),
+ ('run', 'run a command in the build environment'),
+ ('shell', 'start a shell in the build environment'),
+ ('sanitycheck', 'check that required support tools exists'),
+ ('bootstrap', 'build required support tools'),
+ ('dot', 'output a dependency graph for processing with graphviz'),
+ ]
+ print 'JHBuild commands are:'
+ for (cmd, description) in commands:
+ print ' %-15s %s' % (cmd, description)
+ print
+ print 'For more information run "jhbuild <command> --help"'
+ parser.exit()
+
+def main(args):
+ parser = optparse.OptionParser(
+ usage='%prog [ -f config ] command [ options ... ]',
+ description='Build a set of CVS modules (such as GNOME).')
+ parser.disable_interspersed_args()
+ parser.add_option('--help-commands', action='callback',
+ callback=help_commands,
+ help='Information about available jhbuild commands')
+ parser.add_option('-f', '--file', action='store', metavar='CONFIG',
+ type='string', dest='configfile',
+ default=os.path.join(os.environ['HOME'], '.jhbuildrc'),
+ help='use a non default configuration file')
+ parser.add_option('-m', '--moduleset', action='store', metavar='URI',
+ type='string', dest='moduleset', default=None,
+ help='use a non default module set')
+ parser.add_option('--no-interact', action='store_true',
+ dest='nointeract', default=False,
+ help='do not prompt for input')
+
+ options, args = parser.parse_args(args)
+
+ try:
+ config = jhbuild.config.Config(options.configfile)
+ except FatalError, exc:
+ sys.stderr.write('jhbuild: %s\n' % (str(exc)))
+ sys.exit(1)
+
+ if options.moduleset: config.moduleset = options.moduleset
+ if options.nointeract: config.interact = False
+
+ if not args or args[0][0] == '-':
+ command = 'build' # default to cvs update + compile
+ else:
+ command = args[0]
+ args = args[1:]
+
+ try:
+ jhbuild.commands.run(command, config, args)
+ except UsageError, exc:
+ sys.stderr.write('jhbuild %s: %s\n' % (command, str(exc)))
+ parser.print_usage()
+ sys.exit(1)
+ except FatalError, exc:
+ sys.stderr.write('jhbuild %s: %s\n' % (command, str(exc)))
+ sys.exit(1)
+ except KeyboardInterrupt:
+ print "Interrupted"
+ sys.exit(1)
+ except EOFError:
+ print "EOF"
+ sys.exit(1)
diff --git a/build-scripts/jhbuild/jhbuild/modtypes/.cvsignore b/build-scripts/jhbuild/jhbuild/modtypes/.cvsignore
new file mode 100644
index 0000000..0d20b64
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/modtypes/.cvsignore
@@ -0,0 +1 @@
+*.pyc
diff --git a/build-scripts/jhbuild/jhbuild/modtypes/__init__.py b/build-scripts/jhbuild/jhbuild/modtypes/__init__.py
new file mode 100644
index 0000000..46a3e0f
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/modtypes/__init__.py
@@ -0,0 +1,190 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# __init__.py: package to hold module type defintions
+#
+# 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
+
+__metaclass__ = type
+
+__all__ = [
+ 'register_module_type',
+ 'parse_xml_node',
+ 'Package',
+ 'get_dependencies'
+ 'get_branch'
+ ]
+
+from jhbuild.errors import FatalError, CommandError, BuildStateError
+
+_module_types = {}
+def register_module_type(name, parse_func):
+ _module_types[name] = parse_func
+
+def register_lazy_module_type(name, module):
+ def parse_func(node, config, repositories, default_repo):
+ old_func = _module_types[name]
+ mod = __import__(module)
+ assert _module_types[name] != old_func, (
+ 'module did not register new parser_func for %s' % name)
+ return _module_types[name](node, config, repositories, default_repo)
+ _module_types[name] = parse_func
+
+def parse_xml_node(node, config, repositories, default_repo):
+ if not _module_types.has_key(node.nodeName):
+ try:
+ __import__('jhbuild.modtypes.%s' % node.nodeName)
+ except ImportError:
+ pass
+ if not _module_types.has_key(node.nodeName):
+ raise FatalError('unknown module type %s' % node.nodeName)
+
+ parser = _module_types[node.nodeName]
+ return parser(node, config, repositories, default_repo)
+
+def get_dependencies(node):
+ """Scan for dependencies in <dependencies> and <after> elements."""
+ dependencies = []
+ after = []
+ for childnode in node.childNodes:
+ if childnode.nodeType != childnode.ELEMENT_NODE: continue
+ if childnode.nodeName == 'dependencies':
+ for dep in childnode.childNodes:
+ if dep.nodeType == dep.ELEMENT_NODE and dep.nodeName == 'dep':
+ dependencies.append(dep.getAttribute('package'))
+ elif childnode.nodeName in ['after', 'suggests']:
+ for dep in childnode.childNodes:
+ if dep.nodeType == dep.ELEMENT_NODE and dep.nodeName == 'dep':
+ after.append(dep.getAttribute('package'))
+ return dependencies, after
+
+def get_branch(node, repositories, default_repo):
+ """Scan for a <branch> element and create a corresponding Branch object."""
+ name = node.getAttribute('id')
+ for childnode in node.childNodes:
+ if (childnode.nodeType == childnode.ELEMENT_NODE and
+ childnode.nodeName == 'branch'):
+ break
+ else:
+ raise FatalError('no <branch> element found for %s' % name)
+
+ # look up the repository for this branch ...
+ if childnode.hasAttribute('repo'):
+ try:
+ repo = repositories[childnode.getAttribute('repo')]
+ except KeyError:
+ raise FatalError('Repository=%s not found for module id=%s. Possible repositories are %s' % (childnode.getAttribute('repo'), name, repositories))
+ else:
+ try:
+ repo = repositories[default_repo]
+ except KeyError:
+ raise FatalError('Default Repository=%s not found for module id=%s. Possible repositories are %s' % (default_repo, name, repositories))
+
+ return repo.branch_from_xml(name, childnode)
+
+
+class Package:
+ type = 'base'
+ STATE_START = 'start'
+ STATE_DONE = 'done'
+ def __init__(self, name, dependencies=[], after=[]):
+ self.name = name
+ self.dependencies = dependencies
+ self.after = after
+ def __repr__(self):
+ return "<%s '%s'>" % (self.__class__.__name__, self.name)
+
+ def get_srcdir(self, buildscript):
+ raise NotImplementedError
+ def get_builddir(self, buildscript):
+ raise NotImplementedError
+
+ def get_revision(self):
+ return None
+
+ def _next_state(self, buildscript, last_state):
+ """Work out what state to go to next, possibly skipping some states.
+
+ This function executes skip_$state() to decide whether to run that
+ state or not. If it returns True, go to do_$state.next_state and
+ repeat. If it returns False, return that state.
+ """
+ seen_states = []
+ state = getattr(self, 'do_' + last_state).next_state
+ while True:
+ seen_states.append(state)
+ if state == self.STATE_DONE:
+ return state
+ do_method = getattr(self, 'do_' + state)
+ if hasattr(self, 'skip_' + state):
+ skip_method = getattr(self, 'skip_' + state)
+ if skip_method(buildscript, last_state):
+ state = do_method.next_state
+ assert state not in seen_states, (
+ 'state %s should not appear in list of '
+ 'skipped states: %r' % (state, seen_states))
+ else:
+ return state
+ else:
+ # no skip rule
+ return state
+
+ def run_state(self, buildscript, state):
+ """run a particular part of the build for this package.
+
+ Returns a tuple of the following form:
+ (next-state, error-flag, [other-states])
+ """
+ method = getattr(self, 'do_' + state)
+ # has the state been updated to the new system?
+ if hasattr(method, 'next_state'):
+ try:
+ method(buildscript)
+ except (CommandError, BuildStateError), e:
+ return (self._next_state(buildscript, state),
+ str(e), method.error_states)
+ else:
+ return (self._next_state(buildscript, state),
+ None, None)
+ else:
+ return method(buildscript)
+
+
+class MetaModule(Package):
+ """A simple module type that consists only of dependencies."""
+ type = 'meta'
+ def get_srcdir(self, buildscript):
+ return buildscript.config.checkoutroot
+ def get_builddir(self, buildscript):
+ return buildscript.config.buildroot or \
+ self.get_srcdir(buildscript)
+
+ # nothing to actually build in a metamodule ...
+ def do_start(self, buildscript):
+ pass
+ do_start.next_state = Package.STATE_DONE
+ do_start.error_states = []
+
+def parse_metamodule(node, config, repos, default_repo):
+ id = node.getAttribute('id')
+ dependencies, after = get_dependencies(node)
+ return MetaModule(id, dependencies=dependencies, after=after)
+register_module_type('metamodule', parse_metamodule)
+
+
+register_lazy_module_type('autotools', 'jhbuild.modtypes.autotools')
+register_lazy_module_type('cvsmodule', 'jhbuild.modtypes.autotools')
+register_lazy_module_type('svnmodule', 'jhbuild.modtypes.autotools')
+register_lazy_module_type('archmodule', 'jhbuild.modtypes.autotools')
diff --git a/build-scripts/jhbuild/jhbuild/modtypes/autotools.py b/build-scripts/jhbuild/jhbuild/modtypes/autotools.py
new file mode 100644
index 0000000..dd67274
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/modtypes/autotools.py
@@ -0,0 +1,354 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# autotools.py: autotools module type definitions.
+#
+# 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
+
+__metaclass__ = type
+
+import os
+
+from jhbuild.errors import FatalError, BuildStateError
+from jhbuild.modtypes import \
+ Package, get_dependencies, get_branch, register_module_type
+
+__all__ = [ 'AutogenModule' ]
+
+class AutogenModule(Package):
+ '''Base type for modules that are distributed with a Gnome style
+ "autogen.sh" script and the GNU build tools. Subclasses are
+ responsible for downloading/updating the working copy.'''
+ type = 'autogen'
+
+ STATE_CHECKOUT = 'checkout'
+ STATE_FORCE_CHECKOUT = 'force_checkout'
+ STATE_CLEAN = 'clean'
+ STATE_CONFIGURE = 'configure'
+ STATE_BUILD = 'build'
+ STATE_CHECK = 'check'
+ STATE_INSTALL = 'install'
+
+ def __init__(self, name, branch, autogenargs='', makeargs='',
+ dependencies=[], after=[],
+ supports_non_srcdir_builds=True,
+ autogen_sh='autogen.sh',
+ makefile='Makefile'):
+ Package.__init__(self, name, dependencies, after)
+ self.branch = branch
+ self.autogenargs = autogenargs
+ self.makeargs = makeargs
+ self.supports_non_srcdir_builds = supports_non_srcdir_builds
+ self.autogen_sh = autogen_sh
+ self.makefile = makefile
+
+ def get_srcdir(self, buildscript):
+ return self.branch.srcdir
+
+ def get_builddir(self, buildscript):
+ if buildscript.config.buildroot and self.supports_non_srcdir_builds:
+ d = buildscript.config.builddir_pattern % (
+ os.path.basename(self.get_srcdir(buildscript)))
+ return os.path.join(buildscript.config.buildroot, d)
+ else:
+ return self.get_srcdir(buildscript)
+
+ def get_revision(self):
+ return self.branch.branchname
+
+ def do_start(self, buildscript):
+ pass
+ do_start.next_state = STATE_CHECKOUT
+ do_start.error_states = []
+
+ def skip_checkout(self, buildscript, last_state):
+ # skip the checkout stage if the nonetwork flag is set
+ return buildscript.config.nonetwork
+
+ def do_checkout(self, buildscript):
+ srcdir = self.get_srcdir(buildscript)
+ builddir = self.get_builddir(buildscript)
+ buildscript.set_action('Checking out', self)
+ self.branch.checkout(buildscript)
+ # did the checkout succeed?
+ if not os.path.exists(srcdir):
+ raise BuildStateError('source directory %s was not created'
+ % srcdir)
+ do_checkout.next_state = STATE_CONFIGURE
+ do_checkout.error_states = [STATE_FORCE_CHECKOUT]
+
+ def skip_force_checkout(self, buildscript, last_state):
+ return False
+
+ def do_force_checkout(self, buildscript):
+ buildscript.set_action('Checking out', self)
+ self.branch.force_checkout(buildscript)
+ do_force_checkout.next_state = STATE_CONFIGURE
+ do_force_checkout.error_states = [STATE_FORCE_CHECKOUT]
+
+ def skip_configure(self, buildscript, last_state):
+ # skip if nobuild is set.
+ if buildscript.config.nobuild:
+ return True
+
+ # don't skip this stage if we got here from one of the
+ # following states:
+ if last_state in [self.STATE_FORCE_CHECKOUT,
+ self.STATE_CLEAN,
+ self.STATE_BUILD,
+ self.STATE_INSTALL]:
+ return False
+
+ # skip if the makefile exists and we don't have the
+ # alwaysautogen flag turned on:
+ builddir = self.get_builddir(buildscript)
+ return (os.path.exists(os.path.join(builddir, self.makefile)) and
+ not buildscript.config.alwaysautogen)
+
+ def do_configure(self, buildscript):
+ builddir = self.get_builddir(buildscript)
+ if buildscript.config.buildroot and not os.path.exists(builddir):
+ os.makedirs(builddir)
+ buildscript.set_action('Configuring', self)
+
+ if buildscript.config.buildroot and self.supports_non_srcdir_builds:
+ cmd = self.get_srcdir(buildscript) + '/' + self.autogen_sh
+ else:
+ cmd = './' + self.autogen_sh
+ cmd += ' --prefix %s' % buildscript.config.prefix
+ if buildscript.config.use_lib64:
+ cmd += " --libdir '${exec_prefix}/lib64'"
+ cmd += ' %s' % self.autogenargs
+
+ # if we are using configure as the autogen command, make sure
+ # we don't pass --enable-maintainer-mode, since it breaks many
+ # tarball builds.
+ if self.autogen_sh == 'configure':
+ cmd = cmd.replace('--enable-maintainer-mode', '')
+
+ buildscript.execute(cmd, cwd=builddir)
+ do_configure.next_state = STATE_CLEAN
+ do_configure.error_states = [STATE_FORCE_CHECKOUT]
+
+ def skip_clean(self, buildscript, last_state):
+ return (not buildscript.config.makeclean or
+ buildscript.config.nobuild)
+
+ def do_clean(self, buildscript):
+ buildscript.set_action('Cleaning', self)
+ cmd = '%s %s clean' % (os.environ.get('MAKE', 'make'), self.makeargs)
+ buildscript.execute(cmd, cwd=self.get_builddir(buildscript))
+ do_clean.next_state = STATE_BUILD
+ do_clean.error_states = [STATE_FORCE_CHECKOUT, STATE_CONFIGURE]
+
+ def skip_build(self, buildscript, last_state):
+ return buildscript.config.nobuild
+
+ def do_build(self, buildscript):
+ buildscript.set_action('Building', self)
+ cmd = '%s %s' % (os.environ.get('MAKE', 'make'), self.makeargs)
+ buildscript.execute(cmd, cwd=self.get_builddir(buildscript))
+ do_build.next_state = STATE_CHECK
+ do_build.error_states = [STATE_FORCE_CHECKOUT, STATE_CONFIGURE]
+
+ def skip_check(self, buildscript, last_state):
+ return (not buildscript.config.makecheck or
+ buildscript.config.nobuild)
+
+ def do_check(self, buildscript):
+ buildscript.set_action('Checking', self)
+ cmd = '%s %s check' % (os.environ.get('MAKE', 'make'), self.makeargs)
+ buildscript.execute(cmd, cwd=self.get_builddir(buildscript))
+ do_check.next_state = STATE_INSTALL
+ do_check.error_states = [STATE_FORCE_CHECKOUT, STATE_CONFIGURE]
+
+ def skip_install(self, buildscript, last_state):
+ return buildscript.config.nobuild
+
+ def do_install(self, buildscript):
+ buildscript.set_action('Installing', self)
+ cmd = '%s %s install' % (os.environ.get('MAKE', 'make'), self.makeargs)
+ buildscript.execute(cmd, cwd=self.get_builddir(buildscript))
+ buildscript.packagedb.add(self.name, self.get_revision() or '')
+ do_install.next_state = Package.STATE_DONE
+ do_install.error_states = []
+
+
+def parse_autotools(node, config, repositories, default_repo):
+ id = node.getAttribute('id')
+ autogenargs = ''
+ makeargs = ''
+ supports_non_srcdir_builds = True
+ autogen_sh = 'autogen.sh'
+ makefile = 'Makefile'
+ if node.hasAttribute('autogenargs'):
+ autogenargs = node.getAttribute('autogenargs')
+ if node.hasAttribute('makeargs'):
+ makeargs = node.getAttribute('makeargs')
+ if node.hasAttribute('supports-non-srcdir-builds'):
+ supports_non_srcdir_builds = \
+ (node.getAttribute('supports-non-srcdir-builds') != 'no')
+ if node.hasAttribute('autogen-sh'):
+ autogen_sh = node.getAttribute('autogen-sh')
+ if node.hasAttribute('makefile'):
+ makefile = node.getAttribute('makefile')
+
+ # override revision tag if requested.
+ autogenargs += ' ' + config.module_autogenargs.get(id, config.autogenargs)
+ makeargs += ' ' + config.module_makeargs.get(id, config.makeargs)
+
+ dependencies, after = get_dependencies(node)
+ branch = get_branch(node, repositories, default_repo)
+
+ return AutogenModule(id, branch, autogenargs, makeargs,
+ dependencies=dependencies,
+ after=after,
+ supports_non_srcdir_builds=supports_non_srcdir_builds,
+ autogen_sh=autogen_sh,
+ makefile=makefile)
+register_module_type('autotools', parse_autotools)
+
+
+# deprecated module types below:
+def parse_cvsmodule(node, config, repositories, default_repo):
+ id = node.getAttribute('id')
+ module = None
+ revision = None
+ checkoutdir = None
+ autogenargs = ''
+ makeargs = ''
+ supports_non_srcdir_builds = True
+ if node.hasAttribute('module'):
+ module = node.getAttribute('module')
+ if node.hasAttribute('revision'):
+ revision = node.getAttribute('revision')
+ if node.hasAttribute('checkoutdir'):
+ checkoutdir = node.getAttribute('checkoutdir')
+ if node.hasAttribute('autogenargs'):
+ autogenargs = node.getAttribute('autogenargs')
+ if node.hasAttribute('makeargs'):
+ makeargs = node.getAttribute('makeargs')
+ if node.hasAttribute('supports-non-srcdir-builds'):
+ supports_non_srcdir_builds = \
+ (node.getAttribute('supports-non-srcdir-builds') != 'no')
+
+ if not id:
+ id = checkoutdir or module
+
+ # override revision tag if requested.
+ autogenargs += ' ' + config.module_autogenargs.get(id, config.autogenargs)
+ makeargs += ' ' + config.module_makeargs.get(id, config.makeargs)
+
+ dependencies, after = get_dependencies(node)
+
+ for attrname in ['cvsroot', 'root']:
+ if node.hasAttribute(attrname):
+ try:
+ repo = repositories[node.getAttribute(attrname)]
+ break
+ except KeyError:
+ raise FatalError('Repository=%s not found for module id=%s. '
+ 'Possible repositories are %s'
+ % (node.getAttribute(attrname),
+ node.getAttribute('id'), repositories))
+ else:
+ repo = repositories.get(default_repo, None)
+ branch = repo.branch(id, module=module, checkoutdir=checkoutdir,
+ revision=revision)
+
+ return AutogenModule(id, branch, autogenargs, makeargs,
+ dependencies=dependencies,
+ after=after,
+ supports_non_srcdir_builds=supports_non_srcdir_builds)
+register_module_type('cvsmodule', parse_cvsmodule)
+
+def parse_svnmodule(node, config, repositories, default_repo):
+ id = node.getAttribute('id')
+ module = None
+ checkoutdir = None
+ autogenargs = ''
+ makeargs = ''
+ supports_non_srcdir_builds = True
+ if node.hasAttribute('module'):
+ module = node.getAttribute('module')
+ if node.hasAttribute('checkoutdir'):
+ checkoutdir = node.getAttribute('checkoutdir')
+ if node.hasAttribute('autogenargs'):
+ autogenargs = node.getAttribute('autogenargs')
+ if node.hasAttribute('makeargs'):
+ makeargs = node.getAttribute('makeargs')
+ if node.hasAttribute('supports-non-srcdir-builds'):
+ supports_non_srcdir_builds = \
+ (node.getAttribute('supports-non-srcdir-builds') != 'no')
+
+ if not id:
+ id = checkoutdir or os.path.basename(module)
+
+ # override revision tag if requested.
+ autogenargs += ' ' + config.module_autogenargs.get(id, config.autogenargs)
+ makeargs += ' ' + config.module_makeargs.get(id, config.makeargs)
+
+ dependencies, after = get_dependencies(node)
+
+ if node.hasAttribute('root'):
+ repo = repositories[node.getAttribute('root')]
+ else:
+ repo = repositories.get(default_repo, None)
+ branch = repo.branch(id, module=module, checkoutdir=checkoutdir)
+
+ return AutogenModule(id, branch, autogenargs, makeargs,
+ dependencies=dependencies,
+ after=after,
+ supports_non_srcdir_builds=supports_non_srcdir_builds)
+register_module_type('svnmodule', parse_svnmodule)
+
+def parse_archmodule(node, config, repositories, default_repo):
+ id = node.getAttribute('id')
+ version = None
+ checkoutdir = None
+ autogenargs = ''
+ makeargs = ''
+ supports_non_srcdir_builds = True
+ if node.hasAttribute('version'):
+ version = node.getAttribute('version')
+ if node.hasAttribute('checkoutdir'):
+ checkoutdir = node.getAttribute('checkoutdir')
+ if node.hasAttribute('autogenargs'):
+ autogenargs = node.getAttribute('autogenargs')
+ if node.hasAttribute('makeargs'):
+ makeargs = node.getAttribute('makeargs')
+ if node.hasAttribute('supports-non-srcdir-builds'):
+ supports_non_srcdir_builds = \
+ (node.getAttribute('supports-non-srcdir-builds') != 'no')
+
+ if not id:
+ id = checkoutdir or version
+
+ autogenargs += ' ' + config.module_autogenargs.get(id, config.autogenargs)
+ makeargs += ' ' + config.module_makeargs.get(id, makeargs)
+
+ dependencies, after = get_dependencies(node)
+
+ if node.hasAttribute('root'):
+ repo = repositories[node.getAttribute('root')]
+ else:
+ repo = repositories.get(default_repo, None)
+ branch = repo.branch(id, module=version, checkoutdir=checkoutdir)
+
+ return AutogenModule(id, branch, autogenargs, makeargs,
+ dependencies=dependencies,
+ after=after,
+ supports_non_srcdir_builds=supports_non_srcdir_builds)
+register_module_type('archmodule', parse_archmodule)
diff --git a/build-scripts/jhbuild/jhbuild/modtypes/distutils.py b/build-scripts/jhbuild/jhbuild/modtypes/distutils.py
new file mode 100644
index 0000000..6e1da79
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/modtypes/distutils.py
@@ -0,0 +1,137 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# distutils.py: Python distutils module type definitions.
+#
+# 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
+
+__metaclass__ = type
+
+import os
+
+from jhbuild.errors import BuildStateError
+from jhbuild.modtypes import \
+ Package, get_dependencies, get_branch, register_module_type
+
+__all__ = [ 'DistutilsModule' ]
+
+class DistutilsModule(Package):
+ """Base type for modules that are distributed with a Python
+ Distutils style setup.py."""
+ type = 'distutils'
+
+ STATE_CHECKOUT = 'checkout'
+ STATE_FORCE_CHECKOUT = 'force_checkout'
+ STATE_BUILD = 'build'
+ STATE_INSTALL = 'install'
+
+ def __init__(self, name, branch,
+ dependencies=[], after=[],
+ supports_non_srcdir_builds=True):
+ Package.__init__(self, name, dependencies, after)
+ self.branch = branch
+ self.supports_non_srcdir_builds = supports_non_srcdir_builds
+
+ def get_srcdir(self, buildscript):
+ return self.branch.srcdir
+
+ def get_builddir(self, buildscript):
+ if buildscript.config.buildroot and self.supports_non_srcdir_builds:
+ d = buildscript.config.builddir_pattern % (
+ os.path.basename(self.get_srcdir(buildscript)))
+ return os.path.join(buildscript.config.buildroot, d)
+ else:
+ return self.get_srcdir(buildscript)
+
+ def get_revision(self):
+ return self.branch.branchname
+
+ def do_start(self, buildscript):
+ pass
+ do_start.next_state = STATE_CHECKOUT
+ do_start.error_states = []
+
+ def skip_checkout(self, buildscript, last_state):
+ # skip the checkout stage if the nonetwork flag is set
+ return buildscript.config.nonetwork
+
+ def do_checkout(self, buildscript):
+ srcdir = self.get_srcdir(buildscript)
+ buildscript.set_action('Checking out', self)
+ self.branch.checkout(buildscript)
+ # did the checkout succeed?
+ if not os.path.exists(srcdir):
+ raise BuildStateError('source directory %s was not created'
+ % srcdir)
+ do_checkout.next_state = STATE_BUILD
+ do_checkout.error_states = [STATE_FORCE_CHECKOUT]
+
+ def skip_force_checkout(self, buildscript, last_state):
+ return False
+
+ def do_force_checkout(self, buildscript):
+ buildscript.set_action('Checking out', self)
+ self.branch.force_checkout(buildscript)
+ do_force_checkout.next_state = STATE_BUILD
+ do_force_checkout.error_states = [STATE_FORCE_CHECKOUT]
+
+ def skip_build(self, buildscript, last_state):
+ return buildscript.config.nobuild
+
+ def do_build(self, buildscript):
+ buildscript.set_action('Building', self)
+ srcdir = self.get_srcdir(buildscript)
+ builddir = self.get_builddir(buildscript)
+ python = os.environ.get('PYTHON', 'python')
+ cmd = [python, 'setup.py', 'build']
+ if srcdir != builddir:
+ cmd.extend(['--build-base', builddir])
+ buildscript.execute(cmd, cwd=srcdir)
+ do_build.next_state = STATE_INSTALL
+ do_build.error_states = [STATE_FORCE_CHECKOUT]
+
+ def skip_install(self, buildscript, last_state):
+ return buildscript.config.nobuild
+
+ def do_install(self, buildscript):
+ buildscript.set_action('Installing', self)
+ srcdir = self.get_srcdir(buildscript)
+ builddir = self.get_builddir(buildscript)
+ python = os.environ.get('PYTHON', 'python')
+ cmd = [python, 'setup.py']
+ if srcdir != builddir:
+ cmd.extend(['build', '--build-base', builddir])
+ cmd.extend(['install', '--prefix', buildscript.config.prefix])
+ buildscript.execute(cmd, cwd=srcdir)
+ buildscript.packagedb.add(self.name, self.get_revision() or '')
+ do_install.next_state = Package.STATE_DONE
+ do_install.error_states = []
+
+
+def parse_distutils(node, config, repositories, default_repo):
+ id = node.getAttribute('id')
+ supports_non_srcdir_builds = True
+
+ if node.hasAttribute('supports-non-srcdir-builds'):
+ supports_non_srcdir_builds = \
+ (node.getAttribute('supports-non-srcdir-builds') != 'no')
+ dependencies, after = get_dependencies(node)
+ branch = get_branch(node, repositories, default_repo)
+
+ return DistutilsModule(id, branch,
+ dependencies=dependencies, after=after,
+ supports_non_srcdir_builds=supports_non_srcdir_builds)
+register_module_type('distutils', parse_distutils)
+
diff --git a/build-scripts/jhbuild/jhbuild/modtypes/gcjmodule.py b/build-scripts/jhbuild/jhbuild/modtypes/gcjmodule.py
new file mode 100644
index 0000000..b42054d
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/modtypes/gcjmodule.py
@@ -0,0 +1,174 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2004 James Henstridge
+#
+# gcjmodule.py: module type definitions for the GNU Compiler for Java
+#
+# 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
+
+import os
+
+import base
+from jhbuild.utils import cvs
+
+class GCCCVSRoot(cvs.CVSRoot):
+ '''A class to handle CVS checkout and update operations in the GCC
+ tree.'''
+
+ def getcheckoutdir(self, module, checkoutdir=None):
+ '''Override CVSRoot.getcheckoutdir to return GCJ''s top-level
+ directory, gcc.'''
+ return os.path.join(self.localroot, 'gcc')
+
+ def checkout(self, buildscript, module, revision=None, date=None,
+ checkoutdir=None):
+ '''Override cvs.CVSRoot.checkout to check out a list of
+ modules instead of just one.'''
+ os.chdir(self.localroot)
+ cmd = 'cvs -z3 -q -d %s checkout -P ' % self.cvsroot
+
+ if checkoutdir:
+ cmd += '-d %s ' % checkoutdir
+
+ if revision:
+ cmd += '-r %s ' % revision
+ if date:
+ cmd += '-D "%s" ' % date
+ if not (revision or date):
+ cmd = cmd + '-A '
+
+ for updatemod in module.split(" "):
+ res = buildscript.execute(cmd + updatemod, 'cvs')
+ if res != 0:
+ break
+
+ return res
+
+ def update(self, buildscript, module, revision=None, date=None,
+ checkoutdir=None):
+ '''Override cvs.CVSRoot.update to use gcc_update in place of
+ "cvs update".'''
+ dir = self.getcheckoutdir(module, checkoutdir)
+ if not os.path.exists(dir):
+ return self.checkout(buildscript, 'gcc',
+ revision, date, checkoutdir)
+
+ # gcc_update will not update the tree properly if a previous
+ # checkout attempt was aborted. Because gcc_update decides
+ # what to update based on the directories that are present in
+ # the top-level gcc directory, it is difficult to make the
+ # update process robust against checkout interruptions.
+ os.chdir(dir)
+ cmd = 'contrib/gcc_update --nostdflags -d -P '
+
+ if revision:
+ cmd += '-r %s ' % revision
+ if date:
+ cmd += '-D "%s" ' % date
+ if not (revision or date):
+ cmd = cmd + '-A '
+
+ return buildscript.execute(cmd, 'cvs')
+
+class GCJModule(base.CVSModule):
+ CVSRoot = GCCCVSRoot
+ def __init__(self,
+ cvsmodule,
+ checkoutdir=None,
+ revision=None,
+ autogenargs=None,
+ makeargs=None,
+ dependencies=[],
+ suggests=[],
+ cvsroot=None,
+ supports_non_srcdir_builds=True):
+ base.CVSModule.__init__(self,
+ cvsmodule,
+ checkoutdir=checkoutdir,
+ revision=revision,
+ autogenargs=autogenargs,
+ makeargs=makeargs,
+ dependencies=dependencies,
+ suggests=suggests,
+ cvsroot=cvsroot,
+ supports_non_srcdir_builds=supports_non_srcdir_builds)
+
+ def get_srcdir(self, buildscript):
+ '''Override base.CVSModule.get_srcdir to return GCJ''s
+ top-level directory, gcc.'''
+ cvsroot = self.CVSRoot(self.cvsroot,
+ buildscript.config.checkoutroot)
+
+ return cvsroot.getcheckoutdir(self.cvsmodule,
+ self.checkoutdir)
+
+ def do_configure(self, buildscript):
+ '''Override base.CVSModule.do_configure to call configure
+ rather than autogen, and to have gcc install its tools in
+ gcj-bin rather than bin.'''
+ builddir = self.get_builddir(buildscript)
+ if buildscript.config.buildroot and not os.path.exists(builddir):
+ os.makedirs(builddir)
+ os.chdir(builddir)
+ buildscript.set_action('Configuring', self)
+ if buildscript.config.buildroot and self.supports_non_srcdir_builds:
+ cmd = self.get_srcdir(buildscript) + '/configure'
+ else:
+ cmd = './configure'
+ cmd += ' --prefix=%s' % buildscript.config.prefix
+ # Keep the installed gcc tools (gcc, g++, ...) out of the main
+ # JHBuild path.
+ cmd += ' --bindir=%s' % os.path.join(buildscript.config.prefix, 'gcj-bin')
+ if buildscript.config.use_lib64:
+ cmd += " --libdir='${exec_prefix}/lib64'"
+ cmd += ' %s' % self.autogenargs
+ if buildscript.config.makeclean:
+ nextstate = self.STATE_CLEAN
+ else:
+ nextstate = self.STATE_BUILD
+ if buildscript.execute(cmd) == 0:
+ return (nextstate, None, None)
+ else:
+ return (nextstate, 'could not configure module',
+ [self.STATE_FORCE_CHECKOUT])
+
+ def do_install(self, buildscript):
+ '''Override base.CVSModule.do_install to create a symbolic
+ link from gcj-bin to bin for gcj and gij. This prevents the
+ JHBuild-installed C and C++ compilers from overriding the
+ system compilers.'''
+ os.chdir(self.get_builddir(buildscript))
+ buildscript.set_action('Installing', self)
+ cmd = '%s %s install' % (os.environ.get('MAKE', 'make'), self.makeargs)
+ error = None
+ if buildscript.execute(cmd) != 0:
+ error = 'could not make module'
+ else:
+ buildscript.packagedb.add(self.name, self.revision or '')
+ if not os.path.exists(os.path.join(buildscript.config.prefix, 'bin', 'gcj')):
+ os.symlink(os.path.join(buildscript.config.prefix, 'gcj-bin', 'gcj'), \
+ os.path.join(buildscript.config.prefix, 'bin', 'gcj'))
+ if not os.path.exists(os.path.join(buildscript.config.prefix, 'bin', 'gij')):
+ os.symlink(os.path.join(buildscript.config.prefix, 'gcj-bin', 'gij'), \
+ os.path.join(buildscript.config.prefix, 'bin', 'gij'))
+ if not os.path.exists(os.path.join(buildscript.config.prefix, 'bin', 'gcj-dbtool')):
+ os.symlink(os.path.join(buildscript.config.prefix, 'gcj-bin', 'gcj-dbtool'), \
+ os.path.join(buildscript.config.prefix, 'bin', 'gcj-dbtool'))
+ return (self.STATE_DONE, error, [])
+
+def parse_gcjmodule(node, config, dependencies, suggests, cvsroot):
+ return base.parse_cvsmodule(node, config, dependencies,
+ suggests, cvsroot, CVSModule=GCJModule)
+
+base.register_module_type('gcjmodule', parse_gcjmodule)
diff --git a/build-scripts/jhbuild/jhbuild/modtypes/gdbmodule.py b/build-scripts/jhbuild/jhbuild/modtypes/gdbmodule.py
new file mode 100644
index 0000000..afa2f87
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/modtypes/gdbmodule.py
@@ -0,0 +1,124 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2004 James Henstridge
+#
+# gdbmodule.py: module type definitions for the GNU Debugger
+#
+# 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
+
+import os
+import string
+
+import base
+from jhbuild.utils import cvs
+
+class GDBCVSRoot(cvs.CVSRoot):
+ '''A class to handle CVS update operations in the GDB CVS
+ repository.'''
+
+ def getcheckoutdir(self, module, checkoutdir=None):
+ '''Override CVSRoot.getcheckoutdir to return GDB''s top-level
+ directory, src.'''
+ return os.path.join(self.localroot, 'src')
+
+ def update(self, buildscript, module, revision=None, date=None,
+ checkoutdir=None):
+ '''Override CVSRoot.update to remove the -d option to cvs
+ update. When run in GDB''s top-level directory, src, cvs
+ update -d will checkout all modules in the repository rather
+ than simply updating gdb and its requirements.'''
+ dir = self.getcheckoutdir(module, checkoutdir)
+ if not os.path.exists(dir):
+ return self.checkout(buildscript, module,
+ revision, date, checkoutdir)
+
+ os.chdir(dir)
+ cmd = 'cvs -z3 -q -d %s update -P ' % self.cvsroot
+
+ if revision:
+ cmd += '-r %s ' % revision
+ if date:
+ cmd += '-D "%s" ' % date
+ if not (revision or date):
+ cmd = cmd + '-A '
+
+ cmd += '.'
+
+ return buildscript.execute(cmd, 'cvs')
+
+class GDBModule(base.CVSModule):
+ CVSRoot = GDBCVSRoot
+ def __init__(self,
+ cvsmodule,
+ checkoutdir=None,
+ revision=None,
+ autogenargs=None,
+ makeargs=None,
+ dependencies=[],
+ suggests=[],
+ cvsroot=None,
+ supports_non_srcdir_builds=True):
+ base.CVSModule.__init__(self,
+ cvsmodule,
+ checkoutdir=checkoutdir,
+ revision=revision,
+ autogenargs=autogenargs,
+ makeargs=makeargs,
+ dependencies=dependencies,
+ suggests=suggests,
+ cvsroot=cvsroot,
+ supports_non_srcdir_builds=supports_non_srcdir_builds)
+
+ def get_srcdir(self, buildscript):
+ '''Override base.CVSModule.get_srcdir to return GDB''s
+ top-level directory, src.'''
+ cvsroot = self.CVSRoot(self.cvsroot,
+ buildscript.config.checkoutroot)
+
+ return cvsroot.getcheckoutdir(self.cvsmodule,
+ self.checkoutdir)
+
+ def do_configure(self, buildscript):
+ '''Override base.CVSModule.do_configure to call configure
+ rather than autogen. Also, GDB''s configure script only
+ accepts the --option=%s syntax; the build fails if --prefix %s
+ is used.'''
+ builddir = self.get_builddir(buildscript)
+ if buildscript.config.buildroot and not os.path.exists(builddir):
+ os.makedirs(builddir)
+ os.chdir(builddir)
+ buildscript.set_action('Configuring', self)
+ if buildscript.config.buildroot and self.supports_non_srcdir_builds:
+ cmd = self.get_srcdir(buildscript) + '/configure'
+ else:
+ cmd = './configure'
+ cmd += ' --prefix=%s' % buildscript.config.prefix
+ if buildscript.config.use_lib64:
+ cmd += " --libdir='${exec_prefix}/lib64'"
+ cmd += ' %s' % self.autogenargs
+ if buildscript.config.makeclean:
+ nextstate = self.STATE_CLEAN
+ else:
+ nextstate = self.STATE_BUILD
+ if buildscript.execute(cmd) == 0:
+ return (nextstate, None, None)
+ else:
+ return (nextstate, 'could not configure module',
+ [self.STATE_FORCE_CHECKOUT])
+
+def parse_gdbmodule(node, config, dependencies, suggests, cvsroot):
+ return base.parse_cvsmodule(node, config, dependencies,
+ suggests, cvsroot, CVSModule=GDBModule)
+
+base.register_module_type('gdbmodule', parse_gdbmodule)
diff --git a/build-scripts/jhbuild/jhbuild/modtypes/mesa.py b/build-scripts/jhbuild/jhbuild/modtypes/mesa.py
new file mode 100644
index 0000000..2dcac0d
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/modtypes/mesa.py
@@ -0,0 +1,163 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+# Copyright (C) 2006-2007 Eric Anholt
+#
+# perl.py: perl module type definitions.
+#
+# 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
+
+__metaclass__ = type
+
+import os
+import glob
+import platform
+
+from jhbuild.errors import BuildStateError
+from jhbuild.modtypes import \
+ Package, get_dependencies, get_branch, register_module_type
+
+__all__ = [ 'MesaModule' ]
+
+class MesaModule(Package):
+ """Base type for building Mesa."""
+ type = 'mesa'
+
+ STATE_CHECKOUT = 'checkout'
+ STATE_FORCE_CHECKOUT = 'force_checkout'
+ STATE_BUILD = 'build'
+ STATE_INSTALL = 'install'
+
+ def __init__(self, name, branch, makeargs='',
+ dependencies=[], after=[]):
+ Package.__init__(self, name, dependencies, after)
+ self.branch = branch
+ self.makeargs = makeargs
+
+ def get_srcdir(self, buildscript):
+ return self.branch.srcdir
+
+ def get_builddir(self, buildscript):
+ return self.get_srcdir(buildscript)
+
+ def get_revision(self):
+ return self.branch.branchname
+
+ def get_mesa_config(self):
+ uname = platform.uname();
+ if uname[0] == 'FreeBSD':
+ if uname[4] == 'i386':
+ config = 'freebsd-dri-x86'
+ elif uname[4] == 'amd64':
+ config = 'freebsd-dri-amd64'
+ else:
+ config = 'freebsd-dri'
+ if uname[0] == 'Linux':
+ if uname[4] == 'i386':
+ config = 'linux-dri-x86'
+ elif uname[4] == 'x86_64':
+ config = 'linux-dri-x86_64'
+ else:
+ config = 'linux-dri'
+ return config
+
+ def do_start(self, buildscript):
+ pass
+ do_start.next_state = STATE_CHECKOUT
+ do_start.error_states = []
+
+ def skip_checkout(self, buildscript, last_state):
+ # skip the checkout stage if the nonetwork flag is set
+ return buildscript.config.nonetwork
+
+ def do_checkout(self, buildscript):
+ srcdir = self.get_srcdir(buildscript)
+ buildscript.set_action('Checking out', self)
+ self.branch.checkout(buildscript)
+ # did the checkout succeed?
+ if not os.path.exists(srcdir):
+ raise BuildStateError('source directory %s was not created'
+ % srcdir)
+ do_checkout.next_state = STATE_BUILD
+ do_checkout.error_states = [STATE_FORCE_CHECKOUT]
+
+ def skip_force_checkout(self, buildscript, last_state):
+ return False
+
+ def do_force_checkout(self, buildscript):
+ buildscript.set_action('Checking out', self)
+ self.branch.force_checkout(buildscript)
+ do_force_checkout.next_state = STATE_BUILD
+ do_force_checkout.error_states = [STATE_FORCE_CHECKOUT]
+
+ def skip_build(self, buildscript, last_state):
+ return buildscript.config.nobuild
+
+ def do_build(self, buildscript):
+ buildscript.set_action('Building', self)
+ builddir = self.get_builddir(buildscript)
+ make = os.environ.get('MAKE', 'make')
+ if (os.path.exists(builddir + '/configs/current')):
+ buildscript.execute([make], cwd=builddir)
+ else:
+ buildscript.execute([make, self.get_mesa_config()], cwd=builddir)
+ do_build.next_state = STATE_INSTALL
+ do_build.error_states = [STATE_FORCE_CHECKOUT]
+
+ def skip_install(self, buildscript, last_state):
+ return buildscript.config.nobuild
+
+ def do_install(self, buildscript):
+ buildscript.set_action('Installing', self)
+ builddir = self.get_builddir(buildscript)
+ prefix = buildscript.config.prefix
+
+ buildscript.execute(['mkdir', '-p',
+ prefix + '/lib/dri'],
+ cwd=builddir)
+ for x in glob.glob(builddir + '/lib/libGL*'):
+ buildscript.execute(['cp',
+ x,
+ prefix + '/lib'],
+ cwd=builddir)
+ for x in glob.glob(builddir + '/lib/*_dri.so'):
+ buildscript.execute(['cp',
+ x,
+ prefix + '/lib/dri'],
+ cwd=builddir)
+ for x in glob.glob(builddir + '/include/GL/*.h'):
+ buildscript.execute(['cp',
+ x,
+ prefix + '/include/GL'],
+ cwd=builddir)
+ buildscript.packagedb.add(self.name, self.get_revision() or '')
+ do_install.next_state = Package.STATE_DONE
+ do_install.error_states = []
+
+
+def parse_mesa(node, config, repositories, default_repo):
+ id = node.getAttribute('id')
+ makeargs = ''
+ if node.hasAttribute('makeargs'):
+ makeargs = node.getAttribute('makeargs')
+
+ # override revision tag if requested.
+ makeargs += ' ' + config.module_makeargs.get(id, config.makeargs)
+
+ dependencies, after = get_dependencies(node)
+ branch = get_branch(node, repositories, default_repo)
+
+ return MesaModule(id, branch, makeargs,
+ dependencies=dependencies, after=after)
+register_module_type('mesa', parse_mesa)
diff --git a/build-scripts/jhbuild/jhbuild/modtypes/mozillamodule.py b/build-scripts/jhbuild/jhbuild/modtypes/mozillamodule.py
new file mode 100644
index 0000000..30cdf21
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/modtypes/mozillamodule.py
@@ -0,0 +1,187 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+# Copyright (C) 2003-2004 Marco Pesenti Gritti
+#
+# mozillamodule.py: rules for building Mozilla
+#
+# 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
+
+__metaclass__ = type
+
+import os
+
+from jhbuild.modtypes import register_module_type, get_dependencies
+from jhbuild.modtypes.autotools import AutogenModule
+from jhbuild.versioncontrol import cvs
+from jhbuild.errors import FatalError, BuildStateError
+
+class MozillaModule(AutogenModule):
+ def __init__(self, name, projects, revision, autogenargs='',
+ makeargs='', dependencies=[], after=[], repository=None):
+ AutogenModule.__init__(self, name, branch=None,
+ autogenargs=autogenargs,
+ makeargs=makeargs,
+ dependencies=dependencies,
+ after=after,
+ supports_non_srcdir_builds=False)
+ self.repository = repository
+ self.revision = revision
+ self.projects = projects
+ os.environ['MOZ_CO_PROJECT'] = projects
+
+ def get_srcdir(self, buildscript):
+ return os.path.join(buildscript.config.checkoutroot, 'mozilla')
+ def get_revision(self):
+ return self.revision
+
+ def get_mozilla_app(self):
+ if self.projects == 'browser':
+ return 'firefox'
+ elif self.projects == 'xulrunner':
+ return 'xulrunner'
+ else:
+ return 'mozilla'
+
+ def get_mozilla_ver(self, buildscript):
+ if self.projects == 'browser':
+ filename = os.path.join(self.get_builddir(buildscript),
+ 'browser', 'config', 'version.txt')
+ else:
+ filename = os.path.join(self.get_builddir(buildscript),
+ 'config', 'milestone.txt')
+ fp = open(filename, 'r')
+ for line in fp.readlines():
+ if line[0] not in ('#', '\0', '\n'):
+ return line.strip()
+ else:
+ raise FatalError('could not determine mozilla version')
+
+ def checkout(self, buildscript):
+ buildscript.set_action('Checking out', self)
+ cmd = ['cvs', '-z3', '-q', '-d', self.repository.cvsroot, 'checkout']
+ if self.revision:
+ cmd.extend(['-r', self.revision])
+ else:
+ cmd.append('-A')
+ if buildscript.config.sticky_date:
+ cmd.extend(['-D', buildscript.config.sticky_date])
+ cmd.append('mozilla/client.mk')
+ buildscript.execute(cmd, cwd=buildscript.config.checkoutroot)
+
+ buildscript.execute(['make', '-f', 'client.mk', 'checkout'],
+ cwd=self.get_builddir(buildscript))
+
+ def do_checkout(self, buildscript):
+ checkoutdir = self.get_builddir(buildscript)
+ client_mk = os.path.join(checkoutdir, 'client.mk')
+ if not os.path.exists(client_mk) or \
+ cvs.check_sticky_tag(client_mk) != self.revision:
+ self.checkout(buildscript)
+ else:
+ buildscript.set_action('Updating', self)
+ buildscript.execute(['make', '-f', 'client.mk', 'fast-update'],
+ cwd=checkoutdir)
+
+ # did the checkout succeed?
+ if not os.path.exists(checkoutdir):
+ raise BuildStateError('source directory %s was not created'
+ % checkoutdir)
+ do_checkout.next_state = AutogenModule.STATE_CONFIGURE
+ do_checkout.error_states = [AutogenModule.STATE_FORCE_CHECKOUT]
+
+ def do_force_checkout(self, buildscript):
+ self.checkout(buildscript)
+ do_force_checkout.next_state = AutogenModule.STATE_CONFIGURE
+ do_force_checkout.error_states = [AutogenModule.STATE_FORCE_CHECKOUT]
+
+ def do_configure(self, buildscript):
+ checkoutdir = self.get_builddir(buildscript)
+ buildscript.set_action('Configuring', self)
+ if buildscript.config.use_lib64:
+ mozilla_path = '%s/lib64/%s-%s' \
+ % (buildscript.config.prefix,
+ self.get_mozilla_app(),
+ self.get_mozilla_ver(buildscript))
+ else:
+ mozilla_path = '%s/lib/%s-%s' \
+ % (buildscript.config.prefix,
+ self.get_mozilla_app(),
+ self.get_mozilla_ver(buildscript))
+
+ cmd = './configure --prefix %s ' % buildscript.config.prefix
+ if buildscript.config.use_lib64:
+ cmd += " --libdir '${exec_prefix}/lib64'"
+ cmd += ' --with-default-mozilla-five-home=%s' % mozilla_path
+ cmd += ' %s' % self.autogenargs
+
+ if self.projects:
+ cmd += ' --enable-application=%s' % self.projects
+ buildscript.execute(cmd, cwd=checkoutdir)
+ do_configure.next_state = AutogenModule.STATE_BUILD
+ do_configure.error_states = [AutogenModule.STATE_FORCE_CHECKOUT]
+
+ def do_install(self, buildscript):
+ buildscript.set_action('Installing', self)
+ cmd = 'make %s %s install' % (buildscript.config.makeargs,
+ self.makeargs)
+ buildscript.execute(cmd, cwd=self.get_builddir(buildscript))
+ nssdir = '%s/include/%s-%s/nss' % (
+ buildscript.config.prefix,
+ self.get_mozilla_app(),
+ self.get_mozilla_ver(buildscript))
+ if not os.path.exists(nssdir):
+ buildscript.execute(['mkdir', nssdir])
+
+ cmd = ['find', '%s/security/nss/lib/' % self.get_builddir(buildscript),
+ '-name', '*.h', '-type', 'f', '-exec', '/bin/cp', '{}',
+ '%s/' % nssdir, ';']
+ buildscript.execute(cmd, cwd=self.get_builddir(buildscript))
+ buildscript.packagedb.add(self.name, self.get_revision() or '')
+ do_install.next_state = AutogenModule.STATE_DONE
+ do_install.error_states = []
+
+def parse_mozillamodule(node, config, repositories, default_repo):
+ name = node.getAttribute('id')
+ projects = node.getAttribute('projects')
+ revision = None
+ autogenargs = ''
+ makeargs = ''
+ dependencies = []
+ if node.hasAttribute('revision'):
+ revision = node.getAttribute('revision')
+ if node.hasAttribute('autogenargs'):
+ autogenargs = node.getAttribute('autogenargs')
+ if node.hasAttribute('makeargs'):
+ makeargs = node.getAttribute('makeargs')
+
+ # override revision tag if requested.
+ revision = config.branches.get(name, revision)
+ autogenargs += ' ' + config.module_autogenargs.get(name,
+ config.autogenargs)
+ makeargs += ' ' + config.module_makeargs.get(name, makeargs)
+
+ dependencies, after = get_dependencies(node)
+
+ for attrname in ['cvsroot', 'root']:
+ if node.hasAttribute(attrname):
+ repo = repositories[node.getAttribute(attrname)]
+ break
+ else:
+ repo = repositories.get(default_repo, None)
+
+ return MozillaModule(name, projects, revision, autogenargs, makeargs,
+ dependencies, after, repo)
+
+register_module_type('mozillamodule', parse_mozillamodule)
diff --git a/build-scripts/jhbuild/jhbuild/modtypes/perl.py b/build-scripts/jhbuild/jhbuild/modtypes/perl.py
new file mode 100644
index 0000000..eda0dd0
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/modtypes/perl.py
@@ -0,0 +1,129 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# perl.py: perl module type definitions.
+#
+# 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
+
+__metaclass__ = type
+
+import os
+
+from jhbuild.errors import BuildStateError
+from jhbuild.modtypes import \
+ Package, get_dependencies, get_branch, register_module_type
+
+__all__ = [ 'PerlModule' ]
+
+class PerlModule(Package):
+ """Base type for modules that are distributed with a Perl style
+ "Makefile.PL" Makefile."""
+ type = 'perl'
+
+ STATE_CHECKOUT = 'checkout'
+ STATE_FORCE_CHECKOUT = 'force_checkout'
+ STATE_BUILD = 'build'
+ STATE_INSTALL = 'install'
+
+ def __init__(self, name, branch, makeargs='',
+ dependencies=[], after=[]):
+ Package.__init__(self, name, dependencies, after)
+ self.branch = branch
+ self.makeargs = makeargs
+
+ def get_srcdir(self, buildscript):
+ return self.branch.srcdir
+
+ def get_builddir(self, buildscript):
+ # does not support non-srcdir builds
+ return self.get_srcdir(buildscript)
+
+ def get_revision(self):
+ return self.branch.branchname
+
+ def do_start(self, buildscript):
+ pass
+ do_start.next_state = STATE_CHECKOUT
+ do_start.error_states = []
+
+ def skip_checkout(self, buildscript, last_state):
+ # skip the checkout stage if the nonetwork flag is set
+ return buildscript.config.nonetwork
+
+ def do_checkout(self, buildscript):
+ srcdir = self.get_srcdir(buildscript)
+ buildscript.set_action('Checking out', self)
+ self.branch.checkout(buildscript)
+ # did the checkout succeed?
+ if not os.path.exists(srcdir):
+ raise BuildStateError('source directory %s was not created'
+ % srcdir)
+ do_checkout.next_state = STATE_BUILD
+ do_checkout.error_states = [STATE_FORCE_CHECKOUT]
+
+ def skip_force_checkout(self, buildscript, last_state):
+ return False
+
+ def do_force_checkout(self, buildscript):
+ buildscript.set_action('Checking out', self)
+ self.branch.force_checkout(buildscript)
+ do_force_checkout.next_state = STATE_BUILD
+ do_force_checkout.error_states = [STATE_FORCE_CHECKOUT]
+
+ def skip_build(self, buildscript, last_state):
+ return buildscript.config.nobuild
+
+ def do_build(self, buildscript):
+ buildscript.set_action('Building', self)
+ builddir = self.get_builddir(buildscript)
+ perl = os.environ.get('PERL', 'perl')
+ make = os.environ.get('MAKE', 'make')
+ buildscript.execute([perl, 'Makefile.PL', 'INSTALLDIRS=vendor'],
+ cwd=builddir)
+ buildscript.execute([make, 'LD_RUN_PATH='], cwd=builddir)
+ do_build.next_state = STATE_INSTALL
+ do_build.error_states = [STATE_FORCE_CHECKOUT]
+
+ def skip_install(self, buildscript, last_state):
+ return buildscript.config.nobuild
+
+ def do_install(self, buildscript):
+ buildscript.set_action('Installing', self)
+ builddir = self.get_builddir(buildscript)
+ make = os.environ.get('MAKE', 'make')
+ buildscript.execute([make, 'install',
+ 'PREFIX=%s' % buildscript.config.prefix],
+ cwd=builddir)
+ buildscript.packagedb.add(self.name, self.get_revision() or '')
+ do_install.next_state = Package.STATE_DONE
+ do_install.error_states = []
+
+
+def parse_perl(node, config, repositories, default_repo):
+ id = node.getAttribute('id')
+ makeargs = ''
+ if node.hasAttribute('makeargs'):
+ makeargs = node.getAttribute('makeargs')
+
+ # override revision tag if requested.
+ makeargs += ' ' + config.module_makeargs.get(id, config.makeargs)
+
+ dependencies, after = get_dependencies(node)
+ branch = get_branch(node, repositories, default_repo)
+
+ return PerlModule(id, branch, makeargs,
+ dependencies=dependencies, after=after)
+register_module_type('perl', parse_perl)
+
diff --git a/build-scripts/jhbuild/jhbuild/modtypes/tarball.py b/build-scripts/jhbuild/jhbuild/modtypes/tarball.py
new file mode 100644
index 0000000..b5ed5d3
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/modtypes/tarball.py
@@ -0,0 +1,269 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# tarball.py: rules for building tarballs
+#
+# 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
+
+__metaclass__ = type
+
+import os
+
+from jhbuild.errors import FatalError, CommandError, BuildStateError
+from jhbuild.modtypes import Package, register_module_type, get_dependencies
+
+jhbuild_directory = os.path.abspath(os.path.join(os.path.dirname(__file__),
+ '..', '..'))
+
+class Tarball(Package):
+ type = 'tarball'
+ STATE_DOWNLOAD = 'download'
+ STATE_UNPACK = 'unpack'
+ STATE_PATCH = 'patch'
+ STATE_CONFIGURE = 'configure'
+ STATE_BUILD = 'build'
+ STATE_INSTALL = 'install'
+ def __init__(self, name, version, source_url, source_size, source_md5=None,
+ patches=[], checkoutdir=None, autogenargs='', makeargs='',
+ dependencies=[], after=[],
+ supports_non_srcdir_builds=True):
+ Package.__init__(self, name, dependencies, after)
+ self.version = version
+ self.source_url = source_url
+ self.source_size = source_size
+ self.source_md5 = source_md5
+ self.patches = patches
+ self.checkoutdir = checkoutdir
+ self.autogenargs = autogenargs
+ self.makeargs = makeargs
+ self.supports_non_srcdir_builds = supports_non_srcdir_builds
+
+ def get_localfile(self, buildscript):
+ basename = os.path.basename(self.source_url)
+ if not basename:
+ raise FatalError('URL has no filename component: %s'
+ % self.source_url)
+ localfile = os.path.join(buildscript.config.tarballdir, basename)
+ return localfile
+
+ def get_srcdir(self, buildscript):
+ if self.checkoutdir:
+ return os.path.join(buildscript.config.checkoutroot,
+ self.checkoutdir)
+
+ localdir = os.path.join(buildscript.config.checkoutroot,
+ os.path.basename(self.source_url))
+ # strip off packaging extension ...
+ if localdir.endswith('.tar.gz'):
+ localdir = localdir[:-7]
+ elif localdir.endswith('.tar.bz2'):
+ localdir = localdir[:-8]
+ elif localdir.endswith('.tgz'):
+ localdir = localdir[:-4]
+ return localdir
+
+ def get_builddir(self, buildscript):
+ srcdir = self.get_srcdir(buildscript)
+ if buildscript.config.buildroot and \
+ self.supports_non_srcdir_builds:
+ d = buildscript.config.builddir_pattern % os.path.basename(srcdir)
+ return os.path.join(buildscript.config.buildroot, d)
+ else:
+ return srcdir
+
+ def get_revision(self):
+ return self.version
+
+ def check_localfile(self, buildscript):
+ '''returns None if local copy of tarball is okay. Otherwise,
+ returns a string error message.'''
+ localfile = self.get_localfile(buildscript)
+ if not os.path.exists(localfile):
+ return 'file not downloaded'
+ if self.source_size:
+ local_size = os.stat(localfile)[6]
+ if local_size != self.source_size:
+ return 'downloaded file of incorrect size ' \
+ '(expected %d, got %d)' % (self.source_size, local_size)
+ if self.source_md5:
+ import md5
+ sum = md5.new()
+ fp = open(localfile, 'rb')
+ data = fp.read(4096)
+ while data:
+ sum.update(data)
+ data = fp.read(4096)
+ fp.close()
+ if sum.hexdigest() != self.source_md5:
+ return 'file MD5 sum incorrect (expected %s, got %s)' % \
+ (self.source_md5, sum.hexdigest())
+
+ def do_start(self, buildscript):
+ # check if jhbuild previously built it ...
+ checkoutdir = self.get_builddir(buildscript)
+ if buildscript.packagedb.check(self.name, self.version):
+ return (self.STATE_DONE, None, None)
+
+ return (self.STATE_DOWNLOAD, None, None)
+
+ def do_download(self, buildscript):
+ localfile = self.get_localfile(buildscript)
+ if not os.path.exists(buildscript.config.tarballdir):
+ os.makedirs(buildscript.config.tarballdir)
+ if not buildscript.config.nonetwork:
+ if self.check_localfile(buildscript) is not None:
+ # don't have a local copy
+ buildscript.set_action('Downloading', self, action_target=self.source_url)
+ has_wget = not os.system('which wget > /dev/null')
+ if not has_wget:
+ has_curl = not os.system('which curl > /dev/null')
+
+ if has_wget:
+ res = buildscript.execute(
+ ['wget', self.source_url, '-O', localfile])
+ elif has_curl:
+ res = buildscript.execute(
+ ['curl', self.source_url, '-o', localfile])
+ else:
+ raise FatalError("unable to find wget or curl")
+
+ status = self.check_localfile(buildscript)
+ if status is not None:
+ raise BuildStateError(status)
+ do_download.next_state = STATE_UNPACK
+ do_download.error_states = []
+
+ def do_unpack(self, buildscript):
+ localfile = self.get_localfile(buildscript)
+ srcdir = self.get_srcdir(buildscript)
+
+ buildscript.set_action('Unpacking', self)
+ if localfile.endswith('.bz2'):
+ buildscript.execute('bunzip2 -dc "%s" | tar xf -' % localfile,
+ cwd=buildscript.config.checkoutroot)
+ elif localfile.endswith('.gz'):
+ buildscript.execute('gunzip -dc "%s" | tar xf -' % localfile,
+ cwd=buildscript.config.checkoutroot)
+ else:
+ raise FatalError("don't know how to handle: %s" % localfile)
+
+ if not os.path.exists(srcdir):
+ raise BuildStateError('could not unpack tarball')
+ do_unpack.next_state = STATE_PATCH
+ do_unpack.error_states = []
+
+ def do_patch(self, buildscript):
+ for (patch, patchstrip) in self.patches:
+ patchfile = os.path.join(jhbuild_directory, 'patches', patch)
+ buildscript.set_action('Applying Patch', self, action_target=patch)
+ try:
+ buildscript.execute('patch -p%d < "%s"' % (patchstrip,
+ patchfile),
+ cwd=self.get_srcdir(buildscript))
+ except CommandError:
+ return (self.STATE_CONFIGURE, 'could not apply patch', [])
+
+ if buildscript.config.nobuild:
+ return (self.STATE_DONE, None, None)
+ else:
+ return (self.STATE_CONFIGURE, None, None)
+
+ def do_configure(self, buildscript):
+ builddir = self.get_builddir(buildscript)
+ if buildscript.config.buildroot and not os.path.exists(builddir):
+ os.makedirs(builddir)
+ buildscript.set_action('Configuring', self)
+ if buildscript.config.buildroot and self.supports_non_srcdir_builds:
+ cmd = self.get_srcdir(buildscript) + '/configure'
+ else:
+ cmd = './configure'
+ cmd += ' --prefix %s' % buildscript.config.prefix
+ if buildscript.config.use_lib64:
+ cmd += " --libdir '${exec_prefix}/lib64'"
+ cmd += ' %s' % self.autogenargs
+ buildscript.execute(cmd, cwd=builddir)
+ do_configure.next_state = STATE_BUILD
+ do_configure.error_states = []
+
+ def do_build(self, buildscript):
+ buildscript.set_action('Building', self)
+ cmd = '%s %s' % (os.environ.get('MAKE', 'make'), self.makeargs)
+ buildscript.execute(cmd, cwd=self.get_builddir(buildscript))
+ do_build.next_state = STATE_INSTALL
+ do_build.error_states = []
+
+ def do_install(self, buildscript):
+ buildscript.set_action('Installing', self)
+ cmd = '%s %s install' % (os.environ.get('MAKE', 'make'), self.makeargs)
+ error = None
+ buildscript.execute(cmd, cwd=self.get_builddir(buildscript))
+ buildscript.packagedb.add(self.name, self.version or '')
+ do_install.next_state = Package.STATE_DONE
+ do_install.error_states = []
+
+def parse_tarball(node, config, repositories, default_repo):
+ name = node.getAttribute('id')
+ version = node.getAttribute('version')
+ source_url = None
+ source_size = None
+ source_md5 = None
+ patches = []
+ checkoutdir = None
+ autogenargs = ''
+ makeargs = ''
+ supports_non_srcdir_builds = True
+ if node.hasAttribute('checkoutdir'):
+ checkoutdir = node.getAttribute('checkoutdir')
+ if node.hasAttribute('autogenargs'):
+ autogenargs = node.getAttribute('autogenargs')
+ if node.hasAttribute('makeargs'):
+ makeargs = node.getAttribute('makeargs')
+ if node.hasAttribute('supports-non-srcdir-builds'):
+ supports_non_srcdir_builds = \
+ (node.getAttribute('supports-non-srcdir-builds') != 'no')
+ for childnode in node.childNodes:
+ if childnode.nodeType != childnode.ELEMENT_NODE: continue
+ if childnode.nodeName == 'source':
+ source_url = childnode.getAttribute('href')
+ if childnode.hasAttribute('size'):
+ source_size = int(childnode.getAttribute('size'))
+ if childnode.hasAttribute('md5sum'):
+ source_md5 = childnode.getAttribute('md5sum')
+ elif childnode.nodeName == 'patches':
+ for patch in childnode.childNodes:
+ if patch.nodeType != patch.ELEMENT_NODE: continue
+ if patch.nodeName != 'patch': continue
+ patchfile = patch.getAttribute('file')
+ if patch.hasAttribute('strip'):
+ patchstrip = int(patch.getAttribute('strip'))
+ else:
+ patchstrip = 0
+ patches.append((patchfile, patchstrip))
+
+ autogenargs += ' ' + config.module_autogenargs.get(name,
+ config.autogenargs)
+ makeargs += ' ' + config.module_makeargs.get(name, makeargs)
+
+ # for tarballs, don't ever pass --enable-maintainer-mode
+ autogenargs = autogenargs.replace('--enable-maintainer-mode', '')
+
+ dependencies, after = get_dependencies(node)
+
+ return Tarball(name, version, source_url, source_size, source_md5,
+ patches, checkoutdir, autogenargs, makeargs,
+ dependencies, after,
+ supports_non_srcdir_builds=supports_non_srcdir_builds)
+
+register_module_type('tarball', parse_tarball)
diff --git a/build-scripts/jhbuild/jhbuild/moduleset.py b/build-scripts/jhbuild/jhbuild/moduleset.py
new file mode 100644
index 0000000..a01b033
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/moduleset.py
@@ -0,0 +1,247 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# moduleset.py: logic for running the build.
+#
+# 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
+
+from __future__ import generators
+
+import os
+import sys
+import urlparse
+
+from jhbuild.errors import UsageError, FatalError
+
+try:
+ import xml.dom.minidom
+except ImportError:
+ raise FatalError('Python xml packages are required but could not be found')
+
+from jhbuild import modtypes
+from jhbuild.versioncontrol import get_repo_type
+from jhbuild.utils import httpcache
+
+__all__ = [ 'load' ]
+
+class ModuleSet:
+ def __init__(self):
+ self.modules = {}
+ def add(self, module):
+ '''add a Module object to this set of modules'''
+ self.modules[module.name] = module
+
+ # functions for handling dep expansion
+ def __expand_mod_list(self, modlist, skip):
+ '''expands a list of names to a list of Module objects. Expands
+ dependencies. Does not handle loops in deps''' #"
+ ret = [self.modules[modname]
+ for modname in modlist
+ if modname not in skip]
+ i = 0
+ while i < len(ret):
+ depadd = []
+ for depmod in [self.modules[modname]
+ for modname in ret[i].dependencies]:
+ if depmod not in ret[:i+1] and depmod.name not in skip:
+ depadd.append(depmod)
+ if depadd:
+ ret[i:i] = depadd
+ else:
+ i = i + 1
+ i = 0
+ while i < len(ret):
+ if ret[i] in ret[:i]:
+ del ret[i]
+ else:
+ i = i + 1
+ return ret
+
+ def get_module_list(self, seed, skip=[]):
+ '''gets a list of module objects (in correct dependency order)
+ needed to build the modules in the seed list''' #"
+
+ if seed == 'all': seed = self.modules.keys()
+ try:
+ modules = [self.modules[mod] for mod in seed if mod not in skip]
+ except KeyError, e:
+ raise UsageError('module "%s" not found' % str(e))
+ # expand dependencies
+ i = 0
+ while i < len(modules):
+ depadd = []
+ for modname in modules[i].dependencies:
+ if self.modules.has_key(modname):
+ depmod = self.modules[modname]
+ else:
+ raise UsageError('dependent module "%s" not found'
+ % modname)
+ if depmod not in modules[:i+1] and depmod.name not in skip:
+ depadd.append(depmod)
+ if depadd:
+ modules[i:i] = depadd
+ else:
+ i = i + 1
+ # and now 'after' modules.
+ i = 0
+ while i < len(modules):
+ depadd = []
+ for modname in modules[i].dependencies + modules[i].after:
+ if self.modules.has_key(modname):
+ depmod = self.modules[modname]
+ else:
+ continue # don't care about unknown after modules
+ if depmod in modules and depmod not in modules[:i+1]:
+ depadd.append(depmod)
+ if depadd:
+ modules[i:i] = depadd
+ else:
+ i = i + 1
+ # remove duplicates
+ ret = []
+ for module in modules:
+ if module not in ret:
+ ret.append(module)
+ return ret
+
+ def get_full_module_list(self, skip=[]):
+ return self.get_module_list(self.modules.keys(), skip=skip)
+
+ def write_dot(self, modules=None, fp=sys.stdout):
+ from jhbuild.modtypes import MetaModule
+ from jhbuild.modtypes.autotools import AutogenModule
+ from jhbuild.modtypes.tarball import Tarball
+
+ if modules is None:
+ modules = self.modules.keys()
+ inlist = {}
+ for module in modules:
+ inlist[module] = None
+
+ fp.write('digraph "G" {\n'
+ ' fontsize = 8;\n'
+ ' ratio = auto;\n')
+ while modules:
+ modname = modules[0]
+ mod = self.modules[modname]
+ if isinstance(mod, AutogenModule):
+ label = mod.name
+ if mod.get_revision():
+ label += '\\n(%s)' % mod.get_revision()
+ attrs = '[color="lightskyblue",style="filled",label="%s"]' % \
+ label
+ elif isinstance(mod, MetaModule):
+ attrs = '[color="lightcoral",style="filled",' \
+ 'label="%s"]' % mod.name
+ elif isinstance(mod, Tarball):
+ attrs = '[color="lightgoldenrod",style="filled",' \
+ 'label="%s\\n%s"]' % (mod.name, mod.version)
+ fp.write(' "%s" %s;\n' % (modname, attrs))
+ del modules[0]
+
+ for dep in self.modules[modname].dependencies:
+ fp.write(' "%s" -> "%s";\n' % (modname, dep))
+ if not inlist.has_key(dep):
+ modules.append(dep)
+ inlist[dep] = None
+ fp.write('}\n')
+
+def load(config, uri=None):
+ if uri is not None:
+ modulesets = [ uri ]
+ elif type(config.moduleset) == type([]):
+ modulesets = config.moduleset
+ else:
+ modulesets = [ config.moduleset ]
+ ms = ModuleSet()
+ for uri in modulesets:
+ if '/' not in uri:
+ uri = os.path.join(os.path.dirname(__file__), '..', 'modulesets',
+ uri + '.modules')
+ ms.modules.update(_parse_module_set(config, uri).modules)
+ return ms
+
+def _child_elements(parent):
+ for node in parent.childNodes:
+ if node.nodeType == node.ELEMENT_NODE:
+ yield node
+
+def _child_elements_matching(parent, names):
+ for node in parent.childNodes:
+ if node.nodeType == node.ELEMENT_NODE and node.nodeName in names:
+ yield node
+
+def _parse_module_set(config, uri):
+ try:
+ filename = httpcache.load(uri, nonetwork=config.nonetwork)
+ except Exception, e:
+ raise FatalError('could not download %s: %s' % (uri, str(e)))
+ document = xml.dom.minidom.parse(filename)
+
+ assert document.documentElement.nodeName == 'moduleset'
+ moduleset = ModuleSet()
+
+ # load up list of repositories
+ repositories = {}
+ default_repo = None
+ for node in _child_elements_matching(
+ document.documentElement, ['repository', 'cvsroot', 'svnroot',
+ 'arch-archive']):
+ name = node.getAttribute('name')
+ if node.getAttribute('default') == 'yes':
+ default_repo = name
+ if node.nodeName == 'repository':
+ repo_type = node.getAttribute('type')
+ repo = get_repo_type(repo_type)
+ kws = {}
+ for attr in repo.init_xml_attrs:
+ if node.hasAttribute(attr):
+ kws[attr.replace('-', '_')] = node.getAttribute(attr)
+ repo_class = get_repo_type(repo_type)
+ repositories[name] = repo_class(config, name, **kws)
+ if node.nodeName == 'cvsroot':
+ cvsroot = node.getAttribute('root')
+ if node.hasAttribute('password'):
+ password = node.getAttribute('password')
+ else:
+ password = None
+ repo_type = get_repo_type('cvs')
+ repositories[name] = repo_type(config, name,
+ cvsroot=cvsroot, password=password)
+ elif node.nodeName == 'svnroot':
+ svnroot = node.getAttribute('href')
+ repo_type = get_repo_type('svn')
+ repositories[name] = repo_type(config, name, href=svnroot)
+ elif node.nodeName == 'arch-archive':
+ archive_uri = node.getAttribute('href')
+ repo_type = get_repo_type('arch')
+ repositories[name] = repo_type(config, name,
+ archive=name, href=archive_uri)
+
+ # and now module definitions
+ for node in _child_elements(document.documentElement):
+ if node.nodeName == 'include':
+ href = node.getAttribute('href')
+ inc_uri = urlparse.urljoin(uri, href)
+ inc_moduleset = _parse_module_set(config, inc_uri)
+ moduleset.modules.update(inc_moduleset.modules)
+ elif node.nodeName in ['repository', 'cvsroot', 'svnroot',
+ 'arch-archive']:
+ pass
+ else:
+ moduleset.add(modtypes.parse_xml_node(node, config,
+ repositories, default_repo))
+
+ return moduleset
diff --git a/build-scripts/jhbuild/jhbuild/monkeypatch.py b/build-scripts/jhbuild/jhbuild/monkeypatch.py
new file mode 100644
index 0000000..18d0ec9
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/monkeypatch.py
@@ -0,0 +1,214 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# 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
+
+# extras not found in old versions of Python
+
+from __future__ import generators
+
+import sys
+
+# Python < 2.2.1 lacks True and False constants
+import __builtin__
+if not hasattr(__builtin__, 'True'):
+ __builtin__.True = (1 == 1)
+ __builtin__.False = (1 != 1)
+
+# Python < 2.3 lacks enumerate() builtin
+if not hasattr(__builtin__, 'enumerate'):
+ def enumerate(iterable):
+ index = 0
+ for item in iterable:
+ yield (index, item)
+ index += 1
+ __builtin__.enumerate = enumerate
+
+# Python < 2.3 lacks optparse module
+try:
+ import optparse
+except ImportError:
+ from jhbuild.cut_n_paste import optparse
+ sys.modules['optparse'] = optparse
+
+# Python < 2.3 lacks locale.getpreferredencoding() function
+import locale
+if not hasattr(locale, 'getpreferredencoding'):
+ try:
+ locale.CODESET
+ except NameError:
+ # Fall back to parsing environment variables :-(
+ def getpreferredencoding(do_setlocale = True):
+ """Return the charset that the user is likely using,
+ by looking at environment variables."""
+ return locale.getdefaultlocale()[1]
+ else:
+ def getpreferredencoding(do_setlocale = True):
+ """Return the charset that the user is likely using,
+ according to the system configuration."""
+ if do_setlocale:
+ oldloc = locale.setlocale(locale.LC_CTYPE)
+ locale.setlocale(locale.LC_CTYPE, "")
+ result = locale.nl_langinfo(locale.CODESET)
+ locale.setlocale(locale.LC_CTYPE, oldloc)
+ return result
+ else:
+ return locale.nl_langinfo(locale.CODESET)
+
+# Python < 2.4 lacks reversed() builtin
+if not hasattr(__builtin__, 'reversed'):
+ def reversed(l):
+ l = list(l)
+ l.reverse()
+ return iter(l)
+ __builtin__.reversed = reversed
+
+# Python < 2.4 lacks string.Template class
+import string
+if not hasattr(string, 'Template'):
+ import re as _re
+
+ class _multimap:
+ """Helper class for combining multiple mappings.
+
+ Used by .{safe_,}substitute() to combine the mapping and keyword
+ arguments.
+ """
+ def __init__(self, primary, secondary):
+ self._primary = primary
+ self._secondary = secondary
+
+ def __getitem__(self, key):
+ try:
+ return self._primary[key]
+ except KeyError:
+ return self._secondary[key]
+
+
+ class _TemplateMetaclass(type):
+ pattern = r"""
+ %(delim)s(?:
+ (?P<escaped>%(delim)s) | # Escape sequence of two delimiters
+ (?P<named>%(id)s) | # delimiter and a Python identifier
+ {(?P<braced>%(id)s)} | # delimiter and a braced identifier
+ (?P<invalid>) # Other ill-formed delimiter exprs
+ )
+ """
+
+ def __init__(cls, name, bases, dct):
+ super(_TemplateMetaclass, cls).__init__(name, bases, dct)
+ if 'pattern' in dct:
+ pattern = cls.pattern
+ else:
+ pattern = _TemplateMetaclass.pattern % {
+ 'delim' : _re.escape(cls.delimiter),
+ 'id' : cls.idpattern,
+ }
+ cls.pattern = _re.compile(pattern, _re.IGNORECASE | _re.VERBOSE)
+
+
+ class Template:
+ """A string class for supporting $-substitutions."""
+ __metaclass__ = _TemplateMetaclass
+ __module__ = 'string'
+
+ delimiter = '$'
+ idpattern = r'[_a-z][_a-z0-9]*'
+
+ def __init__(self, template):
+ self.template = template
+
+ # Search for $$, $identifier, ${identifier}, and any bare $'s
+
+ def _invalid(self, mo):
+ i = mo.start('invalid')
+ lines = self.template[:i].splitlines(True)
+ if not lines:
+ colno = 1
+ lineno = 1
+ else:
+ colno = i - len(''.join(lines[:-1]))
+ lineno = len(lines)
+ raise ValueError('Invalid placeholder in string: line %d, col %d' %
+ (lineno, colno))
+
+ def substitute(self, *args, **kws):
+ if len(args) > 1:
+ raise TypeError('Too many positional arguments')
+ if not args:
+ mapping = kws
+ elif kws:
+ mapping = _multimap(kws, args[0])
+ else:
+ mapping = args[0]
+ # Helper function for .sub()
+ def convert(mo):
+ # Check the most common path first.
+ named = mo.group('named') or mo.group('braced')
+ if named is not None:
+ val = mapping[named]
+ # We use this idiom instead of str() because the latter will
+ # fail if val is a Unicode containing non-ASCII characters.
+ return '%s' % val
+ if mo.group('escaped') is not None:
+ return self.delimiter
+ if mo.group('invalid') is not None:
+ self._invalid(mo)
+ raise ValueError('Unrecognized named group in pattern',
+ self.pattern)
+ return self.pattern.sub(convert, self.template)
+
+ def safe_substitute(self, *args, **kws):
+ if len(args) > 1:
+ raise TypeError('Too many positional arguments')
+ if not args:
+ mapping = kws
+ elif kws:
+ mapping = _multimap(kws, args[0])
+ else:
+ mapping = args[0]
+ # Helper function for .sub()
+ def convert(mo):
+ named = mo.group('named')
+ if named is not None:
+ try:
+ # We use this idiom instead of str() because the latter
+ # will fail if val is a Unicode containing non-ASCII
+ return '%s' % mapping[named]
+ except KeyError:
+ return self.delimiter + named
+ braced = mo.group('braced')
+ if braced is not None:
+ try:
+ return '%s' % mapping[braced]
+ except KeyError:
+ return self.delimiter + '{' + braced + '}'
+ if mo.group('escaped') is not None:
+ return self.delimiter
+ if mo.group('invalid') is not None:
+ return self.delimiter
+ raise ValueError('Unrecognized named group in pattern',
+ self.pattern)
+ return self.pattern.sub(convert, self.template)
+
+ string.Template = Template
+
+# Python < 2.4 lacks subprocess module
+try:
+ import subprocess
+except ImportError:
+ from jhbuild.cut_n_paste import subprocess
+ sys.modules['subprocess'] = subprocess
+
diff --git a/build-scripts/jhbuild/jhbuild/utils/.cvsignore b/build-scripts/jhbuild/jhbuild/utils/.cvsignore
new file mode 100644
index 0000000..0d20b64
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/utils/.cvsignore
@@ -0,0 +1 @@
+*.pyc
diff --git a/build-scripts/jhbuild/jhbuild/utils/__init__.py b/build-scripts/jhbuild/jhbuild/utils/__init__.py
new file mode 100644
index 0000000..331710a
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/utils/__init__.py
@@ -0,0 +1,18 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2004 James Henstridge
+#
+# __init__.py: module for miscelaneous utility functions
+#
+# 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
diff --git a/build-scripts/jhbuild/jhbuild/utils/cmds.py b/build-scripts/jhbuild/jhbuild/utils/cmds.py
new file mode 100644
index 0000000..b216ff5
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/utils/cmds.py
@@ -0,0 +1,201 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# cmds.py: utilities for running commands and examining their output
+#
+# 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
+
+import os
+import select
+import subprocess
+from signal import SIGINT
+from jhbuild.errors import CommandError
+
+def get_output(cmd, cwd=None, extra_env=None):
+ '''Return the output (stdout and stderr) from the command.
+
+ If the extra_env dictionary is not empty, then it is used to
+ update the environment in the child process.
+
+ Raises CommandError if the command exited abnormally or had a non-zero
+ error code.
+ '''
+ kws = {}
+ if isinstance(cmd, (str, unicode)):
+ kws['shell'] = True
+ if cwd is not None:
+ kws['cwd'] = cwd
+ if extra_env is not None:
+ kws['env'] = os.environ.copy()
+ kws['env'].update(extra_env)
+ try:
+ p = subprocess.Popen(cmd,
+ close_fds=True,
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ **kws)
+ except OSError, e:
+ raise CommandError(str(e))
+ stdout, stderr = p.communicate()
+ if p.returncode != 0:
+ raise CommandError('Error running %s' % cmd, p.returncode)
+ return stdout
+
+class Pipeline(subprocess.Popen):
+ '''A class that wraps a sequence of subprocess.Popen() objects
+ connected together in a pipeline.
+
+ Note that if stderr=subprocess.STDOUT, the stderr of intermediate
+ children is not passed to the stdin of the next child. Instead,
+ it is mixed in with the stdout of the final child.
+ '''
+ def __init__(self, commands, bufsize=0,
+ stdin=None, stdout=None, stderr=None,
+ cwd=None, env=None, universal_newlines=False):
+ '''Commands is a list of argument lists to invoke'''
+ self.universal_newlines = universal_newlines
+ if universal_newlines:
+ readmode = 'rU'
+ else:
+ readmode = 'rb'
+ c2pwrite = None
+ errwrite = None
+ self.stdin = None
+ self.stdout = None
+ self.stderr = None
+ if stdout == subprocess.PIPE:
+ c2pread, c2pwrite = os.pipe()
+ stdout = c2pwrite
+ self.stdout = os.fdopen(c2pread, readmode, bufsize)
+ if stderr == subprocess.PIPE:
+ errread, errwrite = os.pipe()
+ stderr = errwrite
+ self.stderr = os.fdopen(errread, readmode, bufsize)
+ elif stderr == subprocess.STDOUT:
+ stderr = stdout
+
+ self.children = []
+ close_stdin = False
+ for index, cmd in enumerate(commands):
+ first_command = (index == 0)
+ more_commands = index + 1 < len(commands)
+
+ if more_commands:
+ c2cread, c2cwrite = os.pipe()
+ else:
+ c2cwrite = stdout
+
+ self.children.append(
+ subprocess.Popen(cmd, shell=isinstance(cmd, (str, unicode)),
+ bufsize=bufsize, close_fds=True,
+ cwd=cwd, env=env,
+ stdin=stdin,
+ stdout=c2cwrite,
+ stderr=stderr,
+ universal_newlines=universal_newlines)
+ )
+ if close_stdin:
+ os.close(stdin)
+ close_stdin = False
+ if more_commands:
+ os.close(c2cwrite)
+ stdin = c2cread
+ close_stdin = True
+ if close_stdin:
+ os.close(stdin)
+ if c2pwrite:
+ os.close(c2pwrite)
+ if errwrite:
+ os.close(errwrite)
+
+ self.stdin = self.children[0].stdin
+ self.returncode = None
+
+ def poll(self):
+ for child in self.children:
+ returncode = child.poll()
+ if returncode is None:
+ break
+ else:
+ self.returncode = returncode
+ return self.returncode
+
+ def wait(self):
+ for child in self.children:
+ returncode = child.wait()
+ self.returncode = returncode
+ return self.returncode
+
+def spawn_child(command, use_pipe=False,
+ cwd=None, env=None,
+ stdin=None, stdout=None, stderr=None):
+ if use_pipe:
+ p = Pipeline(command, cwd=cwd, env=env,
+ stdin=stdin, stdout=stdout, stderr=stderr)
+ else:
+ p = subprocess.Popen(command, shell=isinstance(command, (str,unicode)),
+ close_fds=True, cwd=cwd, env=env,
+ stdin=stdin, stdout=stdout, stderr=stderr)
+ return p
+
+def pprint_output(pipe, format_line):
+ '''Process the output of the subprocess and pass lines to the
+ format_line function for formatting. The first argument passed to
+ the format_line function is the line of text. The second argument
+ is True if the line was read from the stderr stream.'''
+ read_set = []
+ if pipe.stdout:
+ read_set.append(pipe.stdout)
+ if pipe.stderr:
+ read_set.append(pipe.stderr)
+
+ out_data = err_data = ''
+ try:
+ while read_set:
+ rlist, wlist, xlist = select.select(read_set, [], [])
+
+ if pipe.stdout in rlist:
+ out_chunk = os.read(pipe.stdout.fileno(), 1024)
+ if out_chunk == '':
+ pipe.stdout.close()
+ read_set.remove(pipe.stdout)
+ out_data += out_chunk
+ while '\n' in out_data:
+ pos = out_data.find('\n')
+ format_line(out_data[:pos+1], False)
+ out_data = out_data[pos+1:]
+
+ if pipe.stderr in rlist:
+ err_chunk = os.read(pipe.stderr.fileno(), 1024)
+ if err_chunk == '':
+ pipe.stderr.close()
+ read_set.remove(pipe.stderr)
+ err_data += err_chunk
+ while '\n' in err_data:
+ pos = err_data.find('\n')
+ format_line(err_data[:pos+1], True)
+ err_data = err_data[pos+1:]
+
+ select.select([],[],[],.1) # give a little time for buffers to fill
+ except KeyboardInterrupt:
+ # interrupt received. Send SIGINT to child process.
+ try:
+ os.kill(pipe.pid, SIGINT)
+ except OSError:
+ # process might already be dead.
+ pass
+
+ return pipe.wait()
diff --git a/build-scripts/jhbuild/jhbuild/utils/httpcache.py b/build-scripts/jhbuild/jhbuild/utils/httpcache.py
new file mode 100644
index 0000000..20c1b2d
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/utils/httpcache.py
@@ -0,0 +1,230 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# httpcache.py: a simple HTTP cache
+#
+# 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
+
+'''Very simple minded class that can be used to maintain a cache of files
+downloaded from web servers. It is designed to reduce load on web servers,
+and draws ideas from feedparser.py. Strategies include:
+ - If a resource has been checked in the last 6 hours, consider it current.
+ - support gzip transfer encoding.
+ - send If-Modified-Since and If-None-Match headers when validating a
+ resource to reduce downloads when the file has not changed.
+ - honour Expires headers returned by server. If no expiry time is
+ given, it defaults to 6 hours.
+'''
+
+import os
+import urllib2
+import urlparse
+import time
+import rfc822
+import StringIO
+try:
+ import gzip
+except ImportError:
+ gzip = None
+
+try:
+ import xml.dom.minidom
+except ImportError:
+ raise SystemExit, 'Python xml packages are required but could not be found'
+
+def _parse_isotime(string):
+ if string[-1] != 'Z':
+ return time.mktime(time.strptime(string, '%Y-%m-%dT%H:%M:%S'))
+ tm = time.strptime(string, '%Y-%m-%dT%H:%M:%SZ')
+ return time.mktime(tm[:8] + (0,)) - time.timezone
+
+def _format_isotime(tm):
+ return time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime(tm))
+
+def _parse_date(date):
+ tm = rfc822.parsedate_tz(date)
+ if tm:
+ return rfc822.mktime_tz(tm)
+ return 0
+
+class CacheEntry:
+ def __init__(self, uri, local, modified, etag, expires=0):
+ self.uri = uri
+ self.local = local
+ self.modified = modified
+ self.etag = etag
+ self.expires = expires
+
+class Cache:
+ cachedir = os.path.join(os.environ['HOME'], '.jhbuild', 'cache')
+ # default to a 6 hour expiry time.
+ default_age = 6 * 60 * 60
+
+ def __init__(self, cachedir=None):
+ if cachedir:
+ self.cachedir = cachedir
+ if not os.path.exists(self.cachedir):
+ os.makedirs(self.cachedir)
+ self.entries = {}
+
+ def read_cache(self):
+ self.entries = {}
+ cindex = os.path.join(self.cachedir, 'index.xml')
+ try:
+ document = xml.dom.minidom.parse(cindex)
+ except:
+ return # treat like an empty cache
+ if document.documentElement.nodeName != 'cache':
+ document.unlink()
+ return # doesn't look like a cache
+
+ for node in document.documentElement.childNodes:
+ if node.nodeType != node.ELEMENT_NODE: continue
+ if node.nodeName != 'entry': continue
+ uri = node.getAttribute('uri')
+ local = str(node.getAttribute('local'))
+ if node.hasAttribute('modified'):
+ modified = node.getAttribute('modified')
+ else:
+ modified = None
+ if node.hasAttribute('etag'):
+ etag = node.getAttribute('etag')
+ else:
+ etag = None
+ expires = _parse_isotime(node.getAttribute('expires'))
+ # only add to cache list if file actually exists.
+ if os.path.exists(os.path.join(self.cachedir, local)):
+ self.entries[uri] = CacheEntry(uri, local, modified,
+ etag, expires)
+ document.unlink()
+
+ def write_cache(self):
+ cindex = os.path.join(self.cachedir, 'index.xml')
+
+
+ document = xml.dom.minidom.Document()
+ document.appendChild(document.createElement('cache'))
+ node = document.createTextNode('\n')
+ document.documentElement.appendChild(node)
+ for uri in self.entries.keys():
+ entry = self.entries[uri]
+ node = document.createElement('entry')
+ node.setAttribute('uri', entry.uri)
+ node.setAttribute('local', entry.local)
+ if entry.modified:
+ node.setAttribute('modified', entry.modified)
+ if entry.etag:
+ node.setAttribute('etag', entry.etag)
+ node.setAttribute('expires', _format_isotime(entry.expires))
+ document.documentElement.appendChild(node)
+
+ node = document.createTextNode('\n')
+ document.documentElement.appendChild(node)
+
+ document.writexml(open(cindex, 'w'))
+ document.unlink()
+
+ def _make_filename(self, uri):
+ '''picks a unique name for a new entry in the cache.
+ Very simplistic.'''
+ # get the basename from the URI
+ parts = urlparse.urlparse(uri, allow_fragments=False)
+ base = parts[2].split('/')[-1]
+ if not base: base = 'index.html'
+
+ is_unique = False
+ while not is_unique:
+ is_unique = True
+ for uri in self.entries.keys():
+ if self.entries[uri].local == base:
+ is_unique = False
+ break
+ if not is_unique:
+ base = base + '-'
+ return base
+
+ def load(self, uri, nonetwork=False):
+ '''Downloads the file associated with the URI, and returns a local
+ file name for contents.'''
+ # pass file URIs straight through -- no need to cache them
+ parts = urlparse.urlparse(uri)
+ if parts[0] in ('', 'file'):
+ return parts[2]
+
+ now = time.time()
+
+ # is the file cached and not expired?
+ self.read_cache()
+ entry = self.entries.get(uri)
+ if entry:
+ if (nonetwork or now <= entry.expires):
+ return os.path.join(self.cachedir, entry.local)
+
+ if nonetwork:
+ raise RuntimeError('file not in cache, but not allowed '
+ 'to check network')
+
+ request = urllib2.Request(uri)
+ if gzip:
+ request.add_header('Accept-encoding', 'gzip')
+ if entry:
+ if entry.modified:
+ request.add_header('If-Modified-Since', entry.modified)
+ if entry.etag:
+ request.add_header('If-None-Match', entry.etag)
+
+ try:
+ response = urllib2.urlopen(request)
+
+ # get data, and gunzip it if it is encoded
+ data = response.read()
+ if gzip and response.headers.get('Content-Encoding', '') == 'gzip':
+ try:
+ data = gzip.GzipFile(fileobj=StringIO.StringIO(data)).read()
+ except:
+ data = ''
+
+ expires = response.headers.get('Expires')
+
+ # add new content to cache
+ entry = CacheEntry(uri, self._make_filename(uri),
+ response.headers.get('Last-Modified'),
+ response.headers.get('ETag'))
+ filename = os.path.join(self.cachedir, entry.local)
+ open(filename, 'wb').write(data)
+ except urllib2.HTTPError, e:
+ if e.code == 304: # not modified; update validated
+ expires = e.hdrs.get('Expires')
+ filename = os.path.join(self.cachedir, entry.local)
+ else:
+ raise
+
+ # set expiry date
+ entry.expires = _parse_date(expires)
+ if entry.expires <= now: # ignore expiry times that have already passed
+ entry.expires = now + self.default_age
+
+ # save cache
+ self.entries[uri] = entry
+ self.write_cache()
+ return filename
+
+_cache = None
+def load(uri, nonetwork=False):
+ '''Downloads the file associated with the URI, and returns a local
+ file name for contents.'''
+ global _cache
+ if not _cache: _cache = Cache()
+ return _cache.load(uri, nonetwork=nonetwork)
diff --git a/build-scripts/jhbuild/jhbuild/utils/packagedb.py b/build-scripts/jhbuild/jhbuild/utils/packagedb.py
new file mode 100644
index 0000000..cbf4e80
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/utils/packagedb.py
@@ -0,0 +1,97 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# packagedb.py - a registry of installed packages
+#
+# 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
+
+import time
+try:
+ import xml.dom.minidom
+except ImportError:
+ raise SystemExit, 'Python xml packages are required but could not be found'
+
+def _parse_isotime(string):
+ if string[-1] != 'Z':
+ return time.mktime(time.strptime(string, '%Y-%m-%dT%H:%M:%S'))
+ tm = time.strptime(string, '%Y-%m-%dT%H:%M:%SZ')
+ return time.mktime(tm[:8] + (0,)) - time.timezone
+
+def _format_isotime(tm):
+ return time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime(tm))
+
+class PackageDB:
+ def __init__(self, dbfile):
+ self.dbfile = dbfile
+ self._read_cache()
+
+ def _read_cache(self):
+ self.entries = {}
+ try:
+ document = xml.dom.minidom.parse(self.dbfile)
+ except:
+ return # treat as empty cache
+ if document.documentElement.nodeName != 'packagedb':
+ document.unlink()
+ return # doesn't look like a cache
+ for node in document.documentElement.childNodes:
+ if node.nodeType != node.ELEMENT_NODE: continue
+ if node.nodeName != 'entry': continue
+ package = node.getAttribute('package')
+ version = node.getAttribute('version')
+ installed = _parse_isotime(node.getAttribute('installed'))
+ self.entries[package] = (version, installed)
+ document.unlink()
+
+ def _write_cache(self):
+ document = xml.dom.minidom.Document()
+ document.appendChild(document.createElement('packagedb'))
+ node = document.createTextNode('\n')
+ document.documentElement.appendChild(node)
+ for package in self.entries:
+ version, installed = self.entries[package]
+ node = document.createElement('entry')
+ node.setAttribute('package', package)
+ node.setAttribute('version', version)
+ node.setAttribute('installed', _format_isotime(installed))
+ document.documentElement.appendChild(node)
+
+ node = document.createTextNode('\n')
+ document.documentElement.appendChild(node)
+
+ document.writexml(open(self.dbfile, 'w'))
+ document.unlink()
+
+ def add(self, package, version):
+ '''Add a module to the install cache.'''
+ now = time.time()
+ self.entries[package] = (version, now)
+ self._write_cache()
+
+ def check(self, package, version=None):
+ '''Check whether a particular module is installed.'''
+ if not self.entries.has_key(package): return False
+ p_version, p_installed = self.entries[package]
+ if version:
+ if version != p_version: return False
+ return True
+
+ def installdate(self, package, version=None):
+ '''Get the install date for a particular module.'''
+ if not self.entries.has_key(package): return None
+ p_version, p_installed = self.entries[package]
+ if version:
+ if version != p_version: return none
+ return p_installed
diff --git a/build-scripts/jhbuild/jhbuild/utils/trayicon.py b/build-scripts/jhbuild/jhbuild/utils/trayicon.py
new file mode 100644
index 0000000..d1ce142
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/utils/trayicon.py
@@ -0,0 +1,70 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# trayicon.py: simple wrapper for zenity based tray icons
+#
+# 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
+
+import sys
+import os
+import subprocess
+
+class TrayIcon:
+ def __init__(self):
+ self._run_zenity()
+ def _run_zenity(self):
+ # run zenity with stdout and stderr directed to /dev/null
+ def preexec():
+ null = open('/dev/null', 'w')
+ try:
+ os.dup2(null.fileno(), sys.stdout.fileno())
+ os.dup2(null.fileno(), sys.stderr.fileno())
+ finally:
+ null.close()
+ os.setsid()
+ try:
+ self.proc = subprocess.Popen(['zenity', '--notification',
+ '--listen'],
+ close_fds=True,
+ preexec_fn=preexec,
+ stdin=subprocess.PIPE)
+ except (OSError, IOError):
+ self.proc = None
+
+ def close(self):
+ status = None
+ if self.proc:
+ self.proc.stdin.close()
+ status = self.proc.wait()
+ self.proc = None
+ return status
+
+ def _send_cmd(self, cmd):
+ if not self.proc: return
+ try:
+ self.proc.stdin.write(cmd)
+ self.proc.stdin.flush()
+ except (IOError, OSError), err:
+ self.close()
+ def set_icon(self, icon):
+ self._send_cmd('icon: %s\n' % icon)
+ def set_tooltip(self, tooltip):
+ self._send_cmd('tooltip: %s\n' % tooltip)
+ def set_visible(self, visible):
+ if visible:
+ visible = 'true'
+ else:
+ visible = 'false'
+ self._send_cmd('visible: %s\n' % visible)
diff --git a/build-scripts/jhbuild/jhbuild/versioncontrol/.cvsignore b/build-scripts/jhbuild/jhbuild/versioncontrol/.cvsignore
new file mode 100644
index 0000000..5da7ef5
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/versioncontrol/.cvsignore
@@ -0,0 +1,3 @@
+*.pyc
+*.pyo
+
diff --git a/build-scripts/jhbuild/jhbuild/versioncontrol/__init__.py b/build-scripts/jhbuild/jhbuild/versioncontrol/__init__.py
new file mode 100644
index 0000000..4a5bc01
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/versioncontrol/__init__.py
@@ -0,0 +1,103 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# __init__.py: infrastructure for plugging in version control systems
+#
+# 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
+
+__all__ = [
+ 'Repository',
+ 'Branch',
+ 'register_repo_type',
+ 'get_repo_type',
+ ]
+
+__metaclass__ = type
+
+from jhbuild.errors import FatalError, BuildStateError
+
+
+class Repository:
+ """An abstract class representing a collection of modules."""
+
+ # Attributes expected on the <repository> element for this type.
+ # String values are passed as keyword arguments to the constructor.
+ init_xml_attrs = []
+
+ def __init__(self, config, name):
+ self.config = config
+ self.name = name
+
+ # Attributes expected on the <branch> element for this type.
+ # String values are passed as keyword arguments to the branch() method.
+ branch_xml_attrs = []
+
+ def branch(self, name, **kwargs):
+ """Returns a Branch object based on the given arguments."""
+ raise NotImplementedError
+
+ def branch_from_xml(self, name, branchnode):
+ kws = {}
+ for attr in self.branch_xml_attrs:
+ if branchnode.hasAttribute(attr):
+ kws[attr.replace('-', '_')] = branchnode.getAttribute(attr)
+ return self.branch(name, **kws)
+
+
+class Branch:
+ """An abstract class representing a branch in a repository."""
+
+ def __init__(self):
+ raise NotImplementedError
+
+ def srcdir(self):
+ """Return the directory where this branch is checked out."""
+ raise NotImplementedError
+ srcdir = property(srcdir)
+
+ def branchname(self):
+ """Return an identifier for this branch or None."""
+ raise NotImplementedError
+ branchname = property(branchname)
+
+ def checkout(self, buildscript):
+ """Checkout or update the given source directory.
+
+ May raise CommandError or BuildStateError if a problem occurrs.
+ """
+ raise NotImplementedError
+
+ def force_checkout(self, buildscript):
+ """A more agressive version of checkout()."""
+ raise BuildStateError('force_checkout not implemented')
+
+ def tree_id(self):
+ """A string identifier for the state of the working tree."""
+ raise NotImplementedError
+
+
+_repo_types = {}
+def register_repo_type(name, repo_class):
+ _repo_types[name] = repo_class
+
+def get_repo_type(name):
+ if name not in _repo_types:
+ try:
+ __import__('jhbuild.versioncontrol.%s' % name)
+ except ImportError:
+ pass
+ if name not in _repo_types:
+ raise FatalError('unknown repository type %s' % name)
+ return _repo_types[name]
diff --git a/build-scripts/jhbuild/jhbuild/versioncontrol/arch.py b/build-scripts/jhbuild/jhbuild/versioncontrol/arch.py
new file mode 100644
index 0000000..5f2b8bb
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/versioncontrol/arch.py
@@ -0,0 +1,171 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# arch.py: some code to handle various arch operations
+#
+# 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
+
+__metaclass__ = type
+__all__ = []
+
+import os, sys
+
+from jhbuild.errors import FatalError, BuildStateError
+from jhbuild.utils.cmds import get_output
+from jhbuild.versioncontrol import Repository, Branch, register_repo_type
+
+def is_registered(archive):
+ location = os.path.join(os.environ['HOME'], '.arch-params',
+ '=locations', archive)
+ return os.path.exists(location)
+
+def register(archive, uri):
+ if not is_registered(archive):
+ assert uri is not None, 'can not register archive without uri'
+ res = os.system('baz register-archive %s' % uri)
+ if res != 0:
+ raise jhbuild.errors.FatalError('could not register archive %s'
+ % archive)
+
+def get_version(directory):
+ '''Gets the tree version for a particular directory.'''
+ data = get_output(['baz', 'tree-version', '-d', directory])
+ archive, version = data.strip().split('/')
+ return archive, version
+
+def split_name(version):
+ '''Returns an (archive, version) pair for the string passed in. If
+ no archive is mentioned, use the default archive name.'''
+ if '/' in version:
+ (archive, version) = version.split('/')
+ else:
+ # no archive specified -- use default.
+ archive = open(os.path.join(os.environ['HOME'], '.arch-params',
+ '=default-archive'), 'r').read().strip()
+ return (archive, version)
+
+
+class ArchRepository(Repository):
+ """A class representing an Arch archive."""
+
+ init_xml_attrs = ['archive', 'href']
+
+ def __init__(self, config, name, archive, href=None):
+ Repository.__init__(self, config, name)
+ self.archive = archive
+ self.href = href
+
+ def _ensure_registered(self):
+ # has the archive been registered?
+ location = os.path.join(os.environ['HOME'], '.arch-params',
+ '=locations', self.archive)
+ is_registered = os.path.exists(location)
+ if is_registered:
+ return
+
+ if self.href is None:
+ raise BuildStateError('archive %s not registered' % self.href)
+ res = os.system('baz register-archive %s' % self.href)
+ if res != 0:
+ raise BuildStateError('could not register archive %s'
+ % self.archive)
+
+ branch_xml_attrs = ['module', 'checkoutdir']
+
+ def branch(self, name, module=None, checkoutdir=None):
+ if name in self.config.branches:
+ module = self.config.branches[module]
+ else:
+ if module is None:
+ module = name
+ module = '%s/%s' % (self.archive, module)
+ return ArchBranch(self, module, checkoutdir)
+
+
+class ArchBranch(Branch):
+ """A class representing an Arch branch"""
+
+ def __init__(self, repository, module, checkoutdir):
+ self.repository = repository
+ self.config = repository.config
+ self.module = module
+ self.checkoutdir = checkoutdir
+
+ def srcdir(self):
+ if self.checkoutdir:
+ return os.path.join(self.config.checkoutroot, self.checkoutdir)
+ else:
+ return os.path.join(self.config.checkoutroot,
+ os.path.basename(self.module))
+ srcdir = property(srcdir)
+
+ def branchname(self):
+ return self.module
+ branchname = property(branchname)
+
+ def _checkout(self, buildscript):
+ # if the archive name hasn't been overridden, ensure that it
+ # has been registered.
+ archive, version = split_name(self.module)
+ if archive == self.repository.archive:
+ self.repository._ensure_registered()
+
+ cmd = ['baz', 'get', self.module]
+
+ if checkoutdir:
+ cmd.append(checkoutdir)
+
+ if date:
+ raise BuildStageError('date based checkout not yet supported\n')
+
+ buildscript.execute(cmd, 'arch', cwd=self.config.checkoutroot)
+
+ def _update(self, buildscript):
+ '''Perform a "baz update" (or possibly a checkout)'''
+ # if the archive name hasn't been overridden, ensure that it
+ # has been registered.
+ archive, version = split_name(self.module)
+ if archive == self.repository.archive:
+ self.repository._ensure_registered()
+
+ if date:
+ raise BuildStageError('date based checkout not yet supported\n')
+
+ archive, version = split_name(self.module)
+ # how do you move a working copy to another branch?
+ wc_archive, wc_version = get_version(self.srcdir)
+ if (wc_archive, wc_version) != (archive, version):
+ cmd = ['baz', 'switch', self.module]
+ else:
+ cmd = ['baz', 'update']
+
+ buildscript.execute(cmd, 'arch', cwd=self.srcdir)
+
+ def checkout(self, buildscript):
+ if os.path.exists(self.srcdir):
+ self._update(buildscript)
+ else:
+ self._checkout(buildscript)
+
+ def force_checkout(self, buildscript):
+ self._checkout(buildscript)
+
+ def tree_id(self):
+ data = get_output(['baz', 'tree-id', '-d', self.srcdir])
+ return data.strip()
+
+
+
+register_repo_type('arch', ArchRepository)
diff --git a/build-scripts/jhbuild/jhbuild/versioncontrol/bzr.py b/build-scripts/jhbuild/jhbuild/versioncontrol/bzr.py
new file mode 100644
index 0000000..f049b5f
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/versioncontrol/bzr.py
@@ -0,0 +1,119 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# bzr.py: some code to handle various bazaar-ng operations
+#
+# 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
+
+__all__ = []
+__metaclass__ = type
+
+import os
+import errno
+import urlparse
+
+from jhbuild.errors import FatalError
+from jhbuild.versioncontrol import Repository, Branch, register_repo_type
+
+# Make sure that the urlparse module considers sftp://
+# scheme to be netloc aware and set to allow relative URIs.
+if 'sftp' not in urlparse.uses_netloc:
+ urlparse.uses_netloc.append('sftp')
+if 'sftp' not in urlparse.uses_relative:
+ urlparse.uses_relative.append('sftp')
+
+
+class BzrRepository(Repository):
+ """A class representing a Bzr repository.
+
+ Note that this is just the parent directory for a bunch of darcs
+ branches, making it easy to switch to a mirror URI.
+
+ It can be a parent of a number of Bzr repositories or branches.
+ """
+
+ init_xml_attrs = ['href']
+
+ def __init__(self, config, name, href):
+ Repository.__init__(self, config, name)
+ # allow user to adjust location of branch.
+ self.href = config.repos.get(name, href)
+
+ branch_xml_attrs = ['module', 'checkoutdir']
+
+ def branch(self, name, module=None, checkoutdir=None):
+ if name in self.config.branches:
+ module = self.config.branches[module]
+ else:
+ if module is None:
+ module = name
+ module = urlparse.urljoin(self.href, module)
+ return BzrBranch(self, module, checkoutdir)
+
+
+class BzrBranch(Branch):
+ """A class representing a Darcs branch."""
+
+ def __init__(self, repository, module, checkoutdir):
+ self.repository = repository
+ self.config = repository.config
+ self.module = module
+ self.checkoutdir = checkoutdir
+
+ def srcdir(self):
+ if self.checkoutdir:
+ return os.path.join(self.config.checkoutroot, self.checkoutdir)
+ else:
+ return os.path.join(self.config.checkoutroot,
+ os.path.basename(self.module))
+ srcdir = property(srcdir)
+
+ def branchname(self):
+ return None
+ branchname = property(branchname)
+
+ def _checkout(self, buildscript):
+ cmd = ['bzr', 'branch', self.module]
+ if self.checkoutdir:
+ cmd.append(self.checkoutdir)
+
+ if self.config.sticky_date:
+ raise FatalError('date based checkout not yet supported\n')
+
+ buildscript.execute(cmd, 'bzr', cwd=self.config.checkoutroot)
+
+ def _update(self, buildscript, overwrite=False):
+ if self.config.sticky_date:
+ raise FatalError('date based checkout not yet supported\n')
+ cmd = ['bzr', 'pull']
+ if overwrite:
+ cmd.append('--overwrite')
+ cmd.append(self.module)
+ buildscript.execute(cmd, 'bzr', cwd=self.srcdir)
+
+ def checkout(self, buildscript):
+ if os.path.exists(self.srcdir):
+ self._update(buildscript)
+ else:
+ self._checkout(buildscript)
+
+ def force_checkout(self, buildscript):
+ if os.path.exists(self.srcdir):
+ self._update(buildscript, overwrite=True)
+ else:
+ self._checkout(buildscript)
+
+
+register_repo_type('bzr', BzrRepository)
diff --git a/build-scripts/jhbuild/jhbuild/versioncontrol/cvs.py b/build-scripts/jhbuild/jhbuild/versioncontrol/cvs.py
new file mode 100644
index 0000000..e7dbc02
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/versioncontrol/cvs.py
@@ -0,0 +1,279 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# cvs.py: some code to handle various cvs operations
+#
+# 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
+
+__all__ = [
+ 'CVSRepository',
+ 'login',
+ 'get_sticky_tag',
+ ]
+__metaclass__ = type
+
+import sys
+import os
+import md5
+
+
+from jhbuild.errors import BuildStateError
+from jhbuild.versioncontrol import Repository, Branch, register_repo_type
+
+
+# table used to scramble passwords in ~/.cvspass files
+_shifts = [
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 114,120, 53, 79, 96,109, 72,108, 70, 64, 76, 67,116, 74, 68, 87,
+ 111, 52, 75,119, 49, 34, 82, 81, 95, 65,112, 86,118,110,122,105,
+ 41, 57, 83, 43, 46,102, 40, 89, 38,103, 45, 50, 42,123, 91, 35,
+ 125, 55, 54, 66,124,126, 59, 47, 92, 71,115, 78, 88,107,106, 56,
+ 36,121,117,104,101,100, 69, 73, 99, 63, 94, 93, 39, 37, 61, 48,
+ 58,113, 32, 90, 44, 98, 60, 51, 33, 97, 62, 77, 84, 80, 85,223,
+ 225,216,187,166,229,189,222,188,141,249,148,200,184,136,248,190,
+ 199,170,181,204,138,232,218,183,255,234,220,247,213,203,226,193,
+ 174,172,228,252,217,201,131,230,197,211,145,238,161,179,160,212,
+ 207,221,254,173,202,146,224,151,140,196,205,130,135,133,143,246,
+ 192,159,244,239,185,168,215,144,139,165,180,157,147,186,214,176,
+ 227,231,219,169,175,156,206,198,129,164,150,210,154,177,134,127,
+ 182,128,158,208,162,132,167,209,149,241,153,251,237,236,171,195,
+ 243,233,253,240,194,250,191,155,142,137,245,235,163,242,178,152
+]
+
+def scramble(password):
+ return 'A' + ''.join([chr(_shifts[ord(ch)]) for ch in password])
+def descramble(password):
+ assert password[0] == 'A', 'unknown password format'
+ return ''.join([chr(_shifts[ord(ch)]) for ch in password[1:]])
+
+def _canonicalise_cvsroot(cvsroot):
+ if not cvsroot.startswith(':pserver:'): return cvsroot
+ parts = cvsroot.split(':')
+ if parts[3].startswith('/'):
+ parts[3] = '2401' + parts[3]
+ return ':'.join(parts)
+
+def login(cvsroot, password=None):
+ if not cvsroot.startswith(':pserver:'): return
+ cvsroot = _canonicalise_cvsroot(cvsroot)
+ cvspass = os.path.join(os.environ['HOME'], '.cvspass')
+
+ # check if the password has already been entered:
+ try:
+ fp = open(cvspass, 'r')
+ for line in fp.readlines():
+ parts = line.split()
+ if not parts:
+ continue
+ if parts[0] == '/1':
+ root = parts[1]
+ else:
+ root = _canonicalise_cvsroot(parts[0])
+ if root == cvsroot:
+ return
+ break
+ except IOError:
+ pass
+ # if we have a password, just write it directly to the .cvspass file
+ if password is not None:
+ fp = open(cvspass, 'a')
+ fp.write('/1 %s %s\n' % (cvsroot, scramble(password)))
+ fp.close()
+ else:
+ # call cvs login ..
+ if os.system('cvs -d %s login' % cvsroot) != 0:
+ sys.stderr.write('could not log into %s\n' % cvsroot)
+ sys.exit(1)
+
+def check_sticky_tag(filename):
+ dirname = os.path.dirname(filename)
+ basename = os.path.basename(filename)
+ entries_file = os.path.join(dirname, 'CVS', 'Entries')
+ fp = open(entries_file, 'r')
+ line = fp.readline()
+ while line:
+ parts = line.strip().split('/')
+ if parts[1] == basename:
+ # parts[5] is the tag for this file
+ if parts[5] == '':
+ return None
+ else:
+ return parts[5][1:]
+ line = fp.readline()
+ raise RuntimeError('%s is not managed by CVS' % filename)
+
+def check_root(dirname):
+ root_file = os.path.join(dirname, 'CVS', 'Root')
+ return open(root_file, 'r').read().strip()
+
+def _process_directory(directory, prefix, write):
+ if not (os.path.isdir(directory) and
+ os.path.isdir(os.path.join(directory, 'CVS'))):
+ return
+
+ fp = open(os.path.join(directory, 'CVS', 'Root'), 'rb')
+ root = fp.read().strip()
+ fp.close()
+ fp = open(os.path.join(directory, 'CVS', 'Repository'), 'rb')
+ repository = fp.read().strip()
+ fp.close()
+
+ write('===\n')
+ write('Directory: %s\n' % prefix)
+ write('Root: %s\n' % root)
+ write('Repository: %s\n' % repository)
+ write('\n')
+
+ fp = open(os.path.join(directory, 'CVS', 'Entries'), 'rb')
+ subdirs = []
+ filenames = []
+ for line in fp:
+ parts = line.strip().split('/')
+ if parts[0] == 'D' and len(parts) >= 2:
+ subdirs.append(parts[1])
+ if parts[0] == '' and len(parts) >= 3:
+ filenames.append((parts[1], parts[2]))
+ fp.close()
+ filenames.sort()
+ for name, rev in filenames:
+ if prefix:
+ name = '%s/%s' % (prefix, name)
+ write('%s %s\n' % (name, rev))
+ write('\n')
+ subdirs.sort()
+ for name in subdirs:
+ if prefix:
+ name_prefix = '%s/%s' % (prefix, name)
+ else:
+ name_prefix = name
+ _process_directory(os.path.join(directory, name), name_prefix, write)
+
+
+
+class CVSRepository(Repository):
+ """A class used to work with a CVS repository"""
+
+ init_xml_attrs = ['cvsroot', 'password']
+
+ def __init__(self, config, name, cvsroot, password=None):
+ Repository.__init__(self, config, name)
+ # has the repository path been overridden?
+ if self.name in config.repos:
+ self.cvsroot = config.repos[name]
+ else:
+ self.cvsroot = cvsroot
+ login(cvsroot, password)
+
+ branch_xml_attrs = ['module', 'checkoutdir', 'revision',
+ 'update-new-dirs', 'override-checkoutdir']
+
+ def branch(self, name, module=None, checkoutdir=None, revision=None,
+ update_new_dirs='yes', override_checkoutdir='yes'):
+ if module is None:
+ module = name
+ # allow remapping of branch for module:
+ revision = self.config.branches.get(name, revision)
+ return CVSBranch(repository=self,
+ module=module,
+ checkoutdir=checkoutdir,
+ revision=revision,
+ update_new_dirs=update_new_dirs != 'no',
+ override_checkoutdir=override_checkoutdir != 'no')
+
+
+class CVSBranch(Branch):
+ """A class representing a CVS branch inside a CVS repository"""
+
+ def __init__(self, repository, module, checkoutdir, revision,
+ update_new_dirs, override_checkoutdir):
+ self.repository = repository
+ self.config = repository.config
+ self.module = module
+ self.checkoutdir = checkoutdir
+ self.revision = revision
+ self.update_new_dirs = update_new_dirs
+ self.override_checkoutdir = override_checkoutdir
+
+ def srcdir(self):
+ if self.checkoutdir:
+ return os.path.join(self.config.checkoutroot, self.checkoutdir)
+ else:
+ return os.path.join(self.config.checkoutroot, self.module)
+ srcdir = property(srcdir)
+
+ def branchname(self):
+ return self.revision
+ branchname = property(branchname)
+
+ def _checkout(self, buildscript):
+ cmd = ['cvs', '-z3', '-q', '-d', self.repository.cvsroot,
+ 'checkout', '-P']
+ if self.revision:
+ cmd.extend(['-r', self.revision])
+ if self.config.sticky_date:
+ cmd.extend(['-D', self.config.sticky_date])
+ if not (self.revision or self.config.sticky_date):
+ cmd.append('-A')
+ if self.checkoutdir and self.override_checkoutdir:
+ cmd.extend(['-d', self.checkoutdir])
+ cmd.append(self.module)
+ buildscript.execute(cmd, 'cvs', cwd=self.config.checkoutroot)
+
+ def _update(self, buildscript):
+ # sanity check the existing working tree:
+ try:
+ wc_root = check_root(self.srcdir)
+ except IOError:
+ raise BuildStateError('"%s" does not appear to be a CVS working '
+ 'copy' % os.path.abspath(self.srcdir))
+ if wc_root != self.repository.cvsroot:
+ raise BuildStateError('working copy points at the wrong '
+ 'repository (expected %s but got %s). '
+ 'Consider using the changecvsroot.py '
+ 'script to fix this.'
+ % (self.repository.cvsroot, wc_root))
+
+ # update the working tree
+ cmd = ['cvs', '-z3', '-q', '-d', self.repository.cvsroot,
+ 'update', '-P']
+ if self.update_new_dirs:
+ cmd.append('-d')
+ if self.revision:
+ cmd.extend(['-r', self.revision])
+ if self.config.sticky_date:
+ cmd.extend(['-D', self.config.sticky_date])
+ if not (self.revision or self.config.sticky_date):
+ cmd.append('-A')
+ cmd.append('.')
+ buildscript.execute(cmd, 'cvs', cwd=self.srcdir)
+
+ def checkout(self, buildscript):
+ if os.path.exists(self.srcdir):
+ self._update(buildscript)
+ else:
+ self._checkout(buildscript)
+
+ def force_checkout(self, buildscript):
+ self._checkout(buildscript)
+
+ def tree_id(self):
+ if not os.path.exists(self.srcdir):
+ return None
+ md5sum = md5.new()
+ _process_directory(self.srcdir, '', md5sum.update)
+ return 'jhbuild-cvs-treeid:%s' % md5sum.hexdigest()
+
+register_repo_type('cvs', CVSRepository)
diff --git a/build-scripts/jhbuild/jhbuild/versioncontrol/darcs.py b/build-scripts/jhbuild/jhbuild/versioncontrol/darcs.py
new file mode 100644
index 0000000..bf35a0a
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/versioncontrol/darcs.py
@@ -0,0 +1,111 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# darcs.py: some code to handle various darcs operations
+#
+# 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
+
+__all__ = []
+__metaclass__ = type
+
+import os
+import errno
+import urlparse
+
+from jhbuild.errors import FatalError
+from jhbuild.versioncontrol import Repository, Branch, register_repo_type
+
+class DarcsRepository(Repository):
+ """A class representing a Darcs repository.
+
+ Note that this is just the parent directory for a bunch of darcs
+ branches, making it easy to switch to a mirror URI.
+ """
+
+ init_xml_attrs = ['href']
+
+ def __init__(self, config, name, href):
+ Repository.__init__(self, config, name)
+ # allow user to adjust location of branch.
+ self.href = config.repos.get(name, href)
+
+ branch_xml_attrs = ['module', 'checkoutdir']
+
+ def branch(self, name, module=None, checkoutdir=None):
+ if name in self.config.branches:
+ module = self.config.branches[module]
+ else:
+ if module is None:
+ module = name
+ module = urlparse.urljoin(self.href, module)
+ return DarcsBranch(self, module, checkoutdir)
+
+
+class DarcsBranch(Branch):
+ """A class representing a Darcs branch."""
+
+ def __init__(self, repository, module, checkoutdir):
+ self.repository = repository
+ self.config = repository.config
+ self.module = module
+ self.checkoutdir = checkoutdir
+
+ def srcdir(self):
+ if self.checkoutdir:
+ return os.path.join(self.config.checkoutroot, self.checkoutdir)
+ else:
+ return os.path.join(self.config.checkoutroot,
+ os.path.basename(self.module))
+ srcdir = property(srcdir)
+
+ def branchname(self):
+ return None
+ branchname = property(branchname)
+
+ def _checkout(self, buildscript):
+ cmd = ['darcs', 'get', self.module]
+ if self.checkoutdir:
+ cmd.append(self.checkoutdir)
+
+ if self.config.sticky_date:
+ raise FatalError('date based checkout not yet supported\n')
+
+ buildscript.execute(cmd, 'darcs', cwd=self.config.checkoutroot)
+
+ def _update(self, buildscript):
+ if self.config.sticky_date:
+ raise FatalError('date based checkout not yet supported\n')
+ buildscript.execute(['darcs', 'pull', '-a'], 'darcs', cwd=self.srcdir)
+
+ def _fix_permissions(self):
+ # This is a hack to make the autogen.sh and/or configure
+ # scripts executable. This is needed because Darcs does not
+ # version the executable bit.
+ for filename in ['autogen.sh', 'configure']:
+ path = os.path.join(self.srcdir, filename)
+ try:
+ stat = os.stat(path)
+ except OSError, e:
+ continue
+ os.chmod(path, stat.st_mode | 0111)
+
+ def checkout(self, buildscript):
+ if os.path.exists(self.srcdir):
+ self._update(buildscript)
+ else:
+ self._checkout(buildscript)
+ self._fix_permissions()
+
+register_repo_type('darcs', DarcsRepository)
diff --git a/build-scripts/jhbuild/jhbuild/versioncontrol/git.py b/build-scripts/jhbuild/jhbuild/versioncontrol/git.py
new file mode 100644
index 0000000..11f5980
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/versioncontrol/git.py
@@ -0,0 +1,125 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# git.py: some code to handle various GIT operations
+#
+# 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
+
+__all__ = []
+__metaclass__ = type
+
+import os
+import urlparse
+
+from jhbuild.errors import FatalError
+from jhbuild.utils.cmds import get_output
+from jhbuild.versioncontrol import Repository, Branch, register_repo_type
+
+# Make sure that the urlparse module considers git:// and git+ssh://
+# schemes to be netloc aware and set to allow relative URIs.
+if 'git' not in urlparse.uses_netloc:
+ urlparse.uses_netloc.append('git')
+if 'git' not in urlparse.uses_relative:
+ urlparse.uses_relative.append('git')
+if 'git+ssh' not in urlparse.uses_netloc:
+ urlparse.uses_netloc.append('git+ssh')
+if 'git+ssh' not in urlparse.uses_relative:
+ urlparse.uses_relative.append('git+ssh')
+
+
+class GitRepository(Repository):
+ """A class representing a GIT repository.
+
+ Note that this is just the parent directory for a bunch of darcs
+ branches, making it easy to switch to a mirror URI.
+ """
+
+ init_xml_attrs = ['href']
+
+ def __init__(self, config, name, href):
+ Repository.__init__(self, config, name)
+ # allow user to adjust location of branch.
+ self.href = config.repos.get(name, href)
+
+ branch_xml_attrs = ['module', 'subdir', 'checkoutdir']
+
+ def branch(self, name, module=None, subdir="", checkoutdir=None):
+ if name in self.config.branches:
+ module = self.config.branches[module]
+ else:
+ if module is None:
+ module = name
+ module = urlparse.urljoin(self.href, module)
+ return GitBranch(self, module, subdir, checkoutdir)
+
+
+class GitBranch(Branch):
+ """A class representing a GIT branch."""
+
+ def __init__(self, repository, module, subdir, checkoutdir):
+ self.repository = repository
+ self.config = repository.config
+ self.module = module
+ self.subdir = subdir
+ self.checkoutdir = checkoutdir
+
+ def srcdir(self):
+ if self.checkoutdir:
+ return os.path.join(self.config.checkoutroot, self.checkoutdir, self.subdir)
+ else:
+ return os.path.join(self.config.checkoutroot,
+ os.path.basename(self.module), self.subdir)
+ srcdir = property(srcdir)
+
+ def get_checkoutdir(self):
+ if self.checkoutdir:
+ return os.path.join(self.config.checkoutroot, self.checkoutdir)
+ else:
+ return os.path.join(self.config.checkoutroot,
+ os.path.basename(self.module))
+
+ def branchname(self):
+ return None
+ branchname = property(branchname)
+
+ def _checkout(self, buildscript):
+ cmd = ['git', 'clone', self.module]
+ if self.checkoutdir:
+ cmd.append(self.checkoutdir)
+
+ if self.config.sticky_date:
+ raise FatalError('date based checkout not yet supported\n')
+
+ buildscript.execute(cmd, 'git', cwd=self.config.checkoutroot)
+
+ def _update(self, buildscript):
+ if self.config.sticky_date:
+ raise FatalError('date based checkout not yet supported\n')
+ buildscript.execute(['git', 'pull'], 'git', cwd=self.get_checkoutdir())
+
+ def checkout(self, buildscript):
+ if os.path.exists(self.get_checkoutdir()):
+ self._update(buildscript)
+ else:
+ self._checkout(buildscript)
+
+ def tree_id(self):
+ if not os.path.exists(self.get_checkoutdir()):
+ return None
+ output = get_output(['git-rev-parse', 'master'],
+ cwd=self.get_checkoutdir())
+ return output.strip()
+
+register_repo_type('git', GitRepository)
diff --git a/build-scripts/jhbuild/jhbuild/versioncontrol/svn.py b/build-scripts/jhbuild/jhbuild/versioncontrol/svn.py
new file mode 100644
index 0000000..5ffbc67
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/versioncontrol/svn.py
@@ -0,0 +1,214 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# svn.py: some code to handle various Subversion operations
+#
+# 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
+
+__all__ = []
+__metaclass__ = type
+
+import os
+import urlparse
+import subprocess
+
+from jhbuild.errors import CommandError, BuildStateError, FatalError
+from jhbuild.utils.cmds import get_output
+from jhbuild.versioncontrol import Repository, Branch, register_repo_type
+
+# Make sure that the urlparse module considers svn:// and svn+ssh://
+# schemes to be netloc aware and set to allow relative URIs.
+if 'svn' not in urlparse.uses_netloc:
+ urlparse.uses_netloc.append('svn')
+if 'svn' not in urlparse.uses_relative:
+ urlparse.uses_relative.append('svn')
+if 'svn+ssh' not in urlparse.uses_netloc:
+ urlparse.uses_netloc.append('svn+ssh')
+if 'svn+ssh' not in urlparse.uses_relative:
+ urlparse.uses_relative.append('svn+ssh')
+
+def _make_uri(repo, path):
+ if repo[-1] != '/':
+ return '%s/%s' % (repo, path)
+ else:
+ return repo + path
+
+def get_info(filename):
+ # we run Subversion in the C locale, because Subversion localises
+ # the key names in the output. See bug #334678 for more info.
+ output = get_output(
+ ['svn', 'info', filename],
+ extra_env={
+ 'LANGUAGE': 'C',
+ 'LC_ALL': 'C',
+ 'LANG': 'C'})
+ ret = {}
+ for line in output.splitlines():
+ if ':' not in line: continue
+ key, value = line.split(':', 1)
+ ret[key.lower().strip()] = value.strip()
+ return ret
+
+def get_uri(filename):
+ try:
+ info = get_info(filename)
+ except CommandError:
+ raise BuildStateError('could not get Subversion URI for %s'
+ % filename)
+ if 'url' not in info:
+ raise BuildStateError('could not parse "svn info" output for %s'
+ % filename)
+ return info['url']
+
+
+class SubversionRepository(Repository):
+ """A class used to work with a Subversion repository"""
+
+ init_xml_attrs = ['href', 'trunk-path', 'branches-path']
+
+ def __init__(self, config, name, href, trunk_path='trunk', branches_path='branches'):
+ Repository.__init__(self, config, name)
+ # allow user to adjust location of branch.
+ self.href = config.repos.get(name, href)
+ self.trunk_path = trunk_path
+ self.branches_path = branches_path
+
+ branch_xml_attrs = ['module', 'checkoutdir', 'revision']
+
+ def branch(self, name, module=None, checkoutdir=None, revision=None):
+ module_href = None
+ if name in self.config.branches:
+ if self.config.branches[name]:
+ module_href = self.config.branches[name]
+ else:
+ module = None
+ revision = None
+
+ if module is None or revision is not None:
+ if module is None:
+ module = name
+ if not revision:
+ if self.trunk_path:
+ module += '/' + self.trunk_path
+ if checkoutdir is None:
+ checkoutdir = name
+ else:
+ if self.branches_path:
+ module += '/' + self.branches_path + '/' + revision
+ else:
+ module += '/' + revision
+
+ if module_href is None:
+ module_href = urlparse.urljoin(self.href, module)
+
+ if checkoutdir is None:
+ checkoutdir = name
+
+ return SubversionBranch(self, module_href, checkoutdir, revision)
+
+
+class SubversionBranch(Branch):
+ """A class representing a Subversion branch"""
+
+ def __init__(self, repository, module, checkoutdir, revision):
+ self.repository = repository
+ self.config = repository.config
+ self.module = module
+ self.checkoutdir = checkoutdir
+ self.revision = revision
+
+ def srcdir(self):
+ if self.checkoutdir:
+ return os.path.join(self.config.checkoutroot, self.checkoutdir)
+ else:
+ return os.path.join(self.config.checkoutroot,
+ os.path.basename(self.module))
+ srcdir = property(srcdir)
+
+ def branchname(self):
+ return self.revision
+ branchname = property(branchname)
+
+ def _checkout(self, buildscript):
+ cmd = ['svn', 'checkout', self.module]
+
+ if self.checkoutdir:
+ cmd.append(self.checkoutdir)
+
+ if self.config.sticky_date:
+ cmd.extend(['-r', '{%s}' % self.config.sticky_date])
+
+ buildscript.execute(cmd, 'svn', cwd=self.config.checkoutroot)
+
+ def _update(self, buildscript):
+ opt = []
+ if self.config.sticky_date:
+ opt.extend(['-r', '{%s}' % self.config.sticky_date])
+
+ # if the URI doesn't match, use "svn switch" instead of "svn update"
+ if get_uri(self.srcdir) != self.module:
+ cmd = ['svn', 'switch'] + opt + [self.module]
+ else:
+ cmd = ['svn', 'update'] + opt + ['.']
+
+ buildscript.execute(cmd, 'svn', cwd=self.srcdir)
+
+ self._check_for_conflicts()
+
+ def _check_for_conflicts(self):
+ kws = {}
+ kws['cwd'] = self.srcdir
+ kws['env'] = os.environ.copy()
+ extra_env={
+ 'LANGUAGE': 'C',
+ 'LC_ALL': 'C',
+ 'LANG': 'C'}
+ kws['env'].update(extra_env)
+ try:
+ output = subprocess.Popen(['svn', 'info', '-R'],
+ stdout = subprocess.PIPE, **kws).communicate()[0]
+ except OSError, e:
+ raise CommandError(str(e))
+ if 'Conflict' in output:
+ raise CommandError('Error checking for conflicts')
+
+ def checkout(self, buildscript):
+ if os.path.exists(self.srcdir):
+ self._update(buildscript)
+ else:
+ self._checkout(buildscript)
+
+ def force_checkout(self, buildscript):
+ self._checkout(buildscript)
+
+ def tree_id(self):
+ if not os.path.exists(self.srcdir):
+ return None
+ info = get_info(self.srcdir)
+ url = info['url']
+ root = info['repository root']
+ uuid = info['repository uuid']
+ rev = info['last changed rev']
+
+ # get the path within the repository
+ assert url.startswith(root)
+ path = url[len(root):]
+ while path.startswith('/'):
+ path = path[1:]
+
+ return '%s,%s,%s' % (uuid.lower(), rev, path)
+
+
+register_repo_type('svn', SubversionRepository)
diff --git a/build-scripts/jhbuild/jhbuild/versioncontrol/tarball.py b/build-scripts/jhbuild/jhbuild/versioncontrol/tarball.py
new file mode 100644
index 0000000..3c53dac
--- /dev/null
+++ b/build-scripts/jhbuild/jhbuild/versioncontrol/tarball.py
@@ -0,0 +1,203 @@
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# tarball.py: some code to handle tarball repositories
+#
+# 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
+
+__all__ = []
+__metaclass__ = type
+
+import os
+import urlparse
+
+from jhbuild.errors import FatalError, BuildStateError
+from jhbuild.versioncontrol import Repository, Branch, register_repo_type
+
+jhbuild_directory = os.path.abspath(os.path.join(os.path.dirname(__file__),
+ '..', '..'))
+
+
+class TarballRepository(Repository):
+ """A class representing a Tarball repository.
+
+ A repository implementation representing a web or ftp site hosting
+ one or more tarballs for download. The user can override the
+ download location similar to how they can for other repository
+ implementations.
+ """
+
+ init_xml_attrs = ['href']
+
+ def __init__(self, config, name, href):
+ Repository.__init__(self, config, name)
+ # allow user to adjust location of branch.
+ self.href = config.repos.get(name, href)
+
+ branch_xml_attrs = ['version', 'module', 'checkoutdir',
+ 'size', 'md5sum']
+
+ def branch(self, name, version, module=None, checkoutdir=None,
+ size=None, md5sum=None):
+ if name in self.config.branches:
+ module = self.config.branches[module]
+ else:
+ if module is None:
+ module = name
+ module = urlparse.urljoin(self.href, module)
+ if size is not None:
+ size = int(size)
+ return TarballBranch(self, module=module, version=version,
+ checkoutdir=checkoutdir,
+ source_size=size, source_md5=md5sum)
+
+ def branch_from_xml(self, name, branchnode):
+ branch = Repository.branch_from_xml(self, name, branchnode)
+ # patches represented as children of the branch node
+ for childnode in branchnode.childNodes:
+ if (childnode.nodeType == childnode.ELEMENT_NODE and
+ childnode.nodeName == 'patch'):
+ patchfile = childnode.getAttribute('file')
+ if childnode.hasAttribute('strip'):
+ patchstrip = int(childnode.getAttribute('strip'))
+ else:
+ patchstrip = 0
+ branch.patches.append((patchfile, patchstrip))
+ return branch
+
+
+class TarballBranch(Branch):
+ """A class representing a Tarball."""
+
+ def __init__(self, repository, module, version, checkoutdir,
+ source_size, source_md5):
+ self.repository = repository
+ self.config = repository.config
+ self.module = module
+ self.version = version
+ self.checkoutdir = checkoutdir
+ self.source_size = source_size
+ self.source_md5 = source_md5
+ self.patches = []
+
+ def _local_tarball(self):
+ basename = os.path.basename(self.module)
+ if not basename:
+ raise FatalError('URL has no filename component: %s' % self.module)
+ localfile = os.path.join(self.config.tarballdir, basename)
+ return localfile
+ _local_tarball = property(_local_tarball)
+
+ def srcdir(self):
+ if self.checkoutdir:
+ return os.path.join(self.config.checkoutroot, self.checkoutdir)
+
+ localdir = os.path.join(self.config.checkoutroot,
+ os.path.basename(self.module))
+ # strip off packaging extension ...
+ if localdir.endswith('.tar.gz'):
+ localdir = localdir[:-7]
+ elif localdir.endswith('.tar.bz2'):
+ localdir = localdir[:-8]
+ elif localdir.endswith('.tgz'):
+ localdir = localdir[:-4]
+ return localdir
+ srcdir = property(srcdir)
+
+ def branchname(self):
+ return self.version
+ branchname = property(branchname)
+
+ def _check_tarball(self):
+ """Check whether the tarball has been downloaded correctly."""
+ localfile = self._local_tarball
+ if not os.path.exists(localfile):
+ raise BuildStateError('file not downloaded')
+ if self.source_size is not None:
+ local_size = os.stat(localfile).st_size
+ if local_size != self.source_size:
+ raise BuildStateError('downloaded file size is incorrect '
+ '(expected %d, got %d)'
+ % (self.source_size, local_size))
+ if self.source_md5 is not None:
+ import md5
+ local_md5 = md5.new()
+ fp = open(localfile, 'rb')
+ data = fp.read(32768)
+ while data:
+ local_md5.update(data)
+ data = fp.read(32768)
+ fp.close()
+ if local_md5.hexdigest() != self.source_md5:
+ raise BuildStateError('file MD5 sum is incorrect '
+ '(expected %s, got %s)'
+ % (self.source_md5,
+ local_md5.hexdigest()))
+
+ def _download_and_unpack(self, buildscript):
+ localfile = self._local_tarball
+ if not os.path.exists(self.config.tarballdir):
+ os.makedirs(self.config.tarballdir)
+ try:
+ self._check_tarball()
+ except BuildStateError:
+ # don't have the tarball, try downloading it and check again
+ has_wget = not os.system('which wget > /dev/null')
+ if not has_wget:
+ has_curl = not os.system('which curl > /dev/null')
+
+ if has_wget:
+ res = buildscript.execute(
+ ['wget', self.module, '-O', localfile])
+ elif has_curl:
+ res = buildscript.execute(
+ ['curl', self.module, '-o', localfile])
+ else:
+ raise FatalError("unable to find wget or curl")
+
+ self._check_tarball()
+
+ # now to unpack it
+ if localfile.endswith('.bz2'):
+ buildscript.execute('bunzip2 -dc "%s" | tar xf -' % localfile,
+ cwd=self.config.checkoutroot)
+ elif localfile.endswith('.gz') or localfile.endswith('.tgz'):
+ buildscript.execute('gunzip -dc "%s" | tar xf -' % localfile,
+ cwd=self.config.checkoutroot)
+ else:
+ raise FatalError("don't know how to handle: %s" % localfile)
+
+ if not os.path.exists(self.srcdir):
+ raise BuildStateError('could not unpack tarball')
+
+ # now patch the working tree
+ for (patch, patchstrip) in self.patches:
+ patchfile = os.path.join(jhbuild_directory, 'patches', patch)
+ buildscript.execute('patch -p%d < "%s"'
+ % (patchstrip, patchfile),
+ cwd=self.srcdir)
+
+
+ def checkout(self, buildscript):
+ if not os.path.exists(self.srcdir):
+ self._download_and_unpack(buildscript)
+
+ def force_checkout(self, buildscript):
+ self._download_and_unpack(buildscript)
+
+ def tree_id(self):
+ return self.version
+
+register_repo_type('tarball', TarballRepository)
diff --git a/build-scripts/jhbuild/modulesets/bootstrap.modules b/build-scripts/jhbuild/modulesets/bootstrap.modules
new file mode 100644
index 0000000..ea2f9c2
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/bootstrap.modules
@@ -0,0 +1,87 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: nxml -*-->
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+ <repository type="tarball" name="ftp.gnu.org"
+ href="http://ftp.gnu.org/gnu/"/>
+ <repository type="tarball" name="pkgconfig"
+ href="http://pkgconfig.freedesktop.org/releases/"/>
+ <repository type="tarball" name="python"
+ href="http://www.python.org/ftp/python/"/>
+
+ <autotools id="gettext" autogen-sh="configure">
+ <branch repo="ftp.gnu.org"
+ module="gettext/gettext-0.16.tar.gz" version="0.16"
+ size="8546162" md5sum="1560a460c2c4e05b6ff53acb12860750" />
+ </autotools>
+
+ <autotools id="autoconf" autogen-sh="configure">
+ <branch repo="ftp.gnu.org"
+ module="autoconf/autoconf-2.60.tar.bz2" version="2.60"
+ size="1019170" md5sum="019609c29d0cbd9110c38480304aafc8" />
+ </autotools>
+
+ <autotools id="libtool" autogen-sh="configure">
+ <branch repo="ftp.gnu.org"
+ module="libtool/libtool-1.5.22.tar.gz" version="1.5.22"
+ size="2921483" md5sum="8e0ac9797b62ba4dcc8a2fb7936412b0">
+ <patch file="libtool-1.5.18-multilib.patch" strip="1" />
+ </branch>
+ </autotools>
+
+ <autotools id="automake-1.4" autogen-sh="configure">
+ <branch repo="ftp.gnu.org"
+ module="automake/automake-1.4-p6.tar.gz" version="1.4-p6"
+ size="375060" md5sum="24872b81b95d78d05834c39af2cfcf05" />
+ </autotools>
+ <autotools id="automake-1.7" autogen-sh="configure">
+ <branch repo="ftp.gnu.org"
+ module="automake/automake-1.7.9.tar.bz2" version="1.7.9"
+ size="577705" md5sum="571fd0b0598eb2a27dcf68adcfddfacb" />
+ </autotools>
+ <autotools id="automake-1.8" autogen-sh="configure">
+ <branch repo="ftp.gnu.org"
+ module="automake/automake-1.8.5.tar.bz2" version="1.8.5"
+ size="663182" md5sum="0114aa6d7dc32112834b68105fb8d7e2" />
+ </autotools>
+ <autotools id="automake-1.9" autogen-sh="configure">
+ <branch repo="ftp.gnu.org"
+ module="automake/automake-1.9.6.tar.bz2" version="1.9.6"
+ size="765505" md5sum="c11b8100bb311492d8220378fd8bf9e0" />
+ </autotools>
+
+ <autotools id="pkg-config" autogen-sh="configure">
+ <branch repo="pkgconfig"
+ module="pkg-config-0.20.tar.gz" version="0.20"
+ size="969993" md5sum="fb42402593e4198bc252ab248dd4158b" />
+ </autotools>
+
+ <autotools id="python" autogenargs="--enable-shared" autogen-sh="configure">
+ <branch repo="python"
+ module="2.4.3/Python-2.4.3.tar.bz2" version="2.4.3"
+ size="8005915" md5sum="141c683447d5e76be1d2bd4829574f02" />
+ </autotools>
+
+ <repository type="tarball" name="pyrex"
+ href="http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/"/>
+ <distutils id="pyrex">
+ <branch repo="pyrex"
+ module="Pyrex-0.9.4.1.tar.gz" version="0.9.4.1"
+ size="181507" md5sum="425f0543c634bc7a86fe4fce02e0e882" />
+ </distutils>
+
+ <metamodule id="meta-bootstrap">
+ <dependencies>
+ <dep package="gettext" />
+ <dep package="autoconf" />
+ <dep package="libtool" />
+ <dep package="automake-1.4" />
+ <dep package="automake-1.7" />
+ <dep package="automake-1.8" />
+ <dep package="automake-1.9" />
+ <dep package="pkg-config" />
+ <dep package="python" />
+ <dep package="pyrex" />
+ </dependencies>
+ </metamodule>
+
+</moduleset>
diff --git a/build-scripts/jhbuild/modulesets/freedesktop-2.18.modules b/build-scripts/jhbuild/modulesets/freedesktop-2.18.modules
new file mode 100644
index 0000000..144ee5f
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/freedesktop-2.18.modules
@@ -0,0 +1,245 @@
+<?xml version="1.0"?><!--*- mode: nxml -*-->
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+ <repository type="tarball" name="cairo"
+ href="http://cairographics.org/releases/"/>
+ <repository type="tarball" name="dbus"
+ href="http://dbus.freedesktop.org/releases/"/>
+ <repository type="cvs" name="cairo.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/cairo"
+ password=""/>
+ <repository type="cvs" name="dbus.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/dbus"
+ password=""/>
+ <repository type="cvs" name="icon-theme.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/icon-theme"
+ password=""/>
+ <repository type="cvs" name="tango.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/tango"
+ password=""/>
+ <repository type="cvs" name="xorg.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/xorg"
+ password=""/>
+ <repository type="cvs" name="portland.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/portland"
+ password=""/>
+
+ <repository type="git" name="git.freedesktop.org"
+ href="git://anongit.freedesktop.org/git/"/>
+
+ <repository type="tarball" name="cpan" href="http://search.cpan.org/CPAN/" />
+
+ <tarball id="cairo" version="1.2.4">
+ <source href="http://cairographics.org/releases/cairo-1.2.4.tar.gz"
+ md5sum="1222b2bfdf113e2c92f66b3389659f2d" size="2882781"/>
+ <dependencies>
+ <dep package="fontconfig"/>
+ <dep package="gtk-doc"/>
+ </dependencies>
+ <after>
+ <dep package="glitz"/>
+ </after>
+ </tarball>
+
+ <autotools id="glitz">
+ <branch repo="cairo.freedesktop.org"/>
+ </autotools>
+
+ <tarball id="pycairo" version="1.2.2">
+ <source href="http://cairographics.org/releases/pycairo-1.2.2.tar.gz"
+ md5sum="83a2e06d9fc3530753701d580a18087e" size="482417"/>
+ <dependencies>
+ <dep package="cairo"/>
+ </dependencies>
+ </tarball>
+
+ <tarball id="cairomm" version="1.2.2">
+ <source href="http://cairographics.org/releases/cairomm-1.2.2.tar.gz"
+ md5sum="fabb040a5ff2cf0529af55ff46d22d2d" size="582629"/>
+ <dependencies>
+ <dep package="cairo"/>
+ </dependencies>
+ </tarball>
+
+ <tarball autogenargs="--disable-selinux" id="dbus" supports-non-srcdir-builds="no" version="0.92">
+ <source href="http://dbus.freedesktop.org/releases/dbus-0.92.tar.gz"
+ md5sum="ea2be58c80a80631ba5b3c92cffd335c" size="1388345"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ <after>
+ <dep package="gtk+"/>
+ </after>
+ </tarball>
+
+ <autotools id="dbusmm">
+ <branch repo="dbus.freedesktop.org"/>
+ <dependencies>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="dbus-qt3">
+ <branch repo="git.freedesktop.org"
+ module="dbus/dbus-qt3" checkoutdir="dbus-qt3" />
+ <dependencies>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+
+ <tarball id="dbus-glib" version="0.71">
+ <source href="http://dbus.freedesktop.org/releases/dbus-glib-0.71.tar.gz"
+ md5sum="4e1e7348b26ee8b6485452113f4221cc" size="566889"/>
+ <patches>
+ <patch file="dbus-glib-build.patch" strip="1" />
+ </patches>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="dbus"/>
+ <dep package="glib"/>
+ </dependencies>
+ </tarball>
+
+ <repository type="tarball" name="dbus/dbus-python"
+ href="http://dbus.freedesktop.org/releases/"/>
+ <distutils id="dbus-python">
+ <branch module="dbus-python-0.71.tar.gz" version="0.71"
+ repo="dbus/dbus-python"
+ md5sum="ee893bc87b784a8c2285f5041b5e7033" size="137613"/>
+ <dependencies>
+ <dep package="dbus"/>
+ <dep package="dbus-glib"/>
+ </dependencies>
+ </distutils>
+
+ <!-- PolicyKit has been removed because I can't find a tarball
+ download site and because we're using hal 0.5.7.1 for now anyway
+ <autotools id="PolicyKit">
+ <branch repo="hal.freedesktop.org"/>
+ <dependencies>
+ <dep package="dbus-glib"/>
+ </dependencies>
+ </autotools>
+ -->
+
+ <tarball id="hal" version="0.5.7.1">
+ <source href="http://people.freedesktop.org/~david/dist/hal-0.5.7.1.tar.gz"
+ md5sum="d7a7741808ba130f8aff3f5d3b5689e4" size="1503156"/>
+ <dependencies>
+ <dep package="dbus"/>
+ </dependencies>
+ <patches>
+ <patch file="hal-dbus_connection_close.patch" strip="0"/>
+ </patches>
+ </tarball>
+
+ <tarball id="fontconfig" version="2.4.1">
+ <source href="http://www.fontconfig.org/release/fontconfig-2.4.1.tar.gz"
+ md5sum="108f9a03fa9ed9dd779cc7ca236da557" size="1270946"/>
+ </tarball>
+ <tarball id="xchat" version="2.6.2">
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </tarball>
+
+ <autotools id="icon-slicer">
+ <branch repo="icon-theme.freedesktop.org"/>
+ </autotools>
+ <tarball id="icon-naming-utils" version="0.8.1">
+ <source href="http://tango-project.org/releases/icon-naming-utils-0.8.1.tar.gz"
+ md5sum="7a7d340f59c7a6c26391e906b7afa08c" size="63132"/>
+ <branch repo="icon-theme.freedesktop.org"/>
+ </tarball>
+ <tarball id="hicolor-icon-theme" version="0.10" supports-non-srcdir-builds="no" >
+ <source href="http://icon-theme.freedesktop.org/releases/hicolor-icon-theme-0.10.tar.gz"
+ md5sum="3534f7b8e59785c7d5bfa923e85510a7" size="33616"/>
+ </tarball>
+ <autotools id="tango-icon-theme">
+ <branch repo="tango.freedesktop.org"/>
+ <dependencies>
+ <dep package="icon-naming-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="tango-icon-theme-extras">
+ <branch repo="tango.freedesktop.org"/>
+ <dependencies>
+ <dep package="tango-icon-theme"/>
+ </dependencies>
+ </autotools>
+
+ <tarball id="startup-notification" version="0.8">
+ <source href="http://download.gnome.org/sources/startup-notification/0.8/startup-notification-0.8.tar.bz2"
+ md5sum="d9b2e9fba18843314ae42334ceb4336d" size="236255"/>
+ <branch repo="startup-notification.freedesktop.org"/>
+ </tarball>
+
+ <autotools id="RenderProto">
+ <branch repo="git.freedesktop.org"
+ module="xorg/proto/renderproto" checkoutdir="RenderProto" />
+ </autotools>
+ <autotools id="libXrender" supports-non-srcdir-builds="no">
+ <branch repo="git.freedesktop.org"
+ module="xorg/lib/libXrender" checkoutdir="libXrender" />
+ <dependencies>
+ <dep package="RenderProto"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libXft" supports-non-srcdir-builds="no">
+ <branch repo="git.freedesktop.org"
+ module="xorg/lib/libXft" checkoutdir="libXft" />
+ <dependencies>
+ <dep package="fontconfig"/>
+ </dependencies>
+ </autotools>
+
+ <tarball id="poppler" version="0.5.4">
+ <source href="http://poppler.freedesktop.org/poppler-0.5.4.tar.gz"
+ md5sum="053fdfd70533ecce1a06353fa945f061" size="1062401"/>
+ <dependencies>
+ <dep package="cairo"/>
+ </dependencies>
+ <after>
+ <dep package="gtk+"/>
+ </after>
+ </tarball>
+
+ <autotools id="portland">
+ <branch repo="portland.freedesktop.org" />
+ </autotools>
+
+ <perl id="perl-net-dbus">
+ <branch repo="cpan"
+ module="authors/id/D/DA/DANBERR/Net-DBus-0.33.2.tar.gz" version="0.33.2"
+ size="83279" md5sum="7e722c48c4bca7740cf28512287571b7"/>
+ <dependencies>
+ <dep package="dbus"/>
+ </dependencies>
+ </perl>
+
+ <tarball id="system-tools-backends" version="2.1.2">
+ <source href="http://ftp.gnome.org/pub/GNOME/sources/system-tools-backends/2.1/system-tools-backends-2.1.2.tar.bz2" md5sum="da42ed197a85668bf8475ca8e3a35651" size="407313"/>
+ <suggests>
+ <dep package="perl-net-dbus"/>
+ </suggests>
+ </tarball>
+
+ <tarball id="libdaemon" version="0.10">
+ <source href="http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.10.tar.gz"
+ md5sum="6812a5e4063b5016f25e9a0cebbd3dd9" size="345084"/>
+ </tarball>
+
+ <!-- explicit disabling of qt3 and qt4 can be removed once avahi
+ correctly detects what is available. -->
+ <tarball autogenargs="--disable-qt3 --disable-qt4 --disable-mono --disable-monodoc --disable-manpages --enable-compat-howl --enable-compat-libdns_sd" id="avahi" version="0.6.13">
+ <source href="http://avahi.org/download/avahi-0.6.13.tar.gz"
+ md5sum="d1000689979105cc95b9ca102284aae4" size="895380"/>
+ <dependencies>
+ <dep package="libdaemon"/>
+ <dep package="dbus-python"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </tarball>
+
+</moduleset>
diff --git a/build-scripts/jhbuild/modulesets/freedesktop.modules b/build-scripts/jhbuild/modulesets/freedesktop.modules
new file mode 100644
index 0000000..fff5c8e
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/freedesktop.modules
@@ -0,0 +1,308 @@
+<?xml version="1.0"?><!--*- mode: nxml -*-->
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+ <repository type="cvs" name="cairo.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/cairo"
+ password=""/>
+ <repository type="cvs" name="dbus.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/dbus"
+ password=""/>
+ <repository type="cvs" name="hal.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/hal"
+ password=""/>
+ <repository type="cvs" name="icon-theme.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/icon-theme"
+ password=""/>
+ <repository type="cvs" name="startup-notification.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/startup-notification"
+ password=""/>
+ <repository type="cvs" name="tango.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/tango"
+ password=""/>
+ <repository type="cvs" name="xorg.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/xorg"
+ password=""/>
+ <repository type="cvs" name="poppler.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/poppler"
+ password=""/>
+ <repository type="cvs" name="system-tools-backends.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/system-tools-backends"
+ password=""/>
+ <repository type="cvs" name="portland.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/portland"
+ password=""/>
+ <repository type="cvs" name="gnome.org"
+ cvsroot=":pserver:anonymous@anoncvs.gnome.org:/cvs/gnome"
+ password=""/>
+
+ <repository type="svn" name="avahi.0pointer.de"
+ href="svn://svn.0pointer.de/avahi/"/>
+ <repository type="svn" name="libdaemon.0pointer.de"
+ href="svn://svn.0pointer.de/libdaemon/"/>
+
+ <repository type="git" name="git.freedesktop.org"
+ href="git://anongit.freedesktop.org/git/"/>
+
+ <repository type="tarball" name="cpan" href="http://search.cpan.org/CPAN/" />
+
+ <autotools id="cairo">
+ <branch repo="git.freedesktop.org" module="cairo"/>
+ <dependencies>
+ <dep package="fontconfig"/>
+ <dep package="gtk-doc"/>
+ </dependencies>
+ <after>
+ <dep package="glitz"/>
+ <dep package="libXrender"/>
+ </after>
+ </autotools>
+
+ <tarball id="cairo-1-0" version="1.0.4">
+ <source href="http://cairographics.org/releases/cairo-1.0.4.tar.gz"
+ size="1475777" md5sum="9002b0e69b3f94831a22d3f2a7735ce2"/>
+ <dependencies>
+ <dep package="fontconfig"/>
+ <dep package="libXrender"/>
+ </dependencies>
+ <after>
+ <dep package="glitz"/>
+ </after>
+ </tarball>
+
+ <autotools id="glitz">
+ <branch repo="cairo.freedesktop.org"/>
+ </autotools>
+
+ <autotools id="pycairo-1-0">
+ <branch repo="cairo.freedesktop.org" module="pycairo"
+ revision="RELEASE_1_0_2" checkoutdir="pycairo-1-0"/>
+ <dependencies>
+ <dep package="cairo-1-0"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="pycairo">
+ <branch repo="cairo.freedesktop.org"/>
+ <dependencies>
+ <dep package="cairo"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="cairomm">
+ <branch repo="cairo.freedesktop.org"/>
+ <dependencies>
+ <dep package="cairo"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="dbus" supports-non-srcdir-builds="no" autogenargs="--disable-selinux">
+ <branch repo="dbus.freedesktop.org"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ <after>
+ <dep package="gtk+"/>
+ </after>
+ </autotools>
+
+ <autotools id="dbus-0.23" supports-non-srcdir-builds="no">
+ <branch repo="dbus.freedesktop.org" module="dbus"
+ revision="dbus-0-23" checkoutdir="dbus-0.23"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ <after>
+ <dep package="gtk+"/>
+ </after>
+ </autotools>
+
+ <!-- Not maintained - try dbusmm instead -->
+ <autotools id="dbus-cpp">
+ <branch repo="dbus.freedesktop.org"/>
+ <dependencies>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="dbusmm">
+ <branch repo="dbus.freedesktop.org"/>
+ <dependencies>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="dbus-qt3">
+ <branch repo="git.freedesktop.org"
+ module="dbus/dbus-qt3" checkoutdir="dbus-qt3" />
+ <dependencies>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="dbus-glib">
+ <branch repo="git.freedesktop.org" module="dbus/dbus-glib"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="dbus"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="dbus-python">
+ <branch repo="git.freedesktop.org" module="dbus/dbus-python"/>
+ <dependencies>
+ <dep package="dbus"/>
+ <dep package="dbus-glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="PolicyKit">
+ <branch repo="hal.freedesktop.org"/>
+ <dependencies>
+ <dep package="dbus-glib"/>
+ </dependencies>
+ </autotools>
+
+ <tarball id="hal-0-5-7" version="0.5.7.1">
+ <source href="http://people.freedesktop.org/~david/dist/hal-0.5.7.1.tar.gz"
+ size="1503156" md5sum="d7a7741808ba130f8aff3f5d3b5689e4"/>
+ <dependencies>
+ <dep package="dbus"/>
+ </dependencies>
+ <patches>
+ <patch file="hal-dbus_connection_close.patch" strip="0"/>
+ </patches>
+ </tarball>
+
+ <autotools id="hal">
+ <branch repo="hal.freedesktop.org"/>
+ <dependencies>
+ <dep package="dbus"/>
+ <dep package="PolicyKit"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="hal-0-4">
+ <branch repo="hal.freedesktop.org" module="hal"
+ revision="hal-0_4-stable-branch" checkoutdir="hal-0.4"/>
+ <dependencies>
+ <dep package="dbus-0.23"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="fontconfig">
+ <branch repo="git.freedesktop.org" module="fontconfig" />
+ </autotools>
+
+ <autotools id="icon-slicer">
+ <branch repo="icon-theme.freedesktop.org"/>
+ </autotools>
+ <autotools id="icon-naming-utils">
+ <branch repo="icon-theme.freedesktop.org"/>
+ </autotools>
+ <tarball id="hicolor-icon-theme" version="0.9"
+ supports-non-srcdir-builds="no">
+ <source href="http://icon-theme.freedesktop.org/releases/hicolor-icon-theme-0.9.tar.gz"
+ size="32574" md5sum="1d0821cb80d394eac30bd8cec5b0b60c"/>
+ </tarball>
+
+ <autotools id="tango-icon-theme">
+ <branch repo="tango.freedesktop.org"/>
+ <dependencies>
+ <dep package="icon-naming-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="tango-icon-theme-extras">
+ <branch repo="tango.freedesktop.org"/>
+ <dependencies>
+ <dep package="tango-icon-theme"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="startup-notification">
+ <branch repo="startup-notification.freedesktop.org"/>
+ </autotools>
+
+ <autotools id="RenderProto">
+ <branch repo="git.freedesktop.org"
+ module="xorg/proto/renderproto" checkoutdir="RenderProto" />
+ </autotools>
+ <autotools id="libXrender" supports-non-srcdir-builds="no">
+ <branch repo="git.freedesktop.org"
+ module="xorg/lib/libXrender" checkoutdir="libXrender" />
+ <dependencies>
+ <dep package="RenderProto"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libXft" supports-non-srcdir-builds="no">
+ <branch repo="git.freedesktop.org"
+ module="xorg/lib/libXft" checkoutdir="libXft" />
+ <dependencies>
+ <dep package="fontconfig"/>
+ </dependencies>
+ <after>
+ <dep package="libXrender"/>
+ </after>
+ </autotools>
+
+ <autotools id="poppler">
+ <branch repo="poppler.freedesktop.org"/>
+ <dependencies>
+ <dep package="cairo"/>
+ </dependencies>
+ <after>
+ <dep package="gtk+"/>
+ </after>
+ </autotools>
+
+ <autotools id="portland">
+ <branch repo="portland.freedesktop.org" />
+ </autotools>
+
+ <autotools id="poppler-0-4">
+ <branch repo="poppler.freedesktop.org" module="poppler"
+ revision="POPPLER_0_4_X" checkoutdir="poppler-0-4"/>
+ <dependencies>
+ <dep package="cairo-1-0"/>
+ </dependencies>
+ </autotools>
+
+ <perl id="perl-net-dbus">
+ <branch repo="cpan"
+ module="authors/id/D/DA/DANBERR/Net-DBus-0.33.2.tar.gz" version="0.33.2"
+ size="83279" md5sum="7e722c48c4bca7740cf28512287571b7"/>
+ <dependencies>
+ <dep package="dbus"/>
+ </dependencies>
+ </perl>
+
+ <autotools id="system-tools-backends">
+ <branch repo="system-tools-backends.freedesktop.org"
+ revision="BEFORE_DBUS_MERGE"/>
+ <suggests>
+ <dep package="perl-net-dbus"/>
+ </suggests>
+ </autotools>
+
+ <autotools id="system-tools-backends-1.4">
+ <branch repo="system-tools-backends.freedesktop.org"
+ module="system-tools-backends" revision="stb-1-4"
+ checkoutdir="system-tools-backends-1.4"/>
+ </autotools>
+
+ <autotools id="libdaemon">
+ <branch repo="libdaemon.0pointer.de" module="trunk" checkoutdir="libdaemon"/>
+ </autotools>
+
+ <!-- explicit disabling of qt3 and qt4 can be removed once avahi
+ correctly detects what is available. -->
+ <autotools id="avahi" autogenargs="--disable-qt3 --disable-qt4 --disable-mono --disable-monodoc --disable-manpages --enable-compat-howl --enable-compat-libdns_sd">
+ <branch repo="avahi.0pointer.de" module="trunk" checkoutdir="avahi"/>
+ <dependencies>
+ <dep package="libdaemon"/>
+ <dep package="dbus-python"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </autotools>
+
+</moduleset>
diff --git a/build-scripts/jhbuild/modulesets/gcj.modules b/build-scripts/jhbuild/modulesets/gcj.modules
new file mode 100644
index 0000000..01b35c6
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/gcj.modules
@@ -0,0 +1,135 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: nxml -*-->
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+
+ <cvsroot name="gcc.gnu.org"
+ root=":pserver:anoncvs@gcc.gnu.org:/cvs/gcc"
+ password="" />
+ <cvsroot name="rhug.sources.redhat.com"
+ root=":pserver:anoncvs@sources.redhat.com:/cvs/rhug"
+ password="" />
+ <cvsroot name="gdb.sources.redhat.com"
+ root=":pserver:anoncvs@sources.redhat.com:/cvs/src"
+ password="anoncvs" />
+ <cvsroot name="gnome.org"
+ root=":pserver:anonymous@anoncvs.gnome.org:/cvs/gnome"
+ password="" />
+ <cvsroot name="classpath.savannah.gnu.org"
+ root=":ext:anoncvs@savannah.gnu.org:/cvsroot/classpath"
+ password="" />
+ <cvsroot name="cairo.freedesktop.org"
+ root=":pserver:anoncvs@cvs.freedesktop.org:/cvs/cairo"
+ password="" />
+
+ <include href="gnome-2.12.modules" />
+
+ <gdbmodule id="gdb" cvsroot="gdb.sources.redhat.com" />
+
+ <gcjmodule id="gcj" cvsroot="gcc.gnu.org">
+ <dependencies>
+ <dep package="cairo" />
+ <dep package="gtk+" />
+ </dependencies>
+ </gcjmodule>
+
+ <cvsmodule id="java-gcj-compat" cvsroot="rhug.sources.redhat.com">
+ <dependencies>
+ <dep package="ecj-for-jhbuild" />
+ <dep package="gjdoc" />
+ </dependencies>
+ </cvsmodule>
+
+ <cvsmodule id="ecj-for-jhbuild" cvsroot="rhug.sources.redhat.com"
+ supports-non-srcdir-builds="no">
+ <dependencies>
+ <dep package="gcj" />
+ </dependencies>
+ </cvsmodule>
+
+ <cvsmodule id="gjdoc" cvsroot="classpath.savannah.gnu.org" >
+ <dependencies>
+ <dep package="gcj" />
+ </dependencies>
+ </cvsmodule>
+
+ <cvsmodule id="jg-common" cvsroot="gnome.org">
+ <suggests>
+ <dep package="gcj" />
+ </suggests>
+ <dependencies>
+ <dep package="glib" />
+ </dependencies>
+ </cvsmodule>
+
+ <cvsmodule id="cairo-java" cvsroot="cairo.freedesktop.org">
+ <suggests>
+ <dep package="gcj" />
+ </suggests>
+ <dependencies>
+ <dep package="jg-common" />
+ <dep package="cairo" />
+ </dependencies>
+ </cvsmodule>
+
+ <cvsmodule id="libgtk-java" cvsroot="gnome.org">
+ <suggests>
+ <dep package="gcj" />
+ </suggests>
+ <dependencies>
+ <dep package="jg-common" />
+ <dep package="cairo-java" />
+ </dependencies>
+ </cvsmodule>
+
+ <cvsmodule id="libgnomevfs-java" cvsroot="gnome.org">
+ <suggests>
+ <dep package="gcj" />
+ </suggests>
+ <dependencies>
+ <dep package="libgtk-java" />
+ </dependencies>
+ </cvsmodule>
+
+ <cvsmodule id="libgnome-java" cvsroot="gnome.org">
+ <suggests>
+ <dep package="gcj" />
+ </suggests>
+ <dependencies>
+ <dep package="libgnome" />
+ <dep package="libgnomeui" />
+ <dep package="libgnomecanvas" />
+ <dep package="libgtk-java" />
+ </dependencies>
+ </cvsmodule>
+
+ <cvsmodule id="libglade-java" cvsroot="gnome.org">
+ <suggests>
+ <dep package="gcj" />
+ </suggests>
+ <dependencies>
+ <dep package="libgtk-java" />
+ <dep package="libgnome-java" />
+ </dependencies>
+ </cvsmodule>
+
+ <cvsmodule id="libgconf-java" cvsroot="gnome.org">
+ <suggests>
+ <dep package="gcj" />
+ </suggests>
+ <dependencies>
+ <dep package="libgtk-java" />
+ <dep package="libgnome-java" />
+ </dependencies>
+ </cvsmodule>
+
+ <metamodule id="java-gnome">
+ <dependencies>
+ <dep package="libgtk-java" />
+ <dep package="libgnome-java" />
+ <dep package="libglade-java" />
+ <dep package="libgconf-java" />
+ </dependencies>
+ </metamodule>
+
+</moduleset>
diff --git a/build-scripts/jhbuild/modulesets/gnome-2.10.modules b/build-scripts/jhbuild/modulesets/gnome-2.10.modules
new file mode 100644
index 0000000..4d20432
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/gnome-2.10.modules
@@ -0,0 +1,1621 @@
+<?xml version="1.0"?><!--*- mode: nxml -*-->
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+
+ <repository type="cvs" name="gnome.org" default="yes"
+ cvsroot=":pserver:anonymous@anoncvs.gnome.org:/cvs/gnome"
+ password=""/>
+ <repository type="cvs" name="cairo.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/cairo"
+ password=""/>
+ <repository type="cvs" name="mozilla.org"
+ cvsroot=":pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot"
+ password="anonymous"/>
+ <repository type="cvs" name="gstreamer.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/gstreamer"
+ password=""/>
+ <repository type="cvs" name="menu.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/menus"
+ password=""/>
+ <repository type="cvs" name="mime.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/mime"
+ password=""/>
+ <repository type="cvs" name="xklavier.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/xklavier"
+ password=""/>
+
+ <repository type="cvs" name="elysium-project.sf.net"
+ cvsroot=":pserver:anonymous@elysium-project.cvs.sourceforge.net:/cvsroot/elysium-project"
+ password=""/>
+ <repository type="cvs" name="gaim.sf.net"
+ cvsroot=":pserver:anonymous@gaim.cvs.sourceforge.net:/cvsroot/gaim"
+ password=""/>
+ <repository type="cvs" name="clearlooks.sf.net"
+ cvsroot=":pserver:anonymous@clearlooks.cvs.sourceforge.net:/cvsroot/clearlooks"
+ password=""/>
+
+ <repository type="arch" name="rhythmbox"
+ archive="rhythmbox-devel@gnome.org--2004"
+ href="http://web.rhythmbox.org/arch/2004"/>
+
+ <tarball id="scrollkeeper" version="0.3.14" supports-non-srcdir-builds="no">
+ <source href="http://unc.dl.sourceforge.net/sourceforge/scrollkeeper/scrollkeeper-0.3.14.tar.gz"
+ size="679513" md5sum="161eb3f29e30e7b24f84eb93ac696155"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="libxslt"/>
+ <dep package="intltool"/>
+ </dependencies>
+ <patches>
+ <patch file="scrollkeeper_clean_xml_validation_context.patch" strip="1"/>
+ <patch file="scrollkeeper_language_fix.patch" strip="1"/>
+ <patch file="scrollkeeper_rw_offset_fix.patch" strip="1"/>
+ </patches>
+ </tarball>
+
+ <include href="freedesktop.modules"/>
+ <include href="gnutls.modules"/>
+
+ <autotools id="cairo-gtk-engine">
+ <branch repo="cairo.freedesktop.org"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="cairo"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="shared-mime-info" supports-non-srcdir-builds="no">
+ <branch repo="mime.freedesktop.org"/>
+ <dependencies>
+ <dep package="intltool"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="desktop-file-utils">
+ <branch repo="menu.freedesktop.org"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="intltool"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="libxklavier" supports-non-srcdir-builds="no">
+ <branch repo="xklavier.freedesktop.org"/>
+ </autotools>
+
+ <autotools id="intltool">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-common">
+ <branch revision="gnome-2-12"/>
+ </autotools>
+ <autotools id="libxml2">
+ <branch module="gnome-xml" checkoutdir="libxml2"/>
+ </autotools>
+ <autotools id="libxslt">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk-doc">
+ <branch/>
+ <dependencies>
+ <dep package="libxslt"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glib">
+ <branch revision="glib-2-6"/>
+ <dependencies>
+ <dep package="gtk-doc"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pango">
+ <branch revision="pango-1-8"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libXft"/>
+ </dependencies>
+ </autotools>
+ <autotools id="atk">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk+">
+ <branch revision="gtk-2-6"/>
+ <dependencies>
+ <dep package="pango"/>
+ <dep package="atk"/>
+ <dep package="shared-mime-info"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gail">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="atk"/>
+ <dep package="libgnomecanvas"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtkhtml2">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="gail"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libIDL">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="ORBit2">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libIDL"/>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gconf">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ <dep package="libxml2"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libbonobo">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ <dep package="intltool"/>
+ <dep package="gnome-common"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-mime-data">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-icon-theme">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="hicolor-icon-theme"/>
+ </dependencies>
+ </autotools>
+ <tarball id="howl" version="1.0.0">
+ <source href="http://www.porchdogsoft.com/download/howl-1.0.0.tar.gz"
+ size="542782" md5sum="c389d3ffba0e69a179de2ec650f1fdcc"/>
+ <patches>
+ <patch file="howl-1.0.0-buildfix.patch" strip="1"/>
+ </patches>
+ </tarball>
+ <autotools id="gnome-vfs">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="gconf"/>
+ <dep package="desktop-file-utils"/>
+ <dep package="shared-mime-info"/>
+ <dep package="gnome-mime-data"/>
+ <dep package="howl"/>
+ <dep package="hal-0.4"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-keyring">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libart_lgpl">
+ <branch/>
+ </autotools>
+ <autotools id="libgnome">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="libxslt"/>
+ <dep package="libbonobo"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gconf"/>
+ <dep package="esound"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomecanvas">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libart_lgpl"/>
+ <dep package="libglade"/>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libbonoboui">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnome"/>
+ <dep package="libbonobo"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeui">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libbonoboui"/>
+ <dep package="libglade"/>
+ <dep package="gnome-icon-theme"/>
+ <dep package="gnome-keyring"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libglade">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pygtk" supports-non-srcdir-builds="no">
+ <branch revision="pygtk-2-6"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pyorbit">
+ <branch/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-python">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="pyorbit"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-python-extras">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gnome-panel"/>
+ <dep package="gtkhtml2"/>
+ <dep package="libgnomeprint"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="gtksourceview"/>
+ <dep package="libwnck"/>
+ </dependencies>
+ </autotools>
+ <autotools id="bug-buddy">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-menus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libwnck">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="startup-notification"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-desktop" autogenargs="--with-gnome-distributor=JHBuild">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="startup-notification"/>
+ <dep package="gnome-themes"/>
+ <dep package="scrollkeeper"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-menus">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="gnome-vfs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-panel">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-desktop"/>
+ <dep package="libwnck"/>
+ <dep package="evolution-data-server"/>
+ <dep package="gnome-menus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-session">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libwnck"/>
+ <dep package="esound"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-applets">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="gnome-panel"/>
+ <dep package="libgtop"/>
+ <dep package="gail"/>
+ <dep package="libxklavier"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins"/>
+ <dep package="gucharmap"/>
+ <dep package="system-tools-backends"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-games">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="librsvg"/>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gob"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libcroco" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="pango"/>
+ </dependencies>
+ </autotools>
+ <autotools id="librsvg" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="gtk+"/>
+ <dep package="libart_lgpl"/>
+ <dep package="gnome-common"/>
+ <dep package="libgsf"/>
+ <dep package="libcroco"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="eel">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="librsvg"/>
+ <dep package="libgnomeui"/>
+ <dep package="gail"/>
+ <dep package="gnome-menus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="esound"/>
+ <dep package="eel"/>
+ <dep package="librsvg"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-desktop"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-cd-burner">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-media" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-vcs">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="metacity">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="intltool"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgtop">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-system-monitor">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libwnck"/>
+ <dep package="libgtop"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-control-center" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="esound"/>
+ <dep package="gnome-desktop"/>
+ <dep package="metacity"/>
+ <dep package="nautilus"/>
+ <dep package="libxklavier"/>
+ <dep package="gnome-menus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="yelp">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gtkhtml2"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="devhelp">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-vfs"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-utils">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gconf-editor" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+ <tarball id="audiofile" version="0.2.6" supports-non-srcdir-builds="no">
+ <source href="http://www.68k.org/~michael/audiofile/audiofile-0.2.6.tar.gz"
+ size="374688" md5sum="9c1049876cd51c0f1b12c2886cce4d42"/>
+ </tarball>
+ <autotools id="esound">
+ <branch/>
+ <dependencies>
+ <dep package="audiofile"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-media">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="esound"/>
+ <dep package="gail"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins"/>
+ <dep package="nautilus-cd-burner"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gdm2">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="librsvg"/>
+ </dependencies>
+ </autotools>
+ <autotools id="vte">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-terminal">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libglade"/>
+ <dep package="libgnomeui"/>
+ <dep package="vte"/>
+ <dep package="startup-notification"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk-engines">
+ <branch revision="gtk-engines-2-6"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeprint">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="libart_lgpl"/>
+ <dep package="glib"/>
+ <dep package="gnome-common"/>
+ <dep package="pango"/>
+ <dep package="libgnomecups"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeprintui">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomeprint"/>
+ <dep package="gtk+"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="gnome-icon-theme"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gedit">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="eel"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="gtksourceview"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gedit-plugins">
+ <branch/>
+ <dependencies>
+ <dep package="gedit"/>
+ <dep package="libgnomeui"/>
+ <dep package="eel"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="memprof">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="eog">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="eel"/>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprint"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gal">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgsf">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="gnome-vfs"/>
+ <dep package="libbonobo"/>
+ </dependencies>
+ </autotools>
+ <autotools id="goffice">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libgsf"/>
+ <dep package="libxml2"/>
+ <dep package="pango"/>
+ <dep package="libglade"/>
+ <dep package="libgnomeprint"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libart_lgpl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnumeric">
+ <branch/>
+ <dependencies>
+ <dep package="goffice"/>
+ <dep package="libgsf"/>
+ <dep package="libgda"/>
+ <dep package="pygtk"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gimp" autogenargs="--disable-print">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libart_lgpl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glade">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glade2c">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="sawfish">
+ <branch revision="gnome-2"/>
+ <dependencies>
+ <dep package="rep-gtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="rep-gtk">
+ <branch/>
+ <dependencies>
+ <dep package="librep"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="librep">
+ <branch/>
+ </autotools>
+ <autotools id="rhythmbox">
+ <branch repo="rhythmbox" module="rhythmbox--main--0.9" checkoutdir="rhythmbox"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gst-plugins"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gstreamer" autogenargs="-- --disable-plugin-builddir --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" revision="BRANCH-GSTREAMER-0_8"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gst-plugins" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" revision="BRANCH-GSTREAMER-0_8"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="planner">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libgsf"/>
+ </dependencies>
+ </autotools>
+ <autotools id="file-roller">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="balsa">
+ <branch revision="BALSA_2"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pan">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnet"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gcalctool" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="ggv" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="ekiga">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gucharmap" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtksourceview">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeprint"/>
+ <dep package="gnome-vfs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glimmer">
+ <branch/>
+ <dependencies>
+ <dep package="gtksourceview"/>
+ <dep package="libgnomeprint"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gdl">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="librsvg"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-build">
+ <branch/>
+ <dependencies>
+ <dep package="gdl"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gtkhtml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gdl">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="scaffold">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="vte"/>
+ <dep package="gdl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libsigc++2">
+ <branch/>
+ </autotools>
+ <autotools id="glibmm">
+ <branch revision="glibmm-2-6"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libsigc++2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtkmm">
+ <branch revision="gtkmm-2-6"/>
+ <dependencies>
+ <dep package="glibmm"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="orbitcpp">
+ <branch/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomemm">
+ <branch/>
+ <dependencies>
+ <dep package="libgnome"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libglademm">
+ <branch/>
+ <dependencies>
+ <dep package="libglade"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libbonobomm">
+ <branch/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="gtkmm"/>
+ <dep package="orbitcpp"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libbonobouimm">
+ <branch/>
+ <dependencies>
+ <dep package="libbonoboui"/>
+ <dep package="gnomemm/libbonobomm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomecanvasmm">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomecanvas"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/gconfmm">
+ <branch/>
+ <dependencies>
+ <dep package="gconf"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomeuimm">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnomemm/libgnomemm"/>
+ <dep package="gnomemm/gconfmm"/>
+ <dep package="gnomemm/libgnomecanvasmm"/>
+ <dep package="gnomemm/libglademm"/>
+ <dep package="gnomemm/gnome-vfsmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/gnome-vfsmm">
+ <branch/>
+ <dependencies>
+ <dep package="glibmm"/>
+ <dep package="gnome-vfs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libpanelappletmm">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomeprintmm">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libgnomeprint"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomeprintuimm">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/libgnomeprintmm"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgdamm">
+ <branch revision="libgda-1-2"/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libgda"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/gtkmm_hello">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="regexxer">
+ <branch/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/gconfmm"/>
+ <dep package="gnomemm/libglademm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnet" autogenargs="--enable-glib2">
+ <branch revision="GNET_1_1"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomeicu">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="at-spi">
+ <branch/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="gail"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgail-gnome">
+ <branch/>
+ <dependencies>
+ <dep package="at-spi"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="at-poke">
+ <branch/>
+ <dependencies>
+ <dep package="libgail-gnome"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-mag">
+ <branch/>
+ <dependencies>
+ <dep package="at-spi"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gok">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="at-spi"/>
+ <dep package="libgnomeui"/>
+ <dep package="libwnck"/>
+ <dep package="esound"/>
+ <dep package="scrollkeeper"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-speech">
+ <branch/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnopernicus">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="gconf"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-speech"/>
+ <dep package="gnome-mag"/>
+ </dependencies>
+ </autotools>
+ <autotools id="dasher" autogenargs="--with-a11y --with-gnome">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="at-spi"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-speech"/>
+ <dep package="gnome-vfs"/>
+ </dependencies>
+ </autotools>
+ <metamodule id="meta-gnome-devel-platform">
+ <dependencies>
+ <dep package="libgnome"/>
+ <dep package="libbonobo"/>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-core">
+ <dependencies>
+ <dep package="gnome-desktop"/>
+ <dep package="gnome-panel"/>
+ <dep package="gnome-session"/>
+ <dep package="gnome-terminal"/>
+ <dep package="gnome-applets"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-nautilus">
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-desktop">
+ <dependencies>
+ <dep package="meta-gnome-core"/>
+ <dep package="gnome-control-center"/>
+ <dep package="meta-nautilus"/>
+ <dep package="yelp"/>
+ <dep package="bug-buddy"/>
+ <dep package="gedit"/>
+ <dep package="gtk-engines"/>
+ <dep package="eog"/>
+ <dep package="ggv"/>
+ <dep package="metacity"/>
+ <dep package="gconf-editor"/>
+ <dep package="gnome-utils"/>
+ <dep package="gnome-system-monitor"/>
+ <dep package="gstreamer"/>
+ <dep package="gnome-media"/>
+ <dep package="gnome-netstatus"/>
+ <dep package="gcalctool"/>
+ <dep package="gpdf"/>
+ <dep package="gucharmap"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="zenity"/>
+ <dep package="libgail-gnome"/>
+ <dep package="gnopernicus"/>
+ <dep package="gok"/>
+ <dep package="epiphany"/>
+ <dep package="gnome-games"/>
+ <dep package="gnome-user-docs"/>
+ <dep package="file-roller"/>
+ <dep package="gnome-system-tools"/>
+ <dep package="gnome-nettool"/>
+ <dep package="vino"/>
+ <dep package="gnome-volume-manager"/>
+ <dep package="totem"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-backgrounds"/>
+ <dep package="sound-juicer"/>
+ <dep package="totem"/>
+ <dep package="evolution"/>
+ <dep package="evolution-webcal"/>
+ <dep package="ekiga"/>
+
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-devel-tools">
+ <dependencies>
+ <dep package="glade"/>
+ <dep package="memprof"/>
+ <dep package="gconf-editor"/>
+ <dep package="devhelp"/>
+ <dep package="nautilus-vcs"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-python">
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-c++">
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/libgnomeuimm"/>
+ <dep package="gnomemm/gnome-vfsmm"/>
+ <dep package="gnomemm/libpanelappletmm"/>
+ <dep package="gnomemm/libbonobouimm"/>
+ <dep package="gnomemm/libgnomeprintuimm"/>
+ <dep package="libxml++"/>
+ <dep package="gnomemm/libgdamm"/>
+ <dep package="bakery"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-accessibility">
+ <dependencies>
+ <dep package="libgail-gnome"/>
+ <dep package="at-poke"/>
+ <dep package="dasher"/>
+ <dep package="gnome-mag"/>
+ <dep package="gok"/>
+ <dep package="gnome-speech"/>
+ <dep package="gnopernicus"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-proposed">
+ <dependencies>
+ </dependencies>
+ </metamodule>
+ <autotools id="sodipodi">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libart_lgpl"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-themes">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="gtk-engines"/>
+ </dependencies>
+ </autotools>
+ <autotools id="clearlooks">
+ <branch repo="clearlooks.sf.net"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libgnome"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gob">
+ <branch/>
+ </autotools>
+ <autotools id="libgnetwork">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="gconf"/>
+ <dep package="intltool"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgircclient">
+ <branch/>
+ <dependencies>
+ <dep package="libgnetwork"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomechat">
+ <branch/>
+ <dependencies>
+ <dep package="libgnetwork"/>
+ <dep package="libgircclient"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <mozillamodule id="mozilla" autogenargs="--enable-default-toolkit=gtk2 --disable-mailnews --disable-ldap --disable-debug --enable-optimize --disable-tests --enable-crypto --enable-xft --with-system-zlib --disable-freetype2" cvsroot="mozilla.org" revision="MOZILLA_1_7_BRANCH">
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </mozillamodule>
+ <autotools id="epiphany">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="mozilla"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="epiphany-extensions">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="epiphany"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pyphany">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="epiphany-extensions"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="galeon">
+ <branch/>
+ <dependencies>
+ <dep package="mozilla"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libsoup">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="gnutls"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtkhtml">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ <dep package="libglade"/>
+ <dep package="gail"/>
+ <dep package="libgnomeprint"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libsoup"/>
+ <dep package="gal"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evolution-data-server" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="libgnome"/>
+ <dep package="libgnomeui"/>
+ <dep package="libsoup"/>
+ <dep package="libxml2"/>
+ <dep package="gconf"/>
+ <dep package="gnome-vfs"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evolution">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="evolution-data-server"/>
+ <dep package="gtkhtml"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evolution-webcal">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="evolution-data-server"/>
+ <dep package="libsoup"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <tarball id="xchat" version="2.4.1">
+ <source href="http://xchat.org/files/source/2.4/xchat-2.4.1.tar.bz2"
+ size="1214388" md5sum="aeb2337cc36dd4a9ac0cd6e909f67227"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </tarball>
+ <tarball id="camorama" version="0.17">
+ <source href="http://camorama.fixedgear.org/downloads/camorama-0.17.tar.bz2"
+ size="312233" md5sum="2b2784af53a1ba8fa4419aa806967b35"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </tarball>
+ <autotools id="gtk-engines-cleanice">
+ <branch repo="elysium-project.sf.net"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gaim">
+ <branch repo="gaim.sf.net"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="zenity">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="libgnomecanvas"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gpdf">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-netstatus">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-doc-utils">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libxslt"/>
+ </dependencies>
+ </autotools>
+ <autotools id="totem" autogenargs="--enable-gstreamer">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="gnome-desktop"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-themes-extras">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-themes"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgda">
+ <branch module="libgda" revision="release-1-2-branch"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomedb" autogenargs="--enable-gnome=yes">
+ <branch/>
+ <dependencies>
+ <dep package="libgda"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="mergeant">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomedb"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtranslator">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-spell">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomecups">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-cups-manager">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomecups"/>
+ <dep package="libgnomeui"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libxml++">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="glibmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="bakery">
+ <branch/>
+ <dependencies>
+ <dep package="libxml++"/>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/libglademm"/>
+ <dep package="gnomemm/gconfmm"/>
+ <dep package="gnomemm/gnome-vfsmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-hello">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libgnome"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-system-tools">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ <dep package="gconf"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ <dep package="libglade"/>
+ <dep package="system-tools-backends"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-user-docs">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ </dependencies>
+ </autotools>
+ <autotools id="loudmouth">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gossip">
+ <branch revision="gossip-0-8"/>
+ <dependencies>
+ <dep package="loudmouth"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="conglomerate">
+ <branch/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="gconf"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="sound-juicer">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-media"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins"/>
+ <dep package="nautilus-cd-burner"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-network">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <tarball id="guile" version="1.6.7">
+ <source href="ftp://ftp.gnu.org/gnu/guile/guile-1.6.7.tar.gz"
+ size="3039294" md5sum="c2ff2a2231f0cbb2e838dd8701a587c5"/>
+ </tarball>
+ <tarball id="autogen" version="5.6.5">
+ <source href="http://internap.dl.sourceforge.net/sourceforge/autogen/autogen-5.6.5.tar.gz"
+ size="1144260" md5sum="54a6cb0be7e6b526af9aba4a73013885"/>
+ <dependencies>
+ <dep package="guile"/>
+ </dependencies>
+ </tarball>
+ <autotools id="anjuta">
+ <branch/>
+ <dependencies>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="vte"/>
+ <dep package="gnome-build"/>
+ <dep package="autogen"/>
+ </dependencies>
+ </autotools>
+ <autotools id="OpenApplet">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtetrinet">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glom">
+ <branch/>
+ <dependencies>
+ <dep package="gnomemm/libgdamm"/>
+ <dep package="bakery"/>
+ <dep package="libgnome"/>
+ </dependencies>
+ </autotools>
+ <autotools id="vino">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libglade"/>
+ <dep package="gconf"/>
+ <dep package="gnutls"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-keyring-manager">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-keyring"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-volume-manager">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libglade"/>
+ <dep package="hal-0.4"/>
+ </dependencies>
+ </autotools>
+ <metamodule id="meta-storage">
+ <dependencies>
+ <dep package="storage/storage-store"/>
+ <dep package="storage/vfs"/>
+ <dep package="storage/applet"/>
+ </dependencies>
+ </metamodule>
+ <autotools id="storage/storage-store">
+ <branch/>
+ <dependencies>
+ <dep package="dbus-0.23"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libstorage">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-vfs"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libstorage-translators">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libstorage"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/vfs">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libstorage"/>
+ <dep package="storage/libstorage-translators"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/pet">
+ <branch/>
+ </autotools>
+ <autotools id="storage/libmrs">
+ <branch/>
+ <dependencies>
+ <dep package="storage/pet"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libmrs-converter">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libmrs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libstorage-nl">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libstorage"/>
+ <dep package="storage/libmrs"/>
+ <dep package="storage/libmrs-converter"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/applet">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-python"/>
+ <dep package="storage/libstorage-nl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-nettool">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="monkey-bubble">
+ <branch/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins"/>
+ <dep package="libxml2"/>
+ <dep package="gconf"/>
+ <dep package="librsvg"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-schedule">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="yelp"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-backgrounds">
+ <branch/>
+ </autotools>
+ <autotools id="evince">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="poppler"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-python" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gst-python" autogenargs="--" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" revision="BRANCH-GSTREAMER-0_8"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins"/>
+ </dependencies>
+ </autotools>
+</moduleset>
diff --git a/build-scripts/jhbuild/modulesets/gnome-2.12.modules b/build-scripts/jhbuild/modulesets/gnome-2.12.modules
new file mode 100644
index 0000000..ffbd897
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/gnome-2.12.modules
@@ -0,0 +1,1747 @@
+<?xml version="1.0"?><!--*- mode: nxml -*-->
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+ <repository type="cvs" name="gnome.org" default="yes"
+ cvsroot=":pserver:anonymous@anoncvs.gnome.org:/cvs/gnome"
+ password=""/>
+ <repository type="cvs" name="cairo.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/cairo"
+ password=""/>
+ <repository type="cvs" name="mozilla.org"
+ cvsroot=":pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot"
+ password="anonymous"/>
+ <repository type="cvs" name="gstreamer.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/gstreamer"
+ password=""/>
+ <repository type="cvs" name="menu.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/menus"
+ password=""/>
+ <repository type="cvs" name="mime.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/mime"
+ password=""/>
+ <repository type="cvs" name="xklavier.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/xklavier"
+ password=""/>
+
+ <repository type="cvs" name="elysium-project.sf.net"
+ cvsroot=":pserver:anonymous@elysium-project.cvs.sourceforge.net:/cvsroot/elysium-project"
+ password=""/>
+ <repository type="cvs" name="gaim.sf.net"
+ cvsroot=":pserver:anonymous@gaim.cvs.sourceforge.net:/cvsroot/gaim"
+ password=""/>
+ <repository type="cvs" name="inkscape.sf.net"
+ cvsroot=":pserver:anonymous@inkscape.cvs.sourceforge.net:/cvsroot/inkscape"
+ password=""/>
+ <repository type="svn" name="svn.galago-project.org"
+ href="http://svn.galago-project.org/"/>
+ <repository type="svn" name="svn.debian.org"
+ href="svn://svn.debian.org/"/>
+
+ <tarball id="scrollkeeper" version="0.3.14" supports-non-srcdir-builds="no">
+ <source href="http://unc.dl.sourceforge.net/sourceforge/scrollkeeper/scrollkeeper-0.3.14.tar.gz"
+ size="679513" md5sum="161eb3f29e30e7b24f84eb93ac696155"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="libxslt"/>
+ <dep package="intltool"/>
+ </dependencies>
+ <patches>
+ <patch file="scrollkeeper_clean_xml_validation_context.patch" strip="1"/>
+ <patch file="scrollkeeper_language_fix.patch" strip="1"/>
+ <patch file="scrollkeeper_rw_offset_fix.patch" strip="1"/>
+ </patches>
+ </tarball>
+
+ <autotools id="iso-codes">
+ <branch repo="svn.debian.org" module="pkg-isocodes/trunk/iso-codes" checkoutdir="iso-codes"/>
+ </autotools>
+
+ <include href="freedesktop.modules"/>
+ <include href="gnutls.modules"/>
+
+ <autotools id="cairo-gtk-engine">
+ <branch repo="cairo.freedesktop.org"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="cairo-1-0"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="shared-mime-info" supports-non-srcdir-builds="no">
+ <branch repo="mime.freedesktop.org"/>
+ <dependencies>
+ <dep package="intltool"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="desktop-file-utils">
+ <branch repo="menu.freedesktop.org"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="intltool"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="libxklavier" supports-non-srcdir-builds="no">
+ <branch repo="xklavier.freedesktop.org"/>
+ </autotools>
+ <autotools id="libbtctl">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-bluetooth">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="glib"/>
+ <dep package="libbtctl"/>
+ <dep package="libglade"/>
+ <dep package="libgnomeui"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+ <autotools id="phonemgr">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="glib"/>
+ <dep package="libbtctl"/>
+ <dep package="gnome-bluetooth"/>
+ <dep package="libglade"/>
+ <dep package="libgnomeui"/>
+ <dep package="libgnome"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="intltool">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-common">
+ <branch revision="gnome-2-12"/>
+ </autotools>
+ <autotools id="libxml2">
+ <branch module="gnome-xml" checkoutdir="libxml2"/>
+ </autotools>
+ <autotools id="libxslt">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk-doc">
+ <branch/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="scrollkeeper"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glib">
+ <branch revision="glib-2-8"/>
+ <dependencies>
+ <dep package="gtk-doc"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pango">
+ <branch revision="pango-1-10"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="cairo-1-0"/>
+ <dep package="libXft"/>
+ </dependencies>
+ </autotools>
+ <autotools id="atk">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk+">
+ <branch revision="gtk-2-8"/>
+ <dependencies>
+ <dep package="cairo-1-0"/>
+ <dep package="pango"/>
+ <dep package="atk"/>
+ <dep package="shared-mime-info"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gail">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="atk"/>
+ <dep package="libgnomecanvas"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtkhtml2">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="gail"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libIDL">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="ORBit2">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libIDL"/>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gconf">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ <dep package="libxml2"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libbonobo">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ <dep package="intltool"/>
+ <dep package="gnome-common"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-mime-data">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-icon-theme">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="hicolor-icon-theme"/>
+ </dependencies>
+ </autotools>
+ <tarball id="howl" version="1.0.0">
+ <source href="http://www.porchdogsoft.com/download/howl-1.0.0.tar.gz"
+ size="542782" md5sum="c389d3ffba0e69a179de2ec650f1fdcc"/>
+ <patches>
+ <patch file="howl-1.0.0-buildfix.patch" strip="1"/>
+ </patches>
+ </tarball>
+ <autotools id="gnome-vfs">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="gconf"/>
+ <dep package="desktop-file-utils"/>
+ <dep package="shared-mime-info"/>
+ <dep package="gnome-mime-data"/>
+ <dep package="howl"/>
+ <dep package="hal"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-keyring">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libart_lgpl">
+ <branch/>
+ </autotools>
+ <autotools id="libgnome">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="libxslt"/>
+ <dep package="libbonobo"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gconf"/>
+ <dep package="esound"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomecanvas">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libart_lgpl"/>
+ <dep package="libglade"/>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libbonoboui">
+ <branch revision="gnome-2-10"/>
+ <dependencies>
+ <dep package="libgnome"/>
+ <dep package="libbonobo"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeui">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libbonoboui"/>
+ <dep package="libglade"/>
+ <dep package="gnome-icon-theme"/>
+ <dep package="gnome-keyring"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libglade">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pygtk">
+ <branch revision="pygtk-2-8"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libglade"/>
+ </dependencies>
+ <after>
+ <dep package="pycairo-1-0"/>
+ </after>
+ </autotools>
+ <autotools id="pyorbit">
+ <branch/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-python">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="pyorbit"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-python-extras">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gnome-panel"/>
+ <dep package="gtkhtml2"/>
+ <dep package="libgnomeprint"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="gtksourceview"/>
+ <dep package="libwnck"/>
+ <!-- Needs libgda 1.2, not HEAD <dep package="libgda" /> -->
+ <dep package="nautilus-cd-burner"/>
+ <dep package="libgtop"/>
+ <dep package="totem"/>
+ <dep package="gdl"/>
+ <dep package="gnome-media"/>
+ </dependencies>
+ </autotools>
+ <autotools id="bug-buddy">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libwnck">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="startup-notification"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-desktop" autogenargs="--with-gnome-distributor=JHBuild">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="startup-notification"/>
+ <dep package="gnome-themes"/>
+ <dep package="scrollkeeper"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-menus">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="gnome-common"/>
+ <dep package="glib"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-panel">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-desktop"/>
+ <dep package="libwnck"/>
+ <dep package="evolution-data-server"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-vfs"/>
+ <dep package="libglade"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-session">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libwnck"/>
+ <dep package="esound"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-applets">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="gnome-panel"/>
+ <dep package="libgtop"/>
+ <dep package="gail"/>
+ <dep package="libxklavier"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins"/>
+ <dep package="gucharmap"/>
+ <dep package="system-tools-backends"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-games">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="librsvg"/>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gob"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libcroco" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="pango"/>
+ </dependencies>
+ </autotools>
+ <autotools id="librsvg" autogenargs="--enable-more-warnings=no"
+ supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-12-branch"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="gtk+"/>
+ <dep package="libart_lgpl"/>
+ <dep package="gnome-common"/>
+ <dep package="libgsf"/>
+ <dep package="libcroco"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="eel">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="librsvg"/>
+ <dep package="libgnomeui"/>
+ <dep package="gail"/>
+ <dep package="gnome-desktop"/>
+ <dep package="gnome-menus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="esound"/>
+ <dep package="eel"/>
+ <dep package="librsvg"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-desktop"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-cd-burner">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-open-terminal">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-media" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-vcs">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="metacity">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="intltool"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgtop">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-system-monitor">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libwnck"/>
+ <dep package="libgtop"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-control-center" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="esound"/>
+ <dep package="gnome-desktop"/>
+ <dep package="metacity"/>
+ <dep package="nautilus"/>
+ <dep package="libxklavier"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="yelp">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="devhelp">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-vfs"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-utils">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gconf-editor" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+ <tarball id="audiofile" version="0.2.6" supports-non-srcdir-builds="no">
+ <source href="http://www.68k.org/~michael/audiofile/audiofile-0.2.6.tar.gz"
+ size="374688" md5sum="9c1049876cd51c0f1b12c2886cce4d42"/>
+ </tarball>
+ <autotools id="esound">
+ <branch/>
+ <dependencies>
+ <dep package="audiofile"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-media">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="esound"/>
+ <dep package="gail"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins"/>
+ <dep package="nautilus-cd-burner"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gdm2">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="librsvg"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="vte">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-terminal">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libglade"/>
+ <dep package="libgnomeui"/>
+ <dep package="vte"/>
+ <dep package="startup-notification"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk-engines">
+ <branch revision="gtk-engines-2-6"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeprint">
+ <branch/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="libart_lgpl"/>
+ <dep package="glib"/>
+ <dep package="gnome-common"/>
+ <dep package="pango"/>
+ <dep package="libgnomecups"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeprintui">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libgnomeprint"/>
+ <dep package="gtk+"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="gnome-icon-theme"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gedit">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="eel"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="gtksourceview"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gedit-plugins">
+ <branch/>
+ <dependencies>
+ <dep package="gedit"/>
+ <dep package="libgnomeui"/>
+ <dep package="eel"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="memprof">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="eog">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprint"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgsf">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="gnome-vfs"/>
+ <dep package="libbonobo"/>
+ </dependencies>
+ </autotools>
+ <autotools id="goffice">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libgsf"/>
+ <dep package="libxml2"/>
+ <dep package="pango"/>
+ <dep package="libglade"/>
+ <dep package="libgnomeprint"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libart_lgpl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnumeric">
+ <branch/>
+ <dependencies>
+ <dep package="goffice"/>
+ <dep package="libgsf"/>
+ <!-- Needs libgda 1.2, not HEAD <dep package="libgda" /> -->
+ <dep package="pygtk"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gimp" autogenargs="--disable-print">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libart_lgpl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glade">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glade2c">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="sawfish">
+ <branch revision="gnome-2"/>
+ <dependencies>
+ <dep package="rep-gtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="rep-gtk">
+ <branch/>
+ <dependencies>
+ <dep package="librep"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="librep">
+ <branch/>
+ </autotools>
+ <autotools id="rhythmbox">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gst-plugins"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="totem"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gstreamer" autogenargs="-- --disable-plugin-builddir --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" revision="BRANCH-GSTREAMER-0_8"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gst-plugins" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" revision="BRANCH-GSTREAMER-0_8"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="planner">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libgsf"/>
+ </dependencies>
+ </autotools>
+ <autotools id="file-roller">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="balsa">
+ <branch revision="BALSA_2"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pan">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnet"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gcalctool" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="ggv" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="ekiga">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gucharmap" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtksourceview" autogenargs="--enable-compile-warnings=maximum">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeprint"/>
+ <dep package="gnome-vfs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glimmer">
+ <branch/>
+ <dependencies>
+ <dep package="gtksourceview"/>
+ <dep package="libgnomeprint"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gdl">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="librsvg"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-build">
+ <branch/>
+ <dependencies>
+ <dep package="gdl"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gtkhtml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="scaffold">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="vte"/>
+ <dep package="gdl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libsigc++2">
+ <branch revision="libsigc-2-0"/>
+ </autotools>
+ <autotools id="glibmm">
+ <branch revision="glibmm-2-8"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libsigc++2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtkmm">
+ <branch revision="gtkmm-2-8"/>
+ <dependencies>
+ <dep package="glibmm"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="orbitcpp">
+ <branch/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomemm">
+ <branch/>
+ <dependencies>
+ <dep package="libgnome"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libglademm">
+ <branch/>
+ <dependencies>
+ <dep package="libglade"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libbonobomm">
+ <branch/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="gtkmm"/>
+ <dep package="orbitcpp"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libbonobouimm">
+ <branch/>
+ <dependencies>
+ <dep package="libbonoboui"/>
+ <dep package="gnomemm/libbonobomm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomecanvasmm">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomecanvas"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/gconfmm">
+ <branch/>
+ <dependencies>
+ <dep package="gconf"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomeuimm">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnomemm/libgnomemm"/>
+ <dep package="gnomemm/gconfmm"/>
+ <dep package="gnomemm/libgnomecanvasmm"/>
+ <dep package="gnomemm/libglademm"/>
+ <dep package="gnomemm/gnome-vfsmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/gnome-vfsmm">
+ <branch/>
+ <dependencies>
+ <dep package="glibmm"/>
+ <dep package="gnome-vfs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libpanelappletmm">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomeprintmm">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libgnomeprint"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomeprintuimm">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/libgnomeprintmm"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgdamm">
+ <branch revision="libgda-1-2"/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <!-- needs libgda 1.2, not HEAD <dep package="libgda" /> -->
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/gtkmm_hello">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="regexxer">
+ <branch/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/gconfmm"/>
+ <dep package="gnomemm/libglademm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnet" autogenargs="--enable-glib2">
+ <branch revision="GNET_1_1"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomeicu">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="at-spi">
+ <branch revision="AT_SPI_1_6_6"/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="gail"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgail-gnome">
+ <branch/>
+ <dependencies>
+ <dep package="at-spi"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="at-poke">
+ <branch/>
+ <dependencies>
+ <dep package="libgail-gnome"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-mag">
+ <branch/>
+ <dependencies>
+ <dep package="at-spi"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gok">
+ <branch/>
+ <dependencies>
+ <dep package="at-spi"/>
+ <dep package="libgnomeui"/>
+ <dep package="libwnck"/>
+ <dep package="esound"/>
+ <dep package="scrollkeeper"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-speech">
+ <branch/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnopernicus">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="gconf"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-speech"/>
+ <dep package="gnome-mag"/>
+ </dependencies>
+ </autotools>
+ <autotools id="dasher" autogenargs="--with-a11y --with-gnome">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="at-spi"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-speech"/>
+ <dep package="gnome-vfs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-screensaver">
+ <branch/>
+ <dependencies>
+ <dep package="gconf"/>
+ <dep package="gtk+"/>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-power-manager">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="hal"/>
+ <dep package="libwnck"/>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="intltool"/>
+ <dep package="libglade"/>
+ <dep package="libnotify"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gthumb">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-vfs"/>
+ <dep package="libglade"/>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="fast-user-switch-applet">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="libglade"/>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libnotify">
+ <branch repo="svn.galago-project.org" module="trunk/libnotify"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+
+ <metamodule id="meta-gnome-devel-platform">
+ <dependencies>
+ <dep package="libgnome"/>
+ <dep package="libbonobo"/>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-core">
+ <dependencies>
+ <dep package="gnome-desktop"/>
+ <dep package="gnome-panel"/>
+ <dep package="gnome-session"/>
+ <dep package="gnome-terminal"/>
+ <dep package="gnome-applets"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-nautilus">
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-desktop">
+ <dependencies>
+ <dep package="meta-gnome-core"/>
+ <dep package="gnome-control-center"/>
+ <dep package="meta-nautilus"/>
+ <dep package="yelp"/>
+ <dep package="bug-buddy"/>
+ <dep package="gedit"/>
+ <dep package="gtk-engines"/>
+ <dep package="eog"/>
+ <dep package="metacity"/>
+ <dep package="gconf-editor"/>
+ <dep package="gnome-utils"/>
+ <dep package="gnome-system-monitor"/>
+ <dep package="gstreamer"/>
+ <dep package="gnome-media"/>
+ <dep package="gnome-netstatus"/>
+ <dep package="gcalctool"/>
+ <dep package="gucharmap"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="zenity"/>
+ <dep package="libgail-gnome"/>
+ <dep package="gnopernicus"/>
+ <dep package="gok"/>
+ <dep package="epiphany"/>
+ <dep package="gnome-games"/>
+ <dep package="gnome-user-docs"/>
+ <dep package="file-roller"/>
+ <dep package="gnome-system-tools"/>
+ <dep package="gnome-nettool"/>
+ <dep package="vino"/>
+ <dep package="gnome-volume-manager"/>
+ <dep package="totem"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-backgrounds"/>
+ <dep package="sound-juicer"/>
+ <dep package="evolution"/>
+ <dep package="evolution-webcal"/>
+ <dep package="evolution-exchange"/>
+ <dep package="ekiga"/>
+ <dep package="evince"/>
+ <dep package="dasher"/>
+ <dep package="gnome-keyring-manager"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-devel-tools">
+ <dependencies>
+ <dep package="glade"/>
+ <dep package="memprof"/>
+ <dep package="gconf-editor"/>
+ <dep package="devhelp"/>
+ <dep package="nautilus-vcs"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-python">
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ </dependencies>
+ <after>
+ <dep package="gnome-python-extras"/>
+ </after>
+ </metamodule>
+ <metamodule id="meta-gnome-c++">
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/libgnomeuimm"/>
+ <dep package="gnomemm/gnome-vfsmm"/>
+ <dep package="gnomemm/libpanelappletmm"/>
+ <dep package="gnomemm/libbonobouimm"/>
+ <dep package="gnomemm/libgnomeprintuimm"/>
+ <dep package="libxml++"/>
+ <dep package="gnomemm/libgdamm"/>
+ <dep package="bakery"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-accessibility">
+ <dependencies>
+ <dep package="libgail-gnome"/>
+ <dep package="at-poke"/>
+ <dep package="dasher"/>
+ <dep package="gnome-mag"/>
+ <dep package="gok"/>
+ <dep package="gnome-speech"/>
+ <dep package="gnopernicus"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-proposed">
+ <dependencies>
+ </dependencies>
+ </metamodule>
+ <autotools id="sodipodi">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libart_lgpl"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-themes">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="gtk-engines"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gob">
+ <branch/>
+ </autotools>
+ <autotools id="libgnetwork">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="gconf"/>
+ <dep package="intltool"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgircclient">
+ <branch/>
+ <dependencies>
+ <dep package="libgnetwork"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomechat">
+ <branch/>
+ <dependencies>
+ <dep package="libgnetwork"/>
+ <dep package="libgircclient"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <mozillamodule id="mozilla" autogenargs="--enable-default-toolkit=gtk2 --disable-mailnews --disable-ldap --disable-debug --enable-optimize --disable-tests --enable-crypto --enable-xft --with-system-zlib --disable-freetype2 --enable-application=browser" cvsroot="mozilla.org" revision="MOZILLA_1_7_BRANCH">
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </mozillamodule>
+ <autotools id="epiphany">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="iso-codes"/>
+ <dep package="libgnomeui"/>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="epiphany-extensions">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="epiphany"/>
+ </dependencies>
+ </autotools>
+ <autotools id="galeon">
+ <branch/>
+ <dependencies>
+ <dep package="mozilla"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libsoup">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="gnutls"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtkhtml">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ <dep package="libglade"/>
+ <dep package="gail"/>
+ <dep package="libgnomeprint"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libsoup"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evolution-data-server" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="libgnome"/>
+ <dep package="libgnomeui"/>
+ <dep package="libsoup"/>
+ <dep package="libxml2"/>
+ <dep package="gconf"/>
+ <dep package="gnome-vfs"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evolution">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="evolution-data-server"/>
+ <dep package="gtkhtml"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evolution-webcal">
+ <branch/>
+ <dependencies>
+ <dep package="evolution-data-server"/>
+ <dep package="libsoup"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evolution-exchange">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="evolution-data-server"/>
+ <dep package="evolution"/>
+ <dep package="libsoup"/>
+ </dependencies>
+ </autotools>
+ <tarball id="xchat" version="2.4.5">
+ <source href="http://xchat.org/files/source/2.4/xchat-2.4.5.tar.bz2"
+ size="1324626" md5sum="9107a92693e6c62ff2008030e698b92b"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </tarball>
+ <tarball id="camorama" version="0.17">
+ <source href="http://camorama.fixedgear.org/downloads/camorama-0.17.tar.bz2"
+ size="312233" md5sum="2b2784af53a1ba8fa4419aa806967b35"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </tarball>
+ <autotools id="gtk-engines-cleanice">
+ <branch repo="elysium-project.sf.net"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gaim">
+ <branch repo="gaim.sf.net"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="zenity">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gpdf">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-netstatus">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-panel"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-doc-utils">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="intltool"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <tarball id="libmusicbrainz" version="2.1.1">
+ <source href="ftp://ftp.musicbrainz.org/pub/musicbrainz/libmusicbrainz-2.1.1.tar.gz"
+ size="528162" md5sum="4f753d93a85cf413e00f1394b8cbd269"/>
+ </tarball>
+ <autotools id="totem" autogenargs="--enable-gstreamer">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="gnome-desktop"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins"/>
+ <dep package="libmusicbrainz"/>
+ <dep package="iso-codes"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-themes-extras">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-themes"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgda">
+ <branch module="libgda"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomedb" autogenargs="--enable-gnome=yes">
+ <branch/>
+ <dependencies>
+ <dep package="libgda"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="mergeant">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomedb"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtranslator">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-spell">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomecups">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-cups-manager">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomecups"/>
+ <dep package="libgnomeui"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libxml++">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="glibmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="bakery">
+ <branch/>
+ <dependencies>
+ <dep package="libxml++"/>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/libglademm"/>
+ <dep package="gnomemm/gconfmm"/>
+ <dep package="gnomemm/gnome-vfsmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-hello">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libgnome"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-system-tools">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ <dep package="gconf"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ <dep package="libglade"/>
+ <dep package="nautilus"/>
+ <dep package="system-tools-backends"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-user-docs">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ </dependencies>
+ </autotools>
+ <autotools id="loudmouth">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gossip">
+ <branch revision="gossip-0-8"/>
+ <dependencies>
+ <dep package="loudmouth"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="conglomerate">
+ <branch/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="gconf"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="sound-juicer">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="gnome-doc-utils"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-media"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins"/>
+ <dep package="nautilus-cd-burner"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-network">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <tarball id="guile" version="1.6.7">
+ <source href="ftp://ftp.gnu.org/gnu/guile/guile-1.6.7.tar.gz"
+ size="3039294" md5sum="c2ff2a2231f0cbb2e838dd8701a587c5"/>
+ </tarball>
+ <tarball id="autogen" version="5.6.5">
+ <source href="http://internap.dl.sourceforge.net/sourceforge/autogen/autogen-5.6.5.tar.gz"
+ size="1144260" md5sum="54a6cb0be7e6b526af9aba4a73013885"/>
+ <dependencies>
+ <dep package="guile"/>
+ </dependencies>
+ </tarball>
+ <autotools id="anjuta">
+ <branch/>
+ <dependencies>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="vte"/>
+ <dep package="gnome-build"/>
+ <dep package="autogen"/>
+ </dependencies>
+ </autotools>
+ <autotools id="OpenApplet">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtetrinet">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glom">
+ <branch/>
+ <dependencies>
+ <dep package="gnomemm/libgdamm"/>
+ <dep package="bakery"/>
+ <dep package="gnomemm/libgnomecanvasmm"/>
+ <dep package="libgnome"/>
+ <dep package="iso-codes"/>
+ <dep package="pygtk"/>
+ <dep package="gnome-python-extras"/>
+ </dependencies>
+ </autotools>
+ <autotools id="vino">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libglade"/>
+ <dep package="gconf"/>
+ <dep package="gnutls"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-keyring-manager" autogenargs="--disable-more-warnings">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-keyring"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-volume-manager">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libglade"/>
+ <dep package="hal"/>
+ </dependencies>
+ </autotools>
+ <metamodule id="meta-storage">
+ <dependencies>
+ <dep package="storage/storage-store"/>
+ <dep package="storage/vfs"/>
+ <dep package="storage/applet"/>
+ </dependencies>
+ </metamodule>
+ <autotools id="storage/storage-store">
+ <branch/>
+ <dependencies>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libstorage">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-vfs"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libstorage-translators">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libstorage"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/vfs">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libstorage"/>
+ <dep package="storage/libstorage-translators"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/pet">
+ <branch/>
+ </autotools>
+ <autotools id="storage/libmrs">
+ <branch/>
+ <dependencies>
+ <dep package="storage/pet"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libmrs-converter">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libmrs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libstorage-nl">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libstorage"/>
+ <dep package="storage/libmrs"/>
+ <dep package="storage/libmrs-converter"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/applet">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-python"/>
+ <dep package="storage/libstorage-nl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-nettool">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="monkey-bubble">
+ <branch/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins"/>
+ <dep package="libxml2"/>
+ <dep package="gconf"/>
+ <dep package="librsvg"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-schedule">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="yelp"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-backgrounds">
+ <branch/>
+ </autotools>
+ <autotools id="evince">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="poppler-0-4"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-python" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gst-python" autogenargs="--" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" revision="BRANCH-GSTREAMER-0_8"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins"/>
+ </dependencies>
+ </autotools>
+ <autotools id="inkscape">
+ <branch repo="inkscape.sf.net"/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libxslt"/>
+ </dependencies>
+ </autotools>
+</moduleset>
diff --git a/build-scripts/jhbuild/modulesets/gnome-2.14.modules b/build-scripts/jhbuild/modulesets/gnome-2.14.modules
new file mode 100644
index 0000000..8a885ec
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/gnome-2.14.modules
@@ -0,0 +1,2014 @@
+<?xml version="1.0"?><!--*- mode: nxml -*-->
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+ <repository type="cvs" name="gnome.org" default="yes"
+ cvsroot=":pserver:anonymous@anoncvs.gnome.org:/cvs/gnome"
+ password=""/>
+ <repository type="cvs" name="cairo.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/cairo"
+ password=""/>
+ <repository type="cvs" name="mozilla.org"
+ cvsroot=":pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot"
+ password="anonymous"/>
+ <repository type="cvs" name="liboil.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/liboil"
+ password=""/>
+ <repository type="cvs" name="gstreamer.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/gstreamer"
+ password=""/>
+ <repository type="cvs" name="menu.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/menus"
+ password=""/>
+ <repository type="cvs" name="mime.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/mime"
+ password=""/>
+ <repository type="cvs" name="xklavier.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/xklavier"
+ password=""/>
+
+ <repository type="cvs" name="elysium-project.sf.net"
+ cvsroot=":pserver:anonymous@elysium-project.cvs.sourceforge.net:/cvsroot/elysium-project"
+ password=""/>
+ <repository type="cvs" name="gaim.sf.net"
+ cvsroot=":pserver:anonymous@gaim.cvs.sourceforge.net:/cvsroot/gaim"
+ password=""/>
+ <repository type="cvs" name="inkscape.sf.net"
+ cvsroot=":pserver:anonymous@inkscape.cvs.sourceforge.net:/cvsroot/inkscape"
+ password=""/>
+ <repository type="svn" name="svn.galago-project.org"
+ href="http://svn.galago-project.org/"/>
+ <repository type="svn" name="osiris.chipx86.com"
+ href="http://osiris.chipx86.com/svn/osiris-misc/"/>
+ <repository type="svn" name="svn.debian.org"
+ href="svn://svn.debian.org/"/>
+ <repository type="cvs" name="openh323.sf.net"
+ cvsroot=":pserver:anonymous@openh323.cvs.sourceforge.net:/cvsroot/openh323"
+ password="" />
+
+ <tarball id="scrollkeeper" version="0.3.14" supports-non-srcdir-builds="no">
+ <source href="http://easynews.dl.sourceforge.net/sourceforge/scrollkeeper/scrollkeeper-0.3.14.tar.gz"
+ size="679513" md5sum="161eb3f29e30e7b24f84eb93ac696155"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="libxslt"/>
+ <dep package="intltool"/>
+ </dependencies>
+ <patches>
+ <patch file="scrollkeeper_clean_xml_validation_context.patch" strip="1"/>
+ <patch file="scrollkeeper_language_fix.patch" strip="1"/>
+ <patch file="scrollkeeper_rw_offset_fix.patch" strip="1"/>
+ </patches>
+ </tarball>
+
+ <autotools id="iso-codes">
+ <branch repo="svn.debian.org" module="pkg-isocodes/trunk/iso-codes" checkoutdir="iso-codes"/>
+ </autotools>
+
+ <include href="freedesktop.modules"/>
+ <include href="gnutls.modules"/>
+
+ <autotools id="cairo-gtk-engine">
+ <branch repo="cairo.freedesktop.org"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="cairo-1-0"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="shared-mime-info" supports-non-srcdir-builds="no">
+ <branch repo="mime.freedesktop.org"/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="libxml2"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="desktop-file-utils">
+ <branch repo="menu.freedesktop.org"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="intltool"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="libxklavier" supports-non-srcdir-builds="no">
+ <branch repo="xklavier.freedesktop.org" revision="v_2_x"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libbtctl">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-bluetooth">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="glib"/>
+ <dep package="libbtctl"/>
+ <dep package="libglade"/>
+ <dep package="libgnomeui"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+ <autotools id="phonemgr">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="glib"/>
+ <dep package="libbtctl"/>
+ <dep package="gnome-bluetooth"/>
+ <dep package="libglade"/>
+ <dep package="libgnomeui"/>
+ <dep package="libgnome"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="intltool">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-common">
+ <branch/>
+ </autotools>
+ <autotools id="libxml2">
+ <branch module="gnome-xml" checkoutdir="libxml2"/>
+ </autotools>
+ <autotools id="libxslt">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="libgcrypt"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk-doc">
+ <branch/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="scrollkeeper"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gamin">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glib">
+ <branch revision="glib-2-10"/>
+ <dependencies>
+ <dep package="gtk-doc"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pango">
+ <branch revision="pango-1-12"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="cairo-1-0"/>
+ <dep package="libXft"/>
+ </dependencies>
+ </autotools>
+ <autotools id="atk">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk+">
+ <branch revision="gtk-2-8"/>
+ <dependencies>
+ <dep package="cairo-1-0"/>
+ <dep package="pango"/>
+ <dep package="atk"/>
+ <dep package="shared-mime-info"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gail">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="atk"/>
+ <dep package="libgnomecanvas"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtkhtml2">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="gail"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libIDL">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="ORBit2">
+ <branch/>
+ <dependencies>
+ <dep package="libIDL"/>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gconf">
+ <branch/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ <dep package="libxml2"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libbonobo">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ <dep package="intltool"/>
+ <dep package="gnome-common"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-mime-data">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-common"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-icon-theme">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="hicolor-icon-theme"/>
+ </dependencies>
+ </autotools>
+ <tarball id="howl" version="1.0.0">
+ <source href="http://www.porchdogsoft.com/download/howl-1.0.0.tar.gz"
+ size="542782" md5sum="c389d3ffba0e69a179de2ec650f1fdcc"/>
+ <patches>
+ <patch file="howl-1.0.0-buildfix.patch" strip="1"/>
+ </patches>
+ </tarball>
+ <autotools id="gnome-vfs">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="gconf"/>
+ <dep package="desktop-file-utils"/>
+ <dep package="shared-mime-info"/>
+ <dep package="gnome-mime-data"/>
+ <dep package="howl"/>
+ <dep package="hal"/>
+ <dep package="gamin"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-keyring">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libart_lgpl">
+ <branch/>
+ </autotools>
+ <autotools id="libgnome">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="libxslt"/>
+ <dep package="libbonobo"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gconf"/>
+ <dep package="esound"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomecanvas">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libart_lgpl"/>
+ <dep package="libglade"/>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libbonoboui">
+ <branch/>
+ <dependencies>
+ <dep package="libgnome"/>
+ <dep package="libbonobo"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeui">
+ <branch revision="libgnomeui-2-14"/>
+ <dependencies>
+ <dep package="libbonoboui"/>
+ <dep package="libglade"/>
+ <dep package="gnome-icon-theme"/>
+ <dep package="gnome-keyring"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libglade">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pygobject">
+ <branch revision="pygobject-2-10"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pygtk">
+ <branch revision="pygtk-2-8"/>
+ <dependencies>
+ <dep package="pygobject"/>
+ <dep package="gtk+"/>
+ <dep package="pycairo-1-0"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pyorbit">
+ <branch/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-python">
+ <branch revision="gnome-python-2-12"/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="pyorbit"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-python-desktop">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="gnome-python"/>
+ <dep package="gnome-panel"/>
+ <dep package="libgnomeprint"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="gtksourceview"/>
+ <dep package="libwnck"/>
+ <dep package="totem"/>
+ <dep package="libgtop"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="gnome-media"/>
+ <dep package="metacity"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-python-extras">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gtkhtml2"/>
+ <dep package="gdl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="bug-buddy">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libwnck">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="startup-notification"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-desktop" autogenargs="--with-gnome-distributor=JHBuild">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="startup-notification"/>
+ <dep package="gnome-themes"/>
+ <dep package="scrollkeeper"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-menus">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="gnome-common"/>
+ <dep package="glib"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-panel">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-desktop"/>
+ <dep package="libwnck"/>
+ <dep package="evolution-data-server"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-vfs"/>
+ <dep package="libglade"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-session">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libwnck"/>
+ <dep package="esound"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-applets" autogenargs="--enable-gstreamer=0.10">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="gnome-panel"/>
+ <dep package="libgtop"/>
+ <dep package="gail"/>
+ <dep package="libxklavier"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="gucharmap"/>
+ <dep package="system-tools-backends-1.4"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-games">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="librsvg"/>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gob"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libcroco" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="pango"/>
+ </dependencies>
+ </autotools>
+ <autotools id="librsvg" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="gtk+"/>
+ <dep package="libart_lgpl"/>
+ <dep package="gnome-common"/>
+ <dep package="libgsf"/>
+ <dep package="libcroco"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="eel">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="librsvg"/>
+ <dep package="libgnomeui"/>
+ <dep package="gail"/>
+ <dep package="gnome-desktop"/>
+ <dep package="gnome-menus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="esound"/>
+ <dep package="eel"/>
+ <dep package="librsvg"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-desktop"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-actions">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-cd-burner">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-open-terminal">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-media" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ <dep package="gstreamer-0-8"/>
+ <dep package="gst-plugins-0-8"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-vcs">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="metacity">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="intltool"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgtop">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-system-monitor">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libwnck"/>
+ <dep package="libgtop"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-control-center" autogenargs="--enable-gstreamer=0.10"
+ supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="esound"/>
+ <dep package="gnome-desktop"/>
+ <dep package="metacity"/>
+ <dep package="nautilus"/>
+ <dep package="libxklavier"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="gstreamer"/>
+ </dependencies>
+ </autotools>
+ <autotools id="yelp">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="startup-notification"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="devhelp">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-vfs"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-utils">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-panel"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gconf-editor" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-14" />
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+ <tarball id="audiofile" version="0.2.6" supports-non-srcdir-builds="no">
+ <source href="http://www.68k.org/~michael/audiofile/audiofile-0.2.6.tar.gz"
+ size="374688" md5sum="9c1049876cd51c0f1b12c2886cce4d42"/>
+ </tarball>
+ <autotools id="esound">
+ <branch/>
+ <dependencies>
+ <dep package="audiofile"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-media">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="esound"/>
+ <dep package="gail"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="gst-plugins-good"/>
+ <dep package="nautilus-cd-burner"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gdm2">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="librsvg"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="vte">
+ <branch revision="vte-0-12"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-terminal">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libglade"/>
+ <dep package="libgnomeui"/>
+ <dep package="vte"/>
+ <dep package="startup-notification"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk-engines">
+ <branch revision="gtk-engines-2-6"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeprint">
+ <branch/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="libart_lgpl"/>
+ <dep package="glib"/>
+ <dep package="gnome-common"/>
+ <dep package="pango"/>
+ <dep package="libgnomecups"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeprintui">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeprint"/>
+ <dep package="gtk+"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="gnome-icon-theme"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gedit">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="gtksourceview"/>
+ <dep package="gnome-python-desktop"/>
+ </dependencies>
+ </autotools>
+ <autotools id="memprof">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="eog">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprint"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgsf">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="gnome-vfs"/>
+ <dep package="libbonobo"/>
+ </dependencies>
+ </autotools>
+ <autotools id="goffice">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libgsf"/>
+ <dep package="libxml2"/>
+ <dep package="pango"/>
+ <dep package="libglade"/>
+ <dep package="libgnomeprint"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libart_lgpl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnumeric">
+ <branch/>
+ <dependencies>
+ <dep package="goffice"/>
+ <dep package="libgsf"/>
+ <dep package="pygtk"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gimp" autogenargs="--disable-print">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libart_lgpl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glade">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glade2c">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="sawfish">
+ <branch revision="gnome-2"/>
+ <dependencies>
+ <dep package="rep-gtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="rep-gtk">
+ <branch/>
+ <dependencies>
+ <dep package="librep"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="librep">
+ <branch/>
+ </autotools>
+ <autotools id="rhythmbox">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="totem"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gstreamer-0-8" autogenargs="-- --disable-plugin-builddir --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gstreamer"
+ revision="BRANCH-GSTREAMER-0_8" checkoutdir="gstreamer-0-8"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-plugins-0-8" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-plugins"
+ revision="BRANCH-GSTREAMER-0_8" checkoutdir="gst-plugins-0-8"/>
+ <dependencies>
+ <dep package="gstreamer-0-8"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-python-0-8" autogenargs="--" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-python"
+ revision="BRANCH-GSTREAMER-0_8" checkoutdir="gst-python-0-8"/>
+ <dependencies>
+ <dep package="gstreamer-0-8"/>
+ <dep package="gst-plugins-0-8"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gstreamer" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gstreamer"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="liboil">
+ <branch repo="liboil.freedesktop.org" revision="liboil_0_3_6"/>
+ </autotools>
+
+ <autotools id="gst-plugins-base" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-plugins-base"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gtk+"/>
+ <dep package="liboil"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-plugins-good" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-plugins-good"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-plugins-ugly" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-plugins-ugly"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-plugins-bad" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-plugins-bad"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-ffmpeg" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-ffmpeg"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-python" autogenargs="--" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-python"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="planner">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libgsf"/>
+ </dependencies>
+ </autotools>
+ <autotools id="file-roller">
+ <branch revision="gnome-2-14" />
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="balsa">
+ <branch revision="BALSA_2"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pan">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnet"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pyspi">
+ <branch/>
+ <dependencies>
+ <dep package="at-spi"/>
+ </dependencies>
+ </autotools>
+ <autotools id="dogtail">
+ <branch/>
+ <dependencies>
+ <dep package="pyspi"/>
+ </dependencies>
+ <after>
+ <dep package="gnome-python-desktop"/>
+ </after>
+ </autotools>
+ <autotools id="gcalctool" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="ggv" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="ekiga" autogenargs="--with-pwlib-dir=`ptlib-config --prefix` --with-opal-dir=`ptlib-config --prefix`">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="evolution-data-server"/>
+ <dep package="opal" />
+ <dep package="avahi" />
+ </dependencies>
+ </autotools>
+ <autotools id="pwlib" autogen-sh="configure">
+ <branch repo="openh323.sf.net" module="ptlib_unix" checkoutdir="pwlib"
+ override-checkoutdir="no" update-new-dirs="no" />
+ </autotools>
+ <autotools id="opal" autogen-sh="configure">
+ <branch repo="openh323.sf.net"/>
+ <dependencies>
+ <dep package="pwlib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gucharmap" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtksourceview" autogenargs="--enable-compile-warnings=maximum">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeprint"/>
+ <dep package="gnome-vfs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glimmer">
+ <branch/>
+ <dependencies>
+ <dep package="gtksourceview"/>
+ <dep package="libgnomeprint"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gdl">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="librsvg"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-build">
+ <branch/>
+ <dependencies>
+ <dep package="gdl"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gtkhtml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="scaffold">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="vte"/>
+ <dep package="gdl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libsigc++2">
+ <branch revision="libsigc-2-0"/>
+ </autotools>
+ <autotools id="glibmm">
+ <branch revision="glibmm-2-8"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libsigc++2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtkmm">
+ <branch revision="gtkmm-2-8"/>
+ <dependencies>
+ <dep package="glibmm"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="orbitcpp">
+ <branch/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomemm">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libgnome"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libglademm">
+ <branch/>
+ <dependencies>
+ <dep package="libglade"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libbonobomm">
+ <branch/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="gtkmm"/>
+ <dep package="orbitcpp"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libbonobouimm">
+ <branch/>
+ <dependencies>
+ <dep package="libbonoboui"/>
+ <dep package="gnomemm/libbonobomm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomecanvasmm">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomecanvas"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/gconfmm">
+ <branch/>
+ <dependencies>
+ <dep package="gconf"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomeuimm">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnomemm/libgnomemm"/>
+ <dep package="gnomemm/gconfmm"/>
+ <dep package="gnomemm/libgnomecanvasmm"/>
+ <dep package="gnomemm/libglademm"/>
+ <dep package="gnomemm/gnome-vfsmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/gnome-vfsmm">
+ <branch/>
+ <dependencies>
+ <dep package="glibmm"/>
+ <dep package="gnome-vfs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libpanelappletmm">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomeprintmm">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libgnomeprint"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomeprintuimm">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/libgnomeprintmm"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgdamm">
+ <branch revision="libgda-1-2"/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libgda-1-2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/gtkmm_hello">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="regexxer">
+ <branch/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/gconfmm"/>
+ <dep package="gnomemm/libglademm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnet" autogenargs="--enable-glib2">
+ <branch revision="GNET_1_1"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomeicu">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="at-spi">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="gail"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgail-gnome">
+ <branch/>
+ <dependencies>
+ <dep package="at-spi"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="at-poke">
+ <branch/>
+ <dependencies>
+ <dep package="libgail-gnome"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-mag">
+ <branch/>
+ <dependencies>
+ <dep package="at-spi"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gok">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="at-spi"/>
+ <dep package="libgnomeui"/>
+ <dep package="libwnck"/>
+ <dep package="esound"/>
+ <dep package="scrollkeeper"/>
+ <dep package="gnome-speech"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-speech">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnopernicus">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="gconf"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-speech"/>
+ <dep package="gnome-mag"/>
+ </dependencies>
+ </autotools>
+ <autotools id="dasher" autogenargs="--with-a11y --with-gnome">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="at-spi"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-speech"/>
+ <dep package="gnome-vfs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-screensaver">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="gconf"/>
+ <dep package="gtk+"/>
+ <dep package="dbus"/>
+ <dep package="gnome-menus"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-power-manager">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="hal"/>
+ <dep package="libwnck"/>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="intltool"/>
+ <dep package="libglade"/>
+ <dep package="libnotify"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gthumb">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-vfs"/>
+ <dep package="libglade"/>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="fast-user-switch-applet">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="libglade"/>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-mount" autogenargs="--enable-nautilus-extension">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-keyring"/>
+ <dep package="libgnomeui"/>
+ <dep package="dbus"/>
+ <dep package="hal"/>
+ <dep package="gtk+"/>
+ <dep package="intltool"/>
+ <dep package="libglade"/>
+ <dep package="eel"/>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libnotify">
+ <branch repo="svn.galago-project.org" module="trunk/libnotify"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libsexy">
+ <branch repo="osiris.chipx86.com" module="trunk/libsexy"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="iso-codes"/>
+ </dependencies>
+ </autotools>
+ <autotools id="notification-daemon">
+ <branch repo="svn.galago-project.org" module="trunk/notification-daemon"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="dbus"/>
+ <dep package="libsexy"/>
+ </dependencies>
+ </autotools>
+
+ <metamodule id="meta-gnome-devel-platform">
+ <dependencies>
+ <dep package="libgnome"/>
+ <dep package="libbonobo"/>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-core">
+ <dependencies>
+ <dep package="gnome-desktop"/>
+ <dep package="gnome-panel"/>
+ <dep package="gnome-session"/>
+ <dep package="gnome-terminal"/>
+ <dep package="gnome-applets"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-nautilus">
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-desktop">
+ <dependencies>
+ <dep package="meta-gnome-core"/>
+ <dep package="gnome-control-center"/>
+ <dep package="meta-nautilus"/>
+ <dep package="yelp"/>
+ <dep package="bug-buddy"/>
+ <dep package="gedit"/>
+ <dep package="gtk-engines"/>
+ <dep package="eog"/>
+ <dep package="metacity"/>
+ <dep package="gconf-editor"/>
+ <dep package="gnome-utils"/>
+ <dep package="gnome-system-monitor"/>
+ <dep package="gstreamer"/>
+ <dep package="gnome-media"/>
+ <dep package="gnome-netstatus"/>
+ <dep package="gcalctool"/>
+ <dep package="gucharmap"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="zenity"/>
+ <dep package="libgail-gnome"/>
+ <dep package="gnopernicus"/>
+ <dep package="gok"/>
+ <dep package="epiphany"/>
+ <dep package="gnome-games"/>
+ <dep package="gnome-user-docs"/>
+ <dep package="file-roller"/>
+ <dep package="gnome-system-tools"/>
+ <dep package="gnome-nettool"/>
+ <dep package="vino"/>
+ <dep package="gnome-volume-manager"/>
+ <dep package="totem"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-backgrounds"/>
+ <dep package="sound-juicer"/>
+ <dep package="evolution"/>
+ <dep package="evolution-webcal"/>
+ <dep package="evolution-exchange"/>
+ <dep package="ekiga"/>
+ <dep package="evince"/>
+ <dep package="dasher"/>
+ <dep package="gnome-keyring-manager"/>
+ <dep package="deskbar-applet"/>
+ <dep package="fast-user-switch-applet"/>
+ <dep package="gnome-screensaver"/>
+ <dep package="meta-gnome-admin"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-admin">
+ <dependencies>
+ <dep package="pessulus"/>
+ <dep package="sabayon"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-devel-tools">
+ <dependencies>
+ <dep package="glade"/>
+ <dep package="memprof"/>
+ <dep package="gconf-editor"/>
+ <dep package="devhelp"/>
+ <dep package="nautilus-vcs"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-python">
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gnome-python-desktop"/>
+ </dependencies>
+ <after>
+ <dep package="gnome-python-extras"/>
+ </after>
+ </metamodule>
+ <metamodule id="meta-gnome-c++">
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/libgnomeuimm"/>
+ <dep package="gnomemm/gnome-vfsmm"/>
+ <dep package="gnomemm/libpanelappletmm"/>
+ <dep package="gnomemm/libbonobouimm"/>
+ <dep package="gnomemm/libgnomeprintuimm"/>
+ <dep package="libxml++"/>
+ <dep package="gnomemm/libgdamm"/>
+ <dep package="bakery"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-accessibility">
+ <dependencies>
+ <dep package="libgail-gnome"/>
+ <dep package="at-poke"/>
+ <dep package="dasher"/>
+ <dep package="gnome-mag"/>
+ <dep package="gok"/>
+ <dep package="gnome-speech"/>
+ <dep package="gnopernicus"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-proposed">
+ <dependencies>
+ <dep package="libnotify"/>
+ <dep package="notification-daemon"/>
+ <dep package="gnome-power-manager"/>
+ </dependencies>
+ </metamodule>
+ <autotools id="sodipodi">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libart_lgpl"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-themes">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="gtk-engines"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gob">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnetwork">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="gconf"/>
+ <dep package="intltool"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgircclient">
+ <branch/>
+ <dependencies>
+ <dep package="libgnetwork"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomechat">
+ <branch/>
+ <dependencies>
+ <dep package="libgnetwork"/>
+ <dep package="libgircclient"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <mozillamodule id="mozilla" autogenargs="--enable-default-toolkit=gtk2 --disable-mailnews --disable-ldap --disable-debug --enable-optimize --disable-tests --enable-crypto --enable-xft --with-system-zlib --disable-freetype2 --enable-application=browser" cvsroot="mozilla.org" revision="MOZILLA_1_7_BRANCH">
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </mozillamodule>
+ <autotools id="epiphany">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="iso-codes"/>
+ <dep package="libgnomeui"/>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="epiphany-extensions">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="epiphany"/>
+ </dependencies>
+ </autotools>
+ <autotools id="galeon">
+ <branch/>
+ <dependencies>
+ <dep package="mozilla"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libsoup">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="gnutls"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtkhtml">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ <dep package="libglade"/>
+ <dep package="gail"/>
+ <dep package="libgnomeprint"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libsoup"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evolution-data-server" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="libgnome"/>
+ <dep package="libgnomeui"/>
+ <dep package="libsoup"/>
+ <dep package="libxml2"/>
+ <dep package="gconf"/>
+ <dep package="gnome-vfs"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evolution">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="evolution-data-server"/>
+ <dep package="gtkhtml"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ </dependencies>
+ <after>
+ <dep package="libnotify"/>
+ </after>
+ </autotools>
+ <autotools id="evolution-webcal">
+ <branch/>
+ <dependencies>
+ <dep package="evolution-data-server"/>
+ <dep package="libsoup"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evolution-exchange">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="evolution-data-server"/>
+ <dep package="evolution"/>
+ <dep package="libsoup"/>
+ </dependencies>
+ </autotools>
+ <tarball id="xchat" version="2.4.5">
+ <source href="http://xchat.org/files/source/2.4/xchat-2.4.5.tar.bz2"
+ size="1324626" md5sum="9107a92693e6c62ff2008030e698b92b"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </tarball>
+ <tarball id="camorama" version="0.17">
+ <source href="http://camorama.fixedgear.org/downloads/camorama-0.17.tar.bz2"
+ size="312233" md5sum="2b2784af53a1ba8fa4419aa806967b35"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </tarball>
+ <autotools id="gtk-engines-cleanice">
+ <branch repo="elysium-project.sf.net"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gaim">
+ <branch repo="gaim.sf.net"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="zenity">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gpdf">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-netstatus">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-panel"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-doc-utils">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="intltool"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <tarball id="libmusicbrainz" version="2.1.2">
+ <source href="ftp://ftp.musicbrainz.org/pub/musicbrainz/libmusicbrainz-2.1.2.tar.gz"
+ size="504432" md5sum="88d35af903665fecbdee77eb6d5e6cdd"/>
+ </tarball>
+ <autotools id="totem" autogenargs="--enable-gstreamer=0.10">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="gnome-desktop"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="gst-plugins-good"/>
+ <dep package="libmusicbrainz"/>
+ <dep package="iso-codes"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-themes-extras">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-themes"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="libgda">
+ <branch module="libgda"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgda-1-2">
+ <branch module="libgda" revision="release-1-2-branch"
+ checkoutdir="libgda-1-2"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="libgnomedb" autogenargs="--enable-gnome=yes">
+ <branch/>
+ <dependencies>
+ <dep package="libgda"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="mergeant">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomedb"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtranslator">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-spell">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomecups">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-cups-manager">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomecups"/>
+ <dep package="libgnomeui"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libxml++">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="glibmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="bakery">
+ <branch/>
+ <dependencies>
+ <dep package="libxml++"/>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/libglademm"/>
+ <dep package="gnomemm/gconfmm"/>
+ <dep package="gnomemm/gnome-vfsmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-hello">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libgnome"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-system-tools">
+ <branch revision="gnome-2-14" />
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ <dep package="gconf"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ <dep package="libglade"/>
+ <dep package="nautilus"/>
+ <dep package="system-tools-backends-1.4"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-user-docs">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="loudmouth">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gossip">
+ <branch/>
+ <dependencies>
+ <dep package="loudmouth"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="conglomerate">
+ <branch/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="gconf"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="sound-juicer">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="gnome-doc-utils"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-media"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="gst-plugins-good"/>
+ <dep package="nautilus-cd-burner"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-network">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <tarball id="guile" version="1.6.7">
+ <source href="ftp://ftp.gnu.org/gnu/guile/guile-1.6.7.tar.gz"
+ size="3039294" md5sum="c2ff2a2231f0cbb2e838dd8701a587c5"/>
+ </tarball>
+ <tarball id="autogen" version="5.6.5">
+ <source href="http://internap.dl.sourceforge.net/sourceforge/autogen/autogen-5.6.5.tar.gz"
+ size="1144260" md5sum="54a6cb0be7e6b526af9aba4a73013885"/>
+ <dependencies>
+ <dep package="guile"/>
+ </dependencies>
+ </tarball>
+ <autotools id="anjuta">
+ <branch/>
+ <dependencies>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="vte"/>
+ <dep package="gnome-build"/>
+ <dep package="autogen"/>
+ </dependencies>
+ </autotools>
+ <autotools id="OpenApplet">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtetrinet">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glom">
+ <branch/>
+ <dependencies>
+ <dep package="gnomemm/libgdamm"/>
+ <dep package="bakery"/>
+ <dep package="gnomemm/libgnomecanvasmm"/>
+ <dep package="libgnome"/>
+ <dep package="iso-codes"/>
+ <dep package="pygtk"/>
+ <dep package="gnome-python-extras"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="vino">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libglade"/>
+ <dep package="gconf"/>
+ <dep package="gnutls"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-keyring-manager" autogenargs="--disable-more-warnings">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-keyring"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-volume-manager">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libglade"/>
+ <dep package="hal"/>
+ </dependencies>
+ </autotools>
+ <metamodule id="meta-storage">
+ <dependencies>
+ <dep package="storage/storage-store"/>
+ <dep package="storage/vfs"/>
+ <dep package="storage/applet"/>
+ </dependencies>
+ </metamodule>
+ <autotools id="storage/storage-store">
+ <branch/>
+ <dependencies>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libstorage">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-vfs"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libstorage-translators">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libstorage"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/vfs">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libstorage"/>
+ <dep package="storage/libstorage-translators"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/pet">
+ <branch/>
+ </autotools>
+ <autotools id="storage/libmrs">
+ <branch/>
+ <dependencies>
+ <dep package="storage/pet"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libmrs-converter">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libmrs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libstorage-nl">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libstorage"/>
+ <dep package="storage/libmrs"/>
+ <dep package="storage/libmrs-converter"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/applet">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-python"/>
+ <dep package="storage/libstorage-nl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-nettool">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="monkey-bubble">
+ <branch/>
+ <dependencies>
+ <dep package="gstreamer-0-8"/>
+ <dep package="gst-plugins-0-8"/>
+ <dep package="libxml2"/>
+ <dep package="gconf"/>
+ <dep package="librsvg"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-schedule">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="yelp"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-backgrounds">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evince">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="poppler"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-python" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ </dependencies>
+ </autotools>
+ <autotools id="inkscape">
+ <branch repo="inkscape.sf.net"/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libxslt"/>
+ </dependencies>
+ </autotools>
+ <autotools id="NetworkManager">
+ <branch repo="gnome.org"/>
+ <dependencies>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="atomix">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libgnome"/>
+ <dep package="libgnomeui"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="libbonoboui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="deskbar-applet">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gnome-desktop"/>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gnome-python-desktop"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pessulus">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ </dependencies>
+ </autotools>
+ <autotools id="sabayon">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="muine">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gstreamer"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnonlin">
+ <branch repo="gstreamer.freedesktop.org" module="gnonlin"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pitivi">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-python"/>
+ <dep package="gnonlin"/>
+ </dependencies>
+ </autotools>
+</moduleset>
diff --git a/build-scripts/jhbuild/modulesets/gnome-2.16.modules b/build-scripts/jhbuild/modulesets/gnome-2.16.modules
new file mode 100644
index 0000000..bf9c7e3
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/gnome-2.16.modules
@@ -0,0 +1,2175 @@
+<?xml version="1.0"?><!--*- mode: nxml; indent-tabs-mode: nil -*-->
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<!-- vim:set ts=2 expandtab: -->
+<moduleset>
+ <repository type="svn" name="svn.gnome.org" default="yes"
+ href="http://svn.gnome.org/svn/"/>
+ <repository type="cvs" name="cairo.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/cairo"
+ password=""/>
+ <repository type="cvs" name="mozilla.org"
+ cvsroot=":pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot"
+ password="anonymous"/>
+ <repository type="cvs" name="liboil.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/liboil"
+ password=""/>
+ <repository type="cvs" name="gstreamer.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/gstreamer"
+ password=""/>
+ <repository type="cvs" name="menu.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/menus"
+ password=""/>
+ <repository type="cvs" name="mime.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/mime"
+ password=""/>
+ <repository type="cvs" name="xklavier.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/xklavier"
+ password=""/>
+ <repository type="cvs" name="elysium-project.sf.net"
+ cvsroot=":pserver:anonymous@elysium-project.cvs.sourceforge.net:/cvsroot/elysium-project"
+ password=""/>
+ <repository type="svn" name="gaim.sf.net"
+ href="https://svn.sourceforge.net/svnroot/gaim/"/>
+ <repository type="svn" name="inkscape.sf.net"
+ href="https://svn.sourceforge.net/svnroot/inkscape/"/>
+ <repository type="svn" name="svn.galago-project.org"
+ href="http://svn.galago-project.org/"/>
+ <repository type="svn" name="osiris.chipx86.com"
+ href="http://osiris.chipx86.com/svn/osiris-misc/"/>
+ <repository type="svn" name="svn.debian.org"
+ href="svn://svn.debian.org/"/>
+ <repository type="cvs" name="openh323.sf.net"
+ cvsroot=":pserver:anonymous@openh323.cvs.sourceforge.net:/cvsroot/openh323"
+ password="" />
+ <repository type="svn" name="svn.navi.cx"
+ href="http://svn.navi.cx/" />
+ <repository type="cvs" name="anoncvs.abisource.com"
+ cvsroot=":pserver:anoncvs@anoncvs.abisource.com:/cvsroot"
+ password="anoncvs" />
+
+
+ <tarball id="scrollkeeper" version="0.3.14" supports-non-srcdir-builds="no">
+ <source href="http://easynews.dl.sourceforge.net/sourceforge/scrollkeeper/scrollkeeper-0.3.14.tar.gz"
+ size="679513" md5sum="161eb3f29e30e7b24f84eb93ac696155"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="libxslt"/>
+ <dep package="intltool"/>
+ </dependencies>
+ <patches>
+ <patch file="scrollkeeper_clean_xml_validation_context.patch" strip="1"/>
+ <patch file="scrollkeeper_language_fix.patch" strip="1"/>
+ <patch file="scrollkeeper_rw_offset_fix.patch" strip="1"/>
+ <patch file="scrollkeeper_empty_url_string.patch" strip="1"/>
+ </patches>
+ </tarball>
+
+ <tarball id="iso-codes" version="0.53" >
+ <source href="ftp://pkg-isocodes.alioth.debian.org/pub/pkg-isocodes/iso-codes-0.53.tar.bz2"
+ size="4411143" md5sum="652887a62d8024e4ab6933061a92c233"/>
+ </tarball>
+
+ <include href="freedesktop.modules"/>
+ <include href="gnutls.modules"/>
+
+ <autotools id="cairo-gtk-engine">
+ <branch repo="cairo.freedesktop.org"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="cairo-1-0"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="shared-mime-info" supports-non-srcdir-builds="no">
+ <branch repo="mime.freedesktop.org"/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="libxml2"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="desktop-file-utils">
+ <branch repo="menu.freedesktop.org"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="intltool"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="libxklavier" supports-non-srcdir-builds="no">
+ <branch repo="xklavier.freedesktop.org"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="gtk-doc"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libbtctl">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-bluetooth">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="glib"/>
+ <dep package="libbtctl"/>
+ <dep package="libglade"/>
+ <dep package="libgnomeui"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+ <autotools id="phonemgr">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="glib"/>
+ <dep package="libbtctl"/>
+ <dep package="gnome-bluetooth"/>
+ <dep package="libglade"/>
+ <dep package="libgnomeui"/>
+ <dep package="libgnome"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="intltool">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-common">
+ <branch/>
+ </autotools>
+ <autotools id="libxml2">
+ <branch/>
+ </autotools>
+ <autotools id="libxslt">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="libgcrypt"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk-doc">
+ <branch/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="scrollkeeper"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gamin">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glib">
+ <branch revision="glib-2-12"/>
+ <dependencies>
+ <dep package="gtk-doc"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pango">
+ <branch revision="pango-1-14"/>
+ <dependencies>
+ <dep package="gnome-common"/>
+ <dep package="glib"/>
+ <dep package="cairo"/>
+ <dep package="libXft"/>
+ </dependencies>
+ </autotools>
+ <autotools id="atk">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk+">
+ <branch revision="gtk-2-10"/>
+ <dependencies>
+ <dep package="cairo"/>
+ <dep package="pango"/>
+ <dep package="atk"/>
+ <dep package="shared-mime-info"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gail">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="atk"/>
+ <dep package="libgnomecanvas"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtkhtml2">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="gail"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libIDL">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="ORBit2">
+ <branch/>
+ <dependencies>
+ <dep package="libIDL"/>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gconf">
+ <branch/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ <dep package="libxml2"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libbonobo">
+ <branch/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ <dep package="intltool"/>
+ <dep package="gnome-common"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-mime-data">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-common"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-icon-theme">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="hicolor-icon-theme"/>
+ <dep package="icon-naming-utils"/>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-vfs">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="gconf"/>
+ <dep package="desktop-file-utils"/>
+ <dep package="shared-mime-info"/>
+ <dep package="gnome-mime-data"/>
+ <dep package="avahi"/>
+ <dep package="hal-0-5-7"/>
+ <dep package="gamin"/>
+ <dep package="dbus-glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-vfs-monikers">
+ <branch/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="gnome-vfs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-keyring">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libart_lgpl">
+ <branch/>
+ </autotools>
+ <autotools id="libgnome">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="libxslt"/>
+ <dep package="libbonobo"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gconf"/>
+ <dep package="esound"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomecanvas">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libart_lgpl"/>
+ <dep package="libglade"/>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libbonoboui">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libgnome"/>
+ <dep package="libbonobo"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeui">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libbonoboui"/>
+ <dep package="libglade"/>
+ <dep package="gnome-icon-theme"/>
+ <dep package="gnome-keyring"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libglade">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pygobject">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pygtk">
+ <branch/>
+ <dependencies>
+ <dep package="pygobject"/>
+ <dep package="gtk+"/>
+ <dep package="pycairo"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pyorbit">
+ <branch/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-python">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="pyorbit"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-python-desktop">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="gnome-python"/>
+ <dep package="gnome-panel"/>
+ <dep package="libgnomeprint"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="gtksourceview"/>
+ <dep package="libwnck"/>
+ <dep package="totem"/>
+ <dep package="libgtop"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="gnome-media"/>
+ <dep package="metacity"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-python-extras">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gtkhtml2"/>
+ <dep package="gdl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="bug-buddy">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="evolution-data-server"/>
+ <dep package="libsoup"/>
+ </dependencies>
+ <suggests>
+ <dep package="NetworkManager"/>
+ </suggests>
+ </autotools>
+ <autotools id="libwnck">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="startup-notification"/>
+ <dep package="intltool"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-desktop" autogenargs="--with-gnome-distributor=JHBuild">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="startup-notification"/>
+ <dep package="gnome-themes"/>
+ <dep package="scrollkeeper"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-menus">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="gnome-common"/>
+ <dep package="glib"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-panel">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-desktop"/>
+ <dep package="libwnck"/>
+ <dep package="evolution-data-server"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-vfs"/>
+ <dep package="libglade"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="dbus-glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-session">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libwnck"/>
+ <dep package="esound"/>
+ <dep package="gnome-control-center"/>
+ <dep package="gnome-keyring"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-applets" autogenargs="--enable-gstreamer=0.10">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="gnome-panel"/>
+ <dep package="libgtop"/>
+ <dep package="gail"/>
+ <dep package="libxklavier"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="gucharmap"/>
+ <dep package="system-tools-backends-1.4"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ <after>
+ <dep package="gnome-control-center"/>
+ <dep package="gnome-python-desktop"/>
+ </after>
+ </autotools>
+ <autotools id="gnome-games">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="librsvg"/>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gob"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libcroco" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="pango"/>
+ </dependencies>
+ </autotools>
+ <autotools id="librsvg" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="gtk+"/>
+ <dep package="libart_lgpl"/>
+ <dep package="gnome-common"/>
+ <dep package="libgsf"/>
+ <dep package="libcroco"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="eel">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="librsvg"/>
+ <dep package="libgnomeui"/>
+ <dep package="gail"/>
+ <dep package="gnome-desktop"/>
+ <dep package="gnome-menus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="esound"/>
+ <dep package="eel"/>
+ <dep package="librsvg"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-desktop"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-actions">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-cd-burner">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-open-terminal">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-sendto">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ <suggests>
+ <dep package="gnome-bluetooth"/>
+ </suggests>
+ </autotools>
+ <autotools id="nautilus-media" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ <dep package="gstreamer-0-8"/>
+ <dep package="gst-plugins-0-8"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-vcs">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="metacity">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="intltool"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgtop">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-system-monitor">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libwnck"/>
+ <dep package="libgtop"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-control-center" autogenargs="--enable-gstreamer=0.10"
+ supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="esound"/>
+ <dep package="gnome-desktop"/>
+ <dep package="metacity"/>
+ <dep package="nautilus"/>
+ <dep package="libxklavier"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+ <autotools id="yelp">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="startup-notification"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="devhelp">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-vfs"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-utils">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-panel"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gconf-editor" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+ <tarball id="audiofile" version="0.2.6" supports-non-srcdir-builds="no">
+ <source href="http://www.68k.org/~michael/audiofile/audiofile-0.2.6.tar.gz"
+ size="374688" md5sum="9c1049876cd51c0f1b12c2886cce4d42"/>
+ </tarball>
+ <autotools id="esound">
+ <branch/>
+ <dependencies>
+ <dep package="audiofile"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-media">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="esound"/>
+ <dep package="gail"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="gst-plugins-good"/>
+ <dep package="nautilus-cd-burner"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gdm2">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="librsvg"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="vte">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-terminal">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libglade"/>
+ <dep package="libgnomeui"/>
+ <dep package="vte"/>
+ <dep package="startup-notification"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk-engines">
+ <branch revision="gtk-engines-2-8"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeprint">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="libart_lgpl"/>
+ <dep package="glib"/>
+ <dep package="gnome-common"/>
+ <dep package="pango"/>
+ <dep package="libgnomecups"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeprintui">
+ <branch revision="gnome-2-12"/>
+ <dependencies>
+ <dep package="libgnomeprint"/>
+ <dep package="gtk+"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="gnome-icon-theme"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gedit">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="gtksourceview"/>
+ <dep package="gnome-python-desktop"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gedit-plugins">
+ <branch/>
+ <dependencies>
+ <dep package="gedit"/>
+ </dependencies>
+ </autotools>
+ <autotools id="memprof">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="eog">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprint"/>
+ <dep package="gnome-desktop"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgsf">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="gnome-vfs"/>
+ <dep package="libbonobo"/>
+ </dependencies>
+ </autotools>
+ <autotools id="goffice">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libgsf"/>
+ <dep package="libxml2"/>
+ <dep package="pango"/>
+ <dep package="libglade"/>
+ <dep package="libgnomeprint"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libart_lgpl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnumeric">
+ <branch/>
+ <dependencies>
+ <dep package="goffice"/>
+ <dep package="libgsf"/>
+ <dep package="pygtk"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gimp" autogenargs="--disable-print">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libart_lgpl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glade">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glade2c">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glade3">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep packege="libbonoboui"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="sawfish">
+ <branch revision="gnome-2"/>
+ <dependencies>
+ <dep package="rep-gtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="rep-gtk">
+ <branch/>
+ <dependencies>
+ <dep package="librep"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="librep">
+ <branch/>
+ </autotools>
+ <autotools id="rhythmbox">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="totem"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gstreamer-0-8" autogenargs="-- --disable-plugin-builddir --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gstreamer"
+ revision="BRANCH-GSTREAMER-0_8" checkoutdir="gstreamer-0-8"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-plugins-0-8" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-plugins"
+ revision="BRANCH-GSTREAMER-0_8" checkoutdir="gst-plugins-0-8"/>
+ <dependencies>
+ <dep package="gstreamer-0-8"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-python-0-8" autogenargs="--" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-python"
+ revision="BRANCH-GSTREAMER-0_8" checkoutdir="gst-python-0-8"/>
+ <dependencies>
+ <dep package="gstreamer-0-8"/>
+ <dep package="gst-plugins-0-8"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gstreamer" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gstreamer"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+
+ <tarball id="liboil" version="0.3.10">
+ <source href="http://liboil.freedesktop.org/download/liboil-0.3.10.tar.gz" md5sum="770f656bca8166dab33b322d5886a4bf" size="860303"/>
+ <branch repo="liboil.freedesktop.org" revision="liboil_0_3_6"/>
+ </tarball>
+
+ <autotools id="gst-plugins-base" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-plugins-base"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gtk+"/>
+ <dep package="liboil"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-plugins-good" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-plugins-good"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-plugins-ugly" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-plugins-ugly"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-plugins-bad" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-plugins-bad"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-ffmpeg" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-ffmpeg"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-python" autogenargs="--" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-python"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="planner">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libgsf"/>
+ </dependencies>
+ </autotools>
+ <autotools id="file-roller">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="balsa">
+ <branch revision="BALSA_2"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pan">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnet"/>
+ </dependencies>
+ </autotools>
+ <distutils id="pyspi">
+ <branch/>
+ <dependencies>
+ <dep package="at-spi"/>
+ </dependencies>
+ </distutils>
+ <distutils id="dogtail">
+ <branch/>
+ <dependencies>
+ <dep package="pyspi"/>
+ </dependencies>
+ <after>
+ <dep package="gnome-python-desktop"/>
+ </after>
+ </distutils>
+ <autotools id="gcalctool" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="ggv" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="ekiga" autogenargs="--with-pwlib-dir=`ptlib-config --prefix` --with-opal-dir=`ptlib-config --prefix`">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="evolution-data-server"/>
+ <dep package="opal" />
+ </dependencies>
+ </autotools>
+ <autotools id="pwlib" autogen-sh="configure">
+ <branch repo="openh323.sf.net" module="ptlib_unix" checkoutdir="pwlib"
+ override-checkoutdir="no" update-new-dirs="no" revision="v1_10_2"/>
+ </autotools>
+ <autotools id="opal" autogen-sh="configure">
+ <branch repo="openh323.sf.net" revision="v2_2_3"/>
+ <dependencies>
+ <dep package="pwlib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gucharmap">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtksourceview" autogenargs="--enable-compile-warnings=maximum">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeprint"/>
+ <dep package="gnome-vfs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glimmer">
+ <branch/>
+ <dependencies>
+ <dep package="gtksourceview"/>
+ <dep package="libgnomeprint"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gdl">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="librsvg"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-build">
+ <branch/>
+ <dependencies>
+ <dep package="gdl"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gtkhtml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="scaffold">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="vte"/>
+ <dep package="gdl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libsigc++2">
+ <branch revision="libsigc-2-0"/>
+ </autotools>
+ <autotools id="glibmm">
+ <branch revision="glibmm-2-12"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libsigc++2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtkmm">
+ <branch/>
+ <dependencies>
+ <dep package="glibmm"/>
+ <dep package="cairomm"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="orbitcpp">
+ <branch/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomemm">
+ <branch/>
+ <dependencies>
+ <dep package="libgnome"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libglademm">
+ <branch/>
+ <dependencies>
+ <dep package="libglade"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libbonobomm">
+ <branch/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="gtkmm"/>
+ <dep package="orbitcpp"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libbonobouimm">
+ <branch/>
+ <dependencies>
+ <dep package="libbonoboui"/>
+ <dep package="gnomemm/libbonobomm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomecanvasmm">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomecanvas"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/gconfmm">
+ <branch/>
+ <dependencies>
+ <dep package="gconf"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomeuimm">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnomemm/libgnomemm"/>
+ <dep package="gnomemm/gconfmm"/>
+ <dep package="gnomemm/libgnomecanvasmm"/>
+ <dep package="gnomemm/libglademm"/>
+ <dep package="gnomemm/gnome-vfsmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/gnome-vfsmm">
+ <branch/>
+ <dependencies>
+ <dep package="glibmm"/>
+ <dep package="gnome-vfs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libpanelappletmm">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomeprintmm">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libgnomeprint"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgnomeprintuimm">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/libgnomeprintmm"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libgdamm">
+ <branch revision="libgda-1-2"/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libgda-1-2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/gtkmm_hello">
+ <branch/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="regexxer">
+ <branch/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/gconfmm"/>
+ <dep package="gnomemm/libglademm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnet" autogenargs="--enable-glib2">
+ <branch revision="GNET_1_1"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomeicu">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="at-spi">
+ <branch/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="gail"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgail-gnome">
+ <branch/>
+ <dependencies>
+ <dep package="at-spi"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="at-poke">
+ <branch/>
+ <dependencies>
+ <dep package="libgail-gnome"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-mag">
+ <branch/>
+ <dependencies>
+ <dep package="at-spi"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gok">
+ <branch/>
+ <dependencies>
+ <dep package="at-spi"/>
+ <dep package="libgnomeui"/>
+ <dep package="libwnck"/>
+ <dep package="esound"/>
+ <dep package="scrollkeeper"/>
+ <dep package="gnome-speech"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-speech">
+ <branch/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnopernicus">
+ <branch/>
+ <dependencies>
+ <dep package="gconf"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-speech"/>
+ <dep package="gnome-mag"/>
+ </dependencies>
+ </autotools>
+ <autotools id="orca">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="gnome-python"/>
+ <dep package="libgail-gnome"/>
+ <dep package="gnome-mag"/>
+ <dep package="gnome-speech"/>
+ <dep package="eel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="dasher" autogenargs="--with-a11y --with-gnome">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="at-spi"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-speech"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-screensaver">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="gconf"/>
+ <dep package="gtk+"/>
+ <dep package="dbus"/>
+ <dep package="gnome-menus"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-power-manager">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="hal-0-5-7"/>
+ <dep package="libwnck"/>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="intltool"/>
+ <dep package="libglade"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ <suggests>
+ <dep package="libnotify"/>
+ </suggests>
+ </autotools>
+ <autotools id="gthumb">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-vfs"/>
+ <dep package="libglade"/>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="fast-user-switch-applet">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="libglade"/>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-mount" autogenargs="--enable-nautilus-extension">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-keyring"/>
+ <dep package="libgnomeui"/>
+ <dep package="dbus"/>
+ <dep package="hal-0-5-7"/>
+ <dep package="gtk+"/>
+ <dep package="intltool"/>
+ <dep package="libglade"/>
+ <dep package="eel"/>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libnotify">
+ <branch repo="svn.galago-project.org" module="trunk/libnotify"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libsexy">
+ <branch repo="osiris.chipx86.com" module="trunk/libsexy"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="iso-codes"/>
+ </dependencies>
+ </autotools>
+ <autotools id="notification-daemon">
+ <branch repo="svn.galago-project.org" module="trunk/notification-daemon"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="dbus"/>
+ <dep package="libsexy"/>
+ </dependencies>
+ </autotools>
+ <autotools id="alacarte">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-menus"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </autotools>
+
+ <metamodule id="meta-gnome-devel-platform">
+ <dependencies>
+ <dep package="libgnome"/>
+ <dep package="libbonobo"/>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-vfs-monikers"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-core">
+ <dependencies>
+ <dep package="gnome-desktop"/>
+ <dep package="gnome-panel"/>
+ <dep package="gnome-session"/>
+ <dep package="gnome-terminal"/>
+ <dep package="gnome-applets"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-nautilus">
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-desktop">
+ <dependencies>
+ <dep package="meta-gnome-core"/>
+ <dep package="gnome-control-center"/>
+ <dep package="meta-nautilus"/>
+ <dep package="yelp"/>
+ <dep package="bug-buddy"/>
+ <dep package="gedit"/>
+ <dep package="gtk-engines"/>
+ <dep package="eog"/>
+ <dep package="metacity"/>
+ <dep package="gconf-editor"/>
+ <dep package="gnome-utils"/>
+ <dep package="gnome-system-monitor"/>
+ <dep package="gstreamer"/>
+ <dep package="gnome-media"/>
+ <dep package="gnome-netstatus"/>
+ <dep package="gcalctool"/>
+ <dep package="gucharmap"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="zenity"/>
+ <dep package="libgail-gnome"/>
+ <dep package="gok"/>
+ <dep package="epiphany"/>
+ <dep package="gnome-games"/>
+ <dep package="gnome-user-docs"/>
+ <dep package="file-roller"/>
+ <dep package="gnome-system-tools"/>
+ <dep package="gnome-nettool"/>
+ <dep package="vino"/>
+ <dep package="gnome-volume-manager"/>
+ <dep package="totem"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-backgrounds"/>
+ <dep package="sound-juicer"/>
+ <dep package="evolution"/>
+ <dep package="evolution-webcal"/>
+ <dep package="evolution-exchange"/>
+ <dep package="ekiga"/>
+ <dep package="evince"/>
+ <dep package="dasher"/>
+ <dep package="gnome-keyring-manager"/>
+ <dep package="deskbar-applet"/>
+ <dep package="fast-user-switch-applet"/>
+ <dep package="gnome-screensaver"/>
+ <dep package="alacarte"/>
+ <dep package="gnome-power-manager"/>
+ <dep package="orca"/>
+ <dep package="meta-gnome-admin"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-admin">
+ <dependencies>
+ <dep package="pessulus"/>
+ <dep package="sabayon"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-devel-tools">
+ <dependencies>
+ <dep package="glade"/>
+ <dep package="memprof"/>
+ <dep package="gconf-editor"/>
+ <dep package="devhelp"/>
+ <dep package="nautilus-vcs"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-python">
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gnome-python-desktop"/>
+ </dependencies>
+ <after>
+ <dep package="gnome-python-extras"/>
+ </after>
+ </metamodule>
+ <metamodule id="meta-gnome-c++">
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/libgnomeuimm"/>
+ <dep package="gnomemm/gnome-vfsmm"/>
+ <dep package="gnomemm/libpanelappletmm"/>
+ <dep package="gnomemm/libbonobouimm"/>
+ <dep package="gnomemm/libgnomeprintuimm"/>
+ <dep package="libxml++"/>
+ <dep package="gnomemm/libgdamm"/>
+ <dep package="bakery"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-accessibility">
+ <dependencies>
+ <dep package="libgail-gnome"/>
+ <dep package="at-poke"/>
+ <dep package="dasher"/>
+ <dep package="gnome-mag"/>
+ <dep package="gok"/>
+ <dep package="gnome-speech"/>
+ <dep package="gnopernicus"/>
+ <dep package="orca"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-proposed">
+ <dependencies>
+ </dependencies>
+ </metamodule>
+ <autotools id="sodipodi">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libart_lgpl"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-themes">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="gtk-engines"/>
+ <dep package="icon-naming-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gob">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnetwork">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="gconf"/>
+ <dep package="intltool"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgircclient">
+ <branch/>
+ <dependencies>
+ <dep package="libgnetwork"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomechat">
+ <branch/>
+ <dependencies>
+ <dep package="libgnetwork"/>
+ <dep package="libgircclient"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <mozillamodule id="mozilla" autogenargs="--enable-default-toolkit=gtk2 --disable-mailnews --disable-ldap --disable-debug --enable-optimize --disable-tests --enable-crypto --enable-xft --with-system-zlib --disable-freetype2 --enable-application=xulrunner --disable-javaxpcom --enable-extensions=default,cookie,permissions,spellcheck" cvsroot="mozilla.org" revision="MOZILLA_1_8_BRANCH" projects="xulrunner">
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </mozillamodule>
+ <autotools id="enchant">
+ <branch repo="anoncvs.abisource.com"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="epiphany">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="iso-codes"/>
+ <dep package="libgnomeui"/>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ <suggests>
+ <dep package="enchant"/>
+ </suggests>
+ </autotools>
+ <autotools id="epiphany-extensions">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="epiphany"/>
+ </dependencies>
+ </autotools>
+ <autotools id="galeon">
+ <branch/>
+ <dependencies>
+ <dep package="mozilla"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libsoup">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="gnutls"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtkhtml">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ <dep package="libglade"/>
+ <dep package="gail"/>
+ <dep package="libgnomeprint"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libsoup"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evolution-data-server" supports-non-srcdir-builds="no">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="libgnome"/>
+ <dep package="libgnomeui"/>
+ <dep package="libsoup"/>
+ <dep package="libxml2"/>
+ <dep package="gconf"/>
+ <dep package="gnome-vfs"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evolution">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="evolution-data-server"/>
+ <dep package="gtkhtml"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ </dependencies>
+ <after>
+ <dep package="libnotify"/>
+ </after>
+ </autotools>
+ <autotools id="evolution-webcal">
+ <branch/>
+ <dependencies>
+ <dep package="evolution-data-server"/>
+ <dep package="libsoup"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evolution-exchange">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="evolution-data-server"/>
+ <dep package="evolution"/>
+ <dep package="libsoup"/>
+ </dependencies>
+ </autotools>
+ <tarball id="xchat" version="2.6.2">
+ <source href="http://xchat.org/files/source/2.6/xchat-2.6.2.tar.bz2"
+ size="1046910" md5sum="6b534baf9a4df6bf23d7d16f7e4eb379"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </tarball>
+ <tarball id="camorama" version="0.17">
+ <source href="http://camorama.fixedgear.org/downloads/camorama-0.17.tar.bz2"
+ size="312233" md5sum="2b2784af53a1ba8fa4419aa806967b35"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </tarball>
+ <autotools id="gtk-engines-cleanice">
+ <branch repo="elysium-project.sf.net"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gaim">
+ <branch repo="gaim.sf.net" module="trunk" checkoutdir="gaim"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="zenity">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gpdf">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-netstatus">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-panel"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-doc-utils">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="intltool"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <tarball id="libmusicbrainz" version="2.1.2">
+ <source href="http://ftp.musicbrainz.org/pub/musicbrainz/libmusicbrainz-2.1.2.tar.gz"
+ size="504432" md5sum="88d35af903665fecbdee77eb6d5e6cdd"/>
+ </tarball>
+ <autotools id="totem" autogenargs="--enable-gstreamer">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="gnome-desktop"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="gst-plugins-good"/>
+ <dep package="libmusicbrainz"/>
+ <dep package="iso-codes"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-themes-extras">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-themes"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="libgda">
+ <branch module="libgda"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgda-1-2">
+ <branch module="libgda" revision="release-1-2-branch"
+ checkoutdir="libgda-1-2"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="libgnomedb" autogenargs="--enable-gnome=yes">
+ <branch/>
+ <dependencies>
+ <dep package="libgda"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="mergeant">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomedb"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtranslator">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-spell">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomecups">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-cups-manager">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomecups"/>
+ <dep package="libgnomeui"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libxml++">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="glibmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="bakery">
+ <branch/>
+ <dependencies>
+ <dep package="libxml++"/>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/libglademm"/>
+ <dep package="gnomemm/gconfmm"/>
+ <dep package="gnomemm/gnome-vfsmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-hello">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libgnome"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="liboobs">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="dbus"/>
+ <dep package="gtk-doc"/>
+ <dep package="system-tools-backends"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-system-tools">
+ <branch revision="gnome-2-14"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ <dep package="gconf"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ <dep package="libglade"/>
+ <dep package="nautilus"/>
+ <dep package="system-tools-backends"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-user-docs">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="loudmouth">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gossip">
+ <branch/>
+ <dependencies>
+ <dep package="loudmouth"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="conglomerate">
+ <branch/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="gconf"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="sound-juicer">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-doc-utils"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-media"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="gst-plugins-good"/>
+ <dep package="nautilus-cd-burner"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-network">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <tarball id="guile" version="1.8.0">
+ <source href="ftp://ftp.gnu.org/gnu/guile/guile-1.8.0.tar.gz"
+ size="3691677" md5sum="3f47443602f93e94bf43218d9b86099d"/>
+ </tarball>
+ <tarball id="autogen" version="5.8.4">
+ <source href="http://internap.dl.sourceforge.net/sourceforge/autogen/autogen-5.8.4.tar.bz2"
+ size="931015" md5sum="b65d4b9e3ddbcfd5418b708858c05b66"/>
+ <dependencies>
+ <dep package="guile"/>
+ </dependencies>
+ </tarball>
+ <autotools id="anjuta">
+ <branch/>
+ <dependencies>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="vte"/>
+ <dep package="gnome-build"/>
+ <dep package="autogen"/>
+ <dep package="devhelp"/>
+ </dependencies>
+ </autotools>
+ <autotools id="OpenApplet">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtetrinet">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glom">
+ <branch/>
+ <dependencies>
+ <dep package="gnomemm/libgdamm"/>
+ <dep package="bakery"/>
+ <dep package="gnomemm/libgnomecanvasmm"/>
+ <dep package="libgnome"/>
+ <dep package="iso-codes"/>
+ <dep package="pygtk"/>
+ <dep package="gnome-python-extras"/>
+ </dependencies>
+ </autotools>
+ <autotools id="vino">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libglade"/>
+ <dep package="gconf"/>
+ <dep package="gnutls"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-keyring-manager" autogenargs="--disable-more-warnings">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-keyring"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-volume-manager">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libglade"/>
+ <dep package="hal-0-5-7"/>
+ </dependencies>
+ </autotools>
+ <metamodule id="meta-storage">
+ <dependencies>
+ <dep package="storage/storage-store"/>
+ <dep package="storage/vfs"/>
+ <dep package="storage/applet"/>
+ </dependencies>
+ </metamodule>
+ <autotools id="storage/storage-store">
+ <branch/>
+ <dependencies>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libstorage">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-vfs"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libstorage-translators">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libstorage"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/vfs">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libstorage"/>
+ <dep package="storage/libstorage-translators"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/pet">
+ <branch/>
+ </autotools>
+ <autotools id="storage/libmrs">
+ <branch/>
+ <dependencies>
+ <dep package="storage/pet"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libmrs-converter">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libmrs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libstorage-nl">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libstorage"/>
+ <dep package="storage/libmrs"/>
+ <dep package="storage/libmrs-converter"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/applet">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-python"/>
+ <dep package="storage/libstorage-nl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-nettool">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="libglade"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="monkey-bubble">
+ <branch/>
+ <dependencies>
+ <dep package="gstreamer-0-8"/>
+ <dep package="gst-plugins-0-8"/>
+ <dep package="libxml2"/>
+ <dep package="gconf"/>
+ <dep package="librsvg"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-schedule">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="yelp"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-backgrounds">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evince">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="poppler"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ <after>
+ <dep package="nautilus"/>
+ </after>
+ </autotools>
+ <autotools id="nautilus-python" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ </dependencies>
+ </autotools>
+ <autotools id="inkscape">
+ <branch repo="inkscape.sf.net" module="inkscape/trunk" checkoutdir="inkscape"/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libxslt"/>
+ </dependencies>
+ </autotools>
+ <autotools id="NetworkManager">
+ <branch/>
+ <dependencies>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="atomix">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libgnome"/>
+ <dep package="libgnomeui"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="libbonoboui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="deskbar-applet">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gnome-desktop"/>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gnome-python-desktop"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pessulus">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ </dependencies>
+ </autotools>
+ <autotools id="sabayon">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="muine">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gstreamer"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnonlin">
+ <branch repo="gstreamer.freedesktop.org" module="gnonlin"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pitivi">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-python"/>
+ <dep package="gnonlin"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libcm">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="Xcomposite"/>
+ <dep package="Xdamage"/>
+ </dependencies>
+ </autotools>
+ <autotools id="xchat-gnome">
+ <branch repo="svn.navi.cx" module="misc/trunk/xchat-gnome"/>
+ <dependencies>
+ <dep package="gtk+" />
+ <dep package="gconf" />
+ <dep package="libgnomeui" />
+ <dep package="libglade" />
+ <dep package="gnome-vfs" />
+ <dep package="libsexy" />
+ </dependencies>
+ </autotools>
+
+ <autotools id="gmime">
+ <branch/>
+ <dependencies>
+ <dep package="gtk-doc"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="tracker">
+ <branch/>
+ <dependecies>
+ <dep package="gmime"/>
+ <dep package="dbus-glib"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-desktop"/>
+ <dep package="libglade"/>
+ <dep package="gnome-vfs"/>
+ <dep package="poppler"/>
+ <dep package="libgsf"/>
+ <dep package="gstreamer"/>
+ </dependecies>
+ </autotools>
+
+ <autotools id="brasero">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="nautilus-burn"/>
+ <dep package="gstreamer-plugins-base"/>
+ </dependencies>
+ <suggests>
+ <dep package="libnotify"/>
+ <dep package="totem"/>
+ </suggests>
+ </autotools>
+
+ <autotools id="libipoddevice">
+ <branch/>
+ <dependencies>
+ <dep package="dbus-glib"/>
+ <dep package="hal"/>
+ <dep package="libgtop"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+
+</moduleset>
diff --git a/build-scripts/jhbuild/modulesets/gnome-2.18.modules b/build-scripts/jhbuild/modulesets/gnome-2.18.modules
new file mode 100644
index 0000000..85b0cc1
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/gnome-2.18.modules
@@ -0,0 +1,2226 @@
+<?xml version="1.0"?><!--*- mode: nxml; indent-tabs-mode: nil -*-->
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<!-- vim:set ts=2 expandtab: -->
+<moduleset>
+ <repository type="svn" name="svn.gnome.org" default="yes"
+ href="http://svn.gnome.org/svn/"/>
+ <repository type="svn" name="svn.gnomemm"
+ href="http://svn.gnome.org/svn/gnomemm/"/>
+ <repository type="cvs" name="cairo.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/cairo"
+ password=""/>
+ <repository type="cvs" name="mozilla.org"
+ cvsroot=":pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot"
+ password="anonymous"/>
+ <repository type="cvs" name="gstreamer.freedesktop.org"
+ cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/gstreamer"
+ password=""/>
+ <repository type="cvs" name="elysium-project.sf.net"
+ cvsroot=":pserver:anonymous@elysium-project.cvs.sourceforge.net:/cvsroot/elysium-project"
+ password=""/>
+ <repository type="svn" name="gaim.sf.net"
+ href="https://svn.sourceforge.net/svnroot/gaim/"/>
+ <repository type="svn" name="inkscape.sf.net"
+ href="https://svn.sourceforge.net/svnroot/inkscape/"/>
+ <repository type="svn" name="svn.galago-project.org"
+ href="http://svn.galago-project.org/"/>
+ <repository type="svn" name="osiris.chipx86.com"
+ href="http://osiris.chipx86.com/svn/osiris-misc/"/>
+ <repository type="svn" name="svn.debian.org"
+ href="svn://svn.debian.org/"/>
+ <repository type="svn" name="svn.navi.cx"
+ href="http://svn.navi.cx/" />
+ <repository type="cvs" name="anoncvs.abisource.com"
+ cvsroot=":pserver:anoncvs@anoncvs.abisource.com:/cvsroot"
+ password="anoncvs" />
+ <repository type="svn" name="svn.gtksourceviewmm"
+ href="svn://svn.gna.org/svn/gtksourceviewmm/"/>
+ <repository type="svn" name="svn.nemiver"
+ href="svn://svn.gna.org/svn/nemiver/"/>
+
+ <tarball id="scrollkeeper" version="0.3.14" supports-non-srcdir-builds="no">
+ <source href="http://easynews.dl.sourceforge.net/sourceforge/scrollkeeper/scrollkeeper-0.3.14.tar.gz"
+ size="679513" md5sum="161eb3f29e30e7b24f84eb93ac696155"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="libxslt"/>
+ <dep package="intltool"/>
+ </dependencies>
+ <patches>
+ <patch file="scrollkeeper_clean_xml_validation_context.patch" strip="1"/>
+ <patch file="scrollkeeper_language_fix.patch" strip="1"/>
+ <patch file="scrollkeeper_rw_offset_fix.patch" strip="1"/>
+ <patch file="scrollkeeper_empty_url_string.patch" strip="1"/>
+ </patches>
+ </tarball>
+
+ <tarball id="iso-codes" version="0.53">
+ <source href="ftp://pkg-isocodes.alioth.debian.org/pub/pkg-isocodes/iso-codes-0.53.tar.bz2"
+ md5sum="652887a62d8024e4ab6933061a92c233" size="4411143"/>
+ </tarball>
+
+ <include href="freedesktop-2.18.modules"/>
+ <include href="gnutls.modules"/>
+
+ <autotools id="cairo-gtk-engine">
+ <branch repo="cairo.freedesktop.org"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="cairo-1-0"/>
+ </dependencies>
+ </autotools>
+
+ <tarball id="shared-mime-info" supports-non-srcdir-builds="no" version="0.19">
+ <source href="http://freedesktop.org/~hadess/shared-mime-info-0.19.tar.gz"
+ md5sum="056a86a8245aecfd9c80740380c5265a" size="595168"/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="libxml2"/>
+ <dep package="glib"/>
+ </dependencies>
+ </tarball>
+
+ <tarball id="desktop-file-utils" version="0.10">
+ <source href="http://www.freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-0.10.tar.gz"
+ md5sum="8b930e9ad08ac6b8205dd00a1d694b0c" size="341508"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="intltool"/>
+ </dependencies>
+ </tarball>
+
+ <tarball id="libxklavier" supports-non-srcdir-builds="no" version="3.0">
+ <source href="http://xlibs.freedesktop.org/xkbdesc/libxklavier-3.0.tar.gz"
+ md5sum="7457dc72cfcb57498882ea652cb79eeb" size="460992"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="gtk-doc"/>
+ <dep package="glib"/>
+ </dependencies>
+ </tarball>
+ <autotools id="libbtctl">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-bluetooth">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="glib"/>
+ <dep package="libbtctl"/>
+ <dep package="libglade"/>
+ <dep package="libgnomeui"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+ <autotools id="phonemgr">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="glib"/>
+ <dep package="libbtctl"/>
+ <dep package="gnome-bluetooth"/>
+ <dep package="libglade"/>
+ <dep package="libgnomeui"/>
+ <dep package="libgnome"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="intltool">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-common">
+ <branch/>
+ </autotools>
+ <autotools id="libxml2">
+ <branch/>
+ </autotools>
+ <autotools id="libxslt">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="libgcrypt"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk-doc">
+ <branch/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="scrollkeeper"/>
+ </dependencies>
+ </autotools>
+ <tarball id="gamin" version="0.1.7">
+ <source href="http://www.gnome.org/~veillard/gamin/sources/gamin-0.1.7.tar.gz"
+ md5sum="1a1991ffa749b7dc2cc0573d6a2867b8" size="542061"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </tarball>
+ <autotools id="glib">
+ <branch revision="glib-2-12"/>
+ <dependencies>
+ <dep package="gtk-doc"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pango">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-common"/>
+ <dep package="glib"/>
+ <dep package="cairo"/>
+ </dependencies>
+ <after>
+ <dep package="libXft"/>
+ </after>
+ </autotools>
+ <autotools id="atk">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk+">
+ <branch revision="gtk-2-10"/>
+ <dependencies>
+ <dep package="cairo"/>
+ <dep package="pango"/>
+ <dep package="atk"/>
+ <dep package="shared-mime-info"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gail">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="atk"/>
+ <dep package="libgnomecanvas"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtkhtml2">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="gail"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libIDL">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="ORBit2">
+ <branch/>
+ <dependencies>
+ <dep package="libIDL"/>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gconf">
+ <branch/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ <dep package="libxml2"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libbonobo">
+ <branch/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ <dep package="intltool"/>
+ <dep package="gnome-common"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-mime-data">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-common"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-icon-theme">
+ <branch/>
+ <dependencies>
+ <dep package="hicolor-icon-theme"/>
+ <dep package="icon-naming-utils"/>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-vfs">
+ <branch/>
+ <dependencies>
+ <dep package="gconf"/>
+ <dep package="desktop-file-utils"/>
+ <dep package="shared-mime-info"/>
+ <dep package="gnome-mime-data"/>
+ <dep package="avahi"/>
+ <dep package="hal"/>
+ <dep package="gamin"/>
+ <dep package="dbus-glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-vfs-monikers">
+ <branch/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="gnome-vfs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-keyring">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libart_lgpl">
+ <branch/>
+ </autotools>
+ <autotools id="libgnome">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="libxslt"/>
+ <dep package="libbonobo"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gconf"/>
+ <dep package="esound"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomecanvas">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libart_lgpl"/>
+ <dep package="libglade"/>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libbonoboui">
+ <branch/>
+ <dependencies>
+ <dep package="libgnome"/>
+ <dep package="libbonobo"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeui">
+ <branch/>
+ <dependencies>
+ <dep package="libbonoboui"/>
+ <dep package="libglade"/>
+ <dep package="gnome-icon-theme"/>
+ <dep package="gnome-keyring"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libglade">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomekbd">
+ <branch/>
+ <dependencies>
+ <dep package="dbus-glib" />
+ <dep package="gtk+" />
+ <dep package="libglade" />
+ <dep package="libgnome" />
+ <dep package="libgnomeui" />
+ <dep package="libxklavier" />
+ </dependencies>
+ </autotools>
+
+ <autotools id="pygobject">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pygtk">
+ <branch/>
+ <dependencies>
+ <dep package="pygobject"/>
+ <dep package="gtk+"/>
+ <dep package="pycairo"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pyorbit">
+ <branch/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-python">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="pyorbit"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-python-desktop">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-python"/>
+ <dep package="gnome-panel"/>
+ <dep package="libgnomeprint"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="gtksourceview"/>
+ <dep package="libwnck"/>
+ <dep package="totem"/>
+ <dep package="libgtop"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="gnome-media"/>
+ <dep package="metacity"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-python-extras">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gtkhtml2"/>
+ <dep package="gdl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="bug-buddy">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="evolution-data-server"/>
+ <dep package="libsoup"/>
+ </dependencies>
+ <suggests>
+ <dep package="NetworkManager"/>
+ </suggests>
+ </autotools>
+ <autotools id="libwnck">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="startup-notification"/>
+ <dep package="intltool"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-desktop" autogenargs="--with-gnome-distributor=JHBuild">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="startup-notification"/>
+ <dep package="gnome-themes"/>
+ <dep package="scrollkeeper"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-menus">
+ <branch/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="gnome-common"/>
+ <dep package="glib"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-panel">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-desktop"/>
+ <dep package="libwnck"/>
+ <dep package="evolution-data-server"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-vfs"/>
+ <dep package="libglade"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="dbus-glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-session">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libwnck"/>
+ <dep package="esound"/>
+ <dep package="gnome-control-center"/>
+ <dep package="gnome-keyring"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-applets" autogenargs="--enable-gstreamer=0.10">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-panel"/>
+ <dep package="libgtop"/>
+ <dep package="gail"/>
+ <dep package="libgnomekbd"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="gucharmap"/>
+ <dep package="system-tools-backends"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ <after>
+ <dep package="gnome-control-center"/>
+ <dep package="gnome-python-desktop"/>
+ </after>
+ </autotools>
+ <autotools id="gnome-games">
+ <branch/>
+ <dependencies>
+ <dep package="librsvg"/>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <tarball id="libcroco" supports-non-srcdir-builds="no" version="0.6.1">
+ <source href="http://download.gnome.org/sources/libcroco/0.6/libcroco-0.6.1.tar.bz2"
+ md5sum="b0975bd01eb11964f1b3f254f267a43d" size="381188"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="pango"/>
+ </dependencies>
+ </tarball>
+ <autotools id="librsvg" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="gtk+"/>
+ <dep package="libart_lgpl"/>
+ <dep package="gnome-common"/>
+ <dep package="libgsf"/>
+ <dep package="libcroco"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="eel">
+ <branch/>
+ <dependencies>
+ <dep package="librsvg"/>
+ <dep package="libgnomeui"/>
+ <dep package="gail"/>
+ <dep package="gnome-desktop"/>
+ <dep package="gnome-menus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="esound"/>
+ <dep package="eel"/>
+ <dep package="librsvg"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-desktop"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-actions">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-cd-burner">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-open-terminal">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-sendto">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ <suggests>
+ <dep package="gnome-bluetooth"/>
+ </suggests>
+ </autotools>
+ <autotools id="nautilus-media" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ <dep package="gstreamer-0-8"/>
+ <dep package="gst-plugins-0-8"/>
+ </dependencies>
+ </autotools>
+ <autotools id="nautilus-vcs">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="metacity">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="intltool"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgtop">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-system-monitor">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libwnck"/>
+ <dep package="libgtop"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-control-center" autogenargs="--enable-gstreamer=0.10"
+ supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="esound"/>
+ <dep package="gnome-desktop"/>
+ <dep package="metacity"/>
+ <dep package="nautilus"/>
+ <dep package="libgnomekbd"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+ <autotools id="yelp">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="startup-notification"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="devhelp">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-vfs"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-utils">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-panel"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gconf-editor" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+ <tarball id="audiofile" version="0.2.6" supports-non-srcdir-builds="no">
+ <source href="http://www.68k.org/~michael/audiofile/audiofile-0.2.6.tar.gz"
+ size="374688" md5sum="9c1049876cd51c0f1b12c2886cce4d42"/>
+ </tarball>
+ <autotools id="esound">
+ <branch/>
+ <dependencies>
+ <dep package="audiofile"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-media">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="esound"/>
+ <dep package="gail"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="gst-plugins-good"/>
+ <dep package="nautilus-cd-burner"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gdm2">
+ <branch/>
+ <dependencies>
+ <dep package="librsvg"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="vte">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-terminal">
+ <branch/>
+ <dependencies>
+ <dep package="libglade"/>
+ <dep package="libgnomeui"/>
+ <dep package="vte"/>
+ <dep package="startup-notification"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk-engines">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeprint">
+ <branch/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="libart_lgpl"/>
+ <dep package="glib"/>
+ <dep package="gnome-common"/>
+ <dep package="pango"/>
+ <dep package="libgnomecups"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeprintui">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeprint"/>
+ <dep package="gtk+"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="gnome-icon-theme"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gedit">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="gtksourceview"/>
+ <dep package="gnome-python-desktop"/>
+ <dep package="iso-codes"/>
+ <dep package="enchant"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gedit-plugins">
+ <branch/>
+ <dependencies>
+ <dep package="gedit"/>
+ </dependencies>
+ </autotools>
+ <autotools id="memprof">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="eog">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-desktop"/>
+ </dependencies>
+ </autotools>
+ <tarball id="libgsf" version="1.14.2">
+ <source href="http://download.gnome.org/sources/libgsf/1.14/libgsf-1.14.2.tar.bz2"
+ md5sum="aea16a8408b65f95c308b0db3e3d3d47" size="543516"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="gnome-vfs"/>
+ <dep package="libbonobo"/>
+ </dependencies>
+ </tarball>
+ <autotools id="goffice">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libgsf"/>
+ <dep package="libxml2"/>
+ <dep package="pango"/>
+ <dep package="libglade"/>
+ <dep package="libgnomeprint"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libart_lgpl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnumeric">
+ <branch/>
+ <dependencies>
+ <dep package="goffice"/>
+ <dep package="libgsf"/>
+ <dep package="pygtk"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gimp" autogenargs="--disable-print">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libart_lgpl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glade">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glade2c">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glade3">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep packege="libbonoboui"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="sawfish">
+ <branch revision="gnome-2"/>
+ <dependencies>
+ <dep package="rep-gtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="rep-gtk">
+ <branch/>
+ <dependencies>
+ <dep package="librep"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="librep">
+ <branch/>
+ </autotools>
+ <autotools id="rhythmbox">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="totem"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gstreamer-0-8" autogenargs="-- --disable-plugin-builddir --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gstreamer"
+ revision="BRANCH-GSTREAMER-0_8" checkoutdir="gstreamer-0-8"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-plugins-0-8" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-plugins"
+ revision="BRANCH-GSTREAMER-0_8" checkoutdir="gst-plugins-0-8"/>
+ <dependencies>
+ <dep package="gstreamer-0-8"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-python-0-8" autogenargs="--" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-python"
+ revision="BRANCH-GSTREAMER-0_8" checkoutdir="gst-python-0-8"/>
+ <dependencies>
+ <dep package="gstreamer-0-8"/>
+ <dep package="gst-plugins-0-8"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gstreamer" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gstreamer"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+
+ <tarball id="liboil" version="0.3.8">
+ <source href="http://liboil.freedesktop.org/download/liboil-0.3.8.tar.gz"
+ md5sum="a402c4af2603c8fb69b365af0b8ec775" size="834167"/>
+ </tarball>
+
+ <autotools id="gst-plugins-base" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-plugins-base"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gtk+"/>
+ <dep package="liboil"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-plugins-good" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-plugins-good"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-plugins-ugly" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-plugins-ugly"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-plugins-bad" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-plugins-bad"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-ffmpeg" autogenargs="-- --disable-tests" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-ffmpeg"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-python" autogenargs="--" supports-non-srcdir-builds="no">
+ <branch repo="gstreamer.freedesktop.org" module="gst-python"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="planner">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libgsf"/>
+ </dependencies>
+ </autotools>
+ <autotools id="file-roller">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="balsa">
+ <branch revision="BALSA_2"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pan">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnet"/>
+ </dependencies>
+ </autotools>
+ <distutils id="pyspi">
+ <branch/>
+ <dependencies>
+ <dep package="at-spi"/>
+ </dependencies>
+ </distutils>
+ <distutils id="dogtail">
+ <branch/>
+ <dependencies>
+ <dep package="pyspi"/>
+ </dependencies>
+ <after>
+ <dep package="gnome-python-desktop"/>
+ </after>
+ </distutils>
+ <autotools id="gcalctool" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="ggv" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="ekiga" autogenargs="--with-pwlib-dir=`ptlib-config --prefix` --with-opal-dir=`ptlib-config --prefix`">
+ <branch module="ekiga/tags/v2_0_3" checkoutdir="ekiga"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="evolution-data-server"/>
+ <dep package="opal" />
+ </dependencies>
+ </autotools>
+ <tarball autogen-sh="configure" id="pwlib" version="1.10.2">
+ <source href="http://seconix.com/misc/ekiga-2.0.3/pwlib-1.10.2.tar.gz"
+ md5sum="05ad5b279ed2053eb7ef0befff9166d0" size="1485529"/>
+ </tarball>
+ <tarball autogen-sh="configure" id="opal" version="2.2.3">
+ <source href="http://seconix.com/misc/ekiga-2.0.3/opal-2.2.3.tar.gz"
+ md5sum="fc1fedd3406e2e74472cc4312cbbfd6a" size="4114610"/>
+ <dependencies>
+ <dep package="pwlib"/>
+ </dependencies>
+ </tarball>
+ <autotools id="gucharmap">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtksourceview" autogenargs="--enable-compile-warnings=maximum">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomeprint"/>
+ <dep package="gnome-vfs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glimmer">
+ <branch/>
+ <dependencies>
+ <dep package="gtksourceview"/>
+ <dep package="libgnomeprint"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gdl">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="librsvg"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-build">
+ <branch/>
+ <dependencies>
+ <dep package="gdl"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gtkhtml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="scaffold">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="vte"/>
+ <dep package="gdl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libsigc++2">
+ <branch revision="libsigc-2-0"/>
+ </autotools>
+ <autotools id="glibmm">
+ <branch revision="glibmm-2-12"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libsigc++2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtkmm">
+ <branch/>
+ <dependencies>
+ <dep package="glibmm"/>
+ <dep package="cairomm"/>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="orbitcpp">
+ <branch/>
+ <dependencies>
+ <dep package="ORBit2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomemm">
+ <branch repo="svn.gnomemm"/>
+ <dependencies>
+ <dep package="libgnome"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libglademm">
+ <branch repo="svn.gnomemm" />
+ <dependencies>
+ <dep package="libglade"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+
+ <!-- Unmaintained now:
+ <autotools id="gnomemm/libbonobomm">
+ <branch repo="svn.gnomemm" />
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="gtkmm"/>
+ <dep package="orbitcpp"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomemm/libbonobouimm">
+ <branch repo="svn.gnomemm" />
+ <dependencies>
+ <dep package="libbonoboui"/>
+ <dep package="libbonobomm"/>
+ </dependencies>
+ </autotools>
+ -->
+
+ <autotools id="libgnomecanvasmm">
+ <branch repo="svn.gnomemm" />
+ <dependencies>
+ <dep package="libgnomecanvas"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gconfmm">
+ <branch repo="svn.gnomemm" />
+ <dependencies>
+ <dep package="gconf"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeuimm">
+ <branch repo="svn.gnomemm" />
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomemm"/>
+ <dep package="gconfmm"/>
+ <dep package="libgnomecanvasmm"/>
+ <dep package="libglademm"/>
+ <dep package="gnome-vfsmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-vfsmm">
+ <branch repo="svn.gnomemm" />
+ <dependencies>
+ <dep package="glibmm"/>
+ <dep package="gnome-vfs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libpanelappletmm">
+ <branch repo="svn.gnomemm" />
+ <dependencies>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeprintmm">
+ <branch repo="svn.gnomemm" />
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libgnomeprint"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomeprintuimm">
+ <branch repo="svn.gnomemm" />
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libgnomeprintmm"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgdamm">
+ <branch repo="svn.gnomemm" revision="libgda-1-2" />
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libgda-1-2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtkmm_hello">
+ <branch repo="svn.gnomemm" />
+ <dependencies>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtksourceviewmm">
+ <branch repo="svn.gtksourceviewmm" module="trunk" checkoutdir="gtksourceviewmm"/>
+ <dependencies>
+ <dep package="gtksourceview"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="regexxer">
+ <branch/>
+ <dependencies>
+ <dep package="intltool"/>
+ <dep package="gtkmm"/>
+ <dep package="gconfmm"/>
+ <dep package="libglademm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnet" autogenargs="--enable-glib2">
+ <branch revision="GNET_1_1"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomeicu">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="at-spi">
+ <branch/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="gail"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgail-gnome">
+ <branch/>
+ <dependencies>
+ <dep package="at-spi"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="at-poke">
+ <branch/>
+ <dependencies>
+ <dep package="libgail-gnome"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-mag">
+ <branch/>
+ <dependencies>
+ <dep package="at-spi"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gok">
+ <branch/>
+ <dependencies>
+ <dep package="at-spi"/>
+ <dep package="libgnomeui"/>
+ <dep package="libwnck"/>
+ <dep package="esound"/>
+ <dep package="scrollkeeper"/>
+ <dep package="gnome-speech"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-speech">
+ <branch/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnopernicus">
+ <branch/>
+ <dependencies>
+ <dep package="gconf"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-speech"/>
+ <dep package="gnome-mag"/>
+ </dependencies>
+ </autotools>
+ <autotools id="orca">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-python"/>
+ <dep package="libgail-gnome"/>
+ <dep package="gnome-mag"/>
+ <dep package="gnome-speech"/>
+ <dep package="eel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="dasher" autogenargs="--with-a11y --with-gnome">
+ <branch revision="gnome-2-16"/>
+ <dependencies>
+ <dep package="at-spi"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-speech"/>
+ <dep package="gnome-vfs"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-screensaver">
+ <branch/>
+ <dependencies>
+ <dep package="gconf"/>
+ <dep package="gtk+"/>
+ <dep package="dbus"/>
+ <dep package="gnome-menus"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-power-manager">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="hal"/>
+ <dep package="libwnck"/>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="intltool"/>
+ <dep package="libglade"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ <suggests>
+ <dep package="libnotify"/>
+ </suggests>
+ </autotools>
+ <autotools id="gthumb">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-vfs"/>
+ <dep package="libglade"/>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="fast-user-switch-applet">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="libglade"/>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-mount" autogenargs="--enable-nautilus-extension">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-keyring"/>
+ <dep package="libgnomeui"/>
+ <dep package="dbus"/>
+ <dep package="hal"/>
+ <dep package="gtk+"/>
+ <dep package="intltool"/>
+ <dep package="libglade"/>
+ <dep package="eel"/>
+ <dep package="nautilus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libnotify">
+ <branch repo="svn.galago-project.org" module="trunk/libnotify"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libsexy">
+ <branch repo="osiris.chipx86.com" module="trunk/libsexy"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ <dep package="iso-codes"/>
+ </dependencies>
+ </autotools>
+ <autotools id="notification-daemon">
+ <branch repo="svn.galago-project.org" module="trunk/notification-daemon"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="dbus"/>
+ <dep package="libsexy"/>
+ </dependencies>
+ </autotools>
+ <autotools id="alacarte">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-menus"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </autotools>
+
+ <metamodule id="meta-gnome-devel-platform">
+ <dependencies>
+ <dep package="libgnome"/>
+ <dep package="libbonobo"/>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-vfs-monikers"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-core">
+ <dependencies>
+ <dep package="gnome-desktop"/>
+ <dep package="gnome-panel"/>
+ <dep package="gnome-session"/>
+ <dep package="gnome-terminal"/>
+ <dep package="gnome-applets"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-nautilus">
+ <dependencies>
+ <dep package="nautilus"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-desktop">
+ <dependencies>
+ <dep package="meta-gnome-core"/>
+ <dep package="gnome-control-center"/>
+ <dep package="meta-nautilus"/>
+ <dep package="yelp"/>
+ <dep package="bug-buddy"/>
+ <dep package="gedit"/>
+ <dep package="gtk-engines"/>
+ <dep package="eog"/>
+ <dep package="metacity"/>
+ <dep package="gconf-editor"/>
+ <dep package="gnome-utils"/>
+ <dep package="gnome-system-monitor"/>
+ <dep package="gstreamer"/>
+ <dep package="gnome-media"/>
+ <dep package="gnome-netstatus"/>
+ <dep package="gcalctool"/>
+ <dep package="gucharmap"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="zenity"/>
+ <dep package="libgail-gnome"/>
+ <dep package="gok"/>
+ <dep package="epiphany"/>
+ <dep package="gnome-games"/>
+ <dep package="gnome-user-docs"/>
+ <dep package="file-roller"/>
+ <dep package="gnome-system-tools"/>
+ <dep package="gnome-nettool"/>
+ <dep package="vino"/>
+ <dep package="gnome-volume-manager"/>
+ <dep package="totem"/>
+ <dep package="gnome-menus"/>
+ <dep package="gnome-backgrounds"/>
+ <dep package="sound-juicer"/>
+ <dep package="evolution"/>
+ <dep package="evolution-webcal"/>
+ <dep package="evolution-exchange"/>
+ <dep package="ekiga"/>
+ <dep package="evince"/>
+ <dep package="dasher"/>
+ <dep package="gnome-keyring-manager"/>
+ <dep package="deskbar-applet"/>
+ <dep package="fast-user-switch-applet"/>
+ <dep package="gnome-screensaver"/>
+ <dep package="alacarte"/>
+ <dep package="gnome-power-manager"/>
+ <dep package="orca"/>
+ <dep package="meta-gnome-admin"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-admin">
+ <dependencies>
+ <dep package="pessulus"/>
+ <dep package="sabayon"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-devel-tools">
+ <dependencies>
+ <dep package="glade"/>
+ <dep package="memprof"/>
+ <dep package="gconf-editor"/>
+ <dep package="devhelp"/>
+ <dep package="nautilus-vcs"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-python">
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gnome-python-desktop"/>
+ </dependencies>
+ <after>
+ <dep package="gnome-python-extras"/>
+ </after>
+ </metamodule>
+ <metamodule id="meta-gnome-c++">
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libgnomeuimm"/>
+ <dep package="gnome-vfsmm"/>
+ <dep package="libpanelappletmm"/>
+ <dep package="libgnomeprintuimm"/>
+ <dep package="libxml++"/>
+ <dep package="libgdamm"/>
+ <dep package="bakery"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-accessibility">
+ <dependencies>
+ <dep package="libgail-gnome"/>
+ <dep package="at-poke"/>
+ <dep package="dasher"/>
+ <dep package="gnome-mag"/>
+ <dep package="gok"/>
+ <dep package="gnome-speech"/>
+ <dep package="gnopernicus"/>
+ <dep package="orca"/>
+ </dependencies>
+ </metamodule>
+ <metamodule id="meta-gnome-proposed">
+ <dependencies>
+ </dependencies>
+ </metamodule>
+ <autotools id="sodipodi">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libart_lgpl"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-themes">
+ <branch/>
+ <dependencies>
+ <dep package="gtk-engines"/>
+ <dep package="icon-naming-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gob">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnetwork">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="gconf"/>
+ <dep package="intltool"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgircclient">
+ <branch/>
+ <dependencies>
+ <dep package="libgnetwork"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnomechat">
+ <branch/>
+ <dependencies>
+ <dep package="libgnetwork"/>
+ <dep package="libgircclient"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <mozillamodule id="mozilla" autogenargs="--enable-default-toolkit=gtk2 --disable-mailnews --disable-ldap --disable-debug --enable-optimize --disable-tests --enable-crypto --enable-xft --with-system-zlib --disable-freetype2 --enable-application=xulrunner --disable-javaxpcom --enable-extensions=default,cookie,permissions,spellcheck" cvsroot="mozilla.org" revision="MOZILLA_1_8_BRANCH" projects="xulrunner">
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </mozillamodule>
+ <autotools id="enchant">
+ <branch repo="anoncvs.abisource.com"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-gecko-embed">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="epiphany">
+ <branch/>
+ <dependencies>
+ <dep package="iso-codes"/>
+ <dep package="libgnomeui"/>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="gnome-desktop"/>
+ </dependencies>
+ <suggests>
+ <dep package="enchant"/>
+ </suggests>
+ </autotools>
+ <autotools id="epiphany-extensions">
+ <branch/>
+ <dependencies>
+ <dep package="epiphany"/>
+ </dependencies>
+ </autotools>
+ <autotools id="galeon">
+ <branch/>
+ <dependencies>
+ <dep package="mozilla"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libsoup">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="gnutls"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtkhtml">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ <dep package="libglade"/>
+ <dep package="gail"/>
+ <dep package="libgnomeprint"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="libsoup"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evolution-data-server" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="libbonobo"/>
+ <dep package="libgnome"/>
+ <dep package="libgnomeui"/>
+ <dep package="libsoup"/>
+ <dep package="libxml2"/>
+ <dep package="gconf"/>
+ <dep package="gnome-vfs"/>
+ <dep package="mozilla"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evolution">
+ <branch/>
+ <dependencies>
+ <dep package="evolution-data-server"/>
+ <dep package="gtkhtml"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ </dependencies>
+ <after>
+ <dep package="libnotify"/>
+ </after>
+ </autotools>
+ <autotools id="evolution-webcal">
+ <branch/>
+ <dependencies>
+ <dep package="evolution-data-server"/>
+ <dep package="libsoup"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evolution-exchange">
+ <branch/>
+ <dependencies>
+ <dep package="evolution-data-server"/>
+ <dep package="evolution"/>
+ <dep package="libsoup"/>
+ </dependencies>
+ </autotools>
+ <tarball id="xchat" version="2.6.2">
+ <source href="http://xchat.org/files/source/2.6/xchat-2.6.2.tar.bz2"
+ size="1046910" md5sum="6b534baf9a4df6bf23d7d16f7e4eb379"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </tarball>
+ <tarball id="camorama" version="0.17">
+ <source href="http://camorama.fixedgear.org/downloads/camorama-0.17.tar.bz2"
+ size="312233" md5sum="2b2784af53a1ba8fa4419aa806967b35"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </tarball>
+ <autotools id="gtk-engines-cleanice">
+ <branch repo="elysium-project.sf.net"/>
+ <dependencies>
+ <dep package="gtk+"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gaim">
+ <branch repo="gaim.sf.net" module="trunk" checkoutdir="gaim"/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="zenity">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gpdf">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeprintui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-netstatus">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-panel"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-doc-utils">
+ <branch/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="intltool"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <tarball id="libmusicbrainz" version="2.1.2">
+ <source href="http://ftp.musicbrainz.org/pub/musicbrainz/libmusicbrainz-2.1.2.tar.gz"
+ size="504432" md5sum="88d35af903665fecbdee77eb6d5e6cdd"/>
+ </tarball>
+ <autotools id="totem" autogenargs="--enable-gstreamer">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-desktop"/>
+ <dep package="nautilus-cd-burner"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="gst-plugins-good"/>
+ <dep package="libmusicbrainz"/>
+ <dep package="iso-codes"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-themes-extras">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-themes"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="libgda">
+ <branch module="libgda"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgda-1-2">
+ <branch module="libgda" revision="release-1-2-branch"
+ checkoutdir="libgda-1-2"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="libgnomedb" autogenargs="--enable-gnome=yes">
+ <branch/>
+ <dependencies>
+ <dep package="libgda"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="mergeant">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomedb"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtranslator">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-spell">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libgnomecups">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-cups-manager">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomecups"/>
+ <dep package="libgnomeui"/>
+ <dep package="libglade"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libxml++">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ <dep package="glibmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="bakery">
+ <branch/>
+ <dependencies>
+ <dep package="libxml++"/>
+ <dep package="gtkmm"/>
+ <dep package="libglademm"/>
+ <dep package="gconfmm"/>
+ <dep package="gnome-vfsmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-hello">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libgnome"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="liboobs">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="dbus"/>
+ <dep package="gtk-doc"/>
+ <dep package="system-tools-backends"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-system-tools">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="libxml2"/>
+ <dep package="gconf"/>
+ <dep package="libgnomeui"/>
+ <dep package="libbonoboui"/>
+ <dep package="libglade"/>
+ <dep package="nautilus"/>
+ <dep package="liboobs"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-user-docs">
+ <branch/>
+ <dependencies>
+ <dep package="scrollkeeper"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="loudmouth">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gossip">
+ <branch/>
+ <dependencies>
+ <dep package="loudmouth"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="conglomerate">
+ <branch/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="gconf"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="sound-juicer">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-doc-utils"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-media"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="gst-plugins-good"/>
+ <dep package="nautilus-cd-burner"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-network">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <tarball id="guile" version="1.8.0">
+ <source href="ftp://ftp.gnu.org/gnu/guile/guile-1.8.0.tar.gz"
+ size="3691677" md5sum="3f47443602f93e94bf43218d9b86099d"/>
+ </tarball>
+ <tarball id="autogen" version="5.8.4">
+ <source href="http://internap.dl.sourceforge.net/sourceforge/autogen/autogen-5.8.4.tar.bz2"
+ size="931015" md5sum="b65d4b9e3ddbcfd5418b708858c05b66"/>
+ <dependencies>
+ <dep package="guile"/>
+ </dependencies>
+ </tarball>
+ <autotools id="anjuta">
+ <branch/>
+ <dependencies>
+ <dep package="libbonoboui"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="vte"/>
+ <dep package="gnome-build"/>
+ <dep package="autogen"/>
+ <dep package="devhelp"/>
+ </dependencies>
+ </autotools>
+ <autotools id="OpenApplet">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-panel"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtetrinet">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glom">
+ <branch/>
+ <dependencies>
+ <dep package="libgdamm"/>
+ <dep package="bakery"/>
+ <dep package="libgnomecanvasmm"/>
+ <dep package="libgnome"/>
+ <dep package="iso-codes"/>
+ <dep package="pygtk"/>
+ <dep package="gnome-python-extras"/>
+ <dep package="gtksourceviewmm"/>
+ </dependencies>
+ </autotools>
+ <autotools id="vino">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libglade"/>
+ <dep package="gconf"/>
+ <dep package="gnutls"/>
+ <dep package="dbus-glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-keyring-manager" autogenargs="--disable-more-warnings">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-keyring"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-volume-manager">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libglade"/>
+ <dep package="hal"/>
+ </dependencies>
+ </autotools>
+ <metamodule id="meta-storage">
+ <dependencies>
+ <dep package="storage/storage-store"/>
+ <dep package="storage/vfs"/>
+ <dep package="storage/applet"/>
+ </dependencies>
+ </metamodule>
+ <autotools id="storage/storage-store">
+ <branch/>
+ <dependencies>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libstorage">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-vfs"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libstorage-translators">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libstorage"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/vfs">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libstorage"/>
+ <dep package="storage/libstorage-translators"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/pet">
+ <branch/>
+ </autotools>
+ <autotools id="storage/libmrs">
+ <branch/>
+ <dependencies>
+ <dep package="storage/pet"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libmrs-converter">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libmrs"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/libstorage-nl">
+ <branch/>
+ <dependencies>
+ <dep package="storage/libstorage"/>
+ <dep package="storage/libmrs"/>
+ <dep package="storage/libmrs-converter"/>
+ </dependencies>
+ </autotools>
+ <autotools id="storage/applet">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-python"/>
+ <dep package="storage/libstorage-nl"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-nettool">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gconf"/>
+ <dep package="libglade"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ </autotools>
+ <autotools id="monkey-bubble">
+ <branch/>
+ <dependencies>
+ <dep package="gstreamer-0-8"/>
+ <dep package="gst-plugins-0-8"/>
+ <dep package="libxml2"/>
+ <dep package="gconf"/>
+ <dep package="librsvg"/>
+ <dep package="libgnomeui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-schedule">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="yelp"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnome-backgrounds">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="evince">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="libgnomeprintui"/>
+ <dep package="poppler"/>
+ <dep package="gnome-doc-utils"/>
+ </dependencies>
+ <after>
+ <dep package="nautilus"/>
+ </after>
+ </autotools>
+ <autotools id="nautilus-python" supports-non-srcdir-builds="no">
+ <branch/>
+ <dependencies>
+ <dep package="nautilus"/>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ </dependencies>
+ </autotools>
+ <autotools id="inkscape">
+ <branch repo="inkscape.sf.net" module="inkscape/trunk" checkoutdir="inkscape"/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libxslt"/>
+ </dependencies>
+ </autotools>
+ <autotools id="NetworkManager">
+ <branch/>
+ <dependencies>
+ <dep package="dbus"/>
+ </dependencies>
+ </autotools>
+ <autotools id="atomix">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="libgnome"/>
+ <dep package="libgnomeui"/>
+ <dep package="libxml2"/>
+ <dep package="libgnomecanvas"/>
+ <dep package="libbonoboui"/>
+ </dependencies>
+ </autotools>
+ <autotools id="deskbar-applet">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gnome-desktop"/>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gnome-python-desktop"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pessulus">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ </dependencies>
+ </autotools>
+ <autotools id="sabayon">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="pygtk"/>
+ </dependencies>
+ </autotools>
+ <autotools id="muine">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="gstreamer"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gnonlin">
+ <branch repo="gstreamer.freedesktop.org" module="gnonlin"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pitivi">
+ <branch/>
+ <dependencies>
+ <dep package="pygtk"/>
+ <dep package="gnome-python"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-python"/>
+ <dep package="gnonlin"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libcm">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="Xcomposite"/>
+ <dep package="Xdamage"/>
+ </dependencies>
+ </autotools>
+ <autotools id="xchat-gnome">
+ <branch repo="svn.navi.cx" module="misc/trunk/xchat-gnome"/>
+ <dependencies>
+ <dep package="gtk+" />
+ <dep package="gconf" />
+ <dep package="libgnomeui" />
+ <dep package="libglade" />
+ <dep package="gnome-vfs" />
+ <dep package="libsexy" />
+ </dependencies>
+ </autotools>
+
+ <autotools id="gmime">
+ <branch/>
+ <dependencies>
+ <dep package="gtk-doc"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="tracker">
+ <branch/>
+ <dependecies>
+ <dep package="gmime"/>
+ <dep package="dbus-glib"/>
+ <dep package="libgnomeui"/>
+ <dep package="gnome-desktop"/>
+ <dep package="libglade"/>
+ <dep package="gnome-vfs"/>
+ <dep package="poppler"/>
+ <dep package="libgsf"/>
+ <dep package="gstreamer"/>
+ </dependecies>
+ </autotools>
+
+ <autotools id="nemiver">
+ <branch repo="svn.nemiver" module="trunk" checkoutdir="nemiver"/>
+ <dependencies>
+ <dep package="gtkmm"/>
+ <dep package="libglademm"/>
+ <dep package="gtksourceviewmm"/>
+ <dep package="libgtop"/>
+ <dep package="vte"/>
+ <dep package="gconf"/>
+ <dep package="gnome-vfs" />
+ </dependencies>
+ </autotools>
+
+ <autotools id="brasero">
+ <branch/>
+ <dependencies>
+ <dep package="libgnomeui"/>
+ <dep package="nautilus-burn"/>
+ <dep package="gstreamer-plugins-base"/>
+ </dependencies>
+ <suggests>
+ <dep package="libnotify"/>
+ <dep package="totem"/>
+ </suggests>
+ </autotools>
+
+ <autotools id="gtkunique">
+ <branch/>
+ <dependencies>
+ <dep package="gtk+"/>
+ <dep package="dbus-glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="libipoddevice">
+ <branch/>
+ <dependencies>
+ <dep package="dbus-glib"/>
+ <dep package="hal"/>
+ <dep package="libgtop"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+
+</moduleset>
diff --git a/build-scripts/jhbuild/modulesets/gnutls.modules b/build-scripts/jhbuild/modulesets/gnutls.modules
new file mode 100644
index 0000000..42a31e7
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/gnutls.modules
@@ -0,0 +1,36 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: nxml -*-->
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+ <tarball id="libgpg-error" version="1.3">
+ <source href="http://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.3.tar.bz2"
+ size="452266" md5sum="d978065d62cde48e79497b63f80ba8fc" />
+ </tarball>
+ <tarball id="libgcrypt" version="1.2.2">
+ <source href="http://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.2.2.tar.bz2"
+ size="780315" md5sum="4a8a9a7572892ae3803a5aa558e52e02" />
+ <dependencies>
+ <dep package="libgpg-error" />
+ </dependencies>
+ </tarball>
+ <tarball id="libtasn1" version="0.3.4" supports-non-srcdir-builds="no">
+ <source href="http://ftp.gnupg.org/gcrypt/alpha/gnutls/libtasn1/libtasn1-0.3.4.tar.gz"
+ size="1246545" md5sum="1dbfce0e1fbd6aebc1a4506814c23d35" />
+ </tarball>
+ <tarball id="opencdk" version="0.5.8" supports-non-srcdir-builds="no">
+ <source href="http://ftp.gnupg.org/gcrypt/alpha/gnutls/opencdk/opencdk-0.5.8.tar.gz"
+ size="497122" md5sum="900c4dee7712845c19d7b2d2a93ea546" />
+ <dependencies>
+ <dep package="libgcrypt" />
+ </dependencies>
+ </tarball>
+ <tarball id="gnutls" version="1.4.0">
+ <source href="http://ftp.gnupg.org/gcrypt/gnutls/gnutls-1.4.0.tar.bz2"
+ size="3281324" md5sum="9e1e1b07e971c604923ec394f6922301" />
+ <dependencies>
+ <dep package="libgcrypt" />
+ <dep package="libtasn1" />
+ <dep package="opencdk" />
+ </dependencies>
+ </tarball>
+</moduleset>
diff --git a/build-scripts/jhbuild/modulesets/gtk.modules b/build-scripts/jhbuild/modulesets/gtk.modules
new file mode 100644
index 0000000..66b4948
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/gtk.modules
@@ -0,0 +1,77 @@
+<?xml version="1.0"?><!--*- mode: nxml -*-->
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+ <repository type="cvs" name="cvs.gnome.org"
+ cvsroot=":pserver:anonymous@anoncvs.gnome.org:/cvs/gnome"
+ password=""/>
+ <repository type="svn" name="svn.gnome.org" default="yes"
+ developer-href-example="svn+ssh://USER@svn.gnome.org/svn/"
+ href="http://svn.gnome.org/svn/"
+ />
+ <repository type="cvs" name="mime.freedesktop.org"
+ cvsroot=":pserver:anoncvs@cvs.freedesktop.org:/cvs/mime"
+ password=""/>
+
+ <include href="freedesktop.modules"/>
+
+ <autotools id="gnome-common">
+ <branch module="gnome-common/trunk" checkoutdir="gnome-common" />
+ </autotools>
+ <autotools id="intltool">
+ <branch module="intltool/trunk" checkoutdir="intltool" />
+ <dependencies>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="shared-mime-info" supports-non-srcdir-builds="no">
+ <branch repo="mime.freedesktop.org"/>
+ <dependencies>
+ <dep package="intltool"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libxml2">
+ <branch module="libxml2/trunk" checkoutdir="libxml2"/>
+ </autotools>
+ <autotools id="libxslt">
+ <branch module="libxslt/trunk" checkoutdir="libxslt"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk-doc">
+ <branch module="gtk-doc/trunk" checkoutdir="gtk-doc"/>
+ <dependencies>
+ <dep package="libxslt"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glib">
+ <branch module="glib/trunk" checkoutdir="glib"/>
+ <dependencies>
+ <dep package="gtk-doc"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pango">
+ <branch module="pango/trunk" checkoutdir="pango"/>
+ <dependencies>
+ <dep package="gnome-common"/>
+ <dep package="glib"/>
+ <dep package="cairo"/>
+ <dep package="libXft"/>
+ </dependencies>
+ </autotools>
+ <autotools id="atk">
+ <branch module="atk/trunk" checkoutdir="atk"/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk+">
+ <branch module="gtk+/trunk" checkoutdir="gtk+"/>
+ <dependencies>
+ <dep package="cairo"/>
+ <dep package="atk"/>
+ <dep package="pango"/>
+ <dep package="shared-mime-info"/>
+ </dependencies>
+ </autotools>
+</moduleset>
diff --git a/build-scripts/jhbuild/modulesets/gtk28.modules b/build-scripts/jhbuild/modulesets/gtk28.modules
new file mode 100644
index 0000000..5fe56ea
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/gtk28.modules
@@ -0,0 +1,72 @@
+<?xml version="1.0"?><!--*- mode: nxml -*-->
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+ <repository type="cvs" name="gnome.org" default="yes"
+ cvsroot=":pserver:anonymous@anoncvs.gnome.org:/cvs/gnome"
+ password=""/>
+ <repository type="cvs" name="mime.freedesktop.org"
+ cvsroot=":pserver:anoncvs@cvs.freedesktop.org:/cvs/mime"
+ password=""/>
+
+ <include href="freedesktop.modules"/>
+
+ <autotools id="gnome-common">
+ <branch/>
+ </autotools>
+ <autotools id="intltool">
+ <branch/>
+ <dependencies>
+ <dep package="gnome-common"/>
+ </dependencies>
+ </autotools>
+ <autotools id="shared-mime-info" supports-non-srcdir-builds="no">
+ <branch repo="mime.freedesktop.org"/>
+ <dependencies>
+ <dep package="intltool"/>
+ </dependencies>
+ </autotools>
+ <autotools id="libxml2">
+ <branch module="gnome-xml" checkoutdir="libxml2"/>
+ </autotools>
+ <autotools id="libxslt">
+ <branch/>
+ <dependencies>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk-doc">
+ <branch/>
+ <dependencies>
+ <dep package="libxslt"/>
+ </dependencies>
+ </autotools>
+ <autotools id="glib">
+ <branch revision="glib-2-8"/>
+ <dependencies>
+ <dep package="gtk-doc"/>
+ </dependencies>
+ </autotools>
+ <autotools id="pango">
+ <branch revision="pango-1-10"/>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="cairo"/>
+ <dep package="libXft"/>
+ </dependencies>
+ </autotools>
+ <autotools id="atk">
+ <branch/>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+ <autotools id="gtk+">
+ <branch revision="gtk-2-8"/>
+ <dependencies>
+ <dep package="cairo"/>
+ <dep package="atk"/>
+ <dep package="pango"/>
+ <dep package="shared-mime-info"/>
+ </dependencies>
+ </autotools>
+</moduleset>
diff --git a/build-scripts/jhbuild/modulesets/moduleset.dtd b/build-scripts/jhbuild/modulesets/moduleset.dtd
new file mode 100644
index 0000000..bee7c8c
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/moduleset.dtd
@@ -0,0 +1,115 @@
+<!ELEMENT moduleset ((cvsroot|svnroot|arch-archive|darcs-archive)*,
+ (include|cvsmodule|svnmodule|archmodule|darcsmodule|
+ metamodule|tarball|mozillamodule)*) >
+
+<!ELEMENT cvsroot EMPTY >
+<!ATTLIST cvsroot
+ name CDATA #REQUIRED
+ root CDATA #REQUIRED
+ password CDATA #IMPLIED
+ default (yes|no) 'no' >
+
+<!ELEMENT svnroot EMPTY >
+<!ATTLIST svnroot
+ name CDATA #REQUIRED
+ href CDATA #REQUIRED
+ default (yes|no) 'no' >
+
+<!ELEMENT arch-archive EMPTY >
+<!ATTLIST arch-archive
+ name CDATA #REQUIRED
+ href CDATA #REQUIRED
+ default (yes|no) 'no' >
+
+<!ELEMENT darcs-archive EMPTY >
+<!ATTLIST darcs-archive
+ name CDATA #REQUIRED
+ href CDATA #REQUIRED
+ default (yes|no) 'no' >
+
+<!ELEMENT include EMPTY >
+<!ATTLIST include
+ href CDATA #REQUIRED >
+
+<!ELEMENT cvsmodule (dependencies?,suggests?) >
+<!ATTLIST cvsmodule
+ id CDATA #REQUIRED
+ module CDATA #IMPLIED
+ revision CDATA #IMPLIED
+ checkoutdir CDATA #IMPLIED
+ autogenargs CDATA #IMPLIED
+ makeargs CDATA #IMPLIED
+ cvsroot CDATA #IMPLIED
+ supports-non-srcdir-builds (yes|no) 'yes' >
+
+<!ELEMENT svnmodule (dependencies?,suggests?) >
+<!ATTLIST svnmodule
+ id CDATA #REQUIRED
+ module CDATA #IMPLIED
+ checkoutdir CDATA #IMPLIED
+ autogenargs CDATA #IMPLIED
+ makeargs CDATA #IMPLIED
+ root CDATA #IMPLIED
+ supports-non-srcdir-builds (yes|no) 'yes' >
+
+<!ELEMENT archmodule (dependencies?,suggests?) >
+<!ATTLIST archmodule
+ id CDATA #REQUIRED
+ version CDATA #IMPLIED
+ checkoutdir CDATA #IMPLIED
+ autogenargs CDATA #IMPLIED
+ makeargs CDATA #IMPLIED
+ root CDATA #IMPLIED
+ supports-non-srcdir-builds (yes|no) 'yes' >
+
+<!ELEMENT darcsmodule (dependencies?,suggests?) >
+<!ATTLIST darcsmodule
+ id CDATA #REQUIRED
+ checkoutdir CDATA #IMPLIED
+ autogenargs CDATA #IMPLIED
+ makeargs CDATA #IMPLIED
+ root CDATA #IMPLIED
+ supports-non-srcdir-builds (yes|no) 'yes' >
+
+<!ELEMENT metamodule (dependencies) >
+<!ATTLIST metamodule
+ id CDATA #REQUIRED >
+
+<!ELEMENT tarball
+ (source,patches?,dependencies?,suggests?) >
+<!ATTLIST tarball
+ id CDATA #REQUIRED
+ version CDATA #REQUIRED
+ checkoutdir CDATA #IMPLIED
+ autogenargs CDATA #IMPLIED
+ makeargs CDATA #IMPLIED
+ supports-non-srcdir-builds (yes|no) 'yes' >
+
+<!ELEMENT mozillamodule (dependencies?,suggests?) >
+<!ATTLIST mozillamodule
+ id CDATA #REQUIRED
+ module CDATA #IMPLIED
+ revision CDATA #IMPLIED
+ checkoutdir CDATA #IMPLIED
+ autogenargs CDATA #IMPLIED
+ makeargs CDATA #IMPLIED
+ cvsroot CDATA #IMPLIED >
+
+<!-- Tarball sub-elements -->
+<!ELEMENT source EMPTY >
+<!ATTLIST source
+ href CDATA #REQUIRED
+ size CDATA #IMPLIED
+ md5sum CDATA #IMPLIED >
+<!ELEMENT patches (patch)* >
+<!ELEMENT patch EMPTY >
+<!ATTLIST patch
+ file CDATA #REQUIRED
+ strip CDATA '0' >
+
+<!-- common sub-elements -->
+<!ELEMENT dependencies (dep*) >
+<!ELEMENT suggests (dep*) >
+<!ELEMENT dep EMPTY >
+<!ATTLIST dep
+ package CDATA #REQUIRED >
diff --git a/build-scripts/jhbuild/modulesets/moduleset.rnc b/build-scripts/jhbuild/modulesets/moduleset.rnc
new file mode 100644
index 0000000..b461221
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/moduleset.rnc
@@ -0,0 +1,131 @@
+default namespace = ""
+
+start = moduleset
+
+boolean = "yes" | "no"
+
+moduleset = element moduleset { repository*,
+ (\include|package)* }
+
+repository_cvs = attribute type { "cvs" },
+ attribute cvsroot { text },
+ attribute password { text }?
+repository_svn = attribute type { "svn" },
+ attribute href { xsd:anyURI }
+repository_arch = attribute type { "arch" },
+ attribute archive { text },
+ attribute href { xsd:anyURI }?
+repository_darcs = attribute type { "darcs" },
+ attribute href { xsd:anyURI }
+repository_git = attribute type { "git" },
+ attribute href { xsd:anyURI }
+repository_tarball = attribute type { "tarball" },
+ attribute href { xsd:anyURI }
+
+repository = element repository {
+ attribute name { text },
+ attribute default { boolean }?,
+ (repository_cvs|repository_svn|repository_arch|
+ repository_darcs|repository_git|repository_tarball)
+}
+
+\include = element include {
+ attribute href { xsd:anyURI }
+}
+
+package = autotools |
+ metamodule |
+ distutils |
+ perl |
+ tarball |
+ mozillamodule
+
+dep = element dep {
+ attribute package { text }
+}
+dependencies = element dependencies { dep* }
+after = element after { dep* } | element suggests { dep* }
+
+common = attribute id { text } & dependencies* & after*
+
+branch_cvs = attribute module { text }?,
+ attribute checkoutdir { text }?,
+ attribute revision { text}?,
+ attribute override-checkoutdir { boolean }?,
+ attribute update-new-dirs { boolean }?
+branch_svn = attribute module { xsd:anyURI }?,
+ attribute checkoutdir { text }?
+branch_arch = attribute module { xsd:anyURI }?,
+ attribute checkoutdir { text }?
+branch_darcs = attribute module { xsd:anyURI }?,
+ attribute checkoutdir { text }?
+branch_git = attribute module { xsd:anyURI }?,
+ attribute checkoutdir { text }?
+branch_tarball = attribute module { xsd:anyURI },
+ attribute version { text },
+ attribute size { text }?,
+ attribute md5sum { text }?,
+ element patch {
+ attribute file { text },
+ attribute strip { text }?
+ }*
+
+
+branch = element branch {
+ attribute repo { text }?,
+ (branch_cvs|branch_svn|branch_arch|branch_darcs|branch_git|branch_tarball)
+}
+
+autotools = element autotools {
+ branch &
+ attribute autogen-sh { text }? &
+ attribute autogenargs { text }? &
+ attribute makeargs { text }? &
+ attribute supports-non-srcdir-builds { boolean }? &
+ common
+}
+
+metamodule = element metamodule { common }
+
+distutils = element distutils {
+ branch &
+ attribute supports-non-srcdir-builds { boolean }? &
+ common
+}
+
+perl = element perl {
+ branch &
+ attribute makeargs { text }? &
+ common
+}
+
+tarball = element tarball {
+ attribute version { text },
+ attribute checkoutdir { text }?,
+ attribute autogenargs { text }?,
+ attribute makeargs { text }?,
+ attribute supports-non-srcdir-builds { boolean }?,
+
+ (element source {
+ attribute href { text },
+ attribute size { text }?,
+ attribute md5sum { text }? } &
+ element patches {
+ element patch {
+ attribute file { text },
+ attribute strip { text }?
+ }+ }? &
+ common)
+}
+
+mozillamodule = element mozillamodule {
+ attribute module { text }?,
+ attribute revision { text }?,
+ attribute checkoutdir { text }?,
+ attribute autogenargs { text }?,
+ attribute makeargs { text }?,
+ attribute cvsroot { text }?,
+ attribute root { text }?,
+ common
+}
+
diff --git a/build-scripts/jhbuild/modulesets/moduleset.xsl b/build-scripts/jhbuild/modulesets/moduleset.xsl
new file mode 100644
index 0000000..a057bfa
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/moduleset.xsl
@@ -0,0 +1,283 @@
+<?xml version='1.0'?> <!--*- mode: nxml -*-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:output method="html" encoding="ISO-8859-1" indent="yes" />
+ <xsl:key name="module-id" match="moduleset/*" use="@id" />
+
+ <xsl:template match="/">
+ <html>
+ <head>
+ <title>Module Set</title>
+ <style type="text/css">
+ <xsl:text>
+ div.cvsmodule, div.mozillamodule {
+ padding: 0.5em;
+ margin: 0.5em;
+ background: #87CEFA;
+ }
+ div.svnmodule {
+ padding: 0.5em;
+ margin: 0.5em;
+ background: #67AEDA;
+ }
+ div.metamodule {
+ padding: 0.5em;
+ margin: 0.5em;
+ background: #F08080;
+ }
+ div.tarball {
+ padding: 0.5em;
+ margin: 0.5em;
+ background: #EEDD82;
+ }
+ </xsl:text>
+ </style>
+ </head>
+ <body>
+ <xsl:apply-templates />
+ </body>
+ </html>
+ </xsl:template>
+
+ <xsl:template match="moduleset">
+ <h1>Module Set</h1>
+ <xsl:apply-templates />
+ </xsl:template>
+
+ <xsl:template match="dependencies">
+ <xsl:variable name="deps" select="dep/@package" />
+ <xsl:for-each select="$deps">
+ <a href="#{generate-id(key('module-id', .))}">
+ <xsl:value-of select="." />
+ </a>
+ <xsl:if test="not($deps[last()] = .)">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template match="cvsmodule">
+ <div class="{name(.)}">
+ <h2>
+ <xsl:value-of select="@id" />
+ <a name="{generate-id(.)}" />
+ </h2>
+ <table>
+ <tr>
+ <th align="left">Module:</th>
+ <td>
+ <xsl:choose>
+ <xsl:when test="@module">
+ <xsl:value-of select="@module" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@id" />
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="@revision">
+ <xsl:text> rv:</xsl:text>
+ <xsl:value-of select="@revision" />
+ </xsl:if>
+ </td>
+ </tr>
+ <xsl:if test="@checkoutdir">
+ <tr>
+ <th align="left">Checkout directory:</th>
+ <td><xsl:value-of select="@checkoutdir" /></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="@autogenargs">
+ <tr>
+ <th align="left">Autogen args:</th>
+ <td><xsl:value-of select="@autogenargs" /></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="@cvsroot">
+ <tr>
+ <th align="left">CVS Root:</th>
+ <td><xsl:value-of select="@cvsroot" /></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="dependencies">
+ <tr>
+ <th align="left" valign="top">Dependencies:</th>
+ <td><xsl:apply-templates select="dependencies" /></td>
+ </tr>
+ </xsl:if>
+ </table>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="svnmodule">
+ <div class="{name(.)}">
+ <h2>
+ <xsl:value-of select="@id" />
+ <a name="{generate-id(.)}" />
+ </h2>
+ <table>
+ <tr>
+ <th align="left">Module:</th>
+ <td>
+ <xsl:choose>
+ <xsl:when test="@module">
+ <xsl:value-of select="@module" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@id" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <xsl:if test="@checkoutdir">
+ <tr>
+ <th align="left">Checkout directory:</th>
+ <td><xsl:value-of select="@checkoutdir" /></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="@autogenargs">
+ <tr>
+ <th align="left">Autogen args:</th>
+ <td><xsl:value-of select="@autogenargs" /></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="@svnroot">
+ <tr>
+ <th align="left">SVN Repository:</th>
+ <td><xsl:value-of select="@svnroot" /><xsl:if test="@path"><xsl:value-of select="@path" /></xsl:if></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="dependencies">
+ <tr>
+ <th align="left" valign="top">Dependencies:</th>
+ <td><xsl:apply-templates select="dependencies" /></td>
+ </tr>
+ </xsl:if>
+ </table>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="metamodule">
+ <div class="{name(.)}">
+ <h2>
+ <xsl:value-of select="@id" />
+ <a name="{generate-id(.)}" />
+ </h2>
+ <table>
+ <xsl:if test="dependencies">
+ <tr>
+ <th align="left" valign="top">Dependencies:</th>
+ <td><xsl:apply-templates select="dependencies" /></td>
+ </tr>
+ </xsl:if>
+ </table>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="patches">
+ <ul>
+ <xsl:for-each select="patch">
+ <li><xsl:value-of select="." /></li>
+ </xsl:for-each>
+ </ul>
+ </xsl:template>
+
+ <xsl:template match="tarball">
+ <div class="{name(.)}">
+ <h2>
+ <xsl:value-of select="@id" />
+ <a name="{generate-id(.)}" />
+ </h2>
+ <table>
+ <tr>
+ <th align="left">Version:</th>
+ <td><xsl:value-of select="@version" /></td>
+ </tr>
+ <xsl:if test="@versioncheck">
+ <tr>
+ <th align="left">Version check:</th>
+ <td><xsl:value-of select="@versioncheck" /></td>
+ </tr>
+ </xsl:if>
+ <tr>
+ <th align="left">Source:</th>
+ <td>
+ <a href="{source/@href}">
+ <xsl:value-of select="source/@href" />
+ </a>
+ <xsl:if test="source/@size">
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="source/@size" />
+ <xsl:text> bytes)</xsl:text>
+ </xsl:if>
+ </td>
+ </tr>
+ <xsl:if test="patches">
+ <tr>
+ <th align="left" valign="top">Patches:</th>
+ <td><xsl:apply-templates select="patches" /></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="dependencies">
+ <tr>
+ <th align="left" valign="top">Dependencies:</th>
+ <td><xsl:apply-templates select="dependencies" /></td>
+ </tr>
+ </xsl:if>
+ </table>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="mozillamodule">
+ <div class="{name(.)}">
+ <h2>
+ <xsl:value-of select="@id" />
+ <a name="{generate-id(.)}" />
+ </h2>
+ <table>
+ <tr>
+ <th align="left">Module:</th>
+ <td>
+ <xsl:choose>
+ <xsl:when test="@module">
+ <xsl:value-of select="@module" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@id" />
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="@revision">
+ <xsl:text> rv:</xsl:text>
+ <xsl:value-of select="@revision" />
+ </xsl:if>
+ </td>
+ </tr>
+ <xsl:if test="@checkoutdir">
+ <tr>
+ <th align="left">Checkout directory:</th>
+ <td><xsl:value-of select="@checkoutdir" /></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="@autogenargs">
+ <tr>
+ <th align="left">Autogen args:</th>
+ <td><xsl:value-of select="@autogenargs" /></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="@cvsroot">
+ <tr>
+ <th align="left">CVS Root:</th>
+ <td><xsl:value-of select="@cvsroot" /></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="dependencies">
+ <tr>
+ <th align="left" valign="top">Dependencies:</th>
+ <td><xsl:apply-templates select="dependencies" /></td>
+ </tr>
+ </xsl:if>
+ </table>
+ </div>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/build-scripts/jhbuild/modulesets/pulseaudio.modules b/build-scripts/jhbuild/modulesets/pulseaudio.modules
new file mode 100644
index 0000000..81adc4b
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/pulseaudio.modules
@@ -0,0 +1,99 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: nxml -*-->
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+
+ <repository type="svn" name="0pointer.de"
+ href="svn://0pointer.de/"/>
+
+ <tarball id="libsamplerate" version="0.1.2" supports-non-srcdir-builds="no">
+ <source href="http://www.mega-nerd.com/SRC/libsamplerate-0.1.2.tar.gz"
+ size="707867" md5sum="06861c2c6b8e5273c9b80cf736b9fd0e"/>
+ </tarball>
+
+ <tarball id="libsndfile" version="1.0.16" supports-non-srcdir-builds="no">
+ <source href="http://www.mega-nerd.com/libsndfile/libsndfile-1.0.16.tar.gz"
+ size="857117" md5sum="773b6639672d39b6342030c7fd1e9719"/>
+ </tarball>
+
+ <autotools id="pulseaudio">
+ <branch repo="0pointer.de" module="pulseaudio/trunk" checkoutdir="pulseaudio"/>
+ <dependencies>
+ <dep package="libsamplerate"/>
+ <dep package="libsndfile"/>
+ <dep package="liboil"/>
+ <dep package="avahi"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="pavucontrol">
+ <branch repo="0pointer.de" module="pavucontrol/trunk" checkoutdir="pavucontrol"/>
+ <dependencies>
+ <dep package="pulseaudio"/>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/libglademm"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="pavumeter">
+ <branch repo="0pointer.de" module="pavumeter/trunk" checkoutdir="pavumeter"/>
+ <dependencies>
+ <dep package="pulseaudio"/>
+ <dep package="gtkmm"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="paman">
+ <branch repo="0pointer.de" module="paman/trunk" checkoutdir="paman"/>
+ <dependencies>
+ <dep package="pulseaudio"/>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/libglademm"/>
+ <dep package="pavumeter"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="padevchooser">
+ <branch repo="0pointer.de" module="padevchooser/trunk" checkoutdir="padevchooser"/>
+ <dependencies>
+ <dep package="pulseaudio"/>
+ <dep package="gtk+"/>
+ <dep package="libnotify"/>
+ <dep package="gconf"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="paprefs">
+ <branch repo="0pointer.de" module="paprefs/trunk" checkoutdir="paprefs"/>
+ <dependencies>
+ <dep package="pulseaudio"/>
+ <dep package="gtk+"/>
+ <dep package="gtkmm"/>
+ <dep package="gnomemm/libglademm"/>
+ <dep package="gnomemm/gconfmm"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gst-pulse">
+ <branch repo="0pointer.de" module="gst-pulse/trunk" checkoutdir="gst-pulse"/>
+ <dependencies>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="pulseaudio"/>
+ </dependencies>
+ </autotools>
+
+ <metamodule id="meta-pulseaudio">
+ <dependencies>
+ <dep package="pulseaudio"/>
+ <dep package="gst-pulse"/>
+ <dep package="pavucontrol"/>
+ <dep package="pavumeter"/>
+ <dep package="paprefs"/>
+ <dep package="paman"/>
+ <dep package="padevchooser"/>
+ </dependencies>
+ </metamodule>
+
+</moduleset> \ No newline at end of file
diff --git a/build-scripts/jhbuild/modulesets/schemas.xml b/build-scripts/jhbuild/modulesets/schemas.xml
new file mode 100644
index 0000000..94675e4
--- /dev/null
+++ b/build-scripts/jhbuild/modulesets/schemas.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
+ <documentElement localName="moduleset" uri="moduleset.rnc" />
+</locatingRules>
diff --git a/build-scripts/jhbuild/patches/dbus-glib-build.patch b/build-scripts/jhbuild/patches/dbus-glib-build.patch
new file mode 100644
index 0000000..839a29e
--- /dev/null
+++ b/build-scripts/jhbuild/patches/dbus-glib-build.patch
@@ -0,0 +1,78 @@
+diff -Npru dbus-glib-0.71-orig/tools/dbus-bus-introspect.xml dbus-glib-0.71/tools/dbus-bus-introspect.xml
+--- dbus-glib-0.71-orig/tools/dbus-bus-introspect.xml 1969-12-31 17:00:00.000000000 -0700
++++ dbus-glib-0.71/tools/dbus-bus-introspect.xml 2006-07-24 14:32:01.000000000 -0600
+@@ -0,0 +1,74 @@
++ <!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
++"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
++<node>
++ <interface name="org.freedesktop.DBus.Introspectable">
++ <method name="Introspect">
++ <arg name="data" direction="out" type="s"/>
++ </method>
++ </interface>
++ <interface name="org.freedesktop.DBus">
++ <method name="RequestName">
++ <arg direction="in" type="s"/>
++ <arg direction="in" type="u"/>
++ <arg direction="out" type="u"/>
++ </method>
++ <method name="ReleaseName">
++ <arg direction="in" type="s"/>
++ <arg direction="out" type="u"/>
++ </method>
++ <method name="StartServiceByName">
++ <arg direction="in" type="s"/>
++ <arg direction="in" type="u"/>
++ <arg direction="out" type="u"/>
++ </method>
++ <method name="Hello">
++ <arg direction="out" type="s"/>
++ </method>
++ <method name="NameHasOwner">
++ <arg direction="in" type="s"/>
++ <arg direction="out" type="b"/>
++ </method>
++ <method name="ListNames">
++ <arg direction="out" type="as"/>
++ </method>
++ <method name="AddMatch">
++ <arg direction="in" type="s"/>
++ </method>
++ <method name="RemoveMatch">
++ <arg direction="in" type="s"/>
++ </method>
++ <method name="GetNameOwner">
++ <arg direction="in" type="s"/>
++ <arg direction="out" type="s"/>
++ </method>
++ <method name="ListQueuedOwners">
++ <arg direction="in" type="s"/>
++ <arg direction="out" type="as"/>
++ </method>
++ <method name="GetConnectionUnixUser">
++ <arg direction="in" type="s"/>
++ <arg direction="out" type="u"/>
++ </method>
++ <method name="GetConnectionUnixProcessID">
++ <arg direction="in" type="s"/>
++ <arg direction="out" type="u"/>
++ </method>
++ <method name="GetConnectionSELinuxSecurityContext">
++ <arg direction="in" type="s"/>
++ <arg direction="out" type="ay"/>
++ </method>
++ <method name="ReloadConfig">
++ </method>
++ <signal name="NameOwnerChanged">
++ <arg type="s"/>
++ <arg type="s"/>
++ <arg type="s"/>
++ </signal>
++ <signal name="NameLost">
++ <arg type="s"/>
++ </signal>
++ <signal name="NameAcquired">
++ <arg type="s"/>
++ </signal>
++ </interface>
++</node>
diff --git a/build-scripts/jhbuild/patches/gettext-changelog.patch b/build-scripts/jhbuild/patches/gettext-changelog.patch
new file mode 100644
index 0000000..465e1f4
--- /dev/null
+++ b/build-scripts/jhbuild/patches/gettext-changelog.patch
@@ -0,0 +1,462 @@
+ This patch prevents gettextize from screwing up any of the ChangeLogs
+ or the makefiles or the configure files. The 0.11.x releases are
+ even worse than the 0.10.x releases :(
+
+--- gettext-0.11.5/misc/gettextize.in.old 2002-08-05 19:51:35.000000000 +0800
++++ gettext-0.11.5/misc/gettextize.in 2002-12-17 23:10:29.000000000 +0800
+@@ -262,44 +262,12 @@
+ # manage the ChangeLog file, relative to $srcdir.
+ func_ChangeLog_init ()
+ {
+- modified_ChangeLog=
+ }
+ func_ChangeLog_add_entry ()
+ {
+- if $doit; then
+- if test -z "$modified_ChangeLog"; then
+- echo "$date gettextize <bug-gnu-gettext@gnu.org>" > "$srcdir/ChangeLog.tmp"
+- echo >> "$srcdir/ChangeLog.tmp"
+- modified_ChangeLog=yes
+- fi
+- echo "$1" >> "$srcdir/ChangeLog.tmp"
+- else
+- modified_ChangeLog=yes
+- fi
+ }
+ func_ChangeLog_finish ()
+ {
+- if test -n "$modified_ChangeLog"; then
+- if $doit; then
+- echo >> "$srcdir/ChangeLog.tmp"
+- if test -f "$srcdir/ChangeLog"; then
+- echo "Adding an entry to ChangeLog (backup is in ChangeLog~)"
+- cat "$srcdir/ChangeLog" >> "$srcdir/ChangeLog.tmp"
+- rm -f "$srcdir/ChangeLog~"
+- cp -p "$srcdir/ChangeLog" "$srcdir/ChangeLog~"
+- else
+- echo "Creating ChangeLog"
+- fi
+- cp "$srcdir/ChangeLog.tmp" "$srcdir/ChangeLog"
+- rm -f "$srcdir/ChangeLog.tmp"
+- else
+- if test -f "$srcdir/ChangeLog"; then
+- echo "Add an entry to ChangeLog"
+- else
+- echo "Create ChangeLog"
+- fi
+- fi
+- fi
+ }
+
+ # func_poChangeLog_init
+@@ -308,44 +276,12 @@
+ # manage the po/ChangeLog file, relative to $srcdir.
+ func_poChangeLog_init ()
+ {
+- modified_poChangeLog=
+ }
+ func_poChangeLog_add_entry ()
+ {
+- if $doit; then
+- if test -z "$modified_poChangeLog"; then
+- echo "$date gettextize <bug-gnu-gettext@gnu.org>" > "$srcdir/po/ChangeLog.tmp"
+- echo >> "$srcdir/po/ChangeLog.tmp"
+- modified_poChangeLog=yes
+- fi
+- echo "$1" >> "$srcdir/po/ChangeLog.tmp"
+- else
+- modified_poChangeLog=yes
+- fi
+ }
+ func_poChangeLog_finish ()
+ {
+- if test -n "$modified_poChangeLog"; then
+- if $doit; then
+- echo >> "$srcdir/po/ChangeLog.tmp"
+- if test -f "$srcdir/po/ChangeLog"; then
+- echo "Adding an entry to po/ChangeLog (backup is in po/ChangeLog~)"
+- cat "$srcdir/po/ChangeLog" >> "$srcdir/po/ChangeLog.tmp"
+- rm -f "$srcdir/po/ChangeLog~"
+- cp -p "$srcdir/po/ChangeLog" "$srcdir/po/ChangeLog~"
+- else
+- echo "Creating po/ChangeLog"
+- fi
+- cp "$srcdir/po/ChangeLog.tmp" "$srcdir/po/ChangeLog"
+- rm -f "$srcdir/po/ChangeLog.tmp"
+- else
+- if test -f "$srcdir/po/ChangeLog"; then
+- echo "Add an entry to po/ChangeLog"
+- else
+- echo "Create po/ChangeLog"
+- fi
+- fi
+- fi
+ }
+
+ # func_m4ChangeLog_init
+@@ -354,44 +290,12 @@
+ # manage the $m4dir/ChangeLog file, relative to $srcdir.
+ func_m4ChangeLog_init ()
+ {
+- modified_m4ChangeLog=
+ }
+ func_m4ChangeLog_add_entry ()
+ {
+- if $doit; then
+- if test -z "$modified_m4ChangeLog"; then
+- echo "$date gettextize <bug-gnu-gettext@gnu.org>" > "$srcdir/$m4dir/ChangeLog.tmp"
+- echo >> "$srcdir/$m4dir/ChangeLog.tmp"
+- modified_m4ChangeLog=yes
+- fi
+- echo "$1" >> "$srcdir/$m4dir/ChangeLog.tmp"
+- else
+- modified_m4ChangeLog=yes
+- fi
+ }
+ func_m4ChangeLog_finish ()
+ {
+- if test -n "$modified_m4ChangeLog"; then
+- if $doit; then
+- echo >> "$srcdir/$m4dir/ChangeLog.tmp"
+- if test -f "$srcdir/$m4dir/ChangeLog"; then
+- echo "Adding an entry to $m4dir/ChangeLog (backup is in $m4dir/ChangeLog~)"
+- cat "$srcdir/$m4dir/ChangeLog" >> "$srcdir/$m4dir/ChangeLog.tmp"
+- rm -f "$srcdir/$m4dir/ChangeLog~"
+- cp -p "$srcdir/$m4dir/ChangeLog" "$srcdir/$m4dir/ChangeLog~"
+- else
+- echo "Creating $m4dir/ChangeLog"
+- fi
+- cp "$srcdir/$m4dir/ChangeLog.tmp" "$srcdir/$m4dir/ChangeLog"
+- rm -f "$srcdir/$m4dir/ChangeLog.tmp"
+- else
+- if test -f "$srcdir/$m4dir/ChangeLog"; then
+- echo "Add an entry to $m4dir/ChangeLog"
+- else
+- echo "Create $m4dir/ChangeLog"
+- fi
+- fi
+- fi
+ }
+
+ if test ! -f "$srcdir/intl/Makefile.in" && test -n "$intldir"; then
+@@ -559,320 +463,6 @@
+ fi
+ $do_changelog && func_poChangeLog_finish
+
+-m4filelist=' codeset.m4 gettext.m4 glibc21.m4 iconv.m4 intdiv0.m4 inttypes.m4
+- inttypes_h.m4 inttypes-pri.m4 isc-posix.m4 lcmessage.m4 lib-ld.m4 lib-link.m4
+- lib-prefix.m4 progtest.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4'
+-# We cannot omit codeset.m4, glibc21.m4, intdiv0.m4, inttypes.m4,
+-# inttypes_h.m4, isc-posix.m4, lcmessage.m4, stdint_h.m4, uintmax_t.m4
+-# if test -z "$intldir", otherwise "aclocal -I m4" might give an error.
+-# (aclocal doesn't know which macros are really needed, it looks which macros
+-# are potentially needed.)
+-
+-# All sorts of bugs could occur if the configure file was remade with the wrong
+-# version of gettext.m4 et al. (because then the configure and the po/Makefile.in.in
+-# don't fit together). It is therefore important that the package carries the
+-# right versions of gettext.m4 et al. with it.
+-if test -f "$srcdir/Makefile.am"; then
+- # A package using automake.
+-
+- # Extract the macro directory name from Makefile.am.
+- aclocal_amflags=`grep '^ACLOCAL_AMFLAGS[ ]*=' "$srcdir/Makefile.am" | sed -e 's/^ACLOCAL_AMFLAGS[ ]*=\(.*\)$/\1/'`
+- m4dir=m4
+- m4dir_is_next=
+- for arg in $aclocal_amflags; do
+- if test -n "$m4dir_is_next"; then
+- m4dir="$arg"
+- break
+- else
+- if test "X$arg" = "X-I"; then
+- m4dir_is_next=yes
+- else
+- m4dir_is_next=
+- fi
+- fi
+- done
+-
+- # Update the *.m4 files and the corresponding Makefile.am.
+- $do_changelog && func_m4ChangeLog_init
+- added_m4files=
+- if test -d "$srcdir/$m4dir"; then
+- :
+- else
+- if $doit; then
+- echo "Creating directory $m4dir"
+- mkdir "$srcdir/$m4dir"
+- else
+- echo "Create directory $m4dir"
+- fi
+- added_directories="$added_directories $m4dir"
+- fi
+- for file in $m4filelist; do
+- same=no
+- if test -f "$srcdir/$m4dir/$file"; then
+- if cmp -s "@datadir@/aclocal/$file" "$srcdir/$m4dir/$file"; then
+- same=yes
+- fi
+- else
+- added_m4files="$added_m4files $file"
+- fi
+- if $do_changelog && test $same = no; then
+- if test -f "$srcdir/$m4dir/$file"; then
+- func_m4ChangeLog_add_entry " * $file: Upgrade to gettext-${version}."
+- else
+- func_m4ChangeLog_add_entry " * $file: New file, from gettext-${version}."
+- fi
+- fi
+- func_backup "$m4dir/$file"
+- func_linkorcopy "@datadir@/aclocal/$file" "@datadir@/aclocal/$file" "$m4dir/$file"
+- done
+- if test -n "$added_m4files"; then
+- if test -f "$srcdir/$m4dir/Makefile.am"; then
+- if $doit; then
+- echo "Updating EXTRA_DIST in $m4dir/Makefile.am (backup is in $m4dir/Makefile.am~)"
+- func_backup "$m4dir/Makefile.am"
+- rm -f "$srcdir/$m4dir/Makefile.am"
+- if grep '^EXTRA_DIST[ ]*=' "$srcdir/$m4dir/Makefile.am~" > /dev/null; then
+- sed -e "s%^\(EXTRA_DIST[ ]*=\)%\\1$added_m4files %" < "$srcdir/$m4dir/Makefile.am~" > "$srcdir/$m4dir/Makefile.am"
+- $do_changelog && func_m4ChangeLog_add_entry " * Makefile.am (EXTRA_DIST): Add the new files."
+- else
+- (cat "$srcdir/$m4dir/Makefile.am~"; echo; echo "EXTRA_DIST =$added_m4files") > "$srcdir/$m4dir/Makefile.am"
+- $do_changelog && func_m4ChangeLog_add_entry " * Makefile.am (EXTRA_DIST): New variable."
+- fi
+- else
+- echo "Update EXTRA_DIST in $m4dir/Makefile.am"
+- $do_changelog && func_m4ChangeLog_add_entry " * Makefile.am (EXTRA_DIST)."
+- fi
+- else
+- if $doit; then
+- echo "Creating $m4dir/Makefile.am"
+- echo "EXTRA_DIST =$added_m4files" > "$srcdir/$m4dir/Makefile.am"
+- else
+- echo "Create $m4dir/Makefile.am"
+- fi
+- $do_changelog && func_m4ChangeLog_add_entry " * Makefile.am: New file."
+- added_acoutput="$added_acoutput $m4dir/Makefile"
+- fi
+- fi
+- $do_changelog && func_m4ChangeLog_finish
+- # Also create $m4dir/Makefile.in from $m4dir/Makefile.am, because automake
+- # doesn't do it by itself.
+- if $doit; then
+- case "$added_acoutput" in
+- *" $m4dir/Makefile")
+- (cd "$srcdir" && automake "$m4dir/Makefile") 2>/dev/null ||
+- please="$please
+-Please run 'automake $m4dir/Makefile' to create $m4dir/Makefile.in
+-"
+- ;;
+- esac
+- fi
+-
+- # Update the top-level Makefile.am.
+- modified_Makefile_am=
+- # func_modify_Makefile_am changelog_comment
+- # assumes a modified copy of $srcdir/Makefile.am in $srcdir/Makefile.am.tmp
+- # and replaces the original Makefile.am file with the modified one if
+- # the two files differ. Then it removes the modified copy.
+- func_modify_Makefile_am ()
+- {
+- if cmp -s "$srcdir/Makefile.am" "$srcdir/Makefile.am.tmp"; then
+- :
+- else
+- if test -z "$modified_Makefile_am"; then
+- if $doit; then
+- echo "Updating Makefile.am (backup is in Makefile.am~)"
+- func_backup Makefile.am
+- else
+- echo "Update Makefile.am"
+- fi
+- fi
+- if $doit; then
+- rm -f "$srcdir/Makefile.am"
+- cp "$srcdir/Makefile.am.tmp" "$srcdir/Makefile.am"
+- fi
+- if $do_changelog; then
+- if test -z "$modified_Makefile_am"; then
+- func_ChangeLog_add_entry " * Makefile.am $1"
+- else
+- func_ChangeLog_add_entry " $1"
+- fi
+- fi
+- modified_Makefile_am=yes
+- fi
+- rm -f "$srcdir/Makefile.am.tmp"
+- }
+-
+- if test -n "$added_directories"; then
+- if grep '^SUBDIRS[ ]*=' "$srcdir/Makefile.am" > /dev/null; then
+- sed -e "s%^\(SUBDIRS[ ]*=\)%\\1$added_directories %" < "$srcdir/Makefile.am" > "$srcdir/Makefile.am.tmp"
+- func_modify_Makefile_am "(SUBDIRS): Add "`echo $added_directories | sed -e 's/ /, /g'`'.'
+- else
+- (cat "$srcdir/Makefile.am"; echo; echo "SUBDIRS =$added_directories") > "$srcdir/Makefile.am.tmp"
+- func_modify_Makefile_am "(SUBDIRS): New variable."
+- fi
+- fi
+- if test -n "$removed_directory"; then
+- sed -e '/^SUBDIRS[ ]*=/ {
+- :a
+- s%\([ ]\)'"$removed_directory"'[ ]%\1%
+- s%[ ]'"$removed_directory"'$%%
+- tb
+- :b
+- s%\\$%\\%
+- tc
+- bd
+- :c
+- n
+- ba
+- :d
+- }' < "$srcdir/Makefile.am" > "$srcdir/Makefile.am.tmp"
+- func_modify_Makefile_am "(SUBDIRS): Remove $removed_directory."
+- fi
+- if test -z "$m4dir_is_next"; then
+- if grep '^ACLOCAL_AMFLAGS[ ]*=' "$srcdir/Makefile.am" > /dev/null; then
+- sed -e "s%^\(ACLOCAL_AMFLAGS[ ]*=\)%\\1 -I $m4dir %" < "$srcdir/Makefile.am" > "$srcdir/Makefile.am.tmp"
+- func_modify_Makefile_am "(ACLOCAL_AMFLAGS): Add -I $m4dir."
+- else
+- (cat "$srcdir/Makefile.am"; echo; echo "ACLOCAL_AMFLAGS = -I $m4dir") > "$srcdir/Makefile.am.tmp"
+- func_modify_Makefile_am "(ACLOCAL_AMFLAGS): New variable."
+- fi
+- # Also update Makefile.in and, if existent, Makefile. Otherwise they
+- # would take into account the new flags only after a few rounds of
+- # "./configure", "make", "touch configure.in", "make distclean".
+- if $doit; then
+- for file in Makefile.in Makefile; do
+- if test -f "$srcdir/$file"; then
+- func_backup $file
+- rm -f "$srcdir/$file"
+- sed -e "s%(ACLOCAL)%(ACLOCAL) -I $m4dir%" < "$srcdir/$file~" > "$srcdir/$file"
+- fi
+- done
+- fi
+- fi
+- if test -n "$added_extradist"; then
+- if grep '^EXTRA_DIST[ ]*=' "$srcdir/Makefile.am" > /dev/null; then
+- sed -e "s%^\(EXTRA_DIST[ ]*=\)%\\1$added_extradist %" < "$srcdir/Makefile.am" > "$srcdir/Makefile.am.tmp"
+- func_modify_Makefile_am "(EXTRA_DIST): Add$added_extradist."
+- else
+- (cat "$srcdir/Makefile.am"; echo; echo "EXTRA_DIST =$added_extradist") > "$srcdir/Makefile.am.tmp"
+- func_modify_Makefile_am "(EXTRA_DIST): New variable."
+- fi
+- fi
+- please="$please
+-Please run 'aclocal -I $m4dir' to regenerate the aclocal.m4 file.
+-You need aclocal from GNU automake 1.5 (or newer) to do this.
+-Then run 'autoconf' to regenerate the configure file.
+-"
+-else
+- please="$please
+-Please add the files
+-$m4filelist
+-from the @datadir@/aclocal directory to your aclocal.m4 file.
+-"
+-fi
+-
+-modified_configure_in=
+-# func_modify_configure_in changelog_comment
+-# assumes a modified copy of $srcdir/$configure_in in $srcdir/$configure_in.tmp
+-# and replaces the original configure.in/ac file with the modified one if
+-# the two files differ. Then it removes the modified copy.
+-func_modify_configure_in ()
+-{
+- if cmp -s "$srcdir/$configure_in" "$srcdir/$configure_in.tmp"; then
+- :
+- else
+- if test -z "$modified_configure_in"; then
+- if $doit; then
+- echo "Updating $configure_in (backup is in $configure_in~)"
+- func_backup $configure_in
+- else
+- echo "Update $configure_in"
+- fi
+- fi
+- if $doit; then
+- rm -f "$srcdir/$configure_in"
+- cp "$srcdir/$configure_in.tmp" "$srcdir/$configure_in"
+- fi
+- if $do_changelog; then
+- if test -z "$modified_configure_in"; then
+- func_ChangeLog_add_entry " * $configure_in $1"
+- else
+- func_ChangeLog_add_entry " $1"
+- fi
+- fi
+- modified_configure_in=yes
+- fi
+- rm -f "$srcdir/$configure_in.tmp"
+-}
+-
+-if test -n "$added_acoutput"; then
+- if grep '^AC_CONFIG_FILES(' "$srcdir/$configure_in" > /dev/null; then
+- sed -e "s%^\\(AC_CONFIG_FILES([^])\\,]*\\)%\\1$added_acoutput %" < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
+- func_modify_configure_in "(AC_CONFIG_FILES): Add "`echo $added_acoutput | sed -e 's/ /, /g'`'.'
+- else
+- if grep '^AC_OUTPUT(' "$srcdir/$configure_in" > /dev/null; then
+- sed -e "s%^\\(AC_OUTPUT([^])\\,]*\\)%\\1$added_acoutput %" < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
+- func_modify_configure_in "(AC_OUTPUT): Add "`echo $added_acoutput | sed -e 's/ /, /g'`'.'
+- else
+- please="$please
+-Please add$added_acoutput to the AC_OUTPUT or AC_CONFIG_FILES invocation in the $configure_in file.
+-"
+- fi
+- fi
+-fi
+-if test -n "$removed_acoutput"; then
+- for file in $removed_acoutput; do
+- tag=
+- sedprog='{
+- s%\([[ ]\)'"$file"'[ ]%\1%
+- s%\([[ ]\)'"$file"'\([]),]\)%\1\2%
+- s%[[ ]'"$file"'$%%
+- :a
+- tb
+- :b
+- s%\\$%\\%
+- tc
+- bd
+- :c
+- n
+- s%\([ ]\)'"$file"'[ ]%\1%
+- s%\([ ]\)'"$file"'\([]),]\)%\1\2%
+- s%[ ]'"$file"'$%%
+- ba
+- :d
+- }'
+- sed -e '/^AC_CONFIG_FILES(/'"$sedprog" < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
+- if cmp -s "$srcdir/$configure_in" "$srcdir/$configure_in.tmp"; then
+- sed -e '/^AC_OUTPUT(/'"$sedprog" < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
+- if cmp -s "$srcdir/$configure_in" "$srcdir/$configure_in.tmp"; then
+- :
+- else
+- tag=AC_OUTPUT
+- fi
+- else
+- tag=AC_CONFIG_FILES
+- fi
+- if test -n "$tag"; then
+- func_modify_configure_in "($tag): Remove $file."
+- else
+- rm -f "$srcdir/$configure_in.tmp"
+- if test "$file" != intl/intlh.inst; then
+- please="$please
+-Please remove $file from the AC_OUTPUT or AC_CONFIG_FILES invocation
+-in the $configure_in file.
+-"
+- fi
+- fi
+- done
+-fi
+-sed -e 's%sed -e "/POTFILES =/r po/POTFILES" po/Makefile\.in > po/Makefile *;* *%%' < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
+-func_modify_configure_in "(AC_OUTPUT): Remove command that created po/Makefile."
+-sed -e '/^\(dnl \|\)AC_LINK_FILES(\$nls_cv_header_libgt, \$nls_cv_header_intl)$/d' < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
+-func_modify_configure_in "(AC_LINK_FILES): Remove invocation."
+-sed -e 's/^AM_GNU_GETTEXT_VERSION([^()]*)/AM_GNU_GETTEXT_VERSION('"$version"'/' < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
+-func_modify_configure_in "(AM_GNU_GETTEXT_VERSION): Bump to $version."
+-$do_changelog && func_ChangeLog_finish
+-
+ # Recommend replacement for deprecated Makefile variables.
+ use_libtool=`cat "$srcdir/$configure_in" | grep '^A[CM]_PROG_LIBTOOL'`
+ for file in `(cd "$srcdir"; find . -name Makefile.am -print; find . -name Makefile.in -print) | sed -e 's,^\./,,'`; do
diff --git a/build-scripts/jhbuild/patches/hal-dbus_connection_close.patch b/build-scripts/jhbuild/patches/hal-dbus_connection_close.patch
new file mode 100644
index 0000000..88a5a6a
--- /dev/null
+++ b/build-scripts/jhbuild/patches/hal-dbus_connection_close.patch
@@ -0,0 +1,32 @@
+Index: tools/hal-device.c
+===================================================================
+RCS file: /cvs/hal/hal/tools/hal-device.c,v
+retrieving revision 1.4
+diff -u -p -r1.4 hal-device.c
+--- tools/hal-device.c 2 Nov 2005 15:38:14 -0000 1.4
++++ tools/hal-device.c 20 Aug 2006 00:51:46 -0000
+@@ -155,7 +155,7 @@ int main(int argc, char **argv)
+
+ libhal_ctx_shutdown(hal_ctx, &error);
+ libhal_ctx_free(hal_ctx);
+- dbus_connection_disconnect(conn);
++ dbus_connection_close(conn);
+ dbus_connection_unref(conn);
+ dbus_error_free(&error);
+
+Index: tools/lshal.c
+===================================================================
+RCS file: /cvs/hal/hal/tools/lshal.c,v
+retrieving revision 1.19
+diff -u -p -r1.19 lshal.c
+--- tools/lshal.c 13 Feb 2006 14:35:31 -0000 1.19
++++ tools/lshal.c 20 Aug 2006 00:51:47 -0000
+@@ -701,7 +701,7 @@ main (int argc, char *argv[])
+ libhal_ctx_shutdown (hal_ctx, &error);
+ libhal_ctx_free (hal_ctx);
+
+- dbus_connection_disconnect (conn);
++ dbus_connection_close (conn);
+ dbus_connection_unref (conn);
+
+ if (show_device)
diff --git a/build-scripts/jhbuild/patches/howl-1.0.0-buildfix.patch b/build-scripts/jhbuild/patches/howl-1.0.0-buildfix.patch
new file mode 100644
index 0000000..6d7da77
--- /dev/null
+++ b/build-scripts/jhbuild/patches/howl-1.0.0-buildfix.patch
@@ -0,0 +1,24 @@
+ Fix build bustage for --disable-static builds.
+
+--- howl-1.0.0/configure.ac.orig 2005-06-20 15:12:10.625724368 +0800
++++ howl-1.0.0/configure.ac 2005-06-20 15:12:47.330144448 +0800
+@@ -25,7 +25,7 @@
+ HOWL_LIB_OBJECTS='posix_salt.lo posix_socket.lo posix_time.lo posix_signal.lo posix_interface.lo notosx_mdns_stub.lo'
+ MDNSRESPONDER_LIB_SUBDIRS="Posix"
+ MDNSRESPONDER_LIB_OBJECTS='posix_mdns.lo'
+- AUTOIPD_EXTRA_OBJECTS='$(top_builddir)/src/autoipd/linux_autoip.lo $(top_builddir)/src/autoipd/posix_main.lo'
++ AUTOIPD_EXTRA_OBJECTS='$(top_builddir)/src/autoipd/linux_autoip.o $(top_builddir)/src/autoipd/posix_main.o'
+ PLATFORM_LIBS=-lpthread
+ HOWL_MAN_PAGES='mDNSResponder.8 autoipd.8 nifd.8'
+ ;;
+--- howl-1.0.0/configure.orig 2005-06-20 15:12:15.443991880 +0800
++++ howl-1.0.0/configure 2005-06-20 15:17:30.803050016 +0800
+@@ -8523,7 +8523,7 @@
+ HOWL_LIB_OBJECTS='posix_salt.lo posix_socket.lo posix_time.lo posix_signal.lo posix_interface.lo notosx_mdns_stub.lo'
+ MDNSRESPONDER_LIB_SUBDIRS="Posix"
+ MDNSRESPONDER_LIB_OBJECTS='posix_mdns.lo'
+- AUTOIPD_EXTRA_OBJECTS='$(top_builddir)/src/autoipd/linux_autoip.lo $(top_builddir)/src/autoipd/posix_main.lo'
++ AUTOIPD_EXTRA_OBJECTS='$(top_builddir)/src/autoipd/linux_autoip.o $(top_builddir)/src/autoipd/posix_main.o'
+ PLATFORM_LIBS=-lpthread
+ HOWL_MAN_PAGES='mDNSResponder.8 autoipd.8 nifd.8'
+ ;;
diff --git a/build-scripts/jhbuild/patches/libtool-1.4.2-expsym.patch b/build-scripts/jhbuild/patches/libtool-1.4.2-expsym.patch
new file mode 100644
index 0000000..6f8bd77
--- /dev/null
+++ b/build-scripts/jhbuild/patches/libtool-1.4.2-expsym.patch
@@ -0,0 +1,54 @@
+ This patch makes -export-symbols and -export-symbols-regex work with
+ GNU ld. It creates a version script rather than using -retain-symbols-file,
+ which just selectively strips the library.
+
+--- libtool-1.4.2/libtool.m4.expsym Mon May 27 12:33:14 2002
++++ libtool-1.4.2/libtool.m4 Thu Jul 18 19:30:07 2002
+@@ -1367,11 +1367,14 @@
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
++cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
++$echo "local: *; };" >> $output_objdir/$libname.ver~
++$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
+@@ -1386,11 +1389,14 @@
+ *** used, and then restart.
+
+ EOF
+ elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
++cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
++$echo "local: *; };" >> $output_objdir/$libname.ver~
++$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+@@ -1402,11 +1408,14 @@
+ ;;
+
+ *)
+ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
++ archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
++cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
++$echo "local: *; };" >> $output_objdir/$libname.ver~
++$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${w}l$output_objdir/$libname.ver -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
diff --git a/build-scripts/jhbuild/patches/libtool-1.5.18-multilib.patch b/build-scripts/jhbuild/patches/libtool-1.5.18-multilib.patch
new file mode 100644
index 0000000..8fedbd7
--- /dev/null
+++ b/build-scripts/jhbuild/patches/libtool-1.5.18-multilib.patch
@@ -0,0 +1,31 @@
+--- libtool-1.5.14/libtool.m4.multilib 2005-02-12 12:18:34.000000000 +0000
++++ libtool-1.5.14/libtool.m4 2005-02-15 08:48:42.189498479 +0000
+@@ -1456,10 +1456,27 @@
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
++ # find out which ABI we are using
++ libsuff=
++ case "$host_cpu" in
++ x86_64*|s390x*|powerpc64*)
++ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
++ if AC_TRY_EVAL(ac_compile); then
++ case `/usr/bin/file conftest.$ac_objext` in
++ *64-bit*)
++ libsuff=64
++ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++ ;;
++ esac
++ fi
++ rm -rf conftest*
++ ;;
++ esac
++
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
++ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
diff --git a/build-scripts/jhbuild/patches/scrollkeeper_clean_xml_validation_context.patch b/build-scripts/jhbuild/patches/scrollkeeper_clean_xml_validation_context.patch
new file mode 100644
index 0000000..5138b83
--- /dev/null
+++ b/build-scripts/jhbuild/patches/scrollkeeper_clean_xml_validation_context.patch
@@ -0,0 +1,10 @@
+--- scrollkeeper-0.3.14/libs/install.c.mitr 2004-01-02 23:20:46.000000000 +0100
++++ scrollkeeper-0.3.14/libs/install.c 2004-01-02 23:21:04.000000000 +0100
+@@ -187,6 +187,7 @@
+ return 0;
+ } else {
+ xmlValidCtxt cvp;
++ memset (&cvp, 0, sizeof (cvp));
+ cvp.userData = (char *) &outputprefs;
+ cvp.error = (xmlValidityErrorFunc) sk_dtd_validation_message;
+ cvp.warning = (xmlValidityWarningFunc) sk_dtd_validation_message;
diff --git a/build-scripts/jhbuild/patches/scrollkeeper_empty_url_string.patch b/build-scripts/jhbuild/patches/scrollkeeper_empty_url_string.patch
new file mode 100644
index 0000000..98f5a26
--- /dev/null
+++ b/build-scripts/jhbuild/patches/scrollkeeper_empty_url_string.patch
@@ -0,0 +1,11 @@
+--- scrollkeeper-0.3.14/libs/install.c.old 2006-08-27 15:16:42.000000000 -0600
++++ scrollkeeper-0.3.14/libs/install.c 2006-08-27 15:00:23.000000000 -0600
+@@ -255,7 +255,7 @@
+ }
+
+ docpath = get_doc_property(node, "identifier", "url");
+- if (docpath == NULL)
++ if (docpath == NULL || *docpath == '\0')
+ continue;
+
+ /* add to scrollkeeper_docs */
diff --git a/build-scripts/jhbuild/patches/scrollkeeper_language_fix.patch b/build-scripts/jhbuild/patches/scrollkeeper_language_fix.patch
new file mode 100644
index 0000000..946cef5
--- /dev/null
+++ b/build-scripts/jhbuild/patches/scrollkeeper_language_fix.patch
@@ -0,0 +1,12 @@
+diff -Nur scrollkeeper-0.3.14.orig/libs/i18n.c scrollkeeper-0.3.14/libs/i18n.c
+--- scrollkeeper-0.3.14.orig/libs/i18n.c 2003-11-10 00:05:36.000000000 +0100
++++ scrollkeeper-0.3.14/libs/i18n.c 2005-08-26 22:55:13.000000000 +0200
+@@ -206,7 +206,7 @@
+ count++;
+ }
+
+- tab = (char ***)malloc(sizeof(char **) * count);
++ tab = (char ***)malloc(sizeof(char **) * (count + 1));
+
+ str = strdup(lang);
+ check_ptr(str, "");
diff --git a/build-scripts/jhbuild/patches/scrollkeeper_rw_offset_fix.patch b/build-scripts/jhbuild/patches/scrollkeeper_rw_offset_fix.patch
new file mode 100644
index 0000000..707fd25
--- /dev/null
+++ b/build-scripts/jhbuild/patches/scrollkeeper_rw_offset_fix.patch
@@ -0,0 +1,12 @@
+diff -Nur scrollkeeper-0.3.14/libs/i18n.c scrollkeeper-0.3.14.new/libs/i18n.c
+--- scrollkeeper-0.3.14/libs/i18n.c 2006-01-28 16:05:17.000000000 +0100
++++ scrollkeeper-0.3.14.new/libs/i18n.c 2006-01-28 16:05:40.000000000 +0100
+@@ -118,7 +118,7 @@
+ if ((i & ~mask) == 0) {
+ int length = strlen(language) + strlen(territory)
+ + strlen(codeset) + strlen(modifier);
+- char *var = (char *) malloc(sizeof(char) * length);
++ char *var = (char *) malloc(sizeof(char) * (length+1));
+ check_ptr(var, "");
+
+ strcpy(var, language);
diff --git a/build-scripts/jhbuild/sample.jhbuildrc b/build-scripts/jhbuild/sample.jhbuildrc
new file mode 100644
index 0000000..a8cb465
--- /dev/null
+++ b/build-scripts/jhbuild/sample.jhbuildrc
@@ -0,0 +1,38 @@
+# -*- mode: python -*-
+
+# edit this file to match your settings and copy it to ~/.jhbuildrc
+
+# if you have a GNOME svn account, uncomment this line
+#repos['svn.gnome.org'] = 'svn+ssh://user@svn.gnome.org/svn/'
+
+
+# what module set should be used. The default at the moment is 'gnome28',
+# but it can be any of the files in the modulesets directory, or even
+# the URL of a module set file on a web server.
+# moduleset = 'gnome-2.18'
+
+# A list of the modules to build. Defaults to the Gnome Desktop and
+# developer platform.
+# modules = [ 'meta-gnome-desktop' ]
+
+# what directory should the source be checked out to?
+checkoutroot = os.path.expanduser('~/cvs/gnome2')
+
+# the prefix to configure/install modules to (must have write access)
+prefix = '/opt/gnome2'
+
+# extra arguments to pass to all autogen.sh scripts
+# to speed up builds of gnome2, try '--disable-static --disable-gtk-doc'
+#autogenargs=''
+
+# set CFLAGS:
+#os.environ['CFLAGS'] = '-g -O2'
+
+# On SMP systems you may use something like this to improve compilation time:
+# be aware that not all modules compile correctly with make -j2
+#os.environ['MAKE'] = 'make -j2'
+
+# a alternative install program to use.
+# The included install-check program won't update timestamps if the
+# header hasn't changed
+os.environ['INSTALL'] = os.path.expanduser('~/bin/install-check')
diff --git a/build-scripts/jhbuild/scripts/branch-violations/README b/build-scripts/jhbuild/scripts/branch-violations/README
new file mode 100644
index 0000000..4e040bb
--- /dev/null
+++ b/build-scripts/jhbuild/scripts/branch-violations/README
@@ -0,0 +1,33 @@
+These are a bunch of scripts that can be used to find modules
+in a module set that lack the proper revision tag. To use, run:
+
+ ./find-branch-violations X.Y
+
+where X.Y is the major.minor version of the GNOME release you want to check.
+What it does is:
+
+ * It fetches the jhbuild moduleset for that version of GNOME from
+ CVS HEAD, using viewcvs. Note that it does not use your checked-out
+ version.
+
+ * It fetches a list of all modules in GNOME CVS that have a branch
+ named gnome-X-Y. It's actually more than just top-level CVS modules.
+ They way it works is, it gets a list of all files named ChangeLog,
+ with a branch tag of gnome-X-Y, using Bonsai.
+
+ * It outputs those modules from the first list above, that don't have
+ a revision gnome-X-Y tag, but are listed in the second list above.
+
+
+That's basically it. Bonsai takes a while to run the query, so take your
+time... You need wget and xmllint to be in PATH for these to work.
+
+Known problems:
+
+ Bonsai is known to be broken and not report certain directories, or
+ lag behind too long...
+
+
+Enjoy,
+Behdad Esfahbod
+Feb 04, 2006
diff --git a/build-scripts/jhbuild/scripts/branch-violations/find-branch-modules b/build-scripts/jhbuild/scripts/branch-violations/find-branch-modules
new file mode 100755
index 0000000..026083d
--- /dev/null
+++ b/build-scripts/jhbuild/scripts/branch-violations/find-branch-modules
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+if test -z "$1"; then
+ echo Usage: find-branch-modules branch-name
+ exit 1
+fi
+
+branch=$1
+
+echo "$branch" |
+grep -q '\.' &&
+branch="gnome-${branch//./-}"
+
+url1='http://cvs.gnome.org/bonsai/cvsquery.cgi?treeid=default&module=all&branch='"$branch"'&branchtype=match&dir=&file=ChangeLog&filetype=match&who=&whotype=match&sortby=Date&hours=2&date=all&mindate=&maxdate=&cvsroot=%2Fcvs%2Fgnome'
+branch=$branch-branch
+url2='http://cvs.gnome.org/bonsai/cvsquery.cgi?treeid=default&module=all&branch='"$branch"'&branchtype=match&dir=&file=ChangeLog&filetype=match&who=&whotype=match&sortby=Date&hours=2&date=all&mindate=&maxdate=&cvsroot=%2Fcvs%2Fgnome'
+
+{
+wget --output-document - "$url1" 2>/dev/null
+wget --output-document - "$url2" 2>/dev/null
+} |
+grep "^[^< /]\+/" |
+sed 's,/ ,/,g' |
+sed 's,/ChangeLog.*,,' |
+sort -u
diff --git a/build-scripts/jhbuild/scripts/branch-violations/find-branch-moduleset b/build-scripts/jhbuild/scripts/branch-violations/find-branch-moduleset
new file mode 100755
index 0000000..edd3501
--- /dev/null
+++ b/build-scripts/jhbuild/scripts/branch-violations/find-branch-moduleset
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+if test -z "$1"; then
+ echo Usage: find-branch-moduleset branch-name
+ exit 1
+fi
+
+branch=$1
+
+echo "$branch" |
+grep -q '\.' &&
+branch="gnome-${branch//./-}"
+
+echo "$branch" |
+grep -q '[0-9][0-9]' &&
+branch="${branch//-/.}" &&
+branch="${branch/./-}" ||
+branch="${branch//-/}"
+
+url='http://cvs.gnome.org/viewcvs/*checkout*/jhbuild/modulesets/'"$branch"'.modules'
+
+wget --output-document - "$url" 2>/dev/null | xmllint -
diff --git a/build-scripts/jhbuild/scripts/branch-violations/find-branch-violations b/build-scripts/jhbuild/scripts/branch-violations/find-branch-violations
new file mode 100755
index 0000000..f711ffc
--- /dev/null
+++ b/build-scripts/jhbuild/scripts/branch-violations/find-branch-violations
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+if test -z "$1"; then
+ echo Usage: find-branch-violations branch
+ exit 1
+fi
+
+branch=$1
+
+echo "$branch" |
+grep -q '\.' &&
+branch="gnome-${branch//./-}"
+
+join \
+ <( # list of modules defined in jhbuild without branch tag
+ "`dirname "$0"`/find-branch-moduleset" "$branch" |
+ grep "<cvsmodule" |
+ grep -v "$branch" |
+ sed 's/.*cvsmodule.*id="\([^"]*\)".*/\1/' |
+ sort
+ ) \
+ <( # list of modules in CVS with branch tag
+ "`dirname "$0"`/find-branch-modules" "$branch"
+ )
diff --git a/build-scripts/jhbuild/scripts/changecvsroot.py b/build-scripts/jhbuild/scripts/changecvsroot.py
new file mode 100755
index 0000000..7284b8b
--- /dev/null
+++ b/build-scripts/jhbuild/scripts/changecvsroot.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+# jhbuild - a build script for GNOME 1.x and 2.x
+# Copyright (C) 2001-2006 James Henstridge
+#
+# changecvsroot.py: script to alter the CVS root of a working copy
+#
+# 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
+
+import os
+
+def changecvsroot(oldroot, newroot, *dirs):
+ def handle((oldroot, newroot), dirname, fnames):
+ if os.path.basename(dirname) == 'CVS' and 'Root' in fnames:
+ r = open(os.path.join(dirname, 'Root'), 'r').read().strip()
+ if r == oldroot:
+ fp = open(os.path.join(dirname, 'Root'), 'w')
+ fp.write('%s\n' % newroot)
+ fp.close()
+ for dir in dirs:
+ os.path.walk(dir, handle, (oldroot, newroot))
+
+if __name__ == '__main__':
+ import sys
+ if len(sys.argv) < 4:
+ sys.stderr.write('usage: changecvsroot.py oldroot newroot dirs ...\n')
+ sys.exit(1)
+ changecvsroot(sys.argv[1], sys.argv[2], *sys.argv[2:])
diff --git a/build-scripts/jhbuild/scripts/gnome-2.6.deps b/build-scripts/jhbuild/scripts/gnome-2.6.deps
new file mode 100644
index 0000000..c15c8d7
--- /dev/null
+++ b/build-scripts/jhbuild/scripts/gnome-2.6.deps
@@ -0,0 +1,85 @@
+atk: glib
+at-spi: libbonobo gail
+audiofile:
+bug-buddy: libgnomeui
+control-center: libgnomeui esound gnome-desktop metacity nautilus libxklavier
+dasher: at-spi libgnomeui gnome-speech gnome-vfs
+eel: librsvg libgnomeui gail
+eog: eel libgnomeui libgnomeprint
+epiphany: libgnomeui
+esound: audiofile
+file-roller: scrollkeeper nautilus
+gail: gtk+ atk libgnomecanvas
+gcalctool: scrollkeeper libgnomeui
+GConf: ORBit2 libxml2 gtk+
+gconf-editor: GConf
+gdm: libgnomeui librsvg libxml2 libart_lgpl scrollkeeper
+gedit: scrollkeeper libgnomeui eel libgnomeprintui gtksourceview
+ggv: scrollkeeper libgnomeui
+glib:
+gnome2-user-docs: glib
+gnome-applets: gnome-panel libgtop gail libxklavier
+gnome-desktop: libgnomeui startup-notification gnome-themes
+gnome-games: scrollkeeper libgnomeui librsvg
+gnome-icon-theme: hicolor-icon-theme
+gnome-keyring: gtk+
+gnome-mag: at-spi
+gnome-media: scrollkeeper libgnomeui esound gail gstreamer gst-plugins
+gnomemeeting: libgnomeui
+gnome-mime-data:
+gnome-netstatus: libgnomeui gnome-panel
+gnome-panel: scrollkeeper libgnomeui gnome-desktop libwnck
+gnome-session: libgnomeui libwnck esound
+gnome-speech: libbonobo
+gnome-system-monitor: libgnomeui libwnck libgtop
+gnome-terminal: libglade libgnomeui vte startup-notification
+gnome-themes: gtk-engines
+gnome-utils: libgnomeui gnome-panel
+gnome-vfs: libbonobo GConf gnome-mime-data shared-mime-info
+gnopernicus: GConf libgnomeui gnome-speech gnome-mag
+gok: at-spi libgnomeui libwnck esound scrollkeeper
+gpdf: libgnomeui libbonoboui
+gst-plugins: gstreamer gnome-vfs gtk+
+gstreamer: glib libxml2
+gtk+: pango atk shared-mime-info
+gtk-doc:
+gtk-engines: gtk+
+gtksourceview: gtk+ libxml2 libgnomeprint
+gucharmap: libgnomeui
+hicolor-icon-theme:
+intltool:
+libart_lgpl:
+libbonobo: ORBit2 libxml2
+libbonoboui: libgnome libbonobo libgnomecanvas libglade
+libcroco: libxml2 pango
+libgail-gnome: at-spi libgnomeui gnome-panel
+libglade: gtk+ libxml2
+libgnome: libxml2 libxslt libbonobo gnome-vfs GConf esound
+libgnomecanvas: gtk+ libart_lgpl libglade
+libgnomeprint: libart_lgpl glib pango
+libgnomeprintui: libgnomeprint gtk+ libgnomecanvas
+libgnomeui: libbonoboui libglade gnome-icon-theme gnome-keyring
+libgsf: glib gnome-vfs libbonobo
+libgtkhtml: gtk+ libxml2 gail
+libgtop: glib
+libIDL: glib
+librsvg: libxml2 gtk+ libart_lgpl libgsf libcroco
+libwnck: gtk+ startup-notification
+libxklavier:
+libxml2:
+libxslt: libxml2
+metacity: gtk+ GConf libglade
+nautilus: scrollkeeper esound eel librsvg libgnomeui gnome-desktop
+nautilus-cd-burner: libgnome gtk+ gnome-vfs libglade eel
+nautilus-media: nautilus gstreamer gst-plugins
+ORBit2: libIDL
+pango: glib
+pkgconfig:
+scrollkeeper:
+shared-mime-info:
+startup-notification:
+vte: gtk+
+yelp: scrollkeeper libgnomeui libgtkhtml gnome-vfs
+zenity: gtk+ GConf libgnomecanvas
+meta-gnome-core: gnome-desktop gnome-panel gnome-session gnome-terminal gnome-applets
+meta-gnome-desktop: meta-gnome-core control-center nautilus yelp bug-buddy gedit gtk-engines eog ggv metacity gconf-editor gnome-utils gnome-system-monitor gstreamer gnome-media nautilus-media gnome-netstatus gcalctool gpdf gucharmap nautilus-cd-burner zenity gnopernicus gok epiphany gnome-games gnome2-user-docs gnomemeeting file-roller
diff --git a/build-scripts/jhbuild/scripts/gnome-2.6.exceptions b/build-scripts/jhbuild/scripts/gnome-2.6.exceptions
new file mode 100644
index 0000000..2a2a225
--- /dev/null
+++ b/build-scripts/jhbuild/scripts/gnome-2.6.exceptions
@@ -0,0 +1,23 @@
+[shared-mime-info]
+version=0.14
+href=http://freedesktop.org/Software/shared-mime-info/shared-mime-info-0.14.tar.gz
+size=355379
+md5sum=c5fc523a8c2b3464c7aa521b6014e5c8
+
+[hicolor-icon-theme]
+version=0.5
+href="http://freedesktop.org/Software/icon-theme/releases/hicolor-icon-theme-0.5.tar.gz
+size=31611
+md5sum=947c7f6eb68fd95c7b86e87f853ceaa0
+
+[libgsf]
+version=1.9
+href=http://ftp.gnome.org/pub/GNOME/sources/libgsf/1.9/libgsf-1.9.1.tar.bz2
+size=391068
+md5sum=620290f8976ff1d83fa858002f006409
+
+[libcroco]
+version=0.5
+href=http://ftp.gnome.org/pub/GNOME/sources/libcroco/0.5/libcroco-0.5.1.tar.bz2
+size=286747
+md5sum=19e016a5533449a769662a116df7237c
diff --git a/build-scripts/jhbuild/scripts/mk-tarball-moduleset.py b/build-scripts/jhbuild/scripts/mk-tarball-moduleset.py
new file mode 100755
index 0000000..47553b3
--- /dev/null
+++ b/build-scripts/jhbuild/scripts/mk-tarball-moduleset.py
@@ -0,0 +1,164 @@
+#!/usr/bin/python
+
+import sys
+import os
+import stat
+import re
+import md5
+import getopt
+import urlparse
+import ConfigParser
+import xml.dom.minidom
+
+usage = 'mk-tarball-moduleset -d DEPS -u URI -s DIR'
+help = \
+'''Build a module set from a list of dependencies, a directory of tarballs
+and a URI base.
+
+Options:
+ -d, --dependencies=FILE The list of dependencies
+ -u, --uri=URI The base URI for the tarballs
+ -s, --source=DIR Location of tarballs
+ -x, --exceptions=FILE A file including exceptions for sources'''
+
+def read_deps(filename):
+ deps = []
+ deps_dict = {}
+ fp = open(filename)
+ line = fp.readline()
+ while line:
+ pkg, dep_pkgs = line.split(':', 1)
+ assert not deps_dict.has_key(pkg), '%s repeated' % pkg
+ dep_pkgs = [ dep.strip() for dep in dep_pkgs.split() ]
+ deps.append((pkg, dep_pkgs))
+ deps_dict[pkg] = dep_pkgs
+ line = fp.readline()
+ # verify that all dependencies are listed
+ for pkg in deps_dict.keys():
+ for dep in deps_dict[pkg]:
+ assert deps_dict.has_key(dep), 'dependency %s not found' % dep
+ return deps
+
+class SourceRepo:
+ def __init__(self, sourcedir, uribase, exceptions):
+ self.sourcedir = sourcedir
+ self.uribase = uribase
+ self.exceptions = exceptions
+
+ def _find_tarball(self, pkg):
+ '''Find the first file in sourcedir that looks like a tarball for
+ the given package. Bzip2 compressed tarballs are preferred.'''
+ files = os.listdir(self.sourcedir)
+ pat = re.compile(r'%s-([0-9].*)\.tar\.bz2' % pkg.replace('+', '\\+'))
+ for filename in files:
+ match = pat.match(filename)
+ if match:
+ return filename, match.group(1)
+ pat = re.compile(r'%s-([0-9].*)\.tar\.gz' % pkg.replace('+', '\\+'))
+ for filename in files:
+ match = pat.match(filename)
+ if match:
+ return filename, match.group(1)
+ raise RuntimeError('no file found for package %s' % pkg)
+
+ def create_tarball_node(self, document, pkg):
+ tarball = document.createElement('tarball')
+ tarball.setAttribute('id', pkg)
+ tarball.appendChild(document.createTextNode('\n'))
+ source_node = document.createElement('source')
+ tarball.appendChild(source_node)
+ tarball.appendChild(document.createTextNode('\n'))
+
+ if self.exceptions.has_section(pkg):
+ tarball.setAttribute('version',
+ self.exceptions.get(pkg, 'version'))
+
+ source_node.setAttribute('href',
+ self.exceptions.get(pkg, 'href'))
+ source_node.setAttribute('size',
+ self.exceptions.get(pkg, 'size'))
+ source_node.setAttribute('md5sum',
+ self.exceptions.get(pkg, 'md5sum'))
+ else:
+ filename, version = self._find_tarball(pkg)
+ tarball.setAttribute('version', version)
+
+ source_node.setAttribute('href',
+ urlparse.urljoin(self.uribase, filename))
+ info = os.stat(os.path.join(self.sourcedir, filename))
+ size = info[stat.ST_SIZE]
+ source_node.setAttribute('size', str(info[stat.ST_SIZE]))
+
+ sum = md5.new()
+ fp = open(os.path.join(self.sourcedir, filename), 'rb')
+ data = fp.read(4096)
+ while data:
+ sum.update(data)
+ data = fp.read(4096)
+ fp.close()
+ source_node.setAttribute('md5sum', sum.hexdigest())
+ return tarball
+
+def main(args):
+ try:
+ opts, args = getopt.getopt(args, 'd:u:s:x:h',
+ ['dependencies=', 'uri=', 'source=',
+ 'exceptions=', 'help'])
+ except getopt.error, exc:
+ sys.stderr.write('mk-tarball-moduleset: %s\n' % str(exc))
+ sys.stderr.write(usage + '\n')
+ sys.exit(1)
+
+ dependencies = None
+ uri = None
+ source = None
+ exceptions = ConfigParser.ConfigParser()
+ for opt, arg in opts:
+ if opt in ('-h', '--help'):
+ print usage
+ print help
+ sys.exit(0)
+ elif opt in ('-d', '--dependencies'):
+ dependencies = arg
+ elif opt in ('-u', '--uri'):
+ uri = arg
+ elif opt in ('-s', '--source'):
+ source = arg
+ elif opt in ('-x', '--exceptions'):
+ exceptions.read(arg)
+ if not dependencies or not uri or not source:
+ sys.stderr.write(usage + '\n')
+ sys.exit(1)
+
+ repo = SourceRepo(source, uri, exceptions)
+ deps = read_deps(dependencies)
+
+ document = xml.dom.minidom.Document()
+ document.appendChild(document.createElement('moduleset'))
+ document.documentElement.appendChild(document.createTextNode('\n'))
+ for (pkg, dep_pkgs) in deps:
+ if pkg.startswith('meta-'):
+ pkg_node = document.createElement('metamodule')
+ pkg_node.setAttribute('id', pkg)
+ pkg_node.appendChild(document.createTextNode('\n'))
+ else:
+ pkg_node = repo.create_tarball_node(document, pkg)
+ if dep_pkgs:
+ deps = document.createElement('dependencies')
+ deps.appendChild(document.createTextNode('\n'))
+ for dep_pkg in dep_pkgs:
+ node = document.createElement('dep')
+ node.setAttribute('package', dep_pkg)
+ deps.appendChild(node)
+ deps.appendChild(document.createTextNode('\n'))
+ pkg_node.appendChild(deps)
+ pkg_node.appendChild(document.createTextNode('\n'))
+
+ document.documentElement.appendChild(pkg_node)
+ document.documentElement.appendChild(document.createTextNode('\n'))
+
+ document.writexml(sys.stdout)
+ document.unlink()
+
+if __name__ == '__main__':
+ main(sys.argv[1:])
diff --git a/build-scripts/jhbuild/scripts/upgrade-module-set.xsl b/build-scripts/jhbuild/scripts/upgrade-module-set.xsl
new file mode 100644
index 0000000..ff50ba8
--- /dev/null
+++ b/build-scripts/jhbuild/scripts/upgrade-module-set.xsl
@@ -0,0 +1,134 @@
+<?xml version="1.0"?><!--*- mode: nxml -*-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+ <xsl:template match="cvsroot">
+ <repository type="cvs" name="{@name}" cvsroot="{@root}">
+ <xsl:if test="@password"><xsl:copy-of select="@password" /></xsl:if>
+ <xsl:if test="@default"><xsl:copy-of select="@default" /></xsl:if>
+ </repository>
+ </xsl:template>
+
+ <xsl:template match="svnroot">
+ <repository type="svn" name="{@name}" href="{@href}">
+ <xsl:if test="@default"><xsl:copy-of select="@default" /></xsl:if>
+ </repository>
+ </xsl:template>
+
+ <xsl:template match="arch-archive">
+ <repository type="arch" name="{@name}" href="{@href}">
+ <xsl:if test="@default"><xsl:copy-of select="@default" /></xsl:if>
+ </repository>
+ </xsl:template>
+
+ <xsl:template match="cvsmodule">
+ <autotools>
+ <xsl:attribute name="id">
+ <xsl:choose>
+ <xsl:when test="@id">
+ <xsl:value-of select="@id"/>
+ </xsl:when>
+ <xsl:when test="@checkoutdir">
+ <xsl:value-of select="@id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@module"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:if test="@autogenargs">
+ <xsl:copy-of select="@autogenargs" />
+ </xsl:if>
+ <xsl:if test="@makeargs">
+ <xsl:copy-of select="@makeargs" />
+ </xsl:if>
+ <xsl:if test="@supports-non-srcdir-builds">
+ <xsl:copy-of select="@supports-non-srcdir-builds" />
+ </xsl:if>
+ <xsl:text>&#x0a; </xsl:text>
+ <branch>
+ <xsl:if test="@cvsroot">
+ <xsl:attribute name="repo">
+ <xsl:value-of select="@cvsroot"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@root">
+ <xsl:attribute name="repo">
+ <xsl:value-of select="@root"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@module"><xsl:copy-of select="@module" /></xsl:if>
+ <xsl:if test="@revision"><xsl:copy-of select="@revision" /></xsl:if>
+ <xsl:if test="@checkoutdir"><xsl:copy-of select="@checkoutdir" /></xsl:if>
+ </branch>
+ <xsl:apply-templates select="node()"/>
+ </autotools>
+ </xsl:template>
+
+ <xsl:template match="svnmodule">
+ <autotools id="{@id}">
+ <xsl:if test="@autogenargs">
+ <xsl:copy-of select="@autogenargs" />
+ </xsl:if>
+ <xsl:if test="@makeargs">
+ <xsl:copy-of select="@makeargs" />
+ </xsl:if>
+ <xsl:if test="@supports-non-srcdir-builds">
+ <xsl:copy-of select="@supports-non-srcdir-builds" />
+ </xsl:if>
+ <xsl:text>&#x0a; </xsl:text>
+ <branch>
+ <xsl:if test="@root">
+ <xsl:attribute name="repo">
+ <xsl:value-of select="@root"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@module"><xsl:copy-of select="@module" /></xsl:if>
+ <xsl:if test="@checkoutdir"><xsl:copy-of select="@checkoutdir" /></xsl:if>
+ </branch>
+ <xsl:apply-templates select="node()"/>
+ </autotools>
+ </xsl:template>
+
+ <xsl:template match="archmodule">
+ <autotools id="{@id}">
+ <xsl:if test="@autogenargs">
+ <xsl:copy-of select="@autogenargs" />
+ </xsl:if>
+ <xsl:if test="@makeargs">
+ <xsl:copy-of select="@makeargs" />
+ </xsl:if>
+ <xsl:if test="@supports-non-srcdir-builds">
+ <xsl:copy-of select="@supports-non-srcdir-builds" />
+ </xsl:if>
+ <xsl:text>&#x0a; </xsl:text>
+ <branch>
+ <xsl:if test="@root">
+ <xsl:attribute name="repo">
+ <xsl:value-of select="@root"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@version">
+ <xsl:attribute name="module">
+ <xsl:value-of select="@version"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@checkoutdir"><xsl:copy-of select="@checkoutdir" /></xsl:if>
+ </branch>
+ <xsl:apply-templates select="node()"/>
+ </autotools>
+ </xsl:template>
+
+ <xsl:template match="suggests">
+ <after>
+ <xsl:apply-templates select="node()"/>
+ </after>
+ </xsl:template>
+
+ <xsl:template match="node()" priority="-1">
+ <xsl:copy>
+ <xsl:copy-of select="@*" />
+ <xsl:apply-templates select="node()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/sugar-jhbuild b/sugar-jhbuild
index f7da027..e4bfed2 100755
--- a/sugar-jhbuild
+++ b/sugar-jhbuild
@@ -6,11 +6,6 @@ import sys
base_dir = os.path.abspath(os.path.dirname(__file__))
sys.path.append(os.path.join(base_dir, 'build-scripts', 'jhbuild'))
-from updater import Updater
-
-updater = Updater(base_dir)
-updater.update()
-
import jhbuild.commands
import bundlemodule
diff --git a/updater.py b/updater.py
deleted file mode 100644
index a83073b..0000000
--- a/updater.py
+++ /dev/null
@@ -1,13 +0,0 @@
-import os
-
-class Updater(object):
- def __init__(self, base_dir):
- self._base_dir = base_dir
-
- def update(self):
- os.chdir(os.path.join(self._base_dir, 'build-scripts'))
-
- cmd = ['svn', 'co', 'svn://svn.gnome.org/svn/jhbuild/trunk', 'jhbuild']
- os.spawnvp(os.P_WAIT, 'svn', cmd)
-
- os.chdir(self._base_dir)