[Cdd-commits] r513 - in cdd/tags/cdd/0.4.5: . debian devtools doc doc/en etc etc/cdd examples examples/config examples/debian examples/install examples/install/task1 examples/menu examples/menu/task1 examples/tasks share share/cdd share/cdd/unixgroups share/menu templates templates/po

CDD Subversion Commit noreply at alioth.debian.org
Sun Jan 6 15:44:05 UTC 2008


Author: tille
Date: Sun Jan  6 15:44:05 2008
New Revision: 513

Added:
   cdd/tags/cdd/0.4.5/
   cdd/tags/cdd/0.4.5/AUTHORS
   cdd/tags/cdd/0.4.5/BUGS
   cdd/tags/cdd/0.4.5/COPYING
   cdd/tags/cdd/0.4.5/Changelog
   cdd/tags/cdd/0.4.5/README.CDD
   cdd/tags/cdd/0.4.5/TODO
   cdd/tags/cdd/0.4.5/VERSION
   cdd/tags/cdd/0.4.5/cdd-role   (contents, props changed)
   cdd/tags/cdd/0.4.5/cdd-role.8
   cdd/tags/cdd/0.4.5/cdd-task-lister   (contents, props changed)
   cdd/tags/cdd/0.4.5/cdd-update-menus   (contents, props changed)
   cdd/tags/cdd/0.4.5/cdd-update-menus.8
   cdd/tags/cdd/0.4.5/cdd-update-usermenus   (contents, props changed)
   cdd/tags/cdd/0.4.5/cdd-update-usermenus.8
   cdd/tags/cdd/0.4.5/cdd-user   (contents, props changed)
   cdd/tags/cdd/0.4.5/cdd-user.8
   cdd/tags/cdd/0.4.5/cdd.conf.5
   cdd/tags/cdd/0.4.5/debian/
   cdd/tags/cdd/0.4.5/debian/NEWS.Debian
   cdd/tags/cdd/0.4.5/debian/cdd-common.README.Debian
   cdd/tags/cdd/0.4.5/debian/cdd-common.dirs
   cdd/tags/cdd/0.4.5/debian/cdd-common.docs
   cdd/tags/cdd/0.4.5/debian/cdd-common.install
   cdd/tags/cdd/0.4.5/debian/cdd-common.lintian.overrides
   cdd/tags/cdd/0.4.5/debian/cdd-common.manpages
   cdd/tags/cdd/0.4.5/debian/cdd-dev.dirs
   cdd/tags/cdd/0.4.5/debian/cdd-dev.docs
   cdd/tags/cdd/0.4.5/debian/cdd-dev.examples
   cdd/tags/cdd/0.4.5/debian/cdd-dev.install
   cdd/tags/cdd/0.4.5/debian/cdd-dev.lintian.overrides
   cdd/tags/cdd/0.4.5/debian/cdd-dev.manpages
   cdd/tags/cdd/0.4.5/debian/cdd-doc.doc-base
   cdd/tags/cdd/0.4.5/debian/cdd-doc.docs
   cdd/tags/cdd/0.4.5/debian/cdd-doc.install
   cdd/tags/cdd/0.4.5/debian/changelog
   cdd/tags/cdd/0.4.5/debian/changelog.med-common
   cdd/tags/cdd/0.4.5/debian/compat
   cdd/tags/cdd/0.4.5/debian/control
   cdd/tags/cdd/0.4.5/debian/copyright
   cdd/tags/cdd/0.4.5/debian/rules   (contents, props changed)
   cdd/tags/cdd/0.4.5/devtools/
   cdd/tags/cdd/0.4.5/devtools/Makefile   (contents, props changed)
   cdd/tags/cdd/0.4.5/devtools/cdd-gen-control   (contents, props changed)
   cdd/tags/cdd/0.4.5/devtools/cdd-get-names   (contents, props changed)
   cdd/tags/cdd/0.4.5/devtools/cdd-install-helper   (contents, props changed)
   cdd/tags/cdd/0.4.5/devtools/rules   (contents, props changed)
   cdd/tags/cdd/0.4.5/doc/
   cdd/tags/cdd/0.4.5/doc/Makefile
   cdd/tags/cdd/0.4.5/doc/TODO
   cdd/tags/cdd/0.4.5/doc/debian-cdd.en.sgml
   cdd/tags/cdd/0.4.5/doc/en/
   cdd/tags/cdd/0.4.5/doc/en/00_titletoc.sgml
   cdd/tags/cdd/0.4.5/doc/en/01_introduction.sgml
   cdd/tags/cdd/0.4.5/doc/en/02_about.sgml
   cdd/tags/cdd/0.4.5/doc/en/03_general_ideas.sgml
   cdd/tags/cdd/0.4.5/doc/en/04_existing_cdds.sgml
   cdd/tags/cdd/0.4.5/doc/en/05_inside.sgml
   cdd/tags/cdd/0.4.5/doc/en/06_technology.sgml
   cdd/tags/cdd/0.4.5/doc/en/07_starting.sgml
   cdd/tags/cdd/0.4.5/doc/en/08_todo.sgml
   cdd/tags/cdd/0.4.5/doc/en/A_devel.sgml
   cdd/tags/cdd/0.4.5/doc/en/B_quickintro.sgml
   cdd/tags/cdd/0.4.5/doc/en/C_bts.sgml
   cdd/tags/cdd/0.4.5/etc/
   cdd/tags/cdd/0.4.5/etc/cdd/
   cdd/tags/cdd/0.4.5/etc/cdd/cdd.conf
   cdd/tags/cdd/0.4.5/examples/
   cdd/tags/cdd/0.4.5/examples/Makefile   (contents, props changed)
   cdd/tags/cdd/0.4.5/examples/README
   cdd/tags/cdd/0.4.5/examples/config/
   cdd/tags/cdd/0.4.5/examples/config/README
   cdd/tags/cdd/0.4.5/examples/config/common   (contents, props changed)
   cdd/tags/cdd/0.4.5/examples/config/common.1
   cdd/tags/cdd/0.4.5/examples/config/conf
   cdd/tags/cdd/0.4.5/examples/config/control
   cdd/tags/cdd/0.4.5/examples/debian/
   cdd/tags/cdd/0.4.5/examples/debian/README
   cdd/tags/cdd/0.4.5/examples/debian/cdd-task1.install
   cdd/tags/cdd/0.4.5/examples/debian/cdd-task1.manpages
   cdd/tags/cdd/0.4.5/examples/debian/compat
   cdd/tags/cdd/0.4.5/examples/debian/control.stub
   cdd/tags/cdd/0.4.5/examples/debian/rules   (contents, props changed)
   cdd/tags/cdd/0.4.5/examples/install/
   cdd/tags/cdd/0.4.5/examples/install/README
   cdd/tags/cdd/0.4.5/examples/install/task1/
   cdd/tags/cdd/0.4.5/examples/install/task1/extra-script-which-is-needed-in-task1   (contents, props changed)
   cdd/tags/cdd/0.4.5/examples/install/task1/extra-script-which-is-needed-in-task1.1
   cdd/tags/cdd/0.4.5/examples/menu/
   cdd/tags/cdd/0.4.5/examples/menu/README
   cdd/tags/cdd/0.4.5/examples/menu/task1/
   cdd/tags/cdd/0.4.5/examples/menu/task1/README
   cdd/tags/cdd/0.4.5/examples/menu/task1/dep1.menu
   cdd/tags/cdd/0.4.5/examples/menu/task1/dep2.txt
   cdd/tags/cdd/0.4.5/examples/menu/task1/dep3.html
   cdd/tags/cdd/0.4.5/examples/tasks/
   cdd/tags/cdd/0.4.5/examples/tasks/README
   cdd/tags/cdd/0.4.5/examples/tasks/task1
   cdd/tags/cdd/0.4.5/share/
   cdd/tags/cdd/0.4.5/share/cdd/
   cdd/tags/cdd/0.4.5/share/cdd/cdd-actions
   cdd/tags/cdd/0.4.5/share/cdd/cdd-update-menus
   cdd/tags/cdd/0.4.5/share/cdd/cdd-utils
   cdd/tags/cdd/0.4.5/share/cdd/unixgroups/
   cdd/tags/cdd/0.4.5/share/cdd/unixgroups/cdd-actions
   cdd/tags/cdd/0.4.5/share/menu/
   cdd/tags/cdd/0.4.5/share/menu/cdd-menu   (contents, props changed)
   cdd/tags/cdd/0.4.5/sources.list.local
   cdd/tags/cdd/0.4.5/sources.list.stable
   cdd/tags/cdd/0.4.5/sources.list.testing
   cdd/tags/cdd/0.4.5/sources.list.unstable
   cdd/tags/cdd/0.4.5/templates/
   cdd/tags/cdd/0.4.5/templates/README.Debian
   cdd/tags/cdd/0.4.5/templates/apt.conf
   cdd/tags/cdd/0.4.5/templates/config.config   (contents, props changed)
   cdd/tags/cdd/0.4.5/templates/config.install
   cdd/tags/cdd/0.4.5/templates/config.links
   cdd/tags/cdd/0.4.5/templates/config.postinst   (contents, props changed)
   cdd/tags/cdd/0.4.5/templates/config.templates
   cdd/tags/cdd/0.4.5/templates/po/
   cdd/tags/cdd/0.4.5/templates/po/POTFILES.in
   cdd/tags/cdd/0.4.5/templates/po/ca.po
   cdd/tags/cdd/0.4.5/templates/po/de.po
   cdd/tags/cdd/0.4.5/templates/po/fr.po
   cdd/tags/cdd/0.4.5/templates/po/pt_BR.po
   cdd/tags/cdd/0.4.5/templates/po/templates.pot
   cdd/tags/cdd/0.4.5/templates/postinst   (contents, props changed)
   cdd/tags/cdd/0.4.5/templates/postrm   (contents, props changed)
Log:
Tagged 0.4.5


Added: cdd/tags/cdd/0.4.5/AUTHORS
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/AUTHORS	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,3 @@
+Authors: Andreas Tille <tille at debian.org>
+         Petter Reinholdtsen <pere at debian.org>
+         Cosimo Alfarano <kalfa at debian.org>

Added: cdd/tags/cdd/0.4.5/BUGS
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/BUGS	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,5 @@
+List of known bugs:
+-------------------
+
+cdd-gen-control does not regard virtual package syntax ('|') and
+versioned depends.

Added: cdd/tags/cdd/0.4.5/COPYING
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/COPYING	Sun Jan  6 15:44:05 2008
@@ -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.

Added: cdd/tags/cdd/0.4.5/Changelog
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/Changelog	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,60 @@
+cdd 0.4
+-------
+
+2007-08-23 Andreas Tille <tille at debian.org>
+  - cdd-gen-control is nearly identical to debian-ed/gen-control
+    (which was patched to replace edu/education by variables)
+  - devtools/
+       rules: General rules file to build meta packages
+       Makefile: make debian/control for a CDD
+       cdd-get-names: Read releavant CDD names from
+       debian/control.stub
+  - now build CDD-config package which was formerly named
+    CDD-common; several renamings in the templates, examples
+    and code from common to config were necessary
+  - moved cdd-gen-control to /usr/share/cdd-dev because
+    there is no reason to call it directly any more but
+    rather via make
+  - moved cdd-install-helper to /usr/share/cdd-dev because
+    its only use is to be called from rules file and there
+    is no sense to bloat /usr/bin with this stuff
+  - dropped cdd-clean-helper - the code was moved to
+    the rules file
+  - do not install the man pages for cdd-gen-control,
+    cdd-install-helper (and obviousely not for the removed
+    cdd-clean-helper any more because
+  - /usr/share/cdd-dev/cdd-get-names obtains certain
+    CDD specific names
+
+
+cdd 0.3.11 and earlier
+----------------------
+
+Changes to gen-control
+  - Use /etc/cdd/sources.list as default sources.list
+    If "-s <dist>" is specified /etc/cdd/sources.list.<dist>
+    is used.  Otherwise the argument to option -s is used as
+    sources.list.
+  - /tmp/cdd-apt is used as $aptdir
+    The rationale behind this is to keep the cache stored on
+    building machine even after cleaning up build directory.
+  - The file debian/control.stub is searched for an entry
+    "^Package: <cdd>".  If this is found it is used as prefix
+    for the packages, so the builded packages are named as
+    <cdd>-{task1,task2,task3,...}.  The default cdd remains
+    "education-".
+  - If there is a common directory a <cdd>-common package is
+    builded as well.  In this case a file common/control
+    must be provided.
+
+Changes to debian/rules
+  - After cleaning the target debian/control is just a symlink
+    to debian/control.stub.  That's why debian/control.stub needs
+    a Package: entry just to let build tools work.  This entry
+    is parsed by cdd-gen-control to obtain the CDD name and
+    debian/control is builded in every build process from scratch.
+
+Changes to REAMDE
+  - Moved to README.Debian template which will be installed if
+    the source package contains a docs directory and contains no
+    special README.Debian file.

Added: cdd/tags/cdd/0.4.5/README.CDD
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/README.CDD	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,33 @@
+This README file explains how to use cdd-* scripts.
+
+File system:
+- /etc/cdd/<CDD>
+  Each CDD should create this directory, containing all the infos needed
+  by cdd-* scripts and by the CDD itself.
+
+  In this way it's clear for users to realize that CDD is using
+  cdd framework
+
+- /etc/cdd/cdd.conf
+  Main configuration file of cdd-* scripts.
+  
+  CDDs should be aware of it, but not modify it.
+
+- /etc/cdd/<CDD>/<CDD>.conf
+  A configuration file, in /bin/sh syntax, in which each CDD can
+  override /etc/cdd/cdd.conf
+
+  CDDs with particular needing, for example a particular backend, should
+  set variables here.
+  In this way a default set of parameters is provided by cdd.conf and a
+  specific set for each CDD instance in <CDD>/<CDD>.conf 
+
+- /usr/share/cdd/
+  Where common functions for script are stored.
+  There will be a directory for each backend and a common set of
+  function that should be mandatory for each registred backend.
+
+- /etc/cdd/<CDD>/menu/<ROLE>/
+  Users' menus for each registered role.
+  If <ROLE> directory is not present, all files in /etc/cdd/<CDD>/menu/ 
+  are considered to be valid Debian menu entries for any Roles in CDD.

Added: cdd/tags/cdd/0.4.5/TODO
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/TODO	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,11 @@
+sources.list
+  It would be a good idea to parse /etc/apt/sources.list for the Debian-Mirror
+  which is used on the building box instead of using ftp.debian.org
+
+cdd-gen-control
+  should handle versioned dependencies
+
+cdd-install-helper
+  This script is currently more or less a hack.
+  It might be reasonable to modularize this script.
+

Added: cdd/tags/cdd/0.4.5/VERSION
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/VERSION	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+0.4.5

Added: cdd/tags/cdd/0.4.5/cdd-role
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-role	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,77 @@
+#!/bin/bash
+#
+# $Id: cdd-role 431 2006-10-23 06:11:32Z tille $
+
+usage () {
+   echo "Usage:  `basename $0` <action> <CDD> [<role>]"
+   echo "action: add|del"
+   echo "CDD:    `getCDDList|tr ' ' '|'`"
+   echo "role:   `getCDDList|tr ' ' '|'` (default: CDD name)"
+}
+
+
+# the base dir for CDD conffiles, where script expects to find dirs named like
+# each registered CDDs 
+CONFBASE=${CONFBASE:-/etc/cdd}
+
+# should be /usr/lib/cdd/*, file should be named differently
+. ${CONFBASE}/cdd.conf
+
+
+# Check consistency of passed argouments
+if [ $# -eq 0 ]; then
+   usage
+   exit 67 # EX_USAGE
+fi
+if [ "`toLower $1`" != "add" -a "`toLower $1`" != "del" ] ; then
+   echo "Missing or wrong action name."
+   echo
+   usage
+   exit 67 # EX_USAGE
+fi
+if [ -z "$2" ] ; then
+   echo "Missing CDD name."
+   echo
+   usage
+   exit 67 # EX_USAGE
+fi
+
+
+ACTION=`toLower $1`
+CDD=$2
+ROLE=${3:-${CDD}}
+
+# Now that we know the selected CDD, we can check if there is a local
+# configuration for it (ie differnt backend from the default one)
+test -n "${CDD}" -a  -f ${CONFBASE}/${CDD}/${CDD}.conf &&
+	. ${CONFBASE}/${CDD}/${CDD}.conf
+
+
+if [ -n "${DBBACKEND}" ]; then
+	set -e
+	checkCDD ${CDD} || cddFail $? "Custom Distribution ${CDD} does not exist"
+
+	if [ "${ACTION}" = "add" ]; then
+		checkCDD ${CDD} || cddFail $? "CDD ${CDD} does not exist"
+		checkRole ${ROLE} && cddFail $? "Role ${ROLE} currently exist"
+		checkRoleInCDD ${CDD} ${ROLE} || \
+			cddFail $? "CDD (${CDD}) and Role (${ROLE}) are not correct or incompatible with the selected backend"
+
+		addRole ${CDD} ${ROLE} || \
+			cddFail $? "Failed to add role ${ROLE}"
+	elif [ "${ACTION}" = "del" ]; then
+		checkCDD ${CDD} || cddFail $? "CDD ${CDD} doesn't exist"
+		checkRole ${ROLE} || cddFail $? "Role ${ROLE} doesn't exist"
+		checkRoleInCDD ${CDD} ${ROLE} || \
+			cddFail $? "CDD (${CDD} and Role (${ROLE}) are not correct"
+
+		delRole ${CDD} ${ROLE} || \
+			cddFail $? "Failed to remove role ${ROLE}"
+		cddLog Role ${ROLE} successfully registered in CDD ${CDD}
+	fi
+	set +e
+
+else
+	# EX_USAGE
+	cddFail 67 "You chose to not use Roles"
+fi

Added: cdd/tags/cdd/0.4.5/cdd-role.8
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-role.8	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,43 @@
+.TH cdd-user 8 "2004/04/14" "" "Custom Debian Distributions"
+.SH NAME
+.B cdd-role
+\- add/remove roles in registered Custom Debian Distribution
+
+.SH SYNOPSIS
+.B cdd-user
+.B add|del
+<
+.B CDD
+>
+[<
+.B Role
+>]
+
+.SH DESCRIPTION
+Add/remove (register/unregister)
+.B Role
+for the specified
+.B CDD
+
+If 
+.B Role
+is not specified, it's assumed to be named like 
+.B CDD
+
+.SH OPTIONS
+.TP
+.B CDD
+- a registered custom distribution in /etc/cdd, of example one of
+.I med 
+,
+.I junior
+,
+.I desktop
+,
+.I edu
+or
+.I demudi
+
+.SH AUTHOR
+Andreas Tille <tille at debian.org>
+Cosimo Alfarano <kalfa at debian.org>

Added: cdd/tags/cdd/0.4.5/cdd-task-lister
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-task-lister	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,36 @@
+#!/bin/sh
+# This script respects its own file name to find out the CDD it belongs to
+# Names should be builded like <CDD>-task-files
+# The intended use is to create according symlinks to this file
+
+NAME=`basename $0`
+if [ _"$NAME" = _"cdd-task-lister" ] ; then
+    exit
+fi
+
+# the base dir for CDD conffiles, where script expects to find dirs named like
+# each registered CDDs
+CONFBASE=${CONFBASE:-/etc/cdd}
+
+# a local per CDD conf is sourced later, after argument parsing
+. ${CONFBASE}/cdd.conf
+
+CDD=`echo $NAME | sed 's/-task-files//'`
+
+# Now that we know the selected CDD, we can check if there is a local
+# configuration for it (ie different backend from the default one)
+test -n "${CDD}" -a  -f ${CONFBASE}/${CDD}/${CDD}.conf &&
+	. ${CONFBASE}/${CDD}/${CDD}.conf
+
+if [ -n "${DBBACKEND}" ]; then
+	set -e
+	checkCDD ${CDD} || cddFail $? "Custom distribution ${CDD} does not exist"
+fi
+
+# Check consistency of passed argouments
+if [ $# -ne 1 ] ; then
+    # printing usage makes no sense here
+    exit 67 # EX_USAGE
+fi
+
+cat /usr/share/cdd/tasksel/${CDD}/$1

Added: cdd/tags/cdd/0.4.5/cdd-update-menus
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-update-menus	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,110 @@
+#!/bin/bash
+#
+# $Id: cdd-update-menus 431 2006-10-23 06:11:32Z tille $
+
+usage() {
+   echo "Usage: `basename $0` [ -u <user> | -d <CDD> ]"
+   echo "CDD:   `getCDDList|tr ' ' '|'`"
+   echo "user:  system user registerd to a CDD"
+   echo
+   echo "run as user updates only the user's menu script"
+}
+
+# the base dir for CDD conffiles, where script expects to find dirs named like
+# each registered CDDs
+CONFBASE=${CONFBASE:-/etc/cdd}
+
+# a local per CDD conf is sourced later, after argument parsing
+. ${CONFBASE}/cdd.conf
+
+# specific utilities for cdd-update-menus
+. ${SHAREDIR}/cdd-update-menus
+
+# Get command line arguments
+GETOPT=`getopt -o d:u:h --long cdd:,user:,help -n "$0" -- "$@"`
+eval set -- "$GETOPT"
+while true
+do
+	case $1 in
+		-h|--help)
+            usage
+            exit 0
+            ;;
+		# get distro name
+		-d|--cdd)
+			if ! amI root; then
+				cddLog "You must be root to specify --cdd parameter"
+				cddLog ""
+				usage
+				exit 64
+			elif [ -n "${CDDUSER}" ]; then
+				cddLog "You cannot specify --cdd and --user at the same time" 
+				cddLog ""
+				usage
+				exit 0
+			else
+				CDD=$2
+				shift 2
+			fi
+			;;
+		# get user name
+		-u|--user)
+			CDDUSER=$2
+			shift 2
+
+			if ! amI root && ! amI "${CDDUSER}"; then
+				cddLog  "You must be root to specify --user parameter with a user that's not you"
+				usage
+				exit 64
+			elif [ "${CDDUSER}" == 'root' ]; then
+				cddFail 64 "err: Menus for user 'root' cannot be updated"
+			elif [ -n "${CDD}" ]; then
+				usage
+				exit 0
+			fi
+			;;
+		--)
+			shift
+			break
+			;;
+		*)
+			cddLog "$1 not recognized as option" >&2
+			exit 67 # EX_USAGE
+			;;
+	esac
+done
+
+
+# update menu scripts for CDDUSER, for any CDD, if any
+if [ -n "${CDDUSER}" ]; then 
+	SYSSCRIPT="${SHAREDIR}/menu/cdd-menu"
+	USERSCRIPT="`getUserHome ${CDDUSER}`/.menu/cdd-menu"
+
+	set -e
+	checkUser ${CDDUSER} || \
+		cddFail 67 "User does not exist"
+	isUserRegistered ${CDDUSER} || \
+		cddFail 67 "User ${CDDUSER} is not registered to any CDD"
+	
+	# there's nothing to do on per user basis criteria
+	#updateUser ${CDDUSER} "${SYSSCRIPT}" "${USERSCRIPT}"
+	set +e
+
+# update menu scripts for any user registered into the specified CDD
+elif [ -n "${CDD}" ]; then 
+	# Now that we know the selected CDD, we can check if there is a local
+	# configuration for it (ie differnt backend from the default one)
+	test -n "${CDD}" -a  -f ${CONFBASE}/${CDD}/${CDD}.conf &&
+		. ${CONFBASE}/${CDD}/${CDD}.conf
+		
+	set -e
+	checkCDD ${CDD} || \
+		cddFail $? "Custom distribution ${CDD} does not exist"
+		
+	# there's nothing to do on per CDD basis criteria
+	#SYSSCRIPT="${SHAREDIR}/menu/cdd-menu"
+	#updateCDD ${CDD} "${SYSSCRIPT}"
+	set +e
+else
+    exec $0 --user `whoami`
+fi 

Added: cdd/tags/cdd/0.4.5/cdd-update-menus.8
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-update-menus.8	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,45 @@
+.TH cdd-update-menus 8 "2004/03/24" "" "Custom Debian Distributions"
+.SH NAME
+.B cdd-update-menus
+\- add menu of meta package to all Custom Debian Distribution users
+
+.SH SYNOPSIS
+.B cdd-update-menus
+[ --cdd|-d  <
+.B CDD
+>  |
+--user|-u <
+.B user
+> ]
+
+.SH DESCRIPTION
+cdd-update-menus behaves differently depending on who run the command:
+
+If it's called by a user, it adds and keeps updated menu entries for the
+user who runs it.
+
+If it's called by root, it adds and keeps updated user's menu entries
+(see menu package for users' menus) for all users who belong to the
+group of the specified Custom Debian Distribution, or only for a
+specified user, depending on which parameter is passed to the script.
+
+.SH OPTIONS
+.TP
+.B CDD
+- one of the installed CDDs, listed in /etc/cdd/, for example (if installed):
+.I med 
+,
+.I junior
+,
+.I desktop
+,
+.I edu
+or
+.I demudi
+
+.TP
+.B user
+- a user present on the system and belonging to a CDD
+
+.SH AUTHOR
+Andreas Tille <tille at debian.org>, Cosimo Alfarano <kalfa at debian.org>

Added: cdd/tags/cdd/0.4.5/cdd-update-usermenus
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-update-usermenus	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,51 @@
+#!/bin/bash
+#
+# $Id: cdd-update-usermenus 431 2006-10-23 06:11:32Z tille $ 
+
+usage() {
+   echo "Usage: `basename $0` <CDD>"
+   echo "CDD:   `getCDDList|tr ' ' '|'`"
+   echo
+   echo "Updates user menus of all users registered for CDD"
+}
+
+# the base dir for CDD conffiles, where script expects to find dirs named like
+# each registered CDDs
+CONFBASE=${CONFBASE:-/etc/cdd}
+
+# a local per CDD conf is sourced later, after argument parsing
+. ${CONFBASE}/cdd.conf
+
+# specific utilities for cdd-update-menus
+. ${SHAREDIR}/cdd-update-menus
+
+if ! amI root; then
+	cddLog "$0 must be called by root.  If you are a normal user just call update-menus ."
+	exit 0
+fi
+
+case $1 in
+	-h|--help|"")
+            usage
+            exit 0
+            ;;
+        *)
+	    set -e
+            checkCDD $1 || \
+                cddFail $? "Custom distribution $1 does not exist"
+	    CDD=$1
+            set +e
+esac
+
+if [ -s /etc/cdd/${CDD}/${CDD}.conf ] ; then
+	. /etc/cdd/${CDD}/${CDD}.conf
+fi
+
+for ROLE in `getCDDRoleList ${CDD}`; do
+        for CDDUSER in `getUsersInRole ${CDD} ${ROLE} 1`; do
+		# Update user menus if UPDATEUSERMENU is set to yes
+            	cddLog "Adding menu for user ${CDDUSER} of ${CDD} ..."
+            	su ${CDDUSER} -c "update-menus"
+        done
+done
+

Added: cdd/tags/cdd/0.4.5/cdd-update-usermenus.8
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-update-usermenus.8	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,35 @@
+.TH cdd-update-usermenus 8 "2004/03/24" "" "Custom Debian Distributions"
+.SH NAME
+.B cdd-update-usermenus
+\- update user menus of all Custom Debian Distribution users
+
+.SH SYNOPSIS
+.B cdd-update-menus
+<\fBCDD\fR>
+
+
+.SH DESCRIPTION
+The script can only be called by root and calls
+.B update-menus(1)
+for every user who is registered for the Custom Debian Distribution
+\fBCDD\fR.  If a user wants to update his own personal menu he should
+call
+.B update-menus(1)
+directly.
+
+.SH OPTIONS
+.TP
+.B CDD
+- one of the installed CDDs, listed in /etc/cdd/, for example (if installed):
+.I med 
+,
+.I junior
+,
+.I desktop
+,
+.I edu
+or
+.I demudi
+
+.SH AUTHOR
+Andreas Tille <tille at debian.org>, Cosimo Alfarano <kalfa at debian.org>

Added: cdd/tags/cdd/0.4.5/cdd-user
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-user	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,111 @@
+#!/bin/bash
+#
+# $Id: cdd-user 431 2006-10-23 06:11:32Z tille $
+
+usage () {
+   echo "Usage:   `basename $0` <action> <CDD> <user> [<Role>]"
+   echo	"action:  add|del"
+   echo "CDD:     `getCDDList|tr ' ' '|'`"
+   echo "user:    user of the system who should be added to the CDD"
+   echo "Role:    a registered Role for specified CDD" 
+   echo "          (default: the one named like CDD)"
+}
+
+
+# the base dir for CDD conffiles, where script expects to find dirs named like
+# each registered CDDs
+CONFBASE=${CONFBASE:-/etc/cdd}
+
+# a local per CDD conf is sourced later, after argoument parsing
+. ${CONFBASE}/cdd.conf
+
+
+# Check consistency of passed argouments
+if [ $# -eq 0 ] ; then
+   usage
+   exit 67 # EX_USAGE
+fi
+if [ "`toLower $1`" != "add" -a "`toLower $1`" != "del" ] ; then
+   echo "Missing or wrong action name."
+   echo
+   usage
+   exit 67 # EX_USAGE
+fi
+if [ -z "$2" ] ; then
+   echo "Missing cdd name."
+   echo
+   usage
+   exit 67 # EX_USAGE
+fi
+if [ -z "$3" ] ; then
+   echo "Missing user name."
+   echo
+   usage
+   exit 67 # EX_USAGE
+fi
+
+ACTION=$1
+CDD=$2
+CDDUSER=$3
+ROLE=${4:-${CDD}}
+
+# Now that we know the selected CDD, we can check if there is a local
+# configuration for it (ie differnt backend from the default one)
+test -n "${CDD}" -a  -f ${CONFBASE}/${CDD}/${CDD}.conf &&
+	. ${CONFBASE}/${CDD}/${CDD}.conf
+
+if [ -n "${DBBACKEND}" ]; then
+	set -e
+	checkCDD ${CDD} || cddFail $? "Custom distribution ${CDD} does not exist"
+	checkUser ${CDDUSER} || cddFail $? "User ${CDDUSER} does not exist"
+	checkRole ${ROLE} || cddFail $? "Role ${ROLE} does not exist"
+	checkRoleInCDD ${CDD} ${ROLE} || \
+			cddFail $? "CDD (${CDD}) and Role (${ROLE}) are not correct or incompatible with the selected backend"
+
+	if [ "`toLower ${ACTION}`" = "add" ]; then
+		setUserRole ${CDD} ${CDDUSER} ${ROLE} || \
+			cddFail $? "Failed to set user ${CDDUSER} to role ${ROLE}"
+	elif [ "`toLower ${ACTION}`" = "del" ]; then
+		unsetUserRole ${CDD} ${CDDUSER} ${ROLE} || \
+			cddFail $? "Failed to unset user ${CDDUSER} to role ${ROLE}"
+	fi	
+
+#	# MENU installation
+#
+#	# All CDD menu entries will go in .cdd-menu, only one file will goes in
+#	# .menu, so it's easy to remove/update
+#	UHOME=`getUserHome ${CDDUSER}`
+#	if [ ! -d "${UHOME}" ] ; then
+#	   logFail 67  "Home directory for user ${CDDUSER} does not exist.\n... Sorry can not update menus."
+#	fi
+#	
+#	if [ ! -d ${UHOME}/.menu ] ; then
+#	   mkdir -p ${UHOME}/.menu
+#	   chown ${CDDUSER}: ${UHOME}/.menu
+#	fi
+#
+#	if [ ! -d ${UHOME}/.cdd-menu ] ; then
+#	   mkdir -p ${UHOME}/.cdd-menu
+#	   chown ${CDDUSER}: ${UHOME}/.cdd-menu
+#	fi
+#
+#	MENUS=""	
+#	if [ -d ${CONFBASE}/${CDD} ] ; then
+#	   if [ -d ${CONFBASE}/${CDD}/menu ] ; then
+#	      for MENU in `ls ${CONFBASE}/${CDD}/menu` ; do
+#	         cp -a ${CONFBASE}/${CDD}/menu/${MENU} ${UHOME}/.cdd-menu
+#	         chown ${CDDUSER}: ${UHOME}/.cdd-menu/${MENU}
+#			 MENUS="${MENUS} ${MENU}"
+#	      done
+#	   fi
+#	fi
+#	
+#	for MENU in ${MENUS}; do
+#		echo '!include'" ${UHOME}/.cdd-menu/${MENU}"
+#	done > ${UHOME}/.menu/cdd-menu
+
+	set +e
+else
+	# EX_USAGE
+	cddFail 67 "You choose to not use Roles"
+fi

Added: cdd/tags/cdd/0.4.5/cdd-user.8
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-user.8	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,51 @@
+.TH cdd-user 8 "2004/03/24" "" "Custom Debian Distributions"
+.SH NAME
+.B cdd-user
+\- add/remove user to Role of a registered Custom Debian Distribution
+
+.SH SYNOPSIS
+.B cdd-user
+.B add|del
+<
+.B CDD
+>
+<
+.B user
+>
+[<
+.B Role
+>]
+
+.SH DESCRIPTION
+Add user to a
+.B Role
+of the specified
+.B CDD
+
+If 
+.B Role
+is not specified, it's assumed to be named like 
+.B CDD
+
+.SH OPTIONS
+.TP
+.B CDD
+- a registered custom distribution in /etc/cdd, for example one of
+.I med 
+,
+.I junior
+,
+.I desktop
+,
+.I edu
+or
+.I demudi
+.TP
+.B user
+- user to add
+.B Role
+- the role in the CDD that user will assume
+
+.SH AUTHOR
+Andreas Tille <tille at debian.org>
+Cosimo Alfarano <kalfa at debian.org>

Added: cdd/tags/cdd/0.4.5/cdd.conf.5
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd.conf.5	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,57 @@
+.TH CDD.CONF 5 2004-05-10 "Custom Debian Distribution Configuration" ""
+.SH NAME
+cdd.conf \- configuration for Custom Debian Distribution registry
+.SH DESCRIPTION
+This file is sourced from shell scripts inside the Custom Debian
+Distribution package
+.B cdd-common
+and thus it has to follow shell syntax.  The variables which are set
+inside this configuration file can be overriden by special CDD
+configration files
+.I /etc/cdd/<cdd>/<cdd>.conf
+for each single CDD.
+
+.SH SYNTAX
+The following variables can be set:
+.TP
+.I DBBACKEND
+Set the backend for the user role management system.  Currently the
+only implemented role management system is
+.I unixgroups
+but others might be implemented later.  Unsetting this variable leads
+to use no roles at all.
+.TP
+.I UPDATEUSERMENU
+If this is set to
+.I yes
+the user menus of meta packages can be created automatically at
+install time of the package if the postinst script of the package
+allows this.  It is suggested to use this option in the specific
+configuration files of a special Custom Debian Distribution which
+overrides the settings of the general configuration file.
+.TP
+.I SHAREDIR
+Set the base directory for the user role management system. While this
+is more or less a feature for debugging this might be also used otherwise.
+.TP
+.I DRYRUN
+This variable can be set for debugging.  Normally it should be left
+unset (NOT set to false or anything else!). If set to
+.I true
+a dry run of the tools is performed or
+.I echo DRYRUN:
+would print debugging information.
+.TP
+.I DEBUG
+If set to 
+.I 1
+debugging mode is switched on.
+
+.SH "SEE ALSO"
+.BR cdd-role (8)
+.BR cdd-update-menus (8)
+.BR cdd-user (8)
+
+.SH AUTHOR
+Andreas Tille <tille at debian.org>
+Cosimo Alfarano <kalfa at debian.org>

Added: cdd/tags/cdd/0.4.5/debian/NEWS.Debian
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/NEWS.Debian	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,15 @@
+cdd (0.3.1) unstable; urgency=low
+
+  * In cdd 0.3 user menus where implemented by placing a symlink cdd-menu
+    in the .menu directory of each user who belongs to any Custom
+    Debian Distrinution role.  Now a solution was found which does not
+    touch users .menu directory.
+
+    To avoid code for removal of these old cdd-menu links in the users
+    home directories in the future postinst scripts it seems to be the
+    best solution to ask the local administrator do remove these links
+    manually.  So please remove all symlinks named
+
+       <userhome>/.menu/cdd-menu
+
+ -- Andreas Tille <tille at debian.org>  Thu, 17 May 2004 17:42:38 +0200

Added: cdd/tags/cdd/0.4.5/debian/cdd-common.README.Debian
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-common.README.Debian	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,24 @@
+Custom Debian Distributions common files
+----------------------------------------
+
+This package builds the basic infra structure of all meta packages.
+
+You can add or remove users to the group of users of a Custom Debian
+Distribution.  This is used for instance by Debian-Med.  It provides
+a med-common package which calls the scripts from cdd-common.  It
+can be used by
+
+    dpkg-reconfigure med-common
+
+Users of this group are provided by a user menu which will be build from
+menu files which are provided by each single med-* meta package in
+/etc/med/menu.
+
+If you do not want to install the suggested cdd-doc package you might read
+the online version at
+
+   http://people.debian.org/~tille/debian-med/talks/paper-cdd/debian-cdd.html/
+
+which is frequently updated.
+
+Andreas Tille <tille at debian.org>  Wed,  5 Jun 2002 23:27:07 +0200

Added: cdd/tags/cdd/0.4.5/debian/cdd-common.dirs
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-common.dirs	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+usr/share/lintian/overrides

Added: cdd/tags/cdd/0.4.5/debian/cdd-common.docs
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-common.docs	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,2 @@
+README.CDD
+debian/NEWS.Debian

Added: cdd/tags/cdd/0.4.5/debian/cdd-common.install
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-common.install	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,7 @@
+cdd-user                usr/sbin
+cdd-role                usr/sbin
+cdd-update-menus        usr/sbin
+cdd-update-usermenus    usr/sbin
+share                   usr
+etc/*                   etc
+cdd-task-lister         usr/share/cdd

Added: cdd/tags/cdd/0.4.5/debian/cdd-common.lintian.overrides
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-common.lintian.overrides	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,12 @@
+# The script /usr/lib/menu/cdd-menu is not intended to be called by the
+# cdd-common package but should be called by meta packages according to
+# the Custom Debian Distribution philosphy which is explained in cdd-doc.
+# That's why neither postinst nor postrm will call update-menus and
+# if they would it would just be a useless call because it just exits 0
+# if called by root.
+cdd-common: postinst-does-not-call-updatemenus usr/share/menu/cdd-menu
+cdd-common: postrm-does-not-call-updatemenus usr/share/menu/cdd-menu
+
+# For obvious reasons the script has to be executable which is the
+# intended use for scripts which dynamically create menu entries.
+cdd-common: executable-menu-file usr/share/menu/cdd-menu 0755

Added: cdd/tags/cdd/0.4.5/debian/cdd-common.manpages
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-common.manpages	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+*.8

Added: cdd/tags/cdd/0.4.5/debian/cdd-dev.dirs
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-dev.dirs	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+usr/share/lintian/overrides

Added: cdd/tags/cdd/0.4.5/debian/cdd-dev.docs
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-dev.docs	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+BUGS

Added: cdd/tags/cdd/0.4.5/debian/cdd-dev.examples
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-dev.examples	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+examples/*

Added: cdd/tags/cdd/0.4.5/debian/cdd-dev.install
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-dev.install	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,3 @@
+sources.list*       etc/cdd
+templates           usr/share/cdd
+devtools/*          usr/share/cdd-dev

Added: cdd/tags/cdd/0.4.5/debian/cdd-dev.lintian.overrides
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-dev.lintian.overrides	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,5 @@
+# The scripts are not intended to be running before the template
+# variable #CDD# is replaced.  The '#' sign in the template variable
+# makes the shell syntax checker fail to interpret the syntax correctly
+cdd-dev: shell-script-fails-syntax-check ./usr/share/cdd/templates/config.config
+cdd-dev: shell-script-fails-syntax-check ./usr/share/cdd/templates/config.postinst

Added: cdd/tags/cdd/0.4.5/debian/cdd-dev.manpages
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-dev.manpages	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+*.1

Added: cdd/tags/cdd/0.4.5/debian/cdd-doc.doc-base
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-doc.doc-base	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,24 @@
+Document: cdd-doc
+Title: Custom Debian Distributions
+Author: Andreas Tille
+Abstract: This paper is intended to people who are interested in the philosophy
+ of Custom Debian Distributions and the technique which is used to
+ manage those projects.
+ .
+ It is explained in detail why these are no forks from Debian but reside
+ completely inside the Debian GNU/Linux distribution and which
+ advantages can be gathered by this approach.  The concept of
+ meta-packages and user role based menus is explained.  In short: This
+ document describes why Custom Debian Distributions are important to
+ the vitality and quality of Debian.
+Section: Debian
+
+Format: HTML
+Index: /usr/share/doc/cdd-doc/html/index.html
+Files: /usr/share/doc/cdd-doc/html/*.html
+
+Format: text
+Files: /usr/share/doc/cdd-doc/debian-cdd.en.txt.gz
+
+Format: pdf
+Files: /usr/share/doc/cdd-doc/debian-cdd.en.pdf

Added: cdd/tags/cdd/0.4.5/debian/cdd-doc.docs
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-doc.docs	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,2 @@
+doc/debian-cdd.en.pdf
+doc/debian-cdd.en.txt

Added: cdd/tags/cdd/0.4.5/debian/cdd-doc.install
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-doc.install	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+doc/debian-cdd.html/*  usr/share/doc/cdd-doc/html

Added: cdd/tags/cdd/0.4.5/debian/changelog
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/changelog	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,240 @@
+cdd (0.4.5) unstable; urgency=low
+
+  * Add debconf templates for better menu handling
+  * Regard CDD-config.postinst.stub if user provides such a file
+  * share/cdd/unixgroups/cdd-actions: verify whether a group
+    that should be added just exists
+  * share/menu/cdd-menu: Prepend "!C menu-1" before each menu entry
+    that does not contain a "!C" line to enable menu entries in
+    menu-2 format
+  * Added Vcs-Browser and Vcs-SVN tags
+  * Standards-Version: 3.7.3 (no changes needed)
+  * devtools/cdd-install-helper: removed bashism
+  * devtools/rules: removed bashisms
+
+ -- Andreas Tille <tille at debian.org>  Sat, 20 Oct 2007 12:22:55 +0200
+
+cdd (0.4.4) unstable; urgency=low
+
+  * Remove old useless comment in share/menu/cdd-menu
+  * If there is no tasksel package wanted, just obtain the
+    meta package prefix from the CDD short name
+  * Make use of cdd-get-names also in cdd-gen-control script
+
+ -- Andreas Tille <tille at debian.org>  Fri, 19 Oct 2007 16:12:51 +0200
+
+cdd (0.4.3) unstable; urgency=low
+
+  * Add a newline after adding config/control to debian/control
+  * If a CDD provides an auto-apt helper name it CDD-config instead
+    of CDD-common
+
+ -- Andreas Tille <tille at debian.org>  Thu, 18 Oct 2007 20:14:16 +0200
+
+cdd (0.4.2) unstable; urgency=low
+
+  * Build-Depends: texlive-latex-base, texlive-latex-extra,
+    texlive-fonts-recommended, texlive-latex-recommended
+    Closes: #445777
+  * debian/cdd-dev.lintian.overrides: Renamed common to config
+
+ -- Andreas Tille <tille at debian.org>  Mon, 08 Oct 2007 12:02:41 +0200
+
+cdd (0.4.1) unstable; urgency=low
+
+  * Moved documentation package cdd-doc into same source package
+  * Reworked debian/copyright
+  * devtools/cdd-install-helper: If "Task:" keyword is missing in
+    a task control file just do not put it into tasksel area under
+    /usr/share/cdd/tasks/CDD
+
+ -- Andreas Tille <tille at debian.org>  Fri, 31 Aug 2007 19:01:52 +0200
+
+cdd (0.4) unstable; urgency=low
+
+  * New upstream version that cdd-gen-control in favour of a newly
+    adopted gen-control from Debian-Edu 0.821.
+    (Please see the upstream changelog for all changes)
+    Closes: #436831
+
+ -- Andreas Tille <tille at debian.org>  Tue, 21 Aug 2007 20:56:39 +0200
+
+cdd (0.3.11.1) unstable; urgency=low
+
+  * Remove Bashism (source --> .)
+    Closes: #394604 (of med-common, this bug did not really belong to
+                     med-common but was caused by the bashism in cdd-common)
+  * Standards-Version: 3.7.2 (no changes necessary)
+  * Build-Depends: debhelper (>= 5)
+
+ -- Andreas Tille <tille at debian.org>  Mon, 23 Oct 2006 07:46:58 +0200
+
+cdd (0.3.11) unstable; urgency=low
+
+  * Fix problem with resulting *.dsc files that did not list the
+    files that were actually created in the Binary line
+  * No changes necessary Standards-Version: 3.6.2
+  * Removed: Conflicts: med-common (<= 0.4); which was never released
+    in stable
+  * Because there is no direct use of debconf in the cdd package but
+    debconf is used in the package builded using cdd-dev the ${misc:Depends}
+    variable does not really work.  That's why we introduce an explicite
+      Depends: debconf (>= 0.5) | debconf-2.0
+  * Increased dependant menu version from 2.1.12 to 2.1.25
+  * Adapted lintian.overrides to reflect the change in menu
+    (files now in /usr/share/menu instead of /usr/lib/menu)
+
+ -- Andreas Tille <tille at debian.org>  Sun, 25 Sep 2005 21:36:29 +0200
+
+cdd (0.3.10) unstable; urgency=low
+
+  * Andreas Tille
+    - Fixed some man pages and examples
+    - Fixed bugs which showed up in Debian-Junior packaging
+      (work around missing final newlines in several places,
+       fix problem with menu items which are not using '"'
+       around the entries)
+  * Guillem Jover
+    - Added Catalan (ca) debconf translation.
+  * Otavio Salvador
+    - cdd-gen-control:
+      o Add -D suport to cdd-gen-control to degrade dependencies to
+        recommends; 
+      o Add support for architecture dependent packages;
+      o Add fallback to architecture independent packages so allow
+        backward compatibility;
+      o Add suport to tasksel based tasks;
+    - task-files: added.
+  * Adopted to findutils 4.2.22: specify the -maxdepth option before
+    non-option arguments
+
+ -- Andreas Tille <tille at debian.org>  Sat, 21 Aug 2004 09:06:13 +0200
+
+cdd (0.3.9) experimental; urgency=low
+
+  * Otavio Salvador
+    - Move the project to Subversion.
+  * Andreas Tille
+    - Exclude .svn dirs in dist target of debian/rules
+    - Removed Provides/Replaces/Conflicts: med-common-dev
+      because this package vanished completely from the archive now
+      and never reached stable.
+    - Moved cdd-menu from /usr/lib/menu to /usr/share/menu
+    - User menus now are created from installed dependency menus
+      if they are not explicitely overriden by the meta package maintainer
+
+ -- Andreas Tille <tille at debian.org>  Thu, 15 Jul 2004 11:13:22 +0200
+
+cdd (0.3.4) unstable; urgency=high
+
+  * Fixed common.postinst template which finally fixed bug #259412.
+  * Removed contrib non-free and non-US from the templates - we want
+    to build packages for main by default, others should be added
+    manually by local maintainers.
+  * Urgency set to high because it *really* fixes a grave bug.
+
+ -- Andreas Tille <tille at debian.org>  Thu, 15 Jul 2004 10:51:44 +0200
+
+cdd (0.3.3) unstable; urgency=high
+
+  * Remove broken code from templates/postinst to clean up
+    ${HOME}/.menu directories.  This code does more harm than
+    it would help.
+    Closes: #259412
+  * Urgency set to high because it fixes a grave bug.
+
+ -- Andreas Tille <tille at debian.org>  Wed, 14 Jul 2004 21:34:55 +0200
+
+cdd (0.3.2) unstable; urgency=low
+
+  * Remove ${HOME}/.menu/cdd-menu in postinst only if ${MENU}/.menu exists
+  * Added /etc/apt/apt.conf.d script to #cdd#-common templates to invoke
+    cdd-update-usermenus after all meta packages of a CDD were installed
+    if requested by a shared debconf variable
+  * Use #CDDNAME# variable in debconf templates of cdd-dev.  This variable
+    can be set either in common/conf or it is builded by "Debian-Cdd".
+  * cdd-install-helper handles CDD-common.{config,template}
+  * Usage of get-group-users deprecated, use cdd-tools instead.
+    Moved functionality of get-group-users to unixgroups/cdd-actions.
+  * Enhanced example directory.
+  * Otavio Salvador
+    - Add support to Pre-Depends field in cdd-gen-control script.
+    - Change the default task prefix from 'education-' to 'test-'.
+    - Include code to stop if exist a task with name 'common'.
+  * Andre Luis Lopes
+    - Added Brazilian Portuguese (pt_BR) cdd-dev debconf template
+      translation.
+
+ -- Andreas Tille <tille at debian.org>  Wed,  9 Jun 2004 08:20:26 +0200
+
+cdd (0.3.1) unstable; urgency=low
+
+  * Do not change ${HOME}/.menu any more as it was done in 0.3
+    Thanks to Cosimo Alfarano <kalfa at debian.org>
+  * Provide man page for cdd.conf
+  * Added newline at end of examples/common/control
+    Closes: #251889
+
+ -- Andreas Tille <tille at debian.org>  Mon, 31 May 2004 22:45:56 +0200
+
+cdd (0.3) unstable; urgency=low
+
+  * Cosimo Alfarano <kalfa at debian.org> did some major rewriting
+    to make the scripts much more flexible (many thanks to Cosimo).
+  * cdd-inst-helper now adds versioned med-common dependency if menu
+    is created by this package.
+  * templates/post{inst,rm} feature user menu creation if variable
+    UPDATEUSERMENU is set to "yes"
+
+ -- Andreas Tille <tille at debian.org>  Tue, 13 Apr 2004 21:51:01 +0200
+
+cdd (0.2) unstable; urgency=low
+
+  * Initial release of this package which contains code from several
+    packages but should be of common use now.
+    Closes: #240243
+  * Renamed med-common-dev to cdd-dev because it is intended to work
+    for all Custom Debian Distributions now.
+  * Renamed med-common to cdd-common.
+    (old changelog is available in changelog.med-common.
+  * Adopted gen-control from debian-edu-0.768
+
+ -- Andreas Tille <tille at debian.org>  Tue, 23 Mar 2004 18:41:20 +0100
+
+med-common-dev (0.1-5) unstable; urgency=low
+
+  * Standards-Version: 3.6.1.0
+  * Fixed typo in debian/control
+    closes: #221212
+    While I think that also spelling bugs should be reported and fixed
+    I really wonder why people set the priority of those bugs to
+    "normal" instead of "wishlist".
+
+ -- Andreas Tille <tille at debian.org>  Tue, 18 Nov 2003 08:58:14 +0100
+
+med-common-dev (0.1-4) unstable; urgency=low
+
+  * really installed the examples to /usr/share/doc/med-common-dev/examples
+
+ -- Andreas Tille <tille at debian.org>  Mon,  9 Sep 2002 22:19:53 +0200
+
+med-common-dev (0.1-3) unstable; urgency=low
+
+  * fixes a really stupid bug in med_install_helper
+
+ -- Andreas Tille <tille at debian.org>  Wed, 26 Jun 2002 21:06:11 +0200
+
+med-common-dev (0.1-2) unstable; urgency=low
+
+  * med_install_helper script now cares for an /etc/med/menu
+    directory if it was not builded in debian/rules and prints out
+    a warning if no menu is provided
+
+ -- Andreas Tille <tille at debian.org>  Wed, 26 Jun 2002 15:59:26 +0200
+
+med-common-dev (0.1-1) unstable; urgency=low
+
+  * Initial release
+    closes: #150938
+
+ -- Andreas Tille <tille at debian.org>  Mon, 24 Jun 2002 17:19:38 +0200

Added: cdd/tags/cdd/0.4.5/debian/changelog.med-common
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/changelog.med-common	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,69 @@
+med-common (0.3-2) unstable; urgency=low
+
+  * Removed debian/menu because it was just a test which is not necessary
+    any more.
+  * install-sub-menus ignores missing menus in ${CDD}-common
+  * Added French debconf translation
+    Closes: #236300
+  * Added lex and nonprofit Custom Debian Distributions to the used tools
+
+ -- Andreas Tille <tille at debian.org>  Mon,  8 Mar 2004 14:44:44 +0100
+
+med-common (0.3-1) unstable; urgency=low
+
+  * Fixed spelling error in med-common.1
+  * Switched to new debconf format (Thanks to 
+    Martin Quinson <Martin.Quinson at tuxfamily.org>
+    for the patch.
+    Closes: #234751
+  * Standards-Version: 3.6.1
+  * debian/compat
+  * Added test whether home directory of project user exists.
+
+ -- Andreas Tille <tille at debian.org>  Wed, 25 Feb 2004 22:51:25 +0100
+
+med-common (0.2-1) unstable; urgency=low
+
+  * Because the former get-sub-users script might be used also in Packages
+    which do not belong to certain Debian internal projects (for instance
+    the GnuMed package requires a certain list of users belonging to a
+    certain system group) this script was renamed to get-group-users
+    and now handles any group of the system.
+    I hope to get this kind of functionality to the adduser package.
+  * Added desktop, edu and demudi to possible Debian internal projects
+    which are enabled to maintain Project users by these scripts.
+  * Fixed a slight bug in install-sub-menus
+
+ -- Andreas Tille <tille at debian.org>  Fri, 29 Nov 2002 17:15:49 +0100
+
+med-common (0.1-3) unstable; urgency=low
+
+  * Respect /etc/adduser.conf for FIRST_UID
+    closes: #152431
+  * Try to detect the project name automatically from the package name
+  * Substitude occurences of string "med" by ${PROJECT} to make life
+    of other project maintainers more easy.
+  * Moved stuff from debian/configure to debian/postinst
+    closes: #152267
+    This was done according to
+      http://lists.debian.org/debian-devel/2002/debian-devel-200207/msg01648.html
+    at the cost of two lintian warnings about problems in debconf stuff.
+    I think I should stick to this approach until the discussion about
+    new Debian menu system in general and the user maintainance of
+    the subprojects was able to find a sane decision.
+
+ -- Andreas Tille <tille at debian.org>  Tue, 30 Jul 2002 11:38:27 +0200
+
+med-common (0.1-2) unstable; urgency=low
+
+  * Fixed a typo in med-common.1
+  * additions to long description.
+
+ -- Andreas Tille <tille at debian.org>  Tue, 25 Jun 2002 15:01:38 +0200
+
+med-common (0.1-1) unstable; urgency=low
+
+  * Initial release
+    closes: #150937
+
+ -- Andreas Tille <tille at debian.org>  Tue, 25 Jun 2002 10:17:28 +0200

Added: cdd/tags/cdd/0.4.5/debian/compat
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/compat	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+5

Added: cdd/tags/cdd/0.4.5/debian/control
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/control	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,50 @@
+Source: cdd
+Priority: optional
+Section: devel
+Maintainer: Andreas Tille <tille at debian.org>
+Uploaders: Petter Reinholdtsen <pere at debian.org>, Andreas Tille <tille at debian.org>, Cosimo Alfarano <kalfa at debian.org>
+Build-Depends: debhelper (>= 5), debiandoc-sgml, texlive-latex-base, texlive-latex-extra, texlive-latex-recommended, texlive-fonts-recommended
+Standards-Version: 3.7.3
+Vcs-Browser: http://svn.debian.org/wsvn/cdd/trunk/cdd/
+Vcs-Svn: svn://svn.debian.org/cdd/trunk/cdd/
+
+Package: cdd-dev
+Architecture: all
+Section: devel
+Depends: debconf (>= 0.5) | debconf-2.0, make | build-essential
+Suggests: cdd-doc
+Description: Custom Debian Distributions common files for developing meta packages
+ This package makes life easier when packaging meta packages.  Perhaps
+ this will also encourage other people to build meta packages if there are
+ easy to use templates where only the packages, the meta package is depending
+ from, to insert into the right place.
+
+Package: cdd-common
+Architecture: all
+Section: misc
+Depends: adduser, menu (>= 2.1.25), debconf (>= 0.5) | debconf-2.0
+Suggests: cdd-doc
+Description: Custom Debian Distributions common package
+ This package builds the basic infra structure for meta packages.
+ .
+ This package provides some files which are common to meta packages
+ of Common Debian Distributions. It introduces a method to handle
+ system users in a group named according to the name of the
+ Custom Debian Distribution.
+
+Package: cdd-doc
+Architecture: all
+Section: doc
+Suggests: www-browser, postscript-viewer
+Description: Custom Debian Distribution documentation
+ This paper is intended to people who are interested in the philosophy
+ of Custom Debian Distributions and the technique which is used to
+ manage those projects.
+ .
+ It is explained in detail why these are no forks from Debian but reside
+ completely inside the Debian GNU/Linux distribution and which
+ advantages can be gathered by this approach.  The concept of
+ meta-packages and user role based menus is explained.  In short: This
+ document describes why Custom Debian Distributions are important to
+ the vitality and quality of Debian.
+

Added: cdd/tags/cdd/0.4.5/debian/copyright
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/copyright	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,24 @@
+This package was debianized by Andreas Tille Andreas Tille <tille at debian.org>
+Tue, 23 Mar 2004 18:41:20 +0100
+
+It is Debian native software and can be found at Alioth SVN or under
+
+    http://svn.debian.org/wsvn/cdd
+
+Upstream authors:
+
+    Andreas Tille <tille at debian.org>
+    Petter Reinholdtsen <pere at debian.org>
+    Cosimo Alfarano <kalfa at debian.org>
+
+The copyright for the code is
+
+    Copyright (C) 2002-2007 by Andreas Tille, Petter Reinholdtsen, Cosimo Alfarano
+
+The copyright for the Custom Debian Distributions documentation:
+
+    Copyright (C) 2002-2004 by Ben Armstrong.
+    Copyright (C) 2004-2007 by Andreas Tille.
+    
+The software and the documentation is licensed under the GPL.
+On Debian systems, the GPL can be found at /usr/share/common-licenses/GPL.

Added: cdd/tags/cdd/0.4.5/debian/rules
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/rules	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,69 @@
+#!/usr/bin/make -f
+# debian/rules for cdd-dev 
+# This file is public domain software, originally written by Andreas Tille.
+
+# $Id: rules 431 2006-10-23 06:11:32Z tille $
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+build: build-stamp
+build-stamp:
+	dh_testdir
+
+	cd doc; $(MAKE) html; $(MAKE) txt; $(MAKE) pdf
+
+	touch build-stamp
+
+clean:
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp
+
+	cd doc; $(MAKE) clean
+
+	dh_clean
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_installdirs
+	dh_install
+
+# Build architecture-independent files here.
+binary-indep: build install
+	dh_testdir
+	dh_testroot
+	dh_installchangelogs
+	dh_installdocs
+	dh_installexamples
+	dh_installman
+	cp -a debian/cdd-common.lintian.overrides debian/cdd-common/usr/share/lintian/overrides/cdd-common
+	cp -a debian/cdd-dev.lintian.overrides    debian/cdd-dev/usr/share/lintian/overrides/cdd-dev
+	dh_link
+	dh_compress -X.pdf
+	dh_fixperms
+	dh_installdeb
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+# Build architecture-dependent files here.
+binary-arch: build install
+# We have nothing to do by default.
+
+dist:
+	distdir=cdd-`cat VERSION` ; \
+	rm -rf $${distdir} ; \
+	mkdir $${distdir} ; \
+	chmod 777 $${distdir} ; \
+	rsync -a --exclude $${distdir} --exclude CVS --exclude .svn --exclude svn-commit.tmp * $${distdir} ; \
+	ln -s sources.list.unstable $${distdir}/sources.list ; \
+	# ln -s control.stub $${distdir}/examples/debian/control ; \
+	rm -f `find . -name "*~"` ; \
+	GZIP=-9 tar -czf ../cdd_`cat VERSION`.tar.gz $${distdir} ; \
+	rm -rf $${distdir}
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install

Added: cdd/tags/cdd/0.4.5/devtools/Makefile
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/devtools/Makefile	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+
+# This Makefile is used to build a debian/control file
+# for a Custom Debian Distribution.
+#
+# Copyright (C) Andreas Tille <tille at debian.org>
+# License: GPL
+
+# TARGET_DIST is one of stable, sarge, etch, unstable, or any other available
+# sources.list file available
+TARGET_DIST := $(shell head -1 debian/changelog |awk '{print $$3}'|tr -d ';')
+CDD := $(shell /usr/share/cdd-dev/cdd-get-names cddname)
+GENCONTROL := /usr/share/cdd-dev/cdd-gen-control
+
+# Verify whether config/control exists, if yes, add it to the depends of debian/control
+CONFIGCONTROL := $(shell if [ -d config -a -e config/control ] ; then echo config/control; fi)
+
+all: $(CDD)-tasks.desc debian/control
+
+debian/control: debian/control.stub debian/changelog tasks/* $(CONFIGCONTROL)
+	(cat debian/control.stub; \
+	 test -f config/control && ( cat config/control; echo ) ; \
+	$(GENCONTROL) -s $(TARGET_DIST) -D -c -m -i -A) > $@.new && mv $@.new $@
+
+tasksel: $(CDD)-tasks.desc
+$(CDD)-tasks.desc: tasks/* debian/changelog
+	$(GENCONTROL) -s $(TARGET_DIST) -t -A > $(CDD)-tasks.desc.new && mv $(CDD)-tasks.desc.new $(CDD)-tasks.desc
+
+packages.txt: tasks/*
+	$(GENCONTROL) -s $(TARGET_DIST) -a > packages.txt.$$$$ && mv packages.txt.$$$$ packages.txt
+
+avoidpackages.txt: tasks/* sources.list.$(TARGET_DIST)
+	$(GENCONTROL) -s $(TARGET_DIST) -e > avoidpackages.txt.$$$$ && mv avoidpackages.txt.$$$$ avoidpackages.txt
+
+by_vote:
+	rm -f by_vote
+	wget http://developer.skolelinux.no/popcon/by_vote
+
+packages-sorted.txt: packages.txt by_vote
+	for pkg in `cat packages.txt` ; do \
+		grep " $$pkg " by_vote ; \
+	done | LANG=C sort -r -n -k 4 -k 3 > packages-sorted.txt
+usage: packages-sorted.txt
+
+clean: 
+	rm -rf tmp
+	rm -f tasks/*~
+	rm -rf tasksel
+	rm -f packages.txt by_vote packages-sorted.txt

Added: cdd/tags/cdd/0.4.5/devtools/cdd-gen-control
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/devtools/cdd-gen-control	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,622 @@
+#!/usr/bin/perl
+#
+# Authors:
+#       Petter Reinholdtsen <pere at hungry.com>
+#       Andreas Tille <tille at debian.org>
+# Date:   2001-08-23
+#
+# # $Id: cdd-gen-control 448 2007-08-11 08:02:48Z tille $
+#
+# Generate the control file used by the CDD task package.
+
+use warnings;
+use strict;
+
+use Getopt::Std;
+use File::Path;
+
+use vars qw(%opts %available %excluded %included @wanted %missing
+            @tasks $debug);
+my @arch = qw(alpha arm i386 ia64 m68k mips mipsel powerpc s390 sparc hppa);
+
+my $debug = 0;
+my $nodepends = 0;
+my $ignoreapterrors = 0;
+
+my %taskinfo = ();
+my $tasksdir = "tasks" ;
+my $taskcontrolfile = "tasks.ctl" ;
+
+my $aptsourcesdefaultlocation = "/etc/cdd";
+my $aptsources = $aptsourcesdefaultlocation . "/sources.list";
+my $cdd_dev_dir = "/usr/share/cdd-dev";
+
+my %commondepends ;
+$commondepends{"adduser"}    = "0" ;
+$commondepends{"debconf"}    = "1.2" ;
+$commondepends{"menu"}       = "2.1.14" ;
+
+my $CommonPackage = "" ;
+my $prefix        = "test-" ;
+my $cddname       = "" ;
+my $cddshortname  = "" ;
+my $tasksname     = "" ;
+my $hasconfig     = 0 ;
+
+sub usage() {
+    print STDERR << "EOF";
+gen-control help screen
+usage: $0 [options]
+
+   -a               : print wanted packages
+   -A               : ignore APT errors
+   -c               : create new debian/control file
+   -d               : print debug information
+   -D               : lover all Depends: to Recommends:
+   -e               : print excluded packages
+   -h               : print this help screen and exit
+   -i               :
+   -m               : print missing packages
+   -s <sourcefile>  : specify which sources.list file to use
+   -t               : print task descriptions and package list for task
+
+example: $0 -s sources.list.etch -D -c -m -i
+EOF
+}
+
+getopts("cdaemis:tDhA", \%opts);
+
+usage() and exit if $opts{'h'};
+
+my $aptsourcesinput = $opts{'s'} if ($opts{'s'});
+$aptsources = $aptsourcesinput ;
+if ( $aptsources !~ m%^/% && $aptsources !~ /^sources\.list\./ ) { 
+    my $cwd ;
+    chomp($cwd = `pwd`) ;
+    $aptsources = $cwd . "/sources.list." . $aptsources ;
+}
+if ( ! -e $aptsources ) {
+    $aptsources = $aptsourcesdefaultlocation . "/sources.list." . $aptsourcesinput;
+    if ( ! -e $aptsources ) {
+	die "Apt sources.list $aptsources not found.\n" ;
+    }
+}
+
+$debug = 1 if ($opts{'d'});
+$nodepends = 1 if ($opts{'D'});
+$ignoreapterrors = 1 if ($opts{'A'});
+
+cdd_init();
+
+# print "$prefix ; $cddshortname ; $cddname ; $tasksname \n";
+
+load_available_packages();
+
+load_tasks();
+
+# An ordered list of CDD tasks, in priority order of which are
+# most needed on the CD. Only leaf tasks need be listed.
+my @priorityorder = get_priorities("priority-high", 1);
+my @medpriorder   = get_priorities("priority-med", 0);
+
+# print "high: @priorityorder\nmed: @medpriorder\n" ;
+
+if ($opts{'c'}) {
+    gen_control();
+} elsif ($opts{'e'}) {
+    print_excluded_packages();
+} elsif ($opts{'a'}) {
+    print_all_packages();
+} elsif ($opts{'t'}) {
+    print_task_desc();
+} else {
+    print_available_packages();
+}
+print_missing_packages() if ($opts{'m'});
+
+sub apt {
+    my $op = shift;
+
+    my $aptdir  = "../tmp/apt";
+    my @aptopts = ("Dir::Etc::sourcelist=$aptsources",
+                   "Dir::State=$aptdir/state",
+                   "Dir::Cache=$aptdir/cache",
+                   "Dir::State::Status=/dev/null",
+                   "Debug::NoLocking=true",
+                   "APT::Get::AllowUnauthenticated=true");
+
+    # Stupid apt-get and apt-cache do not understand the same arguments!
+    # I have to map them to different formats to get both working.
+
+    if ("update" eq $op) {
+        mkpath "$aptdir/state/lists/partial";
+        mkpath "$aptdir/cache/archives/partial";
+
+        my $aptget   = "apt-get --assume-yes -o " . join(" -o ", @aptopts);
+
+        print STDERR "aptget: $aptget\n" if $debug;
+        if (system("$aptget update 1>&2")) {
+            print STDERR "error: updating apt package lists failed\n";
+            exit 1 unless $ignoreapterrors;
+        }
+    } elsif ("apt-cache" eq "$op") {
+        my $aptcache = "apt-cache -o=" . join(" -o=", @aptopts);
+        print STDERR "aptcache: $aptcache\n" if $debug;
+        return $aptcache;
+    }
+}
+
+sub sort_uniq {
+    my $seen = shift;
+    my @list;
+    for my $entry (sort @_) {
+        push @list,$entry unless $seen->{$entry};
+        $seen->{$entry} = 1;
+    }
+    return @list;
+}
+
+sub uniq {
+    my $seen = shift;
+    my @list;
+    for my $entry (@_) {
+        push @list,$entry unless $seen->{$entry};
+        $seen->{$entry} = 1;
+    }
+    return @list;
+}
+
+sub gen_control {
+    my $task;
+    for $task (sort keys %taskinfo) {
+        print "Package: $task\n";
+
+        my $header;
+        for $header (qw(Section Architecture Priority)) {
+            print "$header: $taskinfo{$task}{$header}\n"
+                if (defined $taskinfo{$task}{$header});
+        }
+        my %seenlist;
+        if ($nodepends) {
+                # degrade dependencies to recommends
+	        if ( $tasksname ) {
+		    print "Depends: $tasksname";
+		    if ( $tasksname =~ /-tasks$/ ) {
+			print ' (= ${binary:Version})';
+		    }
+		    if ( $hasconfig ) {
+			print ', ' . $prefix . 'config (= ${binary:Version})';
+		    }
+		    print "\n" ;
+	        }
+                # Use common %seenlist, as it is no use listing
+                # packages both in recommends and suggest
+                my @list;
+                for $header (qw(Depends Recommends)) {
+                    push (@list, @{$taskinfo{$task}{$header}})
+                        if defined $taskinfo{$task}{$header};
+                }
+                my ($pkglist, $missinglist) = process_pkglist(join(",", at list));
+                my (@recommends, @suggests);
+                push @recommends, @{$pkglist};
+                push @suggests, @{$missinglist};
+#               push(@recommends, )
+#                    if defined $taskinfo{$task}{Depends};
+#               push(@recommends, )
+#                   if defined $taskinfo{$task}{Recommends};
+                push(@suggests, @{$taskinfo{$task}{Suggests}})
+                    if defined $taskinfo{$task}{Suggests};
+                print("Recommends: ",
+                      join(", ", sort_uniq(\%seenlist, @recommends)),"\n")
+                        if defined $taskinfo{$task}{Depends};
+                print("Suggests: ",
+                      join(", ", sort_uniq(\%seenlist, @suggests)),"\n")
+                    if @suggests;
+        }
+        else {
+                for $header (qw(Depends Recommends Suggests)) {
+                    print "$header: ", join(", ", sort_uniq(\%seenlist, @{$taskinfo{$task}{$header}})),"\n"
+                        if defined $taskinfo{$task}{$header};
+                }
+        }
+
+        # Description Description-long
+        print "Description: $taskinfo{$task}{Description}\n";
+        print "$taskinfo{$task}{'Description-long'}"; # Already contain newline
+
+        print "\n";
+    }
+}
+
+# List all depends, recommends and suggests packages as task packages.
+# Optionally, list depends as key packages, and the rest as task
+# packages.
+# Enable to list all dependencies as key packages
+my $task_depends_are_keys = 0;
+sub print_task_desc {
+        foreach my $task (sort keys %taskinfo) {
+                next if (exists $taskinfo{$task}{'Leaf'} &&
+                        $taskinfo{$task}{'Leaf'} eq 'false');
+
+                print "Task: $task\n";
+                print "Section: $cddname\n";
+                print "Description: $taskinfo{$task}{Description}\n";
+                print "$taskinfo{$task}{'Description-long'}"; # Already contain newline
+                print "Relevance: 10\n";
+                print "Key: \n";
+                print " $task\n";
+                my %seen;
+                $seen{$task} = 1;
+                if ($task_depends_are_keys) {
+                    foreach my $package (task_packages($task, "Depends")) {
+                        print " $package\n" unless $seen{$package};
+                        $seen{$package} = 1;
+                    }
+                }
+                print "Packages: list\n";
+                for my $header (qw(Depends Recommends)) {
+                    foreach my $package (task_packages($task, $header, 1)) {
+                        print " $package\n" unless $seen{$package};
+                        $seen{$package} = 1;
+                    }
+                }
+
+                print "\n";
+        }
+}
+
+sub select_alternative {
+    my $pkglist = shift;
+    return $pkglist;
+}
+
+sub task_packages {
+        my ($task, $header, $includealldeps) = @_;
+        my @packages = $task;
+        foreach my $package (@{$taskinfo{$task}{$header}}) {
+                if ($package=~/\|/) {
+                        # Tasksel doesn't allow boolean or-ing of
+                        # dependencies. Just take the first one that is
+                        # available.
+                        my $ok=0;
+                        foreach my $alternative (split(' | ', $package)) {
+                                if (! exists $taskinfo{$alternative} &&
+                                    ! exists $available{$alternative}) {
+                                        if (! exists $missing{$alternative}) {
+                                                $missing{$alternative} = 1;
+                                        }
+                                }
+                                else {
+                                        print STDERR "task_packages: choosing $alternative from $package\n" if $debug;
+                                        $package=$alternative;
+                                        $ok=1;
+                                        last;
+                                }
+                        }
+                        if (! $ok) {
+                                next;
+                        }
+                }
+                if (exists $taskinfo{$package}) {
+                        # Add packages from task recursively, since
+                        # tasksel does not support dependent tasks of
+                        # the type used by CDD
+                        if (defined $includealldeps && $includealldeps) {
+                                for my $h (qw(Depends Recommends)) {
+
+                                        push(@packages, $package,
+                                             task_packages($package, $h, 1));
+                            }
+                        } else {
+                                push(@packages, $package,
+                                     task_packages($package, $header));
+                        }
+                }
+                else {
+                        push @packages, $package;
+                }
+        }
+        return @packages;
+}
+
+#
+# Check the APT cache, and find the packages currently available.
+#
+sub load_available_packages
+{
+    apt("update");
+    my $aptcache = apt("apt-cache");
+    open(APT, "$aptcache dump |") || die "Unable to start apt-cache";
+    my $pkg;
+    while (<APT>) {
+        chomp;
+        if (/^Package: (.+)$/) {
+            $pkg = $1;
+            print STDERR "Found pkg '$pkg'\n" if $debug;
+        }
+        if (/^\s+Version:\s+(.+)/) {
+            print STDERR " pkg $pkg = ver $1\n" if $debug;
+#           print "C: $pkg $available{$pkg} lt $1\n" if ( exists $available{$pkg});
+            $available{$pkg} = $1 if ( ! exists $available{$pkg} ||
+                                       $available{$pkg} lt $1 );
+        }
+    }
+}
+
+#
+# Load all tasks
+#
+sub load_tasks {
+    my $taskfile;
+
+    # First document their existence, so they can depend on each other.
+    for $taskfile (<tasks/*>) {
+        next if (($taskfile eq "tasks/CVS") || ($taskfile eq "tasks/.svn"));
+        next if ($taskfile =~ m/~$/);
+
+        my $curpkg = $taskfile;
+        $curpkg =~ s%tasks/%$prefix%;
+        $available{$curpkg} = "n/a";
+
+        push(@tasks, "$taskfile:$curpkg");
+    }
+
+    # Next, load their content.
+    my $foo;
+    for $foo (@tasks) {
+        my ($taskfile, $curpkg) = $foo =~ m/^(.+):(.+)$/;
+        next if ("tasks/CVS" eq $taskfile);
+
+        load_task($taskfile, $curpkg);
+    }
+}
+
+sub process_pkglist {
+    my $pkgstring = shift;
+    my @pkglist = ();
+    my @missinglist = ();
+    my $packages;
+    for $packages (split(/\s*,\s*/, $pkgstring)) {
+        print "E: double comma?: $_\n" if ($packages =~ /^\s*$/ && $debug);
+        my $package;
+        my @alternates=split(/\s*\|\s*/, $packages);
+        my $alternatecount=0;
+        for $package (@alternates) {
+            print STDERR "Loading pkg '$package'\n" if $debug;
+            if ($package =~ /^-(.+)$/) {
+                $excluded{$1} = 1;
+            } elsif ( !exists $available{$package} ) {
+                if ( !exists $missing{$package}) {
+                    $missing{$package} = 1;
+                }
+                push(@missinglist, $package);
+            } else {
+                if ($alternatecount == 0) {
+                    #push(@pkglist, $package) if (! exists $pkglist[$package]);
+                    push(@pkglist, $package);
+                }
+                else {
+                    $pkglist[-1].=" | $package";
+                }
+                $alternatecount++;
+
+                if ( ! $included{$package} ) {
+                    push(@wanted, $package);
+                    $included{$package} = 1;
+                }
+            }
+        }
+    }
+    return (\@pkglist, \@missinglist);
+}
+
+sub load_task {
+    my ($taskfile, $curpkg) = @_;
+    open(TASKFILE, "<$taskfile") || die "Unable to open $taskfile";
+    my $line;
+
+    $taskinfo{$curpkg} = ();
+
+    print STDERR "Loading task $curpkg\n" if $debug;
+
+    while (<TASKFILE>) {
+        chomp;
+        next if (m/^\#/); # Skip comments
+        $line = $_;
+
+        # Append multi-line
+        while ($line =~ /\\$/) {
+            $line =~ s/\s*\\//;
+            $_ = <TASKFILE>;
+            chomp;
+            $line .= $_;
+        }
+        # Remove trailing space
+        $line =~ s/\s+$//;
+
+        $_ = $line;
+        $taskinfo{$curpkg}{'Section'}      = $1 if (m/^Section:\s+(.+)$/);
+        $taskinfo{$curpkg}{'Architecture'} = $1 if (m/^Architecture:\s+(.+)$/);
+
+        $taskinfo{$curpkg}{'Priority'}     = $1 if (m/^Priority:\s+(.+)$/);
+
+        $taskinfo{$curpkg}{'Leaf'}         = $1 if (m/^Leaf:\s+(.+)$/);
+
+        if (m/^Description:\s+(.+)$/) {
+            $taskinfo{$curpkg}{'Description'} = $1;
+            $taskinfo{$curpkg}{'Description-long'} = "";
+            while (<TASKFILE>) {
+                # End of description, pass next line to pattern matching
+                last if (m/^\S+/ || m/^\s*$/);
+
+                $taskinfo{$curpkg}{'Description-long'} .= $_;
+            }
+        }
+
+        next unless defined $_;
+
+        my $header;
+        for $header (qw(Depends Recommends Suggests)) {
+            if (m/^$header:\s+(.+)$/ && $1 !~ /^\s*$/) {
+                $taskinfo{$curpkg}{$header} = ()
+                    if (! exists $taskinfo{$curpkg}{$header});
+                my ($pkglist, $missinglist) = process_pkglist($1);
+                push(@{$taskinfo{$curpkg}{$header}}, @{$pkglist});
+
+                # Avoid missing packages in Depends lists, allow them
+                # in the two others.  Insert missing depends in
+                # suggests list.
+                if (@{$missinglist}) {
+                    if ("Depends" eq $header) {
+                        push(@{$taskinfo{$curpkg}{'Suggests'}}, @{$missinglist});
+                    } else {
+                        push(@{$taskinfo{$curpkg}{$header}}, @{$missinglist});
+                    }
+                }
+            }
+        }
+
+        if (/^Avoid:\s+(.+)$/) {
+            my @pkgs = split(/\s*,\s*/, $1);
+            my $packages;
+            for $packages (@pkgs) {
+                my $package;
+                for $package (split(/\s*\|\s*/, $packages)) {
+                    $excluded{$package} = 1;
+                }
+            }
+        }
+
+        if (/^Ignore:\s+(.+)$/) {
+            my @pkgs = split(/\s*,\s*/, $1);
+            my $packages;
+            for $packages (@pkgs) {
+                my $package;
+                for $package (split(/\s*\|\s*/, $packages)) {
+                    # Remove explanations, ie the paranteses at the end.
+                    $package =~ s/\s*\([^\)]*\)\s*$//;
+                    $missing{$package} = 1;
+                }
+            }
+        }
+    }
+    close(TASKFILE);
+    unless ( $taskinfo{$curpkg}{'Architecture'} ) { $taskinfo{$curpkg}{'Architecture'} = "all" ; }
+}
+
+sub print_excluded_packages {
+    print join("\n", sort keys %excluded),"\n";
+}
+
+sub print_available_packages {
+    print join("\n", @wanted),"\n";
+}
+
+sub print_all_pkgs_tasks {
+    my ($seenref, $headerlistref, @tasks) = @_;
+
+    my @headers;
+    if ( $headerlistref ) {
+      @headers = @{$headerlistref};
+    } else {
+      @headers = qw(Depends Recommends Suggests)
+    }
+
+    for my $header (@headers) {
+        print STDERR "  Processing $header\n" if $debug;
+        my %seentask;
+        for my $task (@tasks) {
+            next if $seentask{$task};
+            $seentask{$task} = 1;
+
+            print "# printing $header in $task\n";
+            print STDERR "   Printing $task\n" if $debug;
+
+            # Pick the first available if there are alternatives
+            my @pkgs = uniq($seenref, task_packages($task, $header), $task);
+            print join("\n", @pkgs), "\n" if @pkgs;
+        }
+    }
+}
+
+sub print_all_packages {
+    print STDERR "Printing all packages\n" if $debug;
+#    print join("\n", @wanted, keys %missing),"\n";
+
+    print "# First process the high priority tasks\n";
+    my %seenlist;
+    print_all_pkgs_tasks(\%seenlist, [qw(Depends Recommends)], @priorityorder );
+
+    print "# Next, medium priority tasks tasks\n";
+    print_all_pkgs_tasks(\%seenlist, [qw(Depends Recommends)], @medpriorder );
+
+    print "# Next process all the others, in alphabetic order\n";
+    print_all_pkgs_tasks(\%seenlist, undef, sort keys %taskinfo);
+
+    print "# And last, the alternatives we dropped above\n";
+    print join("\n", uniq(\%seenlist, @wanted, sort keys %missing)),"\n";
+}
+
+sub print_missing_packages {
+    if (%missing) {
+        print STDERR "Missing or avoided packages:\n";
+        my $package;
+        for $package (sort keys %missing) {
+            if (exists $available{$package}) {
+                print STDERR "  $package (v$available{$package} available)\n";
+            } else {
+                print STDERR "  $package\n";
+            }
+        }
+        exit 1 unless $opts{'i'};
+    }
+}
+
+## Additions by Andreas Tille
+
+sub get_priorities {
+    my ($prio, $default) = @_;
+    my @list = () ;
+
+    # if there is no taskcontrolfile every task has the same priority
+    if ( ! stat($taskcontrolfile) ) {
+	if ( ! $default ) { return (); }
+        print STDERR "No task control file found - setting all tasks priority high.\n" if $debug;
+	opendir(DIR, $tasksdir) || die("No tasks directory found.");
+        @list = grep { !/^\./ } readdir(DIR);
+        closedir DIR;
+	return @list;
+    }
+    # read taskcontrolfile and find priorities
+    print STDERR "Reading task control file.\n" if $debug;
+    open(PRIO,$taskcontrolfile) || die("Unable to read task control file.");
+    while (<PRIO>) {
+        chomp ;
+	if ( $_=~/^$prio\s*:\s*([-\w]+)/) {	
+	    push @list,$1;
+        }
+    }
+    close PRIO;
+
+    return @list;
+}
+
+sub cdd_init {
+    # initialise cdd name and other basic stuff
+    unless  ( -d "debian" ) {
+	mkdir("debian") || die "mkdir debian: $!";
+    }
+
+    unless ( -e "debian/control.stub" ) {
+        print STDERR "No template debian/control.stub.  Use test prefix.\n" ;
+    } else {
+        chomp($prefix = `$cdd_dev_dir/cdd-get-names metapackageprefix`) ;
+        $prefix = $prefix . "-" ;
+	$tasksname    = $prefix . "tasks";
+	chomp($cddshortname = `$cdd_dev_dir/cdd-get-names cddshortname`);
+	chomp($cddname      = `$cdd_dev_dir/cdd-get-names cddname`);
+    }
+    if  ( -d "config" && -e "config/control" ) {
+	$hasconfig = 1;
+    }
+}

Added: cdd/tags/cdd/0.4.5/devtools/cdd-get-names
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/devtools/cdd-get-names	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+# Read CDD specific names from debian/control.stub
+#
+# Copyright (C) Andreas Tille <tille at debian.org>
+# License: GPL
+
+# Return codes according to
+# http://epydoc.sourceforge.net/stdlib/posix-module.html
+
+CONTROLFILE=debian/control.stub
+
+GetShortName () {
+    grep '^Source:[[:space:]]*debian-' $CONTROLFILE | \
+	sed 's/^Source:[[:space:]]*debian-//'
+}
+
+if [ ! -e "$CONTROLFILE" ] ; then
+	echo "Missing control file $CONTROLFILE"
+	exit 72   # EX_OSFILE
+fi
+
+if [ "$#" -ne 1 ] ; then
+	echo "Missing argument"
+	echo "Usage: $0 cddname|cddshortname|metapackageprefix"
+	exit 64   #  EX_USAGE
+fi
+
+case "$1" in
+    cddname)
+        grep '^Source:[[:space:]]*debian-' "$CONTROLFILE" | \
+	    sed 's/^Source:[[:space:]]*//'
+	exit 0
+	;;
+    cddshortname)
+	GetShortName
+	exit 0
+	;;
+    metapackageprefix)
+	mprefix=`grep '^Package:[[:space:]]*' "$CONTROLFILE" | \
+	    sed 's/^Package:[[:space:]]*\([[:alnum:]]\+\)-*.*/\1/'`
+	if [ -z $mprefix ] ; then
+	    GetShortName
+	else
+	    echo $mprefix
+	fi
+	exit 0
+	;;
+    *)
+	echo "Unknown argument $1"
+	echo "Usage: $0 cddname|cddshortname|metapackageprefix"
+	exit 64   #  EX_USAGE
+	;;
+esac

Added: cdd/tags/cdd/0.4.5/devtools/cdd-install-helper
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/devtools/cdd-install-helper	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,124 @@
+#!/bin/sh
+
+cdd=`/usr/share/cdd-dev/cdd-get-names metapackageprefix`
+menudir=usr/share/cdd/"$cdd"/menu
+
+SubstCDDName () {
+    sed -e "s/#CDD#/${cdd}/g" \
+        -e "s?\([/ ]\)\(config.templates:*\)?\1${cdd}-\2?" \
+        -e "s/#CDDNAME#/${CDDNAME}/g" /usr/share/cdd/templates/$1 >> \
+	debian/$2
+}
+
+# Make dependency from menu containing packages to the right #CDD#-config version
+version="(>= `dpkg-parsechangelog | grep "^Version:" | sed -e "s/^Version:[[:space:]]\+\([\.0-9]*\)[[:space:]]*/\1/"`)"
+
+# General Task registry, menu registration and post{inst,rm} preparation
+for pkg in `ls tasks | grep -v "^[a-z]*:$*" | grep -v "^$" | sort | uniq` ; do
+    # registration
+    if ! grep -q -w "^Task:" tasks/$pkg ; then
+	echo "Control file template tasks/$pkg does not contain 'Task:' field."
+	# I'm sure there are more clever ways to make the first letter upper case ...
+	# task=`echo $pkg | sed 's/^\(.\).*/\1/' | tr "^[a-z]" "^[A-Z]"``echo $pkg | sed 's/^.//'`
+	# For the moment disable tasksel if there is no "Task:" tag given
+    else
+	task=`grep -w "^Task:" tasks/"$pkg" | sed "s/^Task:[[:space:]]*\([^[:space:]]*\)/\1/"`
+	mkdir -p debian/"$cdd"-"$pkg"/usr/share/cdd/tasks/"$cdd"/
+	echo "$task" > debian/"$cdd"-"$pkg"/usr/share/cdd/tasks/"$cdd"/"$pkg"
+    fi
+
+    # if we provide an extra menu which overrides some menus provided by
+    # the maintainers of the dependand packages move them now to the right
+    # directory
+    [ -d menu ] && [ -d menu/"$pkg" ] && \
+	    if [ `find menu/"$pkg" -maxdepth 1 -name \*.menu | wc -l` -gt 0 ] ; then
+	mkdir -p debian/"$cdd"-"$pkg"/"$menudir"
+	for dep in `find menu/"$pkg" -maxdepth 1 -name \*.menu` ; do
+		cp -a "$dep" debian/"$cdd"-"$pkg"/"$menudir"/`basename "$dep" .menu`
+        done
+    fi
+
+    # Provide a README.Debian in any case
+    mkdir -p debian/"$cdd"-"$pkg"/usr/share/doc/"$cdd"-"$pkg"
+    [ ! -s docs/"$pkg"/README.Debian ] && cp -a /usr/share/cdd/templates/README.Debian debian/"$cdd"-"$pkg"/usr/share/doc/"$cdd"-"$pkg"
+    # Check for documentation of packages (*.txt or *.html) which should be viewed in
+    # case of missing GUI
+    [ -d menu ] && [ -d menu/"$pkg" ] && \
+	    if [ `find menu/"$pkg" -maxdepth 1 -name \*.txt -o -name \*.html | wc -l` -gt 0 ] ; then
+	for dep in `find menu/"$pkg" -maxdepth 1 -name \*.txt -o -name \*.html` ; do
+            # Formerly here was checked, whether this package is really listed in the
+	    # dependencies, with more clever menu handling it is enough to verify
+	    # whether it is mentioned at all in the package relations and the menu
+	    # system cares about whether a sugested package is installed or not
+	    depmenu=`basename ${dep} .txt`
+	    if [ "$depmenu" = `basename ${dep}` ] ; then depmenu=`basename ${dep} .html` ; fi
+	    if ! grep -A 5 "Package: $cdd-$pkg" debian/control | grep -q -w "$depmenu" ; then
+		## echo "Package ${depmenu} seems not to be in dependencies"
+		continue
+	    fi
+	    cp -a "$dep" debian/"$cdd"-"$pkg"/usr/share/doc/"$cdd"-"$pkg"
+	done
+    fi
+
+    # post{inst/rm} template are appended if some extra scripts are provided or just created
+    # an extra postinst has to be saved (*.stub) and restored by the clean target in
+    # debian/rules
+    [ -s debian/"$cdd"-"$pkg".postinst.stub ] && cp debian/"$cdd"-"$pkg".postinst.stub debian/"$cdd"-"$pkg".postinst
+    sed -e "s/#CDD#/${cdd}/g" \
+        -e "s/#PKG#/${cdd}-${pkg}/g" \
+       /usr/share/cdd/templates/postinst >> debian/"$cdd"-"$pkg".postinst
+    sed -e "s/#CDD#/${cdd}/g" \
+        -e "s/#PKG#/${cdd}-${pkg}/g" \
+       /usr/share/cdd/templates/postrm >> debian/"$cdd"-"$pkg".postrm
+done
+
+# if config/config exists use this as general helper script
+if [ -s config/config ] ; then
+  mkdir -p debian/"$cdd"-config/usr/bin
+  mkdir -p debian/"$cdd"-config/usr/share/man/man1
+  cp -a config/config   debian/"$cdd"-config/usr/bin/"$cdd"-config
+  cp -a config/config.1 debian/"$cdd"-config/usr/share/man/man1/"$cdd"-config.1
+
+  # install link to package helper script
+  for pkg in `ls tasks` ; do
+    mkdir -p debian/"$cdd"-"$pkg"/usr/bin
+    mkdir -p debian/"$cdd"-"$pkg"/usr/share/man/man1
+    ln -s "$cdd"-config debian/"$cdd"-"$pkg"/usr/bin/"$cdd"-"$pkg"
+    ln -s "$cdd"-config.1.gz debian/"$cdd"-"$pkg"/usr/share/man/man1/"$cdd"-"$pkg".1.gz
+  done
+fi
+
+# config/conf should really exist for the CDD registry in /etc/cdd
+# currently there is no error message issued if it is missing but
+# this might be reasonable
+if [ -s config/conf ] ; then
+  # Get name of Custom Debian Distribution
+  . config/conf
+  # Config file should set CDDNAME, but if not try to build a useful one
+  if [ _"$CDDNAME" = _"" ] ; then
+    CDDNAME=Debian-`echo ${cdd} | perl -ne 'print "\u\L$_";'`
+  fi
+  # Move templates for user configuration script
+  # In case there is a config postinst template, preserve this
+  [ -s debian/"$cdd"-config.postinst.stub ] && cp debian/"$cdd"-config.postinst.stub debian/"$cdd"-config.postinst
+  for comm in `ls /usr/share/cdd/templates/config.* /usr/share/cdd/templates/apt.conf` ; do
+    commname=`basename $comm`
+    SubstCDDName ${commname} ${cdd}-${commname}
+  done
+  # rename apt.conf.d file 
+  [ -s debian/${cdd}-apt.conf ] && mv debian/${cdd}-apt.conf debian/90${cdd}-config
+  if [ -d debian/po.stub ] ; then
+      cp -a debian/po.stub debian/po
+  else
+      mkdir -p debian/po
+  fi
+  for po in `ls /usr/share/cdd/templates/po/*` ; do
+    poname=`basename $po`
+    SubstCDDName po/${poname} po/${poname}
+  done
+  [ -d debian/po ] && debconf-updatepo
+
+  # Add common config file for ${cdd}
+  mkdir -p debian/"$cdd"-config/etc/cdd/"$cdd"
+  cp -a config/conf debian/"$cdd"-config/etc/cdd/"$cdd"/"$cdd".conf
+fi

Added: cdd/tags/cdd/0.4.5/devtools/rules
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/devtools/rules	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,86 @@
+#!/usr/bin/make -f
+
+# This is a debian/rules file which builds meta packages
+# for a Custom Debian Distribution.
+#
+# Copyright (C) Andreas Tille <tille at debian.org>
+# License: GPL
+
+CDDNAME   := $(shell /usr/share/cdd-dev/cdd-get-names cddname)
+PREFIX    := $(shell /usr/share/cdd-dev/cdd-get-names metapackageprefix)
+CDDMKFILE := /usr/share/cdd-dev/Makefile
+CDD_INSTALL_HELPER := /usr/share/cdd-dev/cdd-install-helper
+
+all:
+	echo $(PREFIX), $(CDDNAME)
+
+INSTALLREADME := $(shell if test -e README ; then echo "-A README"; fi)
+
+debian/control: 
+	$(MAKE) -f $(CDDMKFILE) debian/control
+
+build: 
+	$(MAKE) -f $(CDDMKFILE) all
+	dh_testdir
+
+clean: debian/control
+	dh_testdir
+	dh_testroot
+	$(MAKE) -f $(CDDMKFILE) clean
+
+	# Clear apt-get cache
+	rm -rf tmp
+	# Remove backup files from source tarball
+	rm -f tasks/*~
+	# Remove auto generated post{inst,rm} scripts
+	rm -f debian/$(PREFIX)-*.postinst debian/$(PREFIX)-*.postrm
+	# remove tasksel directory
+	## [ -d tasksel ] && rm -f tasksel/$(PREFIX)-* && rmdir tasksel
+	# remove auto generated files for config package
+	rm -f debian/$(PREFIX)-config.templates debian/$(PREFIX)-config.config \
+	      debian/$(PREFIX)-config.install   debian/$(PREFIX)-config.links  \
+	      debian/90$(PREFIX)-config
+	# remove auto generated debconf template translations
+	rm -rf debian/po
+	# Remove auto generated tasksel descriptions:
+	rm -f $(CDDNAME)-tasks.desc
+
+	dh_clean build-stamp
+
+install: debian/control build
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_installdirs
+	dh_install $(CDDNAME)-tasks.desc usr/share/tasksel
+
+# Build architecture-dependent files here.
+binary-arch: build install
+# We have nothing to do by default.
+
+# Build architecture-independent files here.
+binary-indep: build install
+	dh_testdir
+	dh_testroot
+	dh_installdocs $(INSTALLREADME)
+	dh_installexamples
+	dh_installmenu
+	dh_installcron
+	dh_installman
+	dh_installinfo
+	$(CDD_INSTALL_HELPER)
+	dh_install
+	dh_installdebconf
+	dh_installchangelogs 
+	dh_link
+	dh_strip
+	dh_compress
+	dh_fixperms
+	dh_installdeb
+	dh_shlibdeps
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure debian/control

Added: cdd/tags/cdd/0.4.5/doc/Makefile
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/Makefile	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,84 @@
+## ----------------------------------------------------------------------
+## Makefile : makefile for debiandoc-sgml-doc
+## ----------------------------------------------------------------------
+
+## ----------------------------------------------------------------------
+## Document definitions
+doc_lang	:= en
+doc_name	:= debian-cdd
+doc_sgml	:= $(doc_name).$(doc_lang).sgml
+doc_pdf		:= $(doc_name).$(doc_lang).pdf
+doc_ps		:= $(doc_name).$(doc_lang).ps
+doc_dvi		:= $(doc_name).$(doc_lang).dvi
+doc_txt		:= $(doc_name).$(doc_lang).txt
+doc_info	:= $(doc_name).$(doc_lang).info
+doc_html	:= $(doc_name).html
+pkg             := cdd-doc
+
+## ----------------------------------------------------------------------
+## Package definitions
+pkg_lang	:= en
+
+## ----------------------------------------------------------------------
+## General definitions
+LN		:= /bin/ln -sf
+RMR		:= /bin/rm -fr
+LOCALE          := unset LC_ALL; unset LANG; unset LANGUAGE; 
+
+## ----------------------------------------------------------------------
+# this can and will be overriden by a higher level makefile
+PUBLISHDIR := tille at people.debian.org:public_html/debian-med/talks/paper-cdd
+
+# There is no difference between letter and a4, but a2 for instance works
+PAPERSIZE  := letter
+
+## ----------------------------------------------------------------------
+## Targets
+all:		html
+
+validate: 	$(doc_sgml)
+	# nsgmls -ges -wall $(doc_sgml)
+		nsgmls -wall -E20 -gues $^
+
+html $(doc_html): $(doc_sgml)
+		$(LOCALE) debiandoc2html -l $(doc_lang) -b $(doc_name) -c $^
+		$(LN) index.$(pkg_lang).html $(doc_html)/index.html
+
+txt $(doc_txt): $(doc_sgml)
+		debiandoc2text -l $(doc_lang) $^
+
+ps $(doc_ps): 	$(doc_sgml)
+		debiandoc2latexps  -l $(doc_lang) -p$(PAPERSIZE) $^
+
+pdf $(doc_pdf): $(doc_sgml)
+		$(LOCALE) debiandoc2latexpdf -l $(doc_lang) -p$(PAPERSIZE) $^
+		$(RMR) $(doc_name).$(doc_lang).tpt
+
+dvi $(doc_dvi): $(doc_sgml)
+		debiandoc2latexdvi -l $(doc_lang) -p$(PAPERSIZE) $^
+		$(RMR) $(doc_name).$(doc_lang).out
+
+info $(doc_info): $(doc_sgml)
+		debiandoc2info -l $(doc_lang) $^
+
+publish: 	$(doc_html)/index.html
+		rsync --rsh="ssh -i ${HOME}/.ssh/id_dsa-debian" -azult --delete $(doc_html) $(PUBLISHDIR)
+		[ -s debian-cdd.en.pdf ] && rsync --rsh="ssh -i ${HOME}/.ssh/id_dsa-debian" -azult $(doc_pdf) $(PUBLISHDIR)
+
+clean:
+		$(RMR) $(doc_html) $(doc_pdf) $(doc_txt) $(doc_ps) $(doc_dvi) $(doc_info)
+		$(RMR) $(doc_name).$(doc_lang).tpt $(doc_name).$(doc_lang).out
+		find . -name "*~" -exec $(RMR) \{\} \;
+
+dist:
+	target=$(pkg)-`cat VERSION` ; \
+	mkdir -p $${target} ; \
+	rsync -azult Makefile *.sgml en debian --exclude=CVS --exclude=.svn $${target} ; \
+	GZIP=-9 tar -czf $(pkg)_`cat VERSION`.tar.gz $${target} ; \
+	rm -rf $${target}
+
+distclean:
+		make clean
+		rm -f $(pkg)_`cat VERSION`.tar.gz
+
+.PHONY: all publish clean distclean validate

Added: cdd/tags/cdd/0.4.5/doc/TODO
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/TODO	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,4 @@
+agnula -> rename
+
+debian-live URL
+

Added: cdd/tags/cdd/0.4.5/doc/debian-cdd.en.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/debian-cdd.en.sgml	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,60 @@
+<!DOCTYPE debiandoc public "-//DebianDoc//DTD DebianDoc//EN"
+[
+    <!-- textual data entities -->
+    <!entity titletoc		system "en/00_titletoc.sgml">
+    <!entity ch-introduction    system "en/01_introduction.sgml">
+    <!entity ch-about		system "en/02_about.sgml">
+    <!entity ch-general-ideas	system "en/03_general_ideas.sgml">
+    <!entity ch-existing-cdds	system "en/04_existing_cdds.sgml">
+    <!entity ch-inside          system "en/05_inside.sgml">
+    <!entity ch-technology	system "en/06_technology.sgml">
+    <!entity ch-starting        system "en/07_starting.sgml">
+    <!entity ch-todo            system "en/08_todo.sgml">
+    <!entity ap-devel           system "en/A_devel.sgml">
+    <!entity ap-quickintro      system "en/B_quickintro.sgml">
+    <!entity ap-bts             system "en/C_bts.sgml">
+]
+>
+
+<debiandoc>
+
+  <book id="debiandoc-sgml">
+
+    &titletoc;
+
+    &ch-introduction;
+    &ch-about;
+    &ch-general-ideas;
+    &ch-existing-cdds;
+    &ch-inside;
+    &ch-technology;
+    &ch-starting;
+    &ch-todo;
+
+    &ap-devel;
+    &ap-quickintro;
+    &ap-bts;
+
+  </book>
+
+</debiandoc>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:nil
+sgml-parent-document:nil
+sgml-declaration:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+

Added: cdd/tags/cdd/0.4.5/doc/en/00_titletoc.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/00_titletoc.sgml	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,87 @@
+<titlepag>
+    
+  <title>Custom Debian Distributions</title>
+  <!-- subtitle> Preparing Debian for special user groups </subtitle -->
+    
+<author>
+  <name>Andreas Tille</name>
+  <email>tille at debian.org</email>
+</author>
+
+<version><date></version>
+
+<abstract>
+This paper is intended for people who are interested in the philosophy
+of Custom Debian Distributions, and the technique that is used to
+manage those projects.
+It is explained in detail why these are not forks from Debian, but reside
+completely inside the Debian GNU/Linux distribution, and which
+advantages can be enjoyed by taking this approach.  The concept of
+meta-packages and user role based menus is explained.  In short: This
+document describes why Custom Debian Distributions are important to
+the vitality and quality of Debian.
+</abstract>
+
+  <copyright>
+    <copyrightsummary>
+      Copyright &copy; 2004 - 2007 Andreas Tille
+    </copyrightsummary>
+
+    <p>
+      This manual is Free Software; you may 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.0, or
+      (at your option) any later version.
+    </p>
+
+    <p>
+      This is distributed in the hope that it will be useful, but
+      <em>without any warranty</em>; without even the implied warranty
+      of merchantability or fitness for a particular purpose.  See the
+      GNU General Public License for more details.
+    </p>
+
+    <p>
+      A copy of the GNU General Public License is available
+      on the World Wide Web at <url
+      id="http://www.gnu.org/copyleft/gpl.html" name="&urlname">.  You
+      can also obtain it by writing to the Free Software Foundation,
+      Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+    </p>
+    
+    <p>
+      You can find the source of this article 
+      <url id="http://svn.debian.org/wsvn/cdd/cdd/trunk/cdd/doc/"
+           name="in the Subversion repository at svn.debian.org">.
+      It is also available as Debian package <package>cdd-doc</package>.
+    </p>
+
+    <p>
+      A <url id="../debian-cdd.en.pdf"
+           name="printable version in PDF format"> will be built
+           from time to time.
+    </p>
+
+  </copyright>
+</titlepag>
+
+<toc detail="sect">
+
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->

Added: cdd/tags/cdd/0.4.5/doc/en/01_introduction.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/01_introduction.sgml	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,58 @@
+<chapt id="introduction">
+  <heading>Introduction</heading>
+<p>
+  A general purpose operating system like Debian can be the
+  perfect solution for many different problems.  Whether
+  you want Debian to work for you in the classroom, as a
+  games machine, or in the office, each problem area has its
+  own unique needs and requires a different subset of
+  packages tailored in a different way.
+</p>
+<p>
+Custom Debian Distributions (formerly merged together with Debian Internal
+Projects) provide support for special user interests.  They implement a new
+approach to cover interests of specialised users, who might be
+children, lawyers, medical staff, visually impaired people, etc.  Of late,
+several Custom Debian Distributions have evolved.  The common goal of those is
+to make installation and administration of computers for their target users as
+easy as possible, and to serve in the role as the missing link between software
+developers and users well.
+</p>
+<p>
+Using the object oriented approach as an analogy, if Debian as a whole is an
+object, a Custom Debian Distribution is an instance of this object that
+inherits all features while providing certain properties.
+</p>
+<p>
+So the Debian project releases the Debian Distribution and other
+Custom Debian Distributions.  In contrast to this, there might be some
+other Debian related Projects, either external or non-official, which may
+create "derivative distributions".  But these are not the 
+responsibility of the Debian project.
+</p>
+<p>
+The effort might fall into the same category as the
+<url id="http://platform.progeny.com/componentized-linux/"
+name="Componentized Linux"> of Progeny, but there are certain
+differences that will be outlined in this paper.
+</p>
+
+</chapt>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->

Added: cdd/tags/cdd/0.4.5/doc/en/02_about.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/02_about.sgml	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,237 @@
+<chapt id="about">
+  <heading>What are Custom Debian Distributions?</heading>
+
+  <sect id="debian">
+  <heading>What is Debian?</heading>
+
+<p>
+ The core of an operating system is a piece of software that
+ interacts with the hardware of the computer, and provides basic
+ functionality for several applications.  On Linux based systems, the
+ so-called kernel provides this functionality, and the term Linux just
+ means this core without those applications that provide the
+ functionality for users.  Other examples are the Hurd, or the flavours
+ of the BSD kernel.
+</p>
+<p>
+ Many applications around UNIX-like kernels are provided by the
+ <url id="http://www.gnu.org/" name="GNU"> system.  That is why Linux
+ based operating systems are described as GNU/Linux systems.  The GNU
+ tools around the Linux kernel build a complete operating system.
+</p>
+<p>
+ Users do not need only an operating system.  They also need certain
+ applications like web servers, or office suites.  A
+ <em>distribution</em> is a collection of software packages around the
+ GNU/Linux operating system that satisfies the needs of the target user
+ group.  There are general distributions, which try to support all
+ users, and there are several specialised distributions, which each
+ target a special group of users.
+</p>
+<p>
+ <em>Distributors</em> are those companies that are building these
+ collections of software around the GNU/Linux operating system.
+ Because it is Free Software, the user who buys a distribution pays for
+ the service that the distributor is providing.  These services might
+ be:
+ <list>
+ <item>Preparing a useful collection of software around GNU/Linux.</item>
+ <item>Caring for smooth installation that the target user is able to
+       manage.</item>
+ <item>Providing software updates and security fixes.</item>
+ <item>Writing documentation and translations to enable the user to use
+       the distribution with maximum effect.</item>
+ <item>Selling Boxes with ready to install CDs and printed
+       documentation.</item>
+ <item>Offering training and qualification.</item>
+ </list>
+</p>
+<p>
+ Most distributors ship their distribution in binary packages.  Two
+ package formats are widely used:
+ <taglist>
+  <tag>RPM (RedHat Package Manager)</tag>
+   <item>which is supported by RedHat, SuSE, Mandrake and others.
+  <tag>DEB (Debian Package)</tag>
+   <item>used by Debian and derived distributions.
+   </item>
+ </taglist>
+ All GNU/Linux distributions have a certain amount of common ground,
+ and the <url id="http://www.linuxbase.org/" name="Linux Standard
+ Base"> (LSB) is attempting to develop and promote a set of standards
+ that will increase compatibility among Linux distributions, and enable
+ software applications to run on any compliant system.
+</p>
+<p>
+ The very essence of any distribution, (whether delivered as RPMs, DEBs,
+ Source tarballs or ports) is the choice of <em>policy statements</em>
+ made (or not made, as the case may be) by the creators of the distribution.
+</p>
+<p>
+ <em>Policy statements</em> in this sense are things like
+ "configuration files live in
+ <file>/etc/$package/$package.conf</file>, logfiles go to
+ <file>/var/log/$package/$package.log</file> and the documentation
+ files can be found in <file>/usr/share/doc/$package</file>."
+</p>
+<p>
+ The policy statements are followed by the tool-chains and
+ libraries used to build the software, and the lists of dependencies, which
+ dictate the prerequisites and order in which the software has to be
+ built and installed. (It's easier to ride a bicycle if you put the wheels
+ on first. ;-) )
+</p>
+<p>
+ It is this <em>adherence to policy</em> that causes a distribution
+ to remain consistent within its own bounds. At the same time, this is
+ the reason why packages can not always be safely installed across
+ distribution boundaries. A SuSE <file>package.rpm</file> might not
+ play well with a RedHat <file>package.rpm</file>, although the
+ packages work perfectly well within their own distributions. A
+ similar compatability problem could also apply to packages from the
+ same distributor, but from a different version or generation of the
+ distribution.
+</p>
+<p>
+<comment>AT: The context is somehow missing here.</comment>
+ As you will see later in more detail, Custom Debian Distributions are
+ just a modified ruleset for producing a modified (specialised)
+ version of Debian GNU/Linux. 
+</p>
+<p>
+ A package management system is a very strong tool to manage software
+ packages on your computer. A large amount of the work of a
+ distributor is building these software packages.
+</p>
+<p>
+ Distributors you might know are 
+  <url name="Mandrake" id="http://www.mandrakelinux.com/">, 
+  <url name="RedHat" id="http://www.redhat.com/">, 
+  <url name="SuSE" id="http://www.suse.com/">
+  (now owned by <url name="Novell" id="http://www.novell.com/linux/">) 
+  and others.
+</p>
+<p>
+ <url id="http://www.debian.org" name="Debian"> is just one of them.
+</p>
+
+<p>
+Well, at least this is what people who do not know Debian well might
+think about it.  But, in fact, Debian is a different kind of
+distribution ...
+</p>
+</sect>
+
+<sect id="whatdebian">
+  <heading>What is Debian? (next try)</heading>
+
+<p>
+The Debian Project is an association of individuals who have made
+common cause to create a free operating system. This operating system
+that we have created is called <strong>Debian GNU/Linux</strong>,
+or simply Debian for short.
+</p>
+<p>
+Moreover, work is in progress to provide Debian of kernels other than
+Linux, primarily for the Hurd.  Other possible kernels are the
+flavours of BSD, and there are even people who think about ports to MS
+Windows.
+</p>
+<p>
+All members of the Debian project are connected in a <url name ="web of
+trust" id="http://people.debian.org/~edward/globe/earthkeyring/">,
+which is woven by signing GPG keys.  One requirement to become a
+member of the Debian project is to have a GPG key signed by a Debian
+developer.  Every time one Debian developer meets another developer
+for the first time, they sign each other's keys.  In this way, the web
+of trust is woven.
+</p>
+</sect>
+
+<sect id="difference">
+  <heading>Differences from other distributions</heading>
+
+<p>
+<list>
+  <item>Debian is not a company, but an organisation.</item>
+  <item>It does not sell anything.</item>
+  <item>Debian members are volunteers.</item>
+  <item>Maintainers are working on the common goal:
+     to build the best operating system they can achieve.</item>
+  <item>Debian maintains the largest collection of ready-to-install Free
+        Software on the Internet.</item>
+  <item>There are two ways to obtain Debian GNU/Linux:
+   <enumlist>
+    <item>Buy it from some <em>other</em> distributor on
+        CD. Perhaps the correct term would be
+        <em>re</em>distributor. Because Debian is free, anybody can
+        build his own distribution based on it, sell CDs, and even
+        add new features, such as printed documentation, more software,
+        support for different installers and more.
+    </item>
+    <item>Download Debian from the web for free.</item>
+   </enumlist>
+     The latter is the common way, and there are really great tools
+     to do it this way.  Certainly it is always possible to copy Debian
+     from a friend.
+  </item>
+</list>
+</p>
+ </sect>
+
+<sect id="CDD">
+  <heading>Custom Debian Distributions</heading>
+
+<p>
+Debian contains nearly 10000 binary packages, and this number is
+constantly increasing.  There is no single user who needs all these
+packages (even if conflicting packages are not considered).
+</p>
+<p>The normal user is interested in a subset of these packages.  But
+how does the user find out which packages are really interesting?
+</p>
+<p>
+One solution is provided by the <package>tasksel</package> package.  It
+provides a reasonable selection of quite general tasks that can be
+accomplished using a set of packages installed on a Debian GNU/Linux system.
+But this is not really fine grained, and does not address all of the needs of
+user groups with special interests.
+</p>
+<p>
+<em>Custom Debian Distributions</em> (formerly known as Debian Internal
+Projects) try to provide a solution for <em>special groups of target
+users with different skills and interests</em>.  
+<!-- BA: Somehow this "They are" snuck in.  It is not grammatically correct.
+     I have reverted it to my wording.  If you think it still needs fixing,
+     please fix it in a way that obeys the rules of English grammar. :) -->
+Not only do
+they provide handy collections of specific program packages, but they
+also ease installation and configuration for the intended purpose.
+</p> 
+<p>
+To clarify a common misunderstanding: Custom Debian Distributions are
+<strong>not forks</strong> from Debian.  They are completely included,
+and if you obtain the complete Debian GNU/Linux distribution, you have
+all available Custom Debian Distributions included.
+</p>
+</sect>
+
+</chapt>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->

Added: cdd/tags/cdd/0.4.5/doc/en/03_general_ideas.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/03_general_ideas.sgml	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,342 @@
+<chapt id="general">
+  <heading>General ideas</heading>
+
+
+ <sect id="lookbeyond">
+ <heading>Looking beyond</heading>
+
+ <p>
+ Commercial Linux distributors sell certain products that try to
+ address special user needs.
+
+ <taglist>
+  <tag>Enterprise solutions</tag>
+   <item>
+       <list>
+	 <item>Corporate Server - Mandrake</item>
+         <item>Advanced Server - RedHat</item>
+         <item>Enterprise Server - SuSE</item>
+       </list>
+   </item>
+  <tag>Small Office and Home Office (SOHO)</tag>
+  <item>There are a couple of workstation or home editions, as well as
+        office desktops built by several GNU/Linux distributors.</item>
+  <tag>Special task products</tag>
+  <item>
+    <taglist>
+      <tag>Mail server</tag>
+        <item>SuSE Linux Openexchange Server</item>
+      <tag>Firewall</tag>
+        <item>Multi Network Firewall - Mandrake, SuSE Firewall on CD,
+            ...</item>
+      <tag>Cluster</tag>
+        <item>Mandrake Clustering</item>
+      <tag>Content Management System</tag>
+        <item>RedHat</item>
+      <tag>Portal Server</tag>
+        <item>RedHat</item>
+    </taglist>
+  </item>
+</taglist>
+
+This is only a small set of examples of commercial GNU/Linux
+distributors addressing specific user interests with certain
+products.
+</p>
+<p>
+Debian solves this problem with
+<strong>Custom Debian Distributions</strong>.
+</p>
+
+ </sect>
+
+  <sect id="motivation">
+  <heading>Motivation</heading>
+
+  <sect1 id="userprofile">
+   <heading>Profile of target users</heading>
+
+<p>
+The target user of a Custom Debian Distribution may be a specialist
+of a certain profession, (e.g. a doctor or lawyer,) a
+person who has not (yet) gathered a certain amount of computer
+knowledge, (e.g. a child,) or a person with disabilities (e.g.
+a visually or hearing impaired person.)  Moreover, the customisation
+might deal with peculiarities of certain regions where users have needs
+that differ from Debian as a whole.
+</p>
+<p>
+It is not unusual for these target users to be less technically
+competent than the stereotypical Linux user.  These people are 
+often not interested in the computer for its own sake, but just
+want it to work for them.  Imagine the frustration of a doctor who
+has to move the focus of interest from the patient to his stupid
+computer that does not work as expected.
+</p>
+<p>
+Because of limited knowledge or time, the target user is usually unable to
+install upstream programs.  This means that in the first place, they must find
+out which software packages in their distribution might serve for a certain
+problem.  The next step would be to download and install the packages they
+choose, perhaps requiring a certain amount of configuration effort.  This
+problem is nearly impossible for a user with limited technical competence
+and perhaps poor English language comprehension, which prevents the user from
+understanding the installation manual.
+</p>
+<p>
+The language barrier in this field is an important issue, because we
+are targeting everyday users who are not compelled to learn English,
+like Free Software developers are, for everyday communication.  So the
+installation process has to involve the least possible user
+interaction, and any such interaction has to be internationalised.
+</p>
+<p>
+Furthermore, most target users have no or little interest in
+administration of their computer.  In short, the optimal situation
+would be that he would not even notice the existence of the computer,
+but just focus on using the application to accomplish the task at hand.
+</p>
+<p>
+Common to all groups of target users is their interest in a defined
+subset of available Free Software.  None of them would like to spend
+much time searching for the package that fits his interest.
+Instead, the target user would prefer to immediately and effortlessly
+locate and access all material relevant to solving his own problems.
+</p>
+<p>
+There is an absolute need for easy usage of the programs.  This is not
+to say users expect to not have to learn to use the software.  Adults 
+generally accept that they must spend a reasonable amount of time in
+learning how to use a piece of software before they can do something
+useful and productive with it.  But a simple-to-learn
+environment greatly enhances the value of the software, and if you
+consider children as target users, they just want to start using it
+right away without reading any documentation.
+</p>
+<p>
+The more important part of the request for easy usage is a
+professional design that is functional and effective.  To accomplish
+this, the programmers need expert knowledge, or at least a quick
+communication channel to experts to learn more about their
+requirements.  One task for Custom Debian Distributions is to bring
+programmers and experts who will use those special programs together.
+</p>
+<p>
+Last, but not least, we find certain requirements beyond just which packages
+are provided in each target user group.  These may differ between different
+Custom Debian Distributions.  For instance, while a doctor has to protect his
+database against snooping by outside attackers, the privacy risk for a child's
+system are of lesser importance.  Thus, the Debian Junior project cares more
+for ensuring that the user himself does not damage the desktop environment
+while playing around with it than about remote attacks.  So we find a "defined
+security profile" for each single Custom Debian Distribution.
+</p>
+</sect1>
+
+  <sect1 id="adminprofile">
+   <heading>Profile of target administrators</heading>
+
+<p>
+In the field that should be covered by Custom Debian Distributions, we
+have to face also some common problems for system administrators.  Often
+they have limited time in which they must serve quite a number of computers,
+and thus they are happy about each simplification of the administration
+process.  The time required to make special adaptations for the intended
+purpose has to be reduced to a minimum.
+</p>
+<p>
+So, administrators are looking for timesaving in repetitive
+tasks.  While this is a common issue for each general GNU/Linux
+distribution, this could have certain consequences in the special
+fields Custom Debian Distributions want to address.
+</p>
+<p>
+Another problem administrators face is that they are often not experts in
+their clients' special field of work.  Thus, they may need some specialist
+knowledge to explain the use of special programs to their users, or at
+least need to be able to communicate well with the experts about their
+special needs, and how the software can be used to address them.
+</p>
+</sect1>
+
+</sect>
+
+<sect id="status">
+ <heading>Status of specialised Free Software</heading>
+
+<p>
+Programs like a web server, or a mail user agent are used by many
+different users.  That is why many gifted programmers feel obliged for
+this kind of Free Software - they just need it for their own.  So you
+normally find a fast, growing community around Free Software packages
+that have a wide use.  This is different for specialised software.
+</p>
+<p>
+In this context, the term "specialised software" refers to the kind
+of software that is needed by some experts for their job.  This might
+be a practice management system that is used by doctors, a graphical
+information system (GIS) that is used by geographers, a screen reader
+that helps blind people to work with the computer, etc.  The
+difference between such software and widely used software like office
+suites is that the user base is relatively small.  This is
+also true for certain software that supports special localisation
+issues.
+<list>
+ <item>
+Specialist software is used only by a limited set of users (i.e. the
+specialists).  There exists a set of software tools that work perfectly in the
+environment where they were developed.  If the developers catch the idea of
+Free Software, and just release this software as-is, people in the new, broader
+user community often run into trouble getting it to work in their environment.
+This happens because the developers did not really care about a robust
+installation process that works outside their special environment.  As well,
+installation instructions are often badly written, if they exist at all. But
+these problem can be easily solved by shipping the software as policy-compliant
+binary packages, which not only ease installation, but also require
+documentation to be included.  Thus, mere inclusion in Debian benefits the whole
+user base of any specialised software.
+</item>
+<item>
+The trouble often continues in the maintenance of the installed software.
+</item>
+<item>
+When it comes to the usage of the specialist software, it often happens that it
+perfectly fits the needs of the developer who wrote it for his own purposes,
+and who is familiar with its quirks, but in many cases such software does not
+comply with ergonomic standards of user interfaces.
+</item>
+<item>
+Several existing programs that might be useful for specialists are
+not really free in the sense of the <url
+id="http://www.debian.org/social_contract#guidelines" name="Debian
+Free Software Guidelines (DFSG)">. Programs that are incompatible
+with the DFSG cannot be included in Debian.  This is possibly a
+drawback for those programs, because they could profit by spreading
+widely on the back of Debian over the whole world.
+</item>
+<item>
+A certain number of programs are developed at universities by
+students or graduates. Once these people leave the university, the programs
+they developed might be orphaned; <em>i.e.</em>, not actively maintained
+anymore.  If their licenses are too restrictive, it may be impossible
+for anyone else to take over; sticking to
+<comment>AT: We should find a way to avoid printing the URL in PDF output.</comment>
+<url id="http://www.debian.org/social_contract#guidelines"
+name="DFSG">-free licenses avoids that problem.
+</item>
+<item>
+In special fields, often "typical" (not necessarily Intel-based)
+hardware architectures are used.  Debian currently runs on 11
+different architectures, and automatic build servers normally compile
+software packages as necessary.  If auto-builders for other 
+architectures show problems, Debian maintainers will normally fix them,
+and send the original authors a patch.  Moreover, users can report
+run-time problems via the 
+<url id="http://www.debian.org/Bugs/" name="Debian Bug Tracking System">.
+</item>
+<item>
+Many programs that are written from scratch use their own
+non-standard file formats.  However, it is often important for
+programs to be able to share data with each other.
+</item>
+<item>
+Often there are several programs that try to solve identical or similar
+problems. The <url
+id="http://people.debian.org/~tille/debian-med/talks/paper/debian-med.html"
+name="paper about Debian-Med"> illustrates this in detail for the
+problem of medical practice management.  Normally, all these programs
+take very interesting approaches but all of them have certain
+drawbacks.  So, joining programmers' forces might make sense here.
+</item>
+<item>
+Sometimes the tools or back-ends used in Free Software are not
+appropriate for such applications.  For instance, sometimes
+database servers that do not use transactions are used to store
+medical records, which is completely unacceptable.  Other programs use web
+clients as their front-end, which is not really good for quick (mouse-less)
+usage, a great shortcoming for repetitive tasks.
+</item>
+</list>
+</p>
+</sect>
+
+  <sect id="general_problem">
+   <heading>General problem</heading>
+<p>
+Free Software development is a kind of evolutionary process. It needs a
+critical mass of supporters, who are:
+<list>
+  <item>programmers <em>and</em></item>
+  <item>users</item>
+</list>
+Because specialised software has a limited set of users, (specialists,)
+this results in a limited set of programmers.
+</p>
+<p>
+Debian wants to attract both groups to get it working.
+</p>
+<p>
+<strong>Debian is the missing link between upstream developers and users.</strong>
+</p>
+</sect>
+
+  <sect id="philosophy">
+   <heading>Custom Debian Distributions from philosophical point of view</heading>
+<p>
+Debian currently grows in several directions:
+
+<list>
+    <item>Number of involved people</item>
+    <item>Number of packages</item>
+    <item>Number of architectures</item>
+    <item>Number of bugs</item>
+    <item>Number of users</item>
+    <item>Number of derivatives</item>
+    <item>Time span between releases</item>
+</list>
+
+So several features are changing at different rates their quantity.
+According to Hegel a change of quantity leads into a change in
+quality.  That means that Debian will change at a certain point in
+time (or over a certain time span) its quality.
+</p>
+<p>
+"To determine at the right moment the critical point where
+ quantity changes into quality is one of the most important and
+ difficult tasks in all the spheres of knowledge." (Trotzki) This
+ might mean that we just passed the point in time when Debian changed
+ its quality.  At one point we even observed a change once the package
+ pool system was implemented to cope with the increased number of
+ packages while trying to reduce the time span between releases. Even
+ if the plan to increase the frequencies of releases failed Debian
+ became a new quality.  People started using the <file>testing</file>
+ distribution even in production which was not really intended and in
+ a consequence even security in <file>testing</file> was implemented
+ for Sarge.
+</p>
+<p>
+According to Darwin evolution happens through quantitative
+transformations passing into qualitative.  So Debian has to evolve and
+to cope with the inner changes and outer requirements to survive in
+the Linux distribution environment.
+</p>
+</sect>
+</chapt>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->

Added: cdd/tags/cdd/0.4.5/doc/en/04_existing_cdds.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/04_existing_cdds.sgml	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,512 @@
+<chapt id="existing">
+  <heading>Existing Custom Debian Distributions</heading>
+
+  <sect id="debian-jr">
+  <heading>Debian Junior: Debian for children from 1 to 99</heading>
+
+<p>
+<taglist>
+  <tag>Start</tag>
+   <item>beginning of 2000</item>
+  <tag>URL</tag>
+   <item><url name="Debian Jr." id="http://www.debian.org/devel/debian-jr"></item>
+  <tag>Mailing list</tag>
+   <item><url name=" debian-jr at lists.debian.org" id="http://lists.debian.org/debian-jr/"></item>
+  <tag>Initiator</tag>
+   <item>Ben Armstrong <email>synrg at debian.org</email></item>
+  <tag>Release</tag>
+   <item>Debian 3.0 (Woody)</item>
+  <tag>Goals</tag>
+   <item>
+    <list>
+     <item>To make Debian an OS that children of all ages will <em>want</em>
+           to use, preferring it over the alternatives.</item>
+     <item>To care for those applications in Debian suitable for children,
+           and ensure their quality, to the best of our abilities.
+     <item>To make Debian a playground for children's enjoyment and
+           exploration.</item>
+    </list>
+   </item>
+
+</taglist>
+The main target is young children.  By the time children are teenaged, they
+should be comfortable with using Debian without any special modifications.
+</p>
+<p>
+Debian Jr. was the first Custom Debian Distribution.  In fact, at the time this
+project was created, the idea of Custom Debian Distributions was born, although then,
+we used the term "internal project".  Over time, this name was changed because
+it was too broad, as it was equally descriptive of a number of quite different
+projects, such as IPv6 and QA.
+</p>
+<p>
+Debian Jr. not only provides games, but is also concerned about their quality
+from a child's perspective.  Thus, games that are regarded as not well suited
+to young children are omitted.  Moreover, choices are made about which packages
+are best suited for children to use for various other activities and tasks that
+interest them.  This includes, for example, simple text processing, web browsing
+and drawing.
+</p>
+</sect>
+
+
+  <sect id="debian-med">
+  <heading>Debian-Med: Debian in Health Care</heading>
+
+<p>
+<taglist>
+  <tag>Start</tag>
+   <item><url name="beginning of 2002" id="http://lists.debian.org/debian-devel/2002/01/msg01730.html"></item>
+  <tag>URL</tag>
+   <item><url name="Debian-Med" id="http://www.debian.org/devel/debian-med"></item>
+  <tag>Mailing list</tag>
+   <item><url name=" debian-med at lists.debian.org" id="http://lists.debian.org/debian-med/"></item>
+  <tag>Initiator</tag>
+   <item>Andreas Tille <email>tille at debian.org</email></item>
+  <tag>Release</tag>
+   <item>Sarge</item>
+  <tag>Goals</tag>
+   <item>
+    <list>
+     <item>To build an integrated software environment for all medical tasks.</item>
+     <item>To care especially for the quality of program packages in the field of medicine 
+           that are already integrated within Debian.</item>
+     <item>To build and include in Debian packages of medical software that are missing
+           in Debian.</item>
+     <item>To care for a general infrastructure for medical users.</item>
+     <item>To make efforts to increase the quality of third party Free Software
+           in the field of medicine.</item>
+    </list>
+   </item>
+</taglist>
+
+</sect>
+
+  <sect id="debian-edu">
+  <heading>Debian Edu: Debian for Education</heading>
+
+<p>
+<taglist>
+  <tag>Start</tag>
+   <item>Summer of 2002, since 2003 merged with SkoleLinux, which is now
+   synonymous with Debian Edu</item>
+  <tag>URL</tag>
+   <item><url name="Debian Edu Wiki"
+   id="http://wiki.debian.net/?DebianEdu"></item>
+  <tag>Mailing list</tag>
+   <item><url name=" debian-edu at lists.debian.org" id="http://lists.debian.org/debian-edu/"></item>
+  <tag>Former Initiator</tag>
+   <item>Raphaël Hertzog <email>hertzog at debian.org</email></item>
+  <tag>Now responsible</tag>
+   <item>Petter Reinholdtsen <email>pere at hungry.com</email></item>
+  <tag>Release</tag>
+   <item>Sarge</item>
+  <tag>Goals</tag>
+   <item>
+    <list>
+     <item>To make Debian the best distribution available for educational
+           use.</item> 
+     <item>Provide a ready to run classroom installation with free
+           educational software.  An automatically installed server 
+           provides net-boot services for disk-less thin clients and
+           all necessary applications for educational use.</item>
+     <item>To federate many initiatives around education, which are
+           partly based on forks of Debian.</item>
+     <item>To continue the internationalisation efforts of SkoleLinux.
+           </item> 
+     <item>To focus on easy installation in schools.</item>
+     <item>To cooperate with other education-related projects (like 
+           <url id="http://schoolforge.net/" name="Schoolforge">,
+           <url id="http://www.ofset.org/" name="Ofset">, 
+           <url id="http://edu.kde.org/" name="KdeEdu">).</item>
+    </list>
+   </item>
+</taglist>
+
+This project started with the intention to bring back into Debian a fork from
+Debian that was started by some people in France.  Because they had some
+time constraints, the people who initially started this effort
+handed over responsibility to the Norwegian <url name="Skolelinux"
+id="http://www.skolelinux.org">, which is currently more or less
+identical to Debian Edu.
+</p>
+<p>
+The Debian Edu project gathered special interest in Spain because
+there are derived Debian distributions from this country that are
+intended to be used in schools.  For instance there are: 
+  <taglist>
+    <tag><url id="http://www.linex.org/" name="LinEX"></tag>
+     <item><p>A Debian derivative distribution used in all schools in
+           Extremadura.</p>
+           <p>Currently a fruitful cooperation between Debian Edu and
+           LinEX is established. 
+           </p>
+     </item>
+    <tag><url id="http://www.lliurex.net/" name="LliureX"></tag>
+     <item>A Debian derivative distribution in development to be used in
+           schools in Valencia. The goal is to integrate as much as
+    <!-- [BA] This is a difficult passage to interpret.  What does "integrate
+         as much as possible as a CDD" mean?  Does it mean they mean to literally
+	 produce a CDD (impossible if they remain a derivative)?  Or does it mean
+	 they are going to "give back" their work into Debian so it could be
+	 incorporated into a CDD (debian-edu itself?)  Or something else?
+         [AT] More or less something else.  They have not really
+         settled down what to do and how to proceed which I wanted to 
+         say by "in development".  I hope they will follow the
+         Debian Edu way (which I regard as a very clever solution as
+         close as possible but they have to respect local government
+         issues and perhaps need some stuff which can not be
+         integrated. We have to wait a little bit until they have
+         found a decision.
+      -->
+	   possible as a Custom Debian Distribution.</item>
+    <tag><url id="http://www.guadalinex.org/" name="Guadalinex"></tag>
+     <item>This distribution is not only related to education, but might
+           try also to integrate what they have produced back into Debian.</item>
+  </taglist>
+</p>
+</sect>
+
+  <sect id="demudi">
+  <heading>DeMuDi: Debian Multimedia Distribution</heading>
+
+<p>
+<taglist>
+  <tag>Start</tag>
+   <item>Currently not announced as an official Custom Debian
+         Distribution, but intends to integrate back.  DeMuDi is part of the
+	 <url name="Agnula" id="http://www.agnula.org/"> project (founded by European
+         Community) (since 2000).</item>
+  <tag>URL</tag>
+   <item><url name="Demudi"
+   id="http://www.agnula.org/"></item>
+  <tag>Initiator</tag>
+   <item>Marco Trevisani <email>marco at centrotemporeale.it</email></item>
+  <tag>Goals</tag>
+   <item>
+    <list>
+     <item>To bring back this fork into Debian.</item>
+     <!-- [BA] This is not a goal.  However, I don't know how to fix it.  The
+          DeMuDi site was no help, as I couldn't find goals for the project listed
+	  there.  Perhaps the point should just be stricken?
+          [AT] I just wanted to express the fact that I got the word
+          that the first meta-packages are in preparation by Free Enkanayaka.
+       -->
+     <item>Oriented toward music and multimedia.</item>
+     <item>To make GNU/Linux a platform of choice for the musician
+           and the multimedia artist.</item>
+    </list>
+   </item>
+</taglist>
+
+The initiator is not yet a Debian developer, but it is possible to work on
+Debian without being an official developer.
+</p>
+</sect>
+
+<sect id="debian-gis">
+  <heading>Debian-GIS: Geographical Information Systems</heading>
+<p>
+<taglist>
+  <tag>Start</tag>
+   <item><url name="October 2004" id="http://lists.debian.org/debian-devel-announce/2004/10/msg00007.html"</item>
+  <tag>URL</tag>
+   <item><url name="DebianGIS Wiki"
+   id="http://wiki.debian.org/DebianGis"></item>
+  <tag>Mailing list</tag>
+   <item><url name="user and developer list" id="http://wiki.debian.org/DebianGis/MailingLists"></item>
+  <tag>Initiator</tag>
+   <item>Francesco P. Lovergine <email>frankie at debian.org</email></item>
+</taglist>
+</p>
+</sect>
+
+<sect id="debichem">
+  <heading>DebiChem: Debian for Chemestry</heading>
+
+<p>
+<taglist>
+  <tag>Start</tag>
+   <item>October 2004</item>
+  <tag>URL</tag>
+   <item><url name="Debichem Alioth page"
+   id="http://alioth.debian.org/projects/debichem/"></item>
+  <tag>Mailing list</tag>
+   <item><url name="debichem-users at lists.alioth.debian.org" id="http://lists.alioth.debian.org/mailman/listinfo/debichem-users"></item>
+  <tag>Initiator</tag>
+   <item>Michael Banck <email>mbanck at debian.org</email></item>
+</taglist>
+</p>
+
+</sect>
+
+<sect id="debian-science">
+  <heading>Debian-Science: Debian for science</heading>
+
+<p>
+<taglist>
+  <tag>Start</tag>
+   <item><url name="July 2005" id="http://lists.debian.org/debian-devel/2005/07/msg01555.html"></item>
+  <tag>URL</tag>
+   <item><url name="Debian-Science Wiki"
+   id="http://wiki.debian.org/DebianScience"></item>
+  <tag>Mailing list</tag>
+   <item><url name="debian-science at lists.debian.org" id="http://lists.debian.org/debian-science/"></item>
+  <tag>Initiator</tag>
+   <item>Helen Faulkner <email>helen at debian.org</email></item>
+</taglist>
+</p>
+
+<p>
+  While there are Custom Debian Distributions that care for certain
+  sciences (Debian-Med deals in a main part with Biology, DebiChem for
+  Chemestry and Debian-GIS for geography) not all sciences are covered
+  by a specific CDD.  The main reason is that at the moment not enough
+  people support such an effort for every science.  The temporary
+  solution was to build a general Debian-Science CDD that makes use of
+  the work of other CDDs in case it exists.
+</p>
+</sect>
+
+
+<sect id="stalled-cdds">
+  <heading>CDDs that were announced but development is stalled</heading>
+
+  <sect1 id="debian-desktop">
+  <heading>Debian-Desktop: Debian GNU/Linux for everybody</heading>
+
+<p>
+Motto: "Software that Just Works".
+
+<taglist>
+  <tag>Start</tag>
+   <item>October 2002</item>
+  <tag>URL</tag>
+   <item><url name="Debian-Desktop" id="http://www.debian.org/devel/debian-desktop"></item>
+  <tag>Mailing list</tag>
+   <item><url name=" debian-desktop at lists.debian.org" id="http://lists.debian.org/debian-desktop/"></item>
+  <tag>Initiator</tag>
+   <item>Colin Walters <email>walters at debian.org</email></item>
+  <tag>Goals</tag>
+   <item>
+    <list>
+     <item>To try to build the best possible operating system for home
+           and corporate workstation use.</item> 
+     <item>To ensure desktops like GNOME and KDE coexist well in Debian and
+           work optimally.</item>
+     <item>To balance ease of use for beginners with flexibility
+           for experts.</item>
+     <item>To make the system easy to install and configure (e.g. via
+           hardware-detection).</item>
+    </list>
+   </item>
+</taglist>
+
+This Custom Debian Distribution has many common issues with other
+Custom Distributions. The latest move of Debian-Desktop was to care
+about more up to date software that can be used as common base for
+all Custom Debian Distributions.  The common interest is described in
+detail in <ref id="new_ways_of_distribution">.
+</p>
+</sect1>
+
+  <sect1 id="debian-lex">
+  <heading>Debian-Lex: Debian GNU/Linux for Lawyers</heading>
+
+<p>
+<taglist>
+  <tag>Start</tag>
+   <item>April 2003</item>
+  <tag>URL</tag>
+   <item><url name="Debian-Lex" id="http://www.debian.org/devel/debian-lex"></item>
+  <tag>Mailing list</tag>
+   <item><url name=" debian-lex at lists.debian.org" id="http://lists.debian.org/debian-lex/"></item>
+  <tag>Initiator</tag>
+   <item>Jeremy Malcolm <email>Jeremy at Malcolm.id.au</email></item>
+  <tag>Goals</tag>
+   <item>
+    <list>
+     <item>To build a complete system for all tasks in legal
+           practice.</item>
+     <item>To add value by providing customised templates for lawyers to
+           existing packages like OpenOffice.org and SQL-Ledger, and
+	   sample database schemas for PostgreSQL.
+     </item>
+    </list>
+   </item>
+</taglist>
+The word <em>lex</em> is the Latin word for law.
+</p>
+</sect1>
+
+
+  <sect1 id="debian-np">
+  <heading>Debian-NP: Debian GNU/Linux for Non-profit Organisations</heading>
+
+<p>
+<taglist>
+  <tag>Start</tag>
+   <item>July 2003</item>
+  <tag>URL</tag>
+   <item><url name="Debian-NP" id="http://www.debian.org/devel/debian-nonprofit"></item>
+  <tag>Initiator</tag>
+   <item>Benjamin 'Mako' Hill <email>mako at debian.org</email></item>
+  <tag>Goals</tag>
+   <item>
+    <list>
+     <item>To address requirements of small non-profit organisations.</item>
+     <item>To prepare Debian for desktop use in non-profit organisations.</item>
+     <item>To provide software that solves non-profit tasks such as fund raising,
+           membership lists, and conference organisation.</item>
+   </list>
+  </item>
+</taglist>
+Non-profits are often familiar with Free Software.
+</p>
+</sect1>
+
+
+  <sect1 id="accessibility">
+  <heading>Debian Accessibility Project</heading>
+
+<p>
+Debian for blind and visually impaired people
+
+<taglist>
+  <tag>Start</tag>
+   <item>February 2003</item>
+  <tag>Initiator</tag>
+   <item>Mario Lang <email>mlang at debian.org</email></item>
+  <tag>URL</tag>
+   <item><url name="Debian-Accessibility" id="http://www.debian.org/devel/debian-accessibility/"></item>
+  <tag>Mailing list</tag>
+   <item><url name=" debian-accessibility at lists.debian.org" id="http://lists.debian.org/debian-accessibility/"></item>
+  <tag>Goals</tag>
+   <item>
+    <list>
+     <item>To make Debian accessible to people with disabilities.</item>
+     <item>To take special care for:
+      <list>
+          <item>Screen readers</item>
+	  <item>Screen magnification programs</item>
+	  <item>Software speech synthesisers</item>
+          <item>Speech recognition software</item>
+	  <item>Scanner drivers and OCR software</item>
+	  <item>Specialised software like edbrowse (web-browse in the
+                spirit of line-editors)</item>
+      </list>
+     </item> 
+     <item>To make text-mode interfaces available.</item>
+     <item>To provide screen reader functionality during installation.</item>
+    </list>
+   </item>
+</taglist>
+
+</p>
+</sect1>
+
+
+  <sect1 id="debian-enterprise">
+  <heading>Debian Enterprise</heading>
+
+<p>
+Debian GNU/Linux for Enterprise Computing
+
+<taglist>
+  <tag>Start</tag>
+   <item>End of 2003</item>
+  <tag>URL</tag>
+   <item>Debian-Enterprise</item>
+  <tag>Initiator</tag>
+   <item>Zenaan Harkness <email>zen at iptaustralia.net</email></item>
+  <tag>Goals</tag>
+   <item>
+    <list>
+     <!-- [BA] The following are stated on the web site as what Debian-Enterprise
+          does, and not as goals.  But the goals section on the web site is hard
+	  to reduce to specific goals point-by-point.  I believe this needs fixing,
+	  and perhaps could be improved by talking it over with Zenaan. -->
+     <item>To apply the UserLinux Manifesto.</item>
+     <item>To establish the benchmark in world class Enterprise
+           operating systems engineered within an industry driven
+           shared-cost development model.</item>
+     <item>To vigorously defend its distinctive trademarks and
+           branding.</item>
+     <item>To develop extensive and professional quality
+           documentation.</item>
+     <item>To provide engineer certification through partner
+           organisations.</item>
+     <item>To certify the Debian Enterprise GNU/Linux operating system
+           to specific industry standards.</item>
+     <item>To pre-configure server tasks</item>
+     <!-- [BA] I don't know what this point means, nor can I find it on the
+          web site, so perhaps it should simply be removed.
+     <item>To provide install-time options regarding the intended
+           purpose.</item>
+           [AT] Removed by comment
+           The idea behind it was that it might be interesting to
+           provide some configuration options for certain servers
+           which might have connections to others.  For instance Zope
+           can be run behind Apache using some rewriting rules but
+           this is poorly documented and a working example or
+           something else could help here.  It was discussed via
+           E-Mail that Debian-Enterprise could provide such
+           "inter-package-connection" configurations as examples.
+           This was badly worded above and not officially stated at
+           their web site, but should not be lost out of focus and
+           should remain here at least as comment.  Perhaps you might
+           find a better wording.
+       -->
+    </list>
+   </item>
+</taglist>
+</p>
+
+</sect1>
+
+  <sect1 id="other">
+   <heading>Other possible Custom Debian Distributions</heading>
+<p>
+  There are fields that could be served nicely by not yet existing
+  Custom Debian Distributions:  
+  <taglist>
+      <tag>Debian-eGov</tag>
+       <item>Could address government issues, administration, offices of authorities,
+             accounting.</item>
+      <tag>Office</tag>
+       <item>Could cover all office issues.</item>
+      <tag>Accounting</tag>
+       <item>Could integrate accounting systems into Debian.</item>
+      <tag>Biology</tag>
+       <item>Could perhaps take over some stuff from Debian-Med.</item>
+      <tag>Physics</tag>
+       <item>Might look after simulation software.</item>
+      <tag>Mathematics</tag>
+       <item>There is even already a live CD - see Quantian in <ref id="liveCD"></item>
+      <tag>???</tag>
+       <item>There are a lot more potential Custom Debian Distributions.</item>
+   </taglist>
+</p>
+</sect1>
+
+</sect>
+
+</chapt>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->

Added: cdd/tags/cdd/0.4.5/doc/en/05_inside.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/05_inside.sgml	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,263 @@
+<chapt id="inside">
+  <heading>Distributions inside Debian</heading>
+
+  <sect id="fork">
+  <heading>To fork or not to fork</heading>
+
+<p>
+There are many distributions that decided to fork from a certain
+state of Debian.  This is perfectly all right because Debian is
+completely free and everybody is allowed to do this.  People who
+built those derived distributions had certain reasons to proceed
+this way.
+</p>
+
+  <sect1 id="commercialfork">
+  <heading>Commercial forks</heading>
+
+<p>
+If Debian should be used as the base for a commercial distribution
+like 
+  <url id="http://www.linspire.com/" name="Linspire"> (formerly Lindows),
+  <url id="http://www.libranet.com/" name="Libranet"> or
+  <url id="http://www.xandros.com/" name="Xandros">,
+there is no other choice than forking because these companies
+normally add some stuff that is non-free.  While Custom Debian
+Distributions might be interesting in technical terms for those
+commercial distributions by making it easier to build a separate
+distribution, these non-free additions are not allowed to be integrated
+into Debian, and thus integration into Debian is impossible.
+</p>
+  </sect1>
+
+  <sect1 id="noncommercialfork">
+  <heading>Non-commercial forks</heading>
+
+<p>
+Custom Debian Distributions are a solution for derivatives from Debian
+that are as free as Debian but had certain reasons to fork.
+Most of these reasons existed in the past but have now vanished because
+Debian is becoming easier to adapt for special
+purposes.  To increase this flexibility, the Custom Debian
+Distributions approach was invented.  Some examples of forks from
+Debian that are probably now able to integrate back into Debian are:
+
+<taglist>
+ <tag><url id="http://www.skolelinux.org" name="SkoleLinux"></tag>
+  <item>Mentioning SkoleLinux in the category of forks is more or less
+        history.  The merge back into Debian started with the SkoleLinux
+	people really doing a great job to enhance Debian for their own
+	purposes in the form of their work on debian-installer, and
+	culminated with the formal merging of the Custom Debian Distribution
+	Debian-Edu and SkoleLinux, so that they are now virtually equivalent.
+	This is the recommended way for forked distributions, and the
+	reasons for this recommendation are given below.
+  </item>
+ <tag>DeMuDi</tag>
+  <item>The <url name="Agnula"
+        id="http://www.agnula.org/"> project, which is founded by the
+	European Community, (and in fact is the first Free Software project
+	that was founded by the EU at all,) forked for the
+	following reasons:
+       <taglist>
+        <tag>Technical</tag>
+  	 <item>They had some special requirements for the kernel and
+	 configuration. This is more or less solved in the
+	 upcoming Debian release.</item>
+        <tag>License</tag>
+         <item>When DeMuDi started, not enough free programs in this
+	 field existed.  This situation is better now.</item>
+        <tag>Organisational</tag>
+         <item>Because of the founded status of the project, an extra
+	 distribution had to be developed.  To accomplish this
+	 requirement, Custom Debian Distributions plan to build common
+	 tools to facilitate building separate CDs with the
+	 contents of only a single distribution.</item>
+       </taglist>
+        This shows that there is no longer a real need for a fork, and
+	in fact, the organiser of the DeMuDi project is in contact to
+	start bringing DeMuDi back into Debian.  (That is why DeMuDi is
+	mentioned in the list of Custom Debian Distributions above.)
+  </item>
+ <tag>LinEx</tag>
+  <item>LinEx is the very successful Distribution for schools in the
+        Region Extremadura in Spain.  The work of the LinEx people
+	perhaps made Debian more popular than any other distribution.
+	The project was founded by the local government of Extremadura,
+	and each school in this region is running this distribution.
+	While this is a great success, the further development of LinEx
+	has to face the problems that will be explained below.  So it
+	might be worth considering following the path of SkoleLinux to
+	integrate the needed stuff back into Debian.  The LinEx people
+	just did the first step, for instance, to try to get a free
+	license for the very nice program 
+        <url id="http://www.squeak.org/" name="Squeak">.
+  </item>
+</taglist>
+</p>
+<p>
+If developers of a non-commercial fork consider integrating back into
+Debian in the form of a Custom Debian Distribution, it might happen
+that their field is covered already by a Custom Debian Distribution.  For
+instance, this would be the case for LinEx, which has exactly the
+same group of target users as Debian-Edu.  On the other hand, some special
+adaptations might be necessary to fit the requirements of the local
+educational system.  The specific changes that might be necessary
+would be called <strong>flavours</strong> of a Custom Debian
+Distribution.
+</p>
+  </sect1>
+
+  <sect1 id="disadvantages">
+  <heading>Disadvantages of separate distribution</heading>
+
+<p>
+In general, a separate distribution costs extra effort.  Because it is
+hardly possible to hire enough developers who can double the great
+work of many volunteer Debian developers, this would be a bad idea for
+economical reasons.  These people would have to deal with continuous
+changes to keep the base system, installer, etc. up to date with the
+current Debian development.  It would be more sane to send patches that
+address their special requirements to Debian instead of
+maintaining a complete Debian tree containing these patches.
+</p>
+<p>
+Debian is well known for its strong focus on security.  Security is
+mainly based on manpower and knowledge.  So the best way to deal with
+security issues would be to base it on the Debian infrastructure,
+instead of inventing something new.
+</p>
+<p>
+New projects with special intentions often have trouble to become
+popular to the user group they want to address.  This is a matter of
+attaining the critical mass that was explained in <ref id="general_problem">.
+</p>
+<p>
+Larger Free Software projects need certain infrastructure like
+web servers, ftp servers, (both with mirrors,) a bug tracking system,
+etc.  It takes a fair amount of extra effort to build an entire infrastructure
+that is already available for free in Debian.
+</p>
+<p>
+<strong>Forking would be a bad idea.</strong>
+</p>
+  </sect1>
+
+  <sect1 id="advantages">
+  <heading>Advantages of integration into Debian</heading>
+
+<p>
+Debian has a huge user base all over the world.  Any project that is
+integrated within Debian has a good chance to become popular on the back
+of Debian if the target users of the project just notice that it
+enables them to solve their problems.  So there is no
+need for extra research on the side of the users, and no need for
+advertising for a special distribution.  This fact has been
+observed in the Debian-Med project, which is well known for many
+people in medical care.  It would not have gained this popularity if
+it had been separated from Debian.
+</p>
+<p>
+You get a secure and stable system without extra effort for free.
+</p>
+<p>
+Debian offers a sophisticated Bug Tracking System for free, which is a
+really important resource for development.
+</p>
+<p>
+There is a solid infrastructure of web servers, ftp servers with
+mirrors, mail servers, and an LDAP directory of developers with a strongly
+woven web of trust (through gpg key signing) for free.
+</p>
+</sect1>
+
+   <sect1>
+   <heading>Enhancing Debian</heading>
+
+<p>
+By making changes to some packages to make them fit the needs of a target
+user group, the overall quality of Debian can be enhanced.  In this way,
+enhancing Debian by making it more user friendly is a good way for
+the community to give back something to Debian.  It would be a shame
+if somebody would refuse all the advantages to keeping a project
+inside Debian, and instead would decide to try to cope with the disadvantages
+because he just does not know how to do it the right way, and that it is
+normally easy to propogate changes into Debian. For instance, see
+<ref id="howto_itp">.  This section explains how you can ask for 
+a certain piece of software to be included in Debian.
+The next section describes the reason why Debian is flexible enough
+to be adapted to any purpose.
+</p>
+
+</sect1>
+</sect>
+
+  <sect>
+  <heading>Adaptation to any purpose</heading>
+
+<p>
+Debian is developed by about 1000 volunteers.  Within this large group,
+the developers are encouraged to care for their own interests in packages
+they have chosen to look after.  Thus, Debian is not bound to commercial
+interests.
+</p>
+<p>
+Those who might fear this amount of freedom given to every single developer
+should realize that there are very strict rules, as laid out in 
+<url id="http://www.debian.org/doc/debian-policy/" name ="Debian's policy">,
+which glue everything together.  To keep their packages in each new
+release, every developer must ensure that their packages abide by that policy.
+</p>
+<p>
+One common interest each individual developer shares is to make the
+best operating system for himself.  This way, people with similar
+interests and tasks profit from the work of single developers.  If
+users, in turn, work together with the developers by sending patches or
+bug reports for further enhancement, Debian can be improved also for
+special tasks.
+</p>
+<p>
+For instance, developers may have children, or may work in some
+special fields of work, and so they try to make the best system for
+their own needs.  For children, they contribute to Debian Jr. or
+Debian-Edu.  For their field of work, they contribute to the appropriate
+CDD: Debian-Med, Debian-Lex, and so forth.
+</p>
+<p>
+In contrast to employees of companies, every single Debian developer
+has the freedom and ability to realize his vision.  He is not bound to
+decisions of the management of his company.  Commercial distributors
+have to aim their distributions at gaining a big market share.  The
+commercial possibilities in targeting children's PCs at home are
+slight, so distributions comparable to Debian-Junior are not attractive
+for commercial distributors to make.
+</p>
+<p>
+Thus, single developers have influence on development - they just have
+to <strong>do</strong> it, which is a very different position compared
+with employees of a commercial distributor.  This is the reason for the
+flexibility of Debian that makes it adaptable for any purpose.  In
+the Debian world, this kind of community is called
+"<em><strong>Do</strong>ocracy</em>" - the one who does, rules.
+</p> 
+  </sect>
+
+</chapt>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->

Added: cdd/tags/cdd/0.4.5/doc/en/06_technology.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/06_technology.sgml	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,795 @@
+<chapt id="technology">
+  <heading>Technology</heading>
+
+  <sect id="metapackages">
+  <heading>Meta packages</heading>
+
+  <sect1 id="defmetapackages">
+  <heading>Meta package definition</heading>
+
+<p>
+A meta package, as used by CDDs, is a Debian package that contains:
+<list>
+  <item>Dependencies on other Debian packages (essential)
+      <taglist>
+        <tag>Depends</tag>
+        <item><p>Use "Depends" for packages that are definitely needed
+              for all basic stuff of the CDD in question.</p>
+              <p>Remark: For
+	      <package>cdd-dev</package> versions &lt; 0.4 the list of
+	      packages that should be installed for a certain task was
+	      declared as "Depends".  This is now changed te enable
+	      installing the meta-package even if a package belongig
+	      to this task is missing for whatever reason.  It also
+	      allows finally to remove the meta package.  The change
+	      makes even more sense since <prgn>apt-get</prgn>
+	      considers "Recommends" as default installation targets.
+              </p>
+              <p>
+              The above behaviour is enforced by
+              <package>cdd-dev</package> which changes "Depends" that
+              are given in the tasks files into "Recommends".
+              </p>
+        </item>
+        <tag>Recommends</tag>
+        <item>The packages that are listed as "Recommends" in the
+              tasks file should be installed on the machine where the
+              meta package is installed and which are needed to work
+              on a specific task.
+        </item>
+        <tag>Suggests</tag>
+	<!-- [BA] Why would we suggest non-free?  Doesn't policy allow a non-free
+	     package to specify "Enhances" to avoid this problem? 
+             [AT] I have to admit that "Enhances" is new to me.  When
+             reading policy I think this field is out of control of
+             the meta-package developer because it has to be included
+             by the package maintainer.  I'm not really convinced that
+             this is a good solution - but I would follow the suggestions
+             of others in this issue.
+          -->
+        <item>Use "Suggests" for others of lesser importance that
+              might be possibly useful, or non-free packages.  When a
+              package is not available for the target distribution at
+              meta package build time the "Recommends" is turned into
+              a "Suggests" to enable a flawless installation of the
+              meta package.
+        </item>
+      </taglist>
+   </item>
+   <item>Menu entries (recommended)
+      <list>
+        <item>Place these in <file>/etc/cdd/<var>&lt;cdd&gt;</var>/menu/<var>&lt;pkg-name&gt;</var></file>
+        <item>Maintain these via role based tools</item>
+      </list>
+   </item>
+   <item>Configuration stuff (optional)
+      <list>
+        <item><prgn>debconf</prgn> questions or pre-seeding</item>
+        <item><prgn>cfengine</prgn> scripts (or similar see <ref id="EnhancingTechnology">)</item>
+      </list>
+   </item>
+   <item>Special meta packages:
+      <list>
+         <item><package><var>&lt;cdd&gt;</var>-tasks</package>:
+               Contains information for <prgn>tasksel</prgn></item>
+         <item><package><var>&lt;cdd&gt;</var>-config</package>:
+               Special configurations, basic stuff for user menus</item>
+      </list>
+   </item>
+</list>
+</p>
+<p>
+Meta packages are small packages with nearly no contents.  The main
+feature of this type of package is its dependencies on other
+packages.  The naming of meta packages follows the pattern
+<var>&lt;cdd&gt;</var>-<var>&lt;task&gt;</var> where <var>&lt;cdd&gt;</var> stands for the
+short name of a Custom Debian Distribution,
+e.g. <package>junior</package> for Debian Jr. or <package>med</package>
+for Debian-Med, and <var>&lt;task&gt;</var> means the certain task inside the
+Custom Debian Distribution, e.g. puzzle or bio.
+</p>
+<p>
+Examples:
+<taglist>
+ <tag><package>junior-puzzle</package></tag>
+  <item>Debian Jr. Puzzles</item>
+ <tag><package>education-tasks</package></tag>
+  <item>Tasksel files for SkoleLinux systems</item>
+ <tag><package>med-bio</package></tag>
+  <item>Debian-Med micro-biology packages</item>
+</taglist>
+</p>
+
+
+  <sect1 id="collection">
+  <heading>Collection of specific software</heading>
+
+<p>
+When using meta packages, no research for available software inside Debian is
+necessary.  It would not be acceptable for normal users to have to browse the
+descriptions of the whole list of the 10000 packages in Debian to find
+everything they need.  So, meta packages are an easy method to help users to
+find the packages that are interesting for their work quickly.
+</p>
+<p>
+If the author of a meta package includes several packages with similar
+functionality, an easy comparison between software covering the same task is
+possible.
+</p>
+<p>
+Moreover, the installation of a meta package ensures that no package
+that is necessary for the intended task can be removed without
+explicit notice that also the meta package has to be removed.  This
+helps non specialist administrators to keep the installation fit for
+the specialized users.
+</p>
+<p>
+By defining conflicts with some other packages inside the meta package,
+it is possible to ensure that a package that might conflict for some
+reasons for the intended task can not be installed at the same time as
+the meta package is installed.
+</p>
+<p>
+All in all, meta packages enable an easy installation from scratch, and
+keep the effort required for administration low.
+</p>
+   </sect1>
+
+   <sect1 id="configuration">
+   <heading>Adapted configuration inside meta packages</heading>
+
+<p>
+Besides the simplification of installing relevant packages by
+dependencies inside meta packages, these packages might contain special
+configuration for the intended task.  This might either be
+accomplished by pre-seeding <prgn>debconf</prgn> questions, or by
+modifying configuration files in a <prgn>postinst</prgn> script.  It
+has to be ensured that no changes that have been done manually by the
+administrator will be changed by this procedure.  So to speak, the
+<prgn>postinst</prgn> script takes over the role of a local
+administrator.
+<!-- FIXME:
+ An improved version of the pre-seeding scripts are included in newer
+ debconf versions.  I just replaced the debian-edu scripts with the
+ scripts from debconf.  Look at debconf-set-selections and
+ debconf-get-selections.
+ -->
+</p>
+
+   </sect1>
+
+   <sect1 id="documentation">
+   <heading>Documentation packages</heading>
+
+<p>
+A "traditional" weakness of Free Software projects is missing
+documentation.  To fix this, Custom Debian Distributions try to provide
+relevant documentation to help users to solve their problems.  This
+can be done by building <package>*-doc</package> packages of existing
+documentation, and by writing extra documentation, like manpages, etc.  By
+supplying documentation, Custom Debian Distributions fulfil
+their role in addressing the needs of specialised users, who have a great
+need for good documentation in their native language.
+</p>
+<p>
+Thus, translation is a very important thing to make programs more
+useful for the target user group.  Debian has established a <url
+id="http://ddtp.debian.net/" name="Debian Description Translation
+Project">, which has the goal to translate package descriptions.  There
+is a good chance this system could also be used for other types of
+documentation, which might be a great help for Custom Debian
+Distributions.
+</p>
+
+   </sect1>
+   </sect>
+
+   <sect id="mp_handling">
+   <heading>Handling of meta packages</heading>
+
+<p>
+<!-- [BA] I think we need to qualify what 'handle' means, because there
+     certainly are other tools that 'handle' them (e.g. synaptic) if that term
+     is taken in its broadest sense.
+     [AT] ACK, here that we have to define 'handle'.  The term
+     'nicely' was intended to be the keyword because meta-packages are
+     currently handled as any other package which is fine, but no help
+     for users who do not know anything about meta-packages.  We need
+     special tools to gain all profits we could have.  Could you set
+     this into good English??? 
+  -->
+In short, there are no special tools available to handle meta packages
+nicely. But there are some tricks that might help, for the moment.
+</p>
+
+   <sect1 id="cmdline">
+   <heading>Command line tools</heading>
+
+<p>
+<taglist>
+  <tag><prgn>apt-cache</prgn></tag>
+   <item>
+    The program <prgn>apt-cache</prgn> is useful to search for
+    relevant keywords in package descriptions.  With it, you could search
+    for a certain keyword connected to your topic (for instance
+   "<tt>med</tt>") and combine it reasonably with <prgn>grep</prgn>:
+    <example>
+~> apt-cache search med | grep '^med-'
+med-bio - Debian-Med micro-biology packages
+med-common-dev - Debian-Med Project common files for developing...
+med-dent - Debian-Med package for dental practice client
+med-doc - Debian-Med documentation packages
+med-imaging - Debian-Med imaging packages
+med-imaging-dev - Debian-Med packages for medical image develop...
+med-tools - Debian-Med several tools
+med-bio-contrib - Debian-Med micro-biology packages (contrib an...
+med-common - Debian-Med Project common package
+med-cms - Debian-Med content management systems
+    </example>
+    This is <strong>not really straightforward</strong>, and
+   absolutely unacceptable for end users.
+   </item>
+  <tag><prgn>grep-dctrl</prgn></tag>
+   <item>
+    The program <prgn>grep-dctrl</prgn> is a grep for Debian package
+    information, which is helpful for extracting specific package details
+    matching certain patterns:
+    <example>
+~> grep-dctrl ': med-' /var/lib/dpkg/available | \
+   grep -v '^[SIMAVF]' | \
+   grep -v '^Pri'
+Package: med-imaging
+Depends: paul, ctsim, ctn, minc-tools, medcon, xmedcon, med-common
+Description: Debian-Med imaging packages
+
+Package: med-dent
+Depends: debianutils (>= 2.6.2), mozilla-browser | www-browser, ...
+Description: Debian-Med package for dental practice client
+
+Package: med-bio
+Depends: bioperl, blast2, bugsx, fastdnaml, fastlink, garlic...
+Description: Debian-Med micro-biology packages
+
+Package: med-common
+Depends: adduser, debconf (>= 0.5), menu
+Description: Debian-Med Project common package
+
+Package: med-common-dev
+Depends: debconf (>= 0.5)
+Description: Debian-Med Project common files for developing ...
+
+Package: med-tools
+Depends: mencal, med-common
+Description: Debian-Med several tools
+
+Package: med-doc
+Depends: doc-linux-html | doc-linux-text, resmed-doc, med-co...
+Description: Debian-Med documentation packages
+
+Package: med-cms
+Depends: zope-zms
+Description: Debian-Med content management systems
+
+Package: med-imaging-dev
+Depends: libgtkimreg-dev, ctn-dev, libminc0-dev, libmdc2-dev...
+Description: Debian-Med packages for medical image development
+
+Package: med-bio-contrib
+Depends: clustalw | clustalw-mpi, clustalx, molphy, phylip, ...
+Description: Debian-Med micro-biology packages (contrib and ...
+    </example>
+    This is, like the <prgn>apt-cache</prgn> example, <strong>also
+    a bit cryptic</strong>, and again is not acceptable for end users.
+   </item>
+  <tag><prgn>auto-apt</prgn></tag>
+   <item>
+    The program <prgn>auto-apt</prgn> is really cool if you are
+    running a computer that was installed from scratch in a hurry, and
+    are sitting at a tradeshow booth preparing to do a demo.  If you had
+    no time to figure out which packages you needed for the demo were missing
+    so you could install all of them in advance, you could use
+    <prgn>auto-apt</prgn> in the following manner to guarantee that you
+    have all of the files or programs you need:
+    <example>
+~> sudo auto-apt update
+put: 880730 files,  1074158 entries
+put: 903018 files,  1101981 entries
+~> auto-apt -x -y run
+Entering auto-apt mode: /bin/bash
+Exit the command to leave auto-apt mode.
+bash-2.05b$ less /usr/share/doc/med-bio/copyright
+Reading Package Lists... Done
+Building Dependency Tree... Done
+The following extra packages will be installed:
+  bugsx fastlink readseq 
+The following NEW packages will be installed:
+  bugsx fastlink med-bio readseq 
+0 packages upgraded, 4 newly installed, 0 to remove and 183 ...
+Need to get 0B/1263kB of archives. After unpacking 2008kB wi...
+Reading changelogs... Done
+Selecting previously deselected package bugsx.
+(Reading database ... 133094 files and directories currently...
+Unpacking bugsx (from .../b/bugsx/bugsx_1.08-6_i386.deb) ...
+Selecting previously deselected package fastlink.
+Unpacking fastlink (from .../fastlink_4.1P-fix81-2_i386.deb) ...
+Selecting previously deselected package med-bio.
+Unpacking med-bio (from .../med-bio_0.4-1_all.deb) ...
+Setting up bugsx (1.08-6) ...
+
+Setting up fastlink (4.1P-fix81-2) ...
+
+Setting up med-bio (0.4-1) ...
+
+localepurge: checking for new locale files ...
+localepurge: processing locale files ...
+localepurge: processing man pages ...
+This package is Copyright 2002 by Andreas Tille &lt;tille at debian.org&gt;
+
+This software is licensed under the GPL.
+
+On Debian systems, the GPL can be found at /usr/share/common-...
+/usr/share/doc/med-bio/copyright
+    </example>
+    Just do your normal business - in the above example, <tt>less
+    /usr/share/doc/med-bio/copyright</tt> - and if the necessary
+    package is not yet installed, <prgn>auto-apt</prgn> will care for
+    the installation and proceed with your command.  While this is
+    really cool, this is <strong>not really intended for a production
+    machine</strong>.
+   </item>
+</taglist>
+
+The short conclusion here is: <strong>There are no sophisticated tools
+that might be helpful to handle meta packages as they are used in Custom
+Debian Distributions - just some hacks using the powerful tools inside
+Debian.</strong>
+</p>
+
+   </sect1>
+
+   <sect1 id="text_ui">
+   <heading>Text user interfaces</heading>
+<p>
+<taglist>
+  <tag><prgn>dselect</prgn></tag>
+   <item>
+    This good old package handling tool provides no special help to
+    handle meta packages in an elegant manner.
+   </item>
+  <tag><prgn>tasksel</prgn></tag>
+   <item>
+    The Debian task installer <prgn>Tasksel</prgn> is the first
+    interface for package selection that is presented to the user
+    when installing a new computer.  The <tt>End-user</tt> section
+    should contain an entry for each Custom Debian Distribution.  This
+    is currently the case for Debian-Jr.
+    <example>
+Debian Task Installer v1.43 - (c) 1999-2003 SPI and others
+
+&mdash;&mdash;&mdash;&mdash;&mdash; Select tasks to install &mdash;&mdash;&mdash;&mdash;&mdash;
+   &ndash;&ndash; End-user &ndash;&ndash;&ndash;&ndash;
+   [X] Debian Jr.
+   [ ] Desktop environment
+   [ ] Games
+   [ ] Linux Standard Base
+   [ ] X window system
+   [ ] Office environment
+   &ndash;&ndash; Hardware Support  &ndash;&ndash;&ndash;&ndash;
+   [ ] Dialup internet
+   [ ] Laptop
+   [ ] Broadband internet connection
+   &ndash;&ndash; Servers  &ndash;&ndash;&ndash;&ndash;
+   [ ] DNS server
+   [ ] File server
+   [ ] Mail server
+   [ ] Usenet news server
+   [ ] SQL database
+   [ ] Print server
+   [ ] Conventional Unix server
+
+     &lt;Finish&gt;        &lt;Task Info&gt;        &lt;Help&gt;
+
+
+    </example>
+    Unfortunately, there are some
+    issues that prevent further Custom Debian Distributions from
+    being included in the <prgn>tasksel</prgn> list, because the
+    dependencies of this task can affect what appears on the first
+    installation CD.  This problem would be even greater if all Custom
+    Debian Distributions were added, and so a different solution has to
+    be found here. (See <url id="http://bugs.debian.org/186085"
+    name="#186085">.)  In principle, <prgn>tasksel</prgn> is a good
+    tool for easy installation of Custom Debian Distributions.
+   </item>
+  <tag><prgn>aptitude</prgn></tag>
+   <item>
+    This is a better replacement for <prgn>dselect</prgn>, and has some
+    useful support for searching for and grouping of packages.  While
+    this is not bad, it was not intended for the purpose of handling
+    Custom Debian Distributions, and thus there could be some better support
+    to handle meta packages more cleverly.
+   </item>
+</taglist>
+Short conclusion: <strong>There is a good chance meta packages could be
+handled nicely by the text based Debian package administration tools,
+but this is not yet implemented.</strong>
+</p>
+
+   </sect1>
+         
+   <sect1 id="gui">
+   <heading>Graphical user interfaces</heading>
+<p>
+Debian <em>Woody</em> does not contain a really nice graphical
+user interface for the Debian package management system.  But the
+efforts to support users with an easy to use tool have increased, and
+so there there will be some usable options in Sarge.
+<taglist>
+  <tag><prgn>gnome-apt</prgn></tag>
+   <item>This is the native GNOME flavour of graphical user interfaces
+         to apt.  It has a nice <tt>Search</tt> feature that can be
+	 found in the <tt>Package</tt> menu section.  If for
+	 instance the packages of the Debian Jr. project come into the
+	 focus of interest a search for "<tt>junior-*</tt>" will show
+	 up all related packages including their descriptions.  This
+	 will give a reasonable overview about meta packages of the
+	 project.
+   </item>
+  <tag><prgn>synaptic</prgn></tag>
+   <item>Even more sophisticated and perhaps the best choice for users
+         of Custom Debian Distributions.  <prgn>Synaptic</prgn> has a
+	 nice filter feature, which makes it a great tool here.
+	 Moreover <prgn>synaptic</prgn> is currently the only user
+	 interface that supports Debian Package Tags (see <ref
+	 id="debtags">).
+   </item>
+  <tag><prgn>kpackage</prgn></tag>
+   <item>This is the user interface of choice for KDE lovers.
+         Regarding its features (with exception of Debian Package Tags)
+	 it is similar to both above.
+   </item>
+</taglist>
+Short conclusion: <strong>As well as the text based user interfaces
+these tools are quite usable but need enhancements to be regarded as
+powerful tools for Custom Debian Distributions.</strong>
+</p>
+   </sect1>
+         
+   <sect1 id="web_if">
+   <heading>Web interfaces</heading>
+
+<p>
+<taglist>
+  <tag><url id="http://packages.debian.org/" name="Web search"></tag>
+   <item><p>Debian has a web interface that can be used to search for certain substrings
+         in package names.  For instance if you are searching the meta
+         packages of Debian-Med you could point your favourite Browser
+         to</p>
+         <p>
+<comment>FIXME: &amp; is sometimes broken!!!
+<url id="http://packages.debian.org/cgi-bin/search_packages.pl?keywords=med-&amp;subword=1">
+                                                                            ^^^^^
+</comment>
+<url id="http://packages.debian.org/cgi-bin/search_packages.pl?keywords=med-&amp;subword=1">
+         </p><p>
+         As a result you will get a list of all Debian-Med packages.
+   </item>
+  <tag><url id="http://qa.debian.org/developer.php" name="Package Tracking System"></tag>
+   <item><p>
+         The Package Tracking System is a really great tool that
+         provides essential information about packages.  Regarding
+	 Custom Debian Distributions it can help if you know the
+	 Debian user name of the developer who is responsible for the
+	 meta packages:
+         <taglist>
+          <tag>Debian-Jr:</tag>
+           <item>
+            <url id="http://qa.debian.org/developer.php?login=synrg">
+           </item>
+          <tag>Debian-Med:</tag>
+           <item>
+            <url id="http://qa.debian.org/developer.php?login=tille">
+           </item>
+          <tag>Debian-Edu:</tag>
+           <item>
+            <url id="http://qa.debian.org/developer.php?login=pere">
+           </item>
+<!-- currently no meta packages released for this project ...
+          <tag>Debian-NP:</tag>
+           <item>
+            <url id="http://qa.debian.org/developer.php?login=mako">
+           </item>
+          <tag>Debian-Lex:</tag>
+           <item>
+            <url id="http://qa.debian.org/developer.php?login=terminus">
+           </item>
+-->
+         </taglist>
+         The other way to use the Package Tracking System is to search
+         for packages starting with a certain letter:
+         <taglist>
+          <tag>Debian-Jr:</tag>
+           <item>
+            <url id="http://packages.qa.debian.org/j">
+           </item>
+          <tag>Debian-Med:</tag>
+           <item>
+            <url id="http://packages.qa.debian.org/m">
+           </item>
+         </taglist>
+         But the list that is obtained by this method is much larger
+         than it would be useful for a good overview.
+         </p><p>
+         So the conclusion is - we just need better support here for
+         Custom Debian Distributions.
+         </p>
+  <tag><prgn>list-junior.sh</prgn></tag>
+   <item>The package <package>junior-doc</package> contains a script
+         <file>/usr/share/doc/junior-doc/examples/scripts/list-junior.sh</file>
+         that checks for the installed packages of a Custom Debian
+         Distribution and builds a simple web page describing these
+         packages.  (The BTS contains a patch to let this script work
+         also for other Custom Debian Distributions.)
+   </item>
+</taglist>
+Short conclusion: <strong>Some very basic things can be done with the
+web interfaces described above but techniques have to be developed to
+provide useful information about each Custom Debian Distribution.</strong>
+</p>
+   </sect1>
+         
+   <sect1 id="future_handling">
+   <heading>Future handling of meta packages</heading>
+
+<p>
+Obviously there are no nifty tools as you might know them from Debian
+available yet.  The user interfaces for <prgn>apt-get</prgn> have to be
+enhanced drastically to make them easy enough to make them useful in
+the hands of an end user.  This might implicitly mean that we need
+some additional control fields in <package>dpkg</package> to implement
+reasonable functionality.  The following items are target of future
+development:
+<list>
+    <item>Searching for existing meta packages</item>
+    <item>Overview about dependencies of these meta packages</item> 
+    <item>Enhancing tools like <prgn>aptitude</prgn>,
+          <prgn>synaptic</prgn>, etc.</item>
+    <item>Special <prgn>tasksel</prgn> section</item> 
+    <item>Web tools that keep meta package information up to
+          date</item>
+</list>
+</p>
+<p>
+Furthermore it is necessary to find a set of keywords for each Custom
+Debian Distribution and write a tool to search these keywords
+comfortable.  The best way to accomplish this might be to make use of
+Debian Package Tags, which is a quite promising technique.
+</p>
+<p>
+Tools that grep the apt cache directly for meta packages have to be
+written or rather the available tools for this should be patched for
+this actual functionality.
+</p>
+   </sect1>
+   </sect>
+
+  <sect id="userroles">
+  <heading>User roles</heading>
+
+<p>
+As stated above specialists have only interest in a subset of the
+available software on the system they are using.  In an ideal world, this
+would be the only software that is presented in the menu.  This would
+allow the user to concentrate on his real world tasks instead of
+browsing large menu trees with entries he does not understand.
+</p>
+<p>
+To accomplish this, a technique has to be implemented that allows to
+define a set of users who get a task-specific menu while getting rid
+of the part of software they are not interested in.  Moreover this has
+to be implemented for certain groups of users of one Custom Debian
+Distribution, which are called "roles".  There are several techniques
+available to manage user roles.  Currently in the field of Custom
+Debian Distributions a UNIX group based role system is implemented.
+This means, that a user who belongs to a certain group of a Custom
+Debian Distribution is mentioned in the <file>/etc/group</file> file
+in the appropriate group and gets a special user menu that is
+provided for exactly this group.
+</p>
+<p>
+Strictly speaking it is not the best solution to conflate a
+configuration mechanism, which users see with menus, with access
+control, i.e. unix groups.  It might be confusing, and wastes the limited
+number of groups to which a user can belong.  On the other hand this
+is a solution that works for the moment, and has no real negative
+impact on the general use of the system.  The benefit of using unix
+groups is that there is a defined set of tools provided to handle user
+groups.  This makes life much easier; there is no
+<em>practical</em> limit to the number of groups to which a user
+may belong for the existing Custom Debian Distributions at this time.
+</p>
+<p>
+In the long run, this role system might even be enhanced to
+certain "<em>levels</em>" a user can have and here the UNIX groups
+approach will definitely fail and has to be replaced by other
+mechanisms.  This will include the possibility to enable the user
+adjust his own level ("novice", "intermediate", "expert") while only
+the administrator is able to access the UNIX groups. On the other hand
+such kind of user level maintenance is not only a topic for Custom
+Debian Distributions but might be interesting for Debian in general.
+</p>
+<p>
+Another point that speaks against using UNIX groups for role
+administration is the fact that local administrators are not in all
+cases competent enough to understand the UNIX role concept as a
+security feature and thus a real role concept including tools to
+maintain roles are needed in the future.
+</p>
+<p>
+The handling of the user menus according to the groups is implemented
+in a flexible plugin system and other ways of handling groups
+(i.e. LDAP) should be easy to implement. 
+</p>
+
+  <sect1 id="menu_tools">
+  <heading>User menu tools</heading>
+
+    <sect2 id="user-menus">
+    <heading>Using the Debian menu system</heading>
+<p>
+The Debian menu system cares for menu updates after each package
+installation.  To enable compliance with the <em>role</em> based menu
+approach it is necessary to rebuild the user menu after each package
+installation or after adding new users to the intended role.  This can
+be done by using the <manref name="cdd-update-menus" section="8"> (see
+<ref id="cdd-update-menus">) script from
+<package>cdd-common</package>.  It has to be said that using
+<prgn>cdd-update-menus</prgn> is not enough to change the menu of a
+user.  To accomplish this a call of the general
+<prgn>update-menu</prgn> script for every single user of a Custom
+Debian Distribution is necessary if this is not done by the
+<file>postinst</file> script of a meta package.  This can easily been
+done if the configuration file of a Custom Debian Distribution
+<file>/etc/cdd/<var>&lt;cdd&gt;</var>/<var>&lt;cdd&gt;</var>.conf</file> contains the
+line
+<example>
+    UPDATEUSERMENU=yes
+</example>
+
+</p>
+<p>
+It is strongly suggested to use the package <package>cdd-dev</package>
+to build meta packages of a Custom Debian Distribution that will move
+all necessary files right into place if there exists a
+<file>menu</file> directory with the menu entries.  Note, that the users
+<file>${HOME}/.menu</file> directory remains untouched.
+</p>
+     </sect2>
+
+     <sect2 id="user-debconf">
+     <heading>Managing Custom Debian Distribution users with <prgn>debconf</prgn></heading>
+ 
+<p>
+Using <package>cdd-dev</package> it is very easy to build a
+<var>cdd</var><package>-config</package> package that contains
+<prgn>debconf</prgn> scripts to configure system users who should
+belong to the group of users of the Custom Debian Distribution <var>cdd</var>.
+For example see the <package>med-common</package> package.
+
+    <example>
+~> dpkg-reconfigure med-common
+
+Configuring med-common
+----------------------
+
+Here is a list of all normal users of the system.  Now you can select those users who 
+should get a Debian-Med user menu.
+
+  1. auser (normal user A)        6. fmeduser (med user F)
+  2. bmeduser (med user B)        7. glexuser (lex user G)
+  3. cjruser (jr user C)          8. hmeduser (med user H)
+  4. djruser (jr user D)          9. iadmin (administrator I)
+  5. eadmin (administrator E)     10. juser (normal user J)
+
+(Enter the items you want to select, separated by spaces.)
+
+:-! Please specify the Debian-Med users! 2 8
+    </example>
+This example shows the situation when you
+<prgn>dpkg-reconfigure</prgn> <package>med-common</package> if
+<var>med user B</var> and <var>med user H</var> were defined as users
+of Debian-Med previously and <var>med user F</var> should be added to
+the group of medical staff.  (For sure it is more convenient to use the
+more comfortable interfaces to <package>debconf</package> but the used
+SGML DTD <url id="http://bugs.debian.org/140684" name="does not yet
+    support screen shots">.)
+</p>
+    </sect2>
+   </sect1>
+  </sect>
+         
+   <sect id="devtools">
+   <heading>Development tools</heading>
+
+<p>
+Building a meta package is more or less equal for each meta
+package. This was the reason to build a common source package
+<package>cdd</package> that builds into two binary packages
+<taglist>
+  <tag><package>cdd-dev</package></tag>
+   <item><p>Helpful tools to build meta packages from a set of template
+         files.  These tools are interesting for people who want to
+	 build meta packages in the style Debian-Edu and Debian-Med
+	 are currently doing this.  The purpose of this package is to
+	 make maintenance of meta packages as easy as possible.</p>
+	 <p>This package is described in detail in appendix <ref
+         id="cdd-dev">.</p>
+   </item>
+  <tag><package>cdd-common</package></tag>
+   <item><p>This package provides some files that are common to meta
+         packages of Common Debian Distributions especially those
+	 that were built using the tools of the package
+	 <package>cdd-dev</package>. It introduces a method to handle 
+         system users in a group named according to the name of the
+	 Custom Debian Distribution.  The user menu approach is
+	 explained in detail in <ref id="userroles">.</p>
+	 <p>This package is described in detail in appendix <ref
+         id="cdd-common">.</p>
+   </item>
+</taglist>
+The usage of the tools that are contained in these packages are
+described now in detail.
+</p>
+
+   <sect id="othertools">
+   <heading>Other interesting tools</heading>
+
+   <sect1 id="simple-cdd">
+   <heading>Simple-CDD</heading>
+
+<p>
+The tool <prgn>simple-cdd</prgn> is a limited though relatively easy
+tool to create a customized debian-installer CD.
+</p><p>
+It includes simple mechanisms to create "profiles" that define common
+system configurations, which can be selected during system
+installation. <prgn>Simple-cdd</prgn>  also makes it easy to build CDs
+with language and country settings pre-configured, or to use a 2.6
+kernel by default.
+</p><p>
+This can be used to create a crude "Custom Debian Distribution" using
+packages from debian, with pre-configuration of packages that use
+<prgn>debconf</prgn>.  Custom configuration scripts can be specified
+to handle packages that don't support <prgn>debconf</prgn>
+pre-configuration.
+</p><p>
+Testing CD images with <prgn>qemu</prgn> is also made simple with a
+provided script.
+</p><p>
+It has only been tested with <prgn>debian-cd</prgn> from sarge (other
+than <prgn>debpartial-mirror</prgn>), so if using a new
+<prgn>debian-cd</prgn> or <prgn>debian-installer</prgn>, it may
+require some tweaks.
+</p>
+   </sect1>
+   </sect>
+</chapt>
+
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->

Added: cdd/tags/cdd/0.4.5/doc/en/07_starting.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/07_starting.sgml	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,433 @@
+<chapt id="starting">
+  <heading>How to start a Custom Debian Distribution</heading>
+  
+<p>
+This chapter more or less covers the text of the <url
+id="http://packages.debian.org/unstable/doc/subproject-howto.html"
+name="Debian Subproject HOWTO">, which was written by Ben Armstrong
+<email>synrg at debian.org</email>.  Ben has agreed that his text should
+be included here, and the <package>subproject-howto</package> will be
+orphaned once the current document is ready for packaging.
+</p>
+
+ <sect id="planning">
+ <heading>Planning to form a Custom Debian Distribution</heading>
+
+  <p>
+  In this section, issues to think about before starting a Custom
+  Debian Distribution will be discussed. It is important to have a
+  clear idea where to head and how to get there before launching into
+  this adventure.
+  </p>
+
+ <sect1 id="leadership">
+ <heading>Leadership</heading>
+  <p>
+  The existing Custom Debian Distributions have clearly shown
+  that they depend on a person who keeps things running.  If anybody
+  wants to start a project at first, he has to answer the question:
+  <em>"Am I the right person for the job?"</em>  Surely this is a
+  question that may be faced with some amount of uncertainty.  The
+  way Custom Debian Distributions started in the past
+  was for the person with the idea for the project to just start
+  doing the work.  After some time using this approach, it became clear that
+  if the project lacked a person to take leadership, the project would become
+  stale.  So the initiator has to answer the question clearly, whether
+  or not he is able to continue in the <em>job</em> of leader, considering
+  the amount of time he will have to spend, and the technical and social
+  skills which are needed.
+  </p>
+ </sect1>
+
+ <sect1 id="defining_scope">
+ <heading>Defining the subproject scope</heading>
+  <p>
+  It is as important to decide what your group is not going to do as
+  it is what it is going to do.  A clear borderline is essential for
+  the development of the project.  Without it, outsiders might
+  either expect more from the project than it can accomplish, or may ignore
+  the project, finding it not helpful because they are
+  not able to find out the purpose.
+  </p>
+  <p>
+  By maintaining a good relationship with other Free Software projects,
+  some common tasks can be done very effectively.  When efforts can be
+  shared, the amount of work for each project can be reduced.
+  </p>
+  <p>
+  Checking for cooperation with other Custom Debian Distributions is
+  always a good idea.  In technical terms, this is obvious, but
+  sometimes there are possibilities to share efforts when the goals
+  of two projects have parts in common.
+  </p>
+  <p>
+  The one who decides to start a Custom Debian Distribution takes on a
+  responsibility for this project.  It has to be for the good of
+  Debian as a whole, and should bring an extra reputation to our common
+  goal to build the best operating system.
+  </p>
+ </sect1>
+
+ <sect1 id="initial_discussion">
+  <heading>Initial discussion</heading>
+  <p>
+  By the time you have begun to think about forming the subproject,
+  have made the commitment to lead it, and have sketched out a
+  bit of where you want to go and how you'll get there, you have
+  likely already done some informal discussion with your peers.
+  It is time, if you haven't already, to take these ideas to the
+  broader Debian developer community, opening discussion on the
+  creation of your group.
+  </p>
+
+ <sect2 id="calling_all_developers">
+  <heading>Calling all developers</heading>
+  <p>
+  At this stage, you will want to reach as broad an audience as possible.
+  You have carefully thought out what you're going to do, and are able
+  to articulate it to Debian as a whole.  Let everyone know through
+  the <email>debian-devel-announce at lists.debian.org</email> mailing
+  list, setting the <tt>Reply-to:
+  </tt><email>debian-devel at lists.debian.org</email> and listen to what
+  everyone has to say about your idea.  You may learn some valuable
+  things about pitfalls that may lie ahead for your group.  Maybe even
+  show-stoppers at that.  You may also find a number of like-minded
+  individuals who are willing to join your group and help get it
+  established.
+  </p>
+ </sect2>
+
+ <sect2 id="steering_the_discussion">
+  <heading>Steering the discussion</heading>
+  <p>
+  It's all too easy to get lost in ever-branching-out sub-threads at
+  this point.  Many people will be firing off ideas left, right and
+  centre about what your group should do.  Don't worry too much about
+  containing the discussion and keeping it on track with your main
+  idea.  You would rather not squelch enthusiasm at this point.  But
+  do try to steer the discussion a bit, focusing on the ideas that
+  are central to your subproject and not getting lost in the details.
+  </p>
+  <p>
+  At some point, you'll decide you've heard enough, and you're ready
+  to get down to the business of starting your group.
+  </p>
+ </sect2>
+
+ </sect1>
+
+</sect>
+
+<sect id="setting_up">
+  <heading>Setting up</heading>
+
+<sect1>
+  <heading>Mailing list</heading>
+  <p>
+  It is fairly important to enable some means for communication for
+  the project.  The most natural way to do this is with a mailing
+  list.
+  </p>
+  <p>
+  Creating a new mailing list starts with a wishlist bug against
+  <package><var>lists.debian.org</var></package>.  The format of this bug has to follow
+  <url id="http://www.debian.org/MailingLists/HOWTO_start_list"
+  name="certain rules">.
+  </p>
+  <p>
+  Before your list can be created, the listmasters will want
+  assurance that creation of the list is, in fact, necessary.
+  So for this reason, don't wait for your list to be created.
+  Start discussing your new project
+  on <email>debian-devel at lists.debian.org</email> immediately.  To
+  help distinguish your project's posts from the large amount of
+  traffic on this list, tag them in the Subject field with
+  an agreed-upon tag.  For instance for general discussion about Custom
+  Debian Distributions the tag <tt>[custom]</tt> should be used. An
+  example bug report to create the relevant list is bug
+  <url id="http://bugs.debian.org/237017" name="#237017">.
+  </p>
+  <p>
+  When sufficient discussion on the developer's list has
+  taken place and it is time to move it to a subproject list,
+  add to your wishlist bug report some URLs pointing to these
+  discussions in the archives as justification for creation of
+  your list.
+  </p>
+</sect1>
+
+<sect1>
+  <heading>Web space</heading>
+  <p>
+  A fairly important way to let people know what your Custom
+  Debian Distribution is about is certainly a web page.  While there
+  are a number of ways to go about this, the simplest is to put them
+  at the developer home page at <url id="http://people.debian.org"> if an
+  official Debian developer is starting the project.
+  </p>
+  <p>
+  Another possibility, and one which is fairly attractive because
+  it facilitates collaborative web site creation and maintenance,
+  is to put a page on the <url name="Wiki" id="http://wiki.debian.org">.  There
+  is a special <url id="http://wiki.debian.org/index.cgi?CustomDebian"
+  name="Wiki page for Custom Debian Distributions">.
+  </p>
+  <p>
+  A third, and more recent possibility is to start a project at
+  <url id="http://alioth.debian.org" name="alioth.debian.org">, since
+  hosting Debian development projects is the whole reason for this
+  site.
+  </p>
+  <p>
+  Finally, the best way is to have a page under <url
+  id="http://www.debian.org/devel">.  While not as straightforward as
+  any of the other options, this approach has its
+  advantages.  First, the site is mirrored everywhere.  Second, the
+  Debian web site translators translate pages into many different
+  languages, reaching new potential audiences for your Custom Debian
+  Distribution, and improving communication with other members of your
+  project and interested parties for whom English is not their most
+  comfortable language.  Third, a number of templates are available to
+  make your site more integrated with the main web site, and to assist
+  with incorporating some dynamic content into your site. Before you
+  join the Debian-Web team you should <url
+  id="http://www.debian.org/devel/website" name="learn more about building
+  Debian web pages">.
+  </p>
+  <p>
+  Once this is done, the Debian web pages team should be contacted via
+  the mailing list <email>debian-www at lists.debian.org</email> to add the
+  project to the <url id="http://www.debian.org/intro/organization"
+  name="organisation page">.
+  </p>
+</sect1>
+
+<sect1>
+  <heading>Repository</heading>
+  <p>
+  On <url id="http://alioth.debian.org/" name="alioth.debian.org"> a
+  <url id="http://gforge.org/" name="Gforge">-site is running to host
+  all Debian related project work.  Creating a project on Alioth is a
+  good idea to start teamwork on the code a certain Custom Debian
+  Distribution is releasing.
+  </p>
+</sect1>
+
+<sect1>
+  <heading>Formal announcement</heading>
+  <p>
+  Once there is a list, or at least enough preliminary discussion on
+  debian-devel to get started, and there is some information about the
+  newly planned Custom Debian Distribution available on the web,
+  it is time to send a formal announcement to
+  <email>debian-devel-announce at lists.debian.org</email>.  The
+  announcement should include references to past discussions, any web
+  pages and code which might already exist, and summarise in a well thought
+  out manner what the project is setting out to achieve.  Enlisting the
+  help of fellow developers on irc or in private email to look over
+  the draft and work out the final wording before it is sent out is
+  always a good idea.
+  </p>
+  <p>
+  Emails to <email>debian-devel-announce at lists.debian.org</email> have to
+  be signed by the GPG key of an official Debian developer.  However, it
+  should not be a very hard task if somebody wants to support Debian
+  while not yet being a developer to find a developer who volunteers
+  to sign an announcement of a reasonable project.  It might be
+  reasonable to send this announcement also to other relevant non-Debian
+  lists.  If your announcement is well done, it will draw a number
+  of responses from many outsiders, and will attract people to Debian.
+  </p>
+</sect1>
+
+<sect1>
+  <heading>Explaining the project</heading>
+  <p>
+  Now the real work starts.  People who are involved in the project
+  should be aware that they have to answer questions about the project
+  whenever they show up at conferences or at an exhibition booth.  So
+  being prepared with some flyers or posters is always a good idea.
+  </p>
+</sect1>
+</sect>
+
+<sect id="structure">
+  <heading>Project structure</heading>
+
+<sect1 id="subsetting_debian">
+  <heading>Sub-setting Debian</heading>
+  <p>
+  While there are a variety of different kinds of work to be done in
+  Debian, and not all of them follow this pattern, this document
+  describes one particular kind of project.  Our discussion about
+  Custom Debian Distributions concerns sub-setting Debian.  A
+  sub-setting project aims to identify, expand, integrate, enhance, and
+  maintain a collection of packages suitable for a particular purpose
+  by a particular kind of user.
+  </p>
+  <p>
+  Now, strictly speaking, a subset of packages could be more general
+  than described above.  A subset could be a broad category like
+  "audio applications" or "network applications".  Or it could be more
+  specific, such as "web browsers" or "text editors".  But what a
+  sub-setting project such as Debian Jr. aims to do is not focus on the
+  kind of package, but rather the kind of user.  In the case of Debian
+  Jr. it is a young child.
+  </p>
+  <p>
+  The sort of user the project looks after, and which of the needs the
+  project hopes to address are defined by the project's goals.
+  <comment>BA: I had a bit of trouble deciding how to punctuate the following
+  passage.  I considered and rejected the advice given here in response to
+  Kirsten's question about punctuating a list of questions:
+  http://www.udel.edu/eli/g20.html, instead following the advice found
+  elsewhere on the Web that double punctuation should be avoided.</comment>
+  Thus, Debian Jr. first had to decide which children the project
+  would reach: "What age?" "English speaking children only, or
+  other languages as well?"  Then the project had to determine
+  how and where they would be using Debian: "At home?" "In school?"
+  "Playing games?" "On their own systems?" "On their parents' systems?"
+  </p>
+  <p>
+  The answers to all of these questions are not straightforward.  It is
+  very much up to the project to choose some arbitrary limits for the
+  scope of their work.  Choose too broad a focus, or one which duplicates
+  work already done elsewhere, and the energy of the project dissipates,
+  making the project ineffective.  Choose too narrow a focus and the
+  project ends up being marginal, lacking the critical mass necessary
+  to sustain itself.
+  </p>
+  <p>
+  A good example was the request to split the microbiology
+  related packages out of Debian-Med into a Debian-Bio project.  This
+  is reasonable in principle, and should really be done.  In fact, the
+  initiator of Debian-Med would support this idea.  So he gave the
+  answer: "Just start the Debian-Bio project to take over all related
+  material.  Until this happens, Debian-Med will cover medical material
+  that deals with sequence analysis and so forth."  Unfortunately,
+  there was silence from the Debian-Bio proponents after this answer.
+  </p>
+  <p>
+  Of course, it sometimes turns out that you start working on a project
+  thinking you know what it is about, only to find out later that you
+  really had no idea what it would become until the user base has grown
+  beyond the small community of developers that started it.  So, none of
+  the decisions you make about your project's scope at the beginning
+  should be taken as set in stone.  On the other hand, it is your project,
+  and if you see it veering off in directions that are contrary to your
+  vision for it, by all means steer it back on course.
+  </p>
+</sect1>
+
+<sect1 id="tasksel">
+ <heading>Using tasksel and meta packages</heading>
+<p>
+  According to the plan of the project, the first meta packages (<ref
+  id="metapackages">) should be developed.  It is not always easy to
+  decide what should be included, and which meta packages should be
+  built. The best way to decide on this point is to discuss on the
+  mailing list some well thought out proposals.
+</p>
+<p>
+  Section <ref id="text_ui"> mentions <prgn>tasksel</prgn> as a tool
+  to select a Custom Debian Distribution, and explains why
+  it is currently not possible to get a Custom Debian Distribution
+  included into the task selection list.
+</p>
+  </sect1>
+
+</sect>
+
+<sect id="first_release">
+  <heading>First release</heading>
+
+<sect1 id="release_announcement">
+  <heading>Release announcement</heading>
+  <p>
+  Beyond the release announcement for Debian itself, it is necessary
+  to put some thought and work into a release announcement for the
+  first release of a Custom Debian Distribution.  This will not only
+  be directed at the Debian developer community, but also at the users.
+  This will include potential new Debian users abroad, who may not be
+  on a Debian mailing list.  Here, the same principle applies as for
+  the first announcement of the project: it is important to consider
+  sending the information to other relevant forums.
+  </p>
+</sect1>
+
+<sect1 id="users">
+  <heading>Users of a Custom Debian Distribution</heading>
+  <p>
+  By this time, people have newly installed Debian along with the
+  material in the Custom Debian Distribution, or have installed the meta
+  packages on their existing Debian systems.  Now comes the fun part,
+  building relationships with the user community.
+  </p>
+
+<sect2 id="user_support">
+  <heading>Devoting resources to the users</heading>
+  <p>
+  Users are a mixed blessing.  In the first development phase there are
+  some developers who are users, and some intrepid "early adopters."
+  But once it is released, the first version is "out there," and the
+  project will certainly attract all kinds of users who are not
+  necessarily as technically savvy as your small development user
+  community.  Be prepared to spend some time with them.  Be patient
+  with them.  And be listening carefully for the underlying questions
+  beneath the surface questions.  As draining as it can be to deal
+  with users, they are a very key component to keeping your
+  development effort vital.
+  </p>
+</sect2>
+
+<sect2 id="devel_vs_user_list">
+  <heading>Developer vs. user mailing list</heading>
+  <p>
+  Should a user list be created?  It's not as cut-and-dried as it
+  might at first appear.  When user help requests start coming in,
+  you might at first see them as a distraction from the development
+  effort.  However, you don't necessarily want to "ghettoize" the
+  user community into a separate list early.  That's a
+  recipe for developers to get out of touch very quickly with the
+  users.  Tolerate the new user questions on the developer list
+  for a while.  Once a user list is finally set up, courteously
+  redirect user questions to the user list.  Treat your users as
+  the valuable resource about how your project is working "in the
+  field" that they are.
+  </p>
+</sect2>
+
+<sect2 id="user_support_beyond_debian">
+  <heading>User support beyond Debian</heading>
+  <p>
+  Fortunately, we're not in the business of supporting users alone.
+  Look beyond Debian for your allies in user support: Linux user
+  groups (LUGs) and the users themselves.  Develop an awareness of who
+  has stakes in seeing your project succeed, and enlist their help
+  in getting a strong network of support established for your work.
+  </p>
+</sect2>
+
+</sect1>
+
+</sect>
+
+</chapt>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->

Added: cdd/tags/cdd/0.4.5/doc/en/08_todo.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/08_todo.sgml	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,644 @@
+<chapt id="todo">
+  <heading>To do</heading>
+
+  <sect id="communication">
+  <heading>Establishing and using communication platforms</heading>
+
+<p>
+Each Custom Debian Distribution has an own mailing list for discussion
+of specific development issues.  Because there are several common
+issues between all Custom Debian Distributions also a common mailing
+list was created. People who are interested in working on common
+issues like building meta packages, technical issues of menu systems
+or how to create CDs for Custom Debian Distributions could <url
+id="http://lists.debian.org/debian-custom/" name="subscribe to this
+list or read the list archive">.
+</p>
+<p>
+Moreover the project <url
+id="http://alioth.debian.org/projects/cdd/" name="cdd"> on Alioth was
+started.  The <url id="http://svn.debian.org/viewcvs/cdd/"
+name="subversion repository"> can be browsed or checked out by
+by
+<example>
+  svn checkout svn://svn.debian.org/svn/cdd/cdd/trunk
+</example>
+for anonymous users. Developers should check out via
+<example>
+  svn checkout svn+ssh://<var>username</var>@svn.debian.org/svn/cdd/cdd/trunk cdd
+</example>
+The current layout for the repository is as follows:
+<example>
+  cdd -+- cdd -+- branches -+- cdd -+- 0.3.x
+       |       |
+       |       +- tags -----+- cdd -+- 0.3   [older versions of cdd tools]
+       |       |            |       +- 0.3.1
+       |       |            |          ...
+       |       |            |       +- <var>&lt;latest&gt;</var>
+       |       |            |
+       |       |            +- doc -+- 0.1   [older versions of this doc]
+       |       |                    +- 0.2
+       |       |                    +- 0.3
+       |       |                        [Since 0.4.1 the doc is in cdd directory]
+       |       |
+       |       +- trunk ----cdd [code in development for cdd source package]
+       |                     |
+       |                     +-- doc [this document = cdd-doc package]
+       |
+       +- projects -+--- med ---+- branches
+                    |           |
+                    |           +- tags
+                    |           |
+                    |           +- trunk [development version of Debian-Med]
+                    |
+                    +- science -+- branches
+                    |           |
+                    |           +- tags
+                    |           |
+                    |           +- trunk [development version of Debian-Science]
+                    |
+                    +- ...
+                    |
+                    ...
+</example>
+There is a <url
+id="http://lists.alioth.debian.org/mailman/listinfo/cdd-commits"
+name="mailing list"> with subversion changes and a <url
+id="http://cia.navi.cx/stats/project/debian-custom" name="CIA system">
+for tracking changes in the Custom Debian Distributions projects in
+real-time.
+</p>
+  </sect>
+
+  <sect id="visibility">
+  <heading>Enhancing visibility</heading>
+
+<p>
+If a user installs Debian via official install CDs the first chance to
+do a package selection to customise the box is <prgn>tasksel</prgn>.
+The first Custom Debian Distribution Debian-Junior is mentioned in the
+task selection list and thus it is clearly visible to the user who
+installs Debian.
+</p>
+<p>
+In bug <url id="http://bugs.debian.org/186085" name="#186085"> a
+request was filed to include Debian-Med in the same manner.  The
+problem with the <prgn>tasksel</prgn>-approach is that all included
+packages should be on the first install CD.  This would immediately
+have the consequence that the first install CD would run out of space
+if all Custom Debian Distributions would be included in the task
+selection list.
+</p>
+<p>
+How to enhance visibility of Custom Debian Distributions for the user
+who installs Debian from scratch?
+<taglist>
+  <tag>Change <prgn>tasksel</prgn> policy.</tag>
+   <item>If the <em>packages must be on the first CD</em> feature of
+         <prgn>tasksel</prgn> would be dropped all Custom Debian
+	 Distributions could be listed under this topic in the task
+	 selection list.
+   </item>
+  <tag>Custom Debian Distributions information screen.</tag>
+   <item>Alternatively a new feature could be added to
+         <prgn>tasksel</prgn> or in addition to <prgn>tasksel</prgn>
+	 in the installation procedure which presents a screen which
+	 gives some very short information about Custom Debian
+	 Distributions (perhaps pointing to this document for further
+	 reference) and enables the user to select from a list of the
+	 available Custom Debian Distributions.
+   </item>
+  <tag>Provide separate install CDs</tag>
+   <item>By completely ignoring the installation of the official
+         installation CD each Custom Debian Distribution can offer a
+	 separate installation CD.  This will be done anyway for
+	 certain practical reasons (see for instance the Debian-Edu -
+	 SkoleLinux approach).  But this is really no solution we
+	 could prefer because this does not work if the user wants to
+	 install more than one Custom Debian Distribution on one
+	 computer.
+   </item>
+  <tag>Change overall distribution philosophy of Debian.</tag>
+   <item>This way is concerned to some ideas from Debian developers
+         who took part in Open Source World Conference in Malaga and
+	 is explained in Detail in <ref
+	 id="new_ways_of_distribution">. This would save the problem
+	 of making Custom Debian Distribution visible to users in a
+	 completely different way because in this case Debian would be
+	 released as its various flavours of Custom Debian
+	 Distributions.
+   </item>
+</taglist>
+</p>
+<p>
+Whichever way Debian developers will decide to go it is our vital
+interest to support users and <em>show</em> our users the tools we
+invented to support them.
+</p>
+   <sect1 id="webpages">
+  <heading>Custom Debian Distributions web pages</heading>
+<p>
+Most Custom Debian Distributions maintain their own web space under 
+<tt>http://www.debian.org/devel/cdd</tt> to provide general
+information which will be translated by the Debian web team. This is a
+good way to inform users about the progress of a project.  A special
+way to announce what is done and what is planed is the list of yet
+packaged software and software which is intended to be included.  To
+do this in a nice manner Tobias Toedter
+<email>t.toedter at gmx.net</email> defined a new tag for Debian-Med
+in order to ease translation by making use of the 
+<prgn>gettext</prgn> functionality. In the meantime, this new tag was
+extended to be useful for other Custom Debian Distributions as well.
+</p>
+<p>
+As a result, a new <file>.pot</file> file was created, called
+<file>debian-cdd.pot</file>.  Translators of the web pages should
+update their <file>.po</file> files and translate this new file into
+their language.  For the translation teams who have already begun to
+translate the web pages of the Debian-Med Custom Debian Distribution,
+here is a short explanation of the newly introduced tag and its use.
+The tag is called <tt>project</tt>, and it takes a few attributes. The
+complete (empty) tag looks like this:
+
+<example>
+&lt;project name=&quot;&quot;
+  url=&quot;&quot;
+  license=&quot;&quot;
+  deb=&quot;&quot;
+  anchorid=&quot;&quot;&gt;
+  Here goes the description of the project.
+&lt;/project&gt;
+</example>
+
+The meaning of the attributes is as follows:
+
+<taglist>
+  <tag>name</tag>
+   <item>This is the name of the project which is yet packaged or
+         should be packaged for the Custom Debian Distribution in
+         question. In most cases, you won't have to translate this
+         attribute.</item>
+  <tag>url</tag>
+   <item>This is the URL of the homepage of the project. You will
+         almost never have to do any translational work here. At least
+         I can't think of any.
+   </item>
+  <tag>license</tag>
+   <item>The license under which the project is released. In most
+         cases (e.g. GPL, BSD) you don't have to modify anything
+         here. Some projects use a custom license or there's anything
+         other which requires some more explanation in plain text. Of
+         course, this plain text should be translated. 
+   </item>
+  <tag>deb</tag>
+   <item>This is the URL of a Debian package. If the project is
+         available as an official Debian package (i.e. it is included
+         in the Debian distribution or available in the contrib or
+         non-free section) or if the project is being packaged by
+         someone, but not stored on the Debian servers, this attribute
+         is used. If there's no package available at all, this
+         attribute is either left blank or omitted completely. There's
+         no need to change this value in your translations.
+   </item>
+  <tag>anchorid</tag>
+   <item>Every project gets an automatically created HTML anchor. This
+         auto-anchor is created by using the project's name (Convert
+         all ASCII characters into lowercase and replace any other
+         character with the underscore. Silly example: "BioSig - For
+         Everyone" -> "biosig___for_everyone"). If for some reason
+         this is not wanted, the id and name of the anchor can be
+         specified with this attribute. An example of the use of this
+         attribute can be found in other.wml. The project's name is
+         "HARP - HArmonisation for the secuRity of web technologies
+         and aPplications", which is awfully long. The anchorid
+         attribute in this case is set to "harp". Note that you should
+         never have to change anything here, if it is already defined
+         in the English page.  If you have to translate the name of
+         the project, the automatic creation of the anchorid will
+         naturally give a different result then the English
+         anchorid. In this case, please use this attribute to manually
+         specify the anchor which should be used, according to the
+         rules above: Convert all (ASCII) characters into lowercase,
+         and replace any other character with an underscore.  So in
+         conclusion, you should always use the anchorid attribute if
+         you've translated the name attribute.
+   </item>
+</taglist>
+
+The interesting part of the <tt>project</tt>-tag is the body, between
+the opening and the closing tag. This is the description of the
+project, and this is the part where you're going to have to translate
+the text.  The best way to learn the usage of this tag is to have a
+look at the Debian-Med examples.
+</p>
+<p>
+Moreover it might make sense to sort the list of projects according to
+the following keys:
+<taglist>
+  <tag>available Debian package</tag>
+   <item>Top most you should list all packages which are just inside
+         Debian and thus (hopefully) included in the meta package
+	 dependencies.  This should be followed by the projects which
+	 has unofficial packages outside Debian.  A last group should
+	 list all not yet packaged projects which are interesting for
+	 the Custom Debian Distribution.  These groups are using a
+	 certain green-yellow-red color code.
+   </item>
+  <tag>alphabetically</tag>
+   <item>Inside each of these three groups an alphabetical order is
+         proposed to gain some consistency between all Custom Debian
+	 Distributions.
+   </item>
+</taglist>
+The users who are visiting the web pages will like this comfortable
+overview ...
+</p>
+   </sect1>
+   <sect1 id="graphingwebpages">
+  <heading>Automatically graphing the meta-package dependencies for web
+  pages</heading>
+<p>
+The new <package>cddtk</package> contains a tool which allows browsing
+a <file>Packages</file> file for all packages that are listed in the
+dependency list of a package. 
+
+<example>
+   pkgtool -p UNCOMPRESSED_PACKAGES_FILE pdeps LIST_OF_PACKAGE_NAMES
+</example>
+
+This could be used as a start to build the web-pages as suggested above
+automatically - at least for the packages which are just at the
+Debian-Mirror.  For the unofficial packages and not yet existing
+packages a fake-<file>Packages</file> following the same syntax could
+be created and processed with the same tool.
+</p>
+   </sect1>
+  </sect>
+
+  <sect id="debtags">
+   <heading>Debian Package Tags</heading>
+
+<p>
+<url id="http://deb-usability.alioth.debian.org/debtags/" name="Debian
+Package Tags">  is a work to add more metadata to Debian packages.
+At the beginning it could be seen as a way to allow to specify
+multiple sections (called "tags") per package where now only one can
+be used.
+</p>
+<p>
+However, the system has evolved so that tags are organised in
+"facets", which are separate ontologies used to categorise the
+packages under different points of view.
+</p>
+<p>
+This means that the new categorisation system supports tagging
+different facets of packages.  There can be a set of tags for the
+"purpose" of a package (like "chatting", "searching", "editing"),
+a set of tags for the technologies used by a package (like "html",
+"http", "vorbis") and so on.
+</p>
+<p>
+Besides being able to perform package selection more efficiently by
+being able to use a better categorisation, one of the first outcomes
+of Debian Package Tags for CDDs is that every CDD could maintain its
+own set of tags organised under a "facet", providing categorisation
+data which could be used by its users and which automatically
+interrelates with the rest of the tags.
+</p>
+<p>
+For example, Debian-Edu could look for "edu::administration" packages
+and then select "use::configuring".  The "edu::administration"
+classification would be managed by the Debian-Edu people, while
+"use::configuring" would be managed by Debian.  At the same time, non
+Debian-Edu users looking for "use::configuring" could have a look at
+what packages in that category are suggested by the Debian-Edu
+community.
+</p>
+<p>
+It is not excluded that this could evolve in being able to create a
+Custom Debian Distribution just by selecting all packages tagged by
+"edu::*" tags, plus dependencies; however, this option is still being
+investigated.
+</p>
+<p>
+Please write to the list <email>deb-usability-list at lists.alioth.debian.org</email>
+for more information about Debian Package Tags or if you want to get
+involved in Debian Package Tags development.
+</p>
+  </sect>
+
+  <sect id="EnhancingTechnology">
+  <heading>Enhancing basic technologies regarding Custom Debian Distributions</heading>
+
+<p>
+In section <ref id="future_handling"> several issues where raised how
+handling of meta packages should be enhanced.
+</p>
+<p>
+Regarding to building meta packages for all Custom Debian
+Distributions consistently it might make sense to use the following
+approach:
+</p>
+  <!-- FIXME: How to indent a paragraph??? -->
+  <p>
+   The method how Debian-Edu currently builds its meta packages from a
+   kind of <em>database</em> (in the <file>tasks</file> directory of the source)
+   was generalised in the packages <package>cdd-dev</package> (<ref
+   id="cdd-dev">) and <package>cdd-common</package> (<ref
+   id="cdd-common">).  This approach definitely needs some
+   enhancements to fit the needs of all Custom Debian Distributions.
+   It might be a good idea to maintain a more general kind of database
+   than this <file>tasks</file> directory approach currently represents
+   for each Custom Debian Distribution.  From
+   this database the control files for all meta packages could be
+   built on demand to build the necessary files of the
+   <file>debian</file> directory in the package build process
+   dynamically.  The extra plus would be that it would be easy to
+   build tools which parse this database to generate docs and websites
+   dynamically.  It would drastically reduce the amount of work for
+   keeping the project related web sites up to date if this could be
+   done automatically.  Some tools like the following might be easily
+   done to support maintenance and documentation of the meta packages:
+<example>
+       build_cdd-package med bio
+       build_cdd-package junior toys
+       build_cdd-package education [all]
+
+       build_cdd-wml-template nonprofit &lt;foo&gt;
+       build_cdd-wml-template demudi    &lt;bar&gt;
+
+       cdd-package-info.php?cdd=&lt;foo&gt;&amp;pkg=&lt;bar&gt;
+</example>
+   If the database structure is well thought (perhaps using XML or by
+   stealing the format of other databases which are usually used in
+   Debian) not really hard to implement.
+</p>
+<p>
+Last but not least the special configuration issue has to be
+addressed.  In general developers of meta packages should provide
+patches for dependent packages if they need a certain configuration
+option and the package in question does feature a
+<prgn>debconf</prgn> configuration for this case.  Then the
+meta package could provide the needed options by pre-seeding the
+<prgn>debconf</prgn> database while using very low priority questions
+which do not came to users notice.
+</p>
+<p>
+If the maintainer of a package which is listed in a meta package
+dependency and needs some specific configuration does not accept such
+kind of patch it would be possible to go with a <prgn>cfengine</prgn>
+script which just does the configuration work.  According to the
+following arguing this is no policy violation:  A local maintainer can
+change the configuration of any package and the installation scripts
+have to care for these changes and are not allowed to disturb these
+adaptations.  In the case described above the <prgn>cfengine</prgn>
+script takes over the role of the local administrator: It just handles
+as an
+"automated-<prgn>cfengine</prgn>-driven-administrator-robot".
+</p>
+<p>
+If there is some agreement to use <prgn>cfengine</prgn> scripts to
+change configuration - either according to <prgn>debconf</prgn>
+questions or even to adapt local configuration for Custom Debian
+Distribution use in general - a common location for this kind of stuff
+should be found.  Because these scripts are not configuration itself
+but substantial part of a meta package the suggestion would be to
+store this stuff under
+<example>
+   /usr/share/cdd/#CDD#/#METAPACKAGE#/cf.#SOMETHING#
+</example>
+</p>
+<p>
+There was another suggestion at the Valencia workshop: Make use of
+<prgn>ucf</prgn> for the purpose mentioned above.  This is a topic
+for discussion.  At least currently Debian-Edu seems to have good
+experiences with <prgn>cfengine</prgn> but perhaps it is worth comparing
+both.
+</p>
+<p>
+A further option might be 
+<url id="http://freedesktop.org/Software/CFG" name="Config4GNU"> from
+freedesktop.org but it is not even yet packaged for Debian.
+</p>
+  </sect>
+
+  <sect id="liveCD">
+  <heading>Building Live CDs of each Custom Debian Distribution</heading>
+
+<p>
+The first step to convince a user to switch to Debian is to show him
+how it works while leaving his running system untouched.
+<url id="http://www.knoppix.org/" name="Knoppix"> - <em>the "mother" of
+all Debian-based live CDs</em> - is a really great success and it is a
+fact that can not be ignored that Debian gains a certain amount of
+popularity because people want to know what distribution is working
+behind the scenes of Knoppix.
+</p>
+<p>
+But Knoppix is a very common demonstration and its purpose is to work
+in everyday live.  There is no room left for special applications and
+thus people started to adopt it for there special needs.  In fact
+there exist so many Debian based Live CDs that it makes hardly sense
+to list them all here.  The main problem is that most of them
+containing special applications and thus are interesting in the CDD
+scope are out of date because they way the usually were builded was a
+pain.  One exception is perhaps <url id="http://dirk.eddelbuettel.com/quantian.html"
+name="Quantian"> which is quite regularly updated and is intended for
+scientists.
+</p>
+<p>
+The good news is that the problem of orphaned or outdated Live CDs can
+easily solved by debian-live and the <package>live-helper</package>.
+This package turns all work to get an up to date ISO image for a Live
+CD into calling a single script.  For the CDD tools this would simply
+mean that the tasks files have to be turned into a live-helper input
+file and the basic work is done.  This will be done in a future
+cdd-dev version.
+</p>
+
+  </sect>
+
+  <sect id="new_ways_of_distribution">
+  <heading>New way to distribute Debian</heading>
+
+<p>
+<em>This section is kind of "Request For Comments" in the sense that
+solid input and arguing is needed to find out whether it is worth
+implementing it or drop this idea in favour of a better solution.</em>
+</p>
+<p>
+At Open Source World Conference in Malaga 2004 there was a workshop of
+Debian Developers. Among other things the topic was raised how the
+distribution cycle or rather the method of distribution could be
+changed to increase release frequency and to better fit user interests.
+</p>
+<p>
+There was a suggestion by Bdale Garbee <email>bdale at gag.com</email> to
+think about kind of sub-setting Debian in the following way: Debian
+developers upload their packages to <tt>unstable</tt>.  The normal
+process which propagates packages to <tt>testing</tt> and releasing a
+complete <tt>stable</tt> distribution also remains untouched.  The new
+thing is that the package pool could be enhanced to store more package
+versions which belong to certain subsets alias Custom Debian
+Distributions which all have a set of <tt>tested inside the
+subset</tt> distribution which leads to a <tt>stable</tt> subset
+release.  The following graph might clarify this:
+
+<example>
+DD -> unstable   -->  testing  -->  stable
+         |
+         +--->  CDD_A testing  -->  stable CDD_A
+         |
+         +--->  CDD_B testing  -->  stable CDD_B
+         |
+         +--->  ...
+</example>
+
+where <tt>CDD_A</tt> / <tt>CDD_B</tt> might be something like
+<tt>debian-edu</tt> / <tt>debian-med</tt>. To implement this
+sub-setting the following things are needed:
+<taglist>
+  <tag>Promotion rules</tag>
+   <item>There was a general agreement that technical implementation
+         of this idea in the package pool scripts / database is not too
+	 hard.  In fact at LinuxTag Chemnitz 2004 Martin Loschwitz
+	 <email>madkiss at debian.org</email> announced exactly this as
+	 "nearly implemented for testing purpose" which should solve
+	 the problem of outdated software for desktop users as a goal
+	 of the <tt>debian-desktop</tt> project.
+   </item>
+  <tag>Reasonable subsets</tag>
+   <item>Once the promotion tools are able to work with sub-setting,
+         reasonable subsets have to be defined and maintained.  A
+	 decision has to be made (if this will be implemented at all)
+	 whether this sub-setting should be done according to the
+	 Custom Debian Distribution layout or if there are better ways
+	 to find subsets.
+   </item>
+  <tag>BTS support</tag>
+   <item>The Bug Tracking System has to deal with different package
+         versions or even version ranges to work nicely together with
+	 the sub-setting approach.
+   </item>
+  <tag>Security</tag>
+   <item>As a consequence of having more than only a single
+         <tt>stable</tt> each CDD-team has to form a security team to
+	 care for those package versions that are not identically with
+         the "old" <tt>stable</tt>.
+   </item>
+</taglist>
+</p>
+<p>
+A not so drastically change would be to find a <em>common</em> set of
+packages which are interesting for all Custom Debian Distributions
+which will obtained from the "releasable set" of testing (i.e. no
+RC-bugs).  This would make the structure above a little bit more flat:
+
+<example>
+DD -> unstable --> testing --> releasable --> stable
+                                   |
+                                   +--->      stable CDD_A
+                                   |
+                                   +--->      stable CDD_B
+                                   |
+                                   +--->  ...
+</example>
+
+A third suggestion was given at Congreso Software Libre Comunidad
+Valenciana:
+
+<example>
+           testing_proposed_updated
+                      |
+                      |
+                      v
+DD -> unstable --> testing --> stable
+                      |
+                      +--->    stable CDD_A
+                      |
+                      +--->    stable CDD_B
+                      |
+                      +--->  ...
+</example>
+
+The rationale behind these testing backports is that sometimes a
+Custom Debian Distribution is able to reduce the set of releasable
+architectures.  Thus some essential packages could be moved much 
+faster to testing and these might be "backported" to testing for this
+special Custom Debian Distribution.  For instance this might make
+sense for Debian-Edu where usually i386 architecture is used.
+</p>
+<p>
+All these different suggestions would lead to a modification of the
+package pool scripts which could end up in a new way to distribute
+Debian.  This might result from the fact that some Custom Debian
+Distributions need a defined release cycle.  For instance the
+education related distributions might trigger their release by the
+start-end-cycle of the school year.  Another reason to change the
+package pool system is the fact that some interested groups, who
+provide special service for a certain Custom Debian Distribution,
+would take over support only for the subset of packages which is
+included in the meta package dependencies or suggestions but they
+refuse to provide full support for the whole range of Debian
+packages. This would lead to a new layout of the file structures of
+the Debian mirrors:
+
+<example>
+  debian/dists/stable/binary-i386
+                     /binary-sparc
+                     /binary-...
+              /testing/...
+              /unstable/...
+  debian-CDD_A/dists/stable/binary-[supported_architecture1]
+                           /binary-[supported_architecture2]
+                           /...
+                    /testing/...
+  debian-CDD_B/dists/testing/...
+                    /stable/...
+  ...
+  pool/main
+      /contrib
+      /non-free
+</example>
+To avoid flooding the archive with unnecessarily many versions of
+packages for each single Custom Debian Distribution a common base of
+all these Custom Debian Distributions has to be defined.  Here some
+LSB conformance statement comes into mind: The base system of all
+currently released (stable) Custom Debian Distributions is compliant
+to LSB version x.y.
+</p>
+<p>
+Regarding to security issues there are two ways: Either one Custom
+Debian Distribution goes with the current stable Debian and thus the
+<file>Packages.gz</file> is just pointing to the very same versions
+which are also in debian/stable.  Then no extra effort regarding to
+security issues is need.  But if there would be a special support team
+which takes over maintenance and security service for the packages in
+one certain Custom Debian Distribution they should be made reliable
+for this certain subset.
+</p>
+<p>
+This reduced subset of Debian packages of a Custom Debian Distribution
+would also make it easier to provide special install CDs at is it
+currently done by Debian-Edu.
+</p>
+  </sect>
+</chapt>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->

Added: cdd/tags/cdd/0.4.5/doc/en/A_devel.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/A_devel.sgml	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,402 @@
+  <appendix id="DevelDescription">
+  <heading>Description of development tools</heading>
+  <sect id="cdd-dev">
+  <heading>Package <package>cdd-dev</package></heading>
+
+<p>
+If meta packages are builded using the tools inside the
+<package>cdd-dev</package> package it can be ensured that the
+resulting meta packages will work nicely with the same version of
+<package>cdd-common</package> package.  The goal is to keep necessary
+changes for the source of the meta packages of a Custom Debian
+Distribution as low as possible when the version of the
+<package>cdd</package> source package changes.  Thus it is
+strongly recommended to use the tools described below.
+</p>
+<p>
+The usage of the tools in the <package>cdd-dev</package> package might
+introduce a versioned dependency in the
+<package><var>&lt;cdd&gt;</var>-common</package> package from which
+all other meta packages of the <var>CDD</var> in question will
+depend. This <package><var>&lt;cdd&gt;</var>-common</package> package
+instantiates the <var>CDD</var> in the common registry for all CDDs in
+<file>/etc/cdd</file>.
+</p>
+<p>
+The best idea to use the tools provided by the
+<package>cdd-dev</package> is to put a <file>Makefile</file> into the
+build directory containig one single line
+
+<example>
+   include /usr/share/cdd-dev/Makefile
+</example>
+
+(see <file>/usr/share/doc/cdd-dev/examples/Makefile</file>).  Using
+this <file>Makefile</file> all tools that were contained in
+<package>cdd-dev</package> package versions before 0.4.  These tools
+are moved to <file>/usr/share/cdd-dev/</file> because there is no need
+to call them directly.  Here is a list of the <file>make</file> targets.
+</p>
+
+<sect1 id="cdd-tasks.desc">
+  <heading>CDD<tt>-tasks.desk</tt></heading>
+
+<p>
+This target is the description file that is used in
+<prgn>tasksel</prgn> to enable selecting the tasks belonging to the
+CDD.  The file will be moved to the
+<var>cdd</var><package>-tasks</package>.  All information is obtained
+from the single task files in the <file>tasks</file> directory of the
+CDD source.
+</p>
+
+</sect1>
+<sect1 id="debian_control">
+  <heading><tt>debian/control</tt></heading>
+
+<p>
+</p>
+</sect1>
+
+<sect1 id="cdd-clean-helper">
+  <heading><!-- document type does not allow element "MANREF" here--><tt>cdd-clean-helper(1)</tt></heading>
+
+<p>
+<taglist>
+  <tag>NAME</tag>
+   <item>
+    <prgn>cdd-clean-helper</prgn> - cleans up debian directory in a
+     meta package building tree 
+   </item>
+  <tag>SYNOPSIS</tag>
+   <item>
+    <prgn>cdd-clean-helper</prgn>
+   </item>
+  <tag>DESCRIPTION</tag>
+   <item>
+    <p>
+    This script can be used in <file>debian/rules</file> file to
+    revert the changes which were done by <manref
+    name="cdd-install-helper" section="1"> to get a clean packaging
+    tree.  Using this helper ensures that the
+    <file>debian/rules</file> file does not needed to be changed if
+    there are changes in the <package>cdd-dev</package> package.
+    </p>
+   </item>
+  <tag>EXAMPLES</tag>
+   <item>For the usage of this tool just have a look at the
+         <package>debian-med</package> source package.
+   </item>
+  <tag>AUTHOR</tag>
+   <item>Andreas Tille <email>tille at debian.org</email>.</item>
+  </taglist>
+</p>
+</sect1>
+
+<sect1>
+  <heading>Apt <file>sources.list</file> files in <file>/etc/cdd/</file></heading>
+<p>
+These files are used by <manref name="cdd-gen-control" section="1"> to
+build valid <file>debian/control</file> files that contain only
+available packages in their dependencies.  This enables building meta
+packages for <tt>stable</tt>, <tt>testing</tt>, <tt>unstable</tt> or
+even a completely different distribution that has valid
+<file>sources.list</file> entries.  The file
+<file>/etc/cdd/control.list</file> is used as default for <manref
+name="cdd-gen-control" section="1"> and usually is a symbolic link
+(see <manref name="ln" section="1">) to
+<file>sources.list.</file><var>distribution</var>.  It might be
+changed using the <tt>-s </tt><var>dist</var> option of <manref
+name="cdd-gen-control" section="1">.
+</p>
+<p>
+<strong>TODO:</strong> <em>Either parse the available
+<file>/etc/apt/sources.list</file> or use a sane <prgn>debconf</prgn>
+question to use the "nearest" mirror.</em>
+</p>
+</sect1>
+
+<sect1>
+  <heading>Templates in <file>/usr/share/cdd/templates</file></heading>
+<p>
+The directory <file>/usr/share/cdd/templates</file> contains templates
+that can be used to build a <var>&lt;cdd&gt;</var><package>-common</package>,
+which uses the tools that are contained in the
+<package>cdd-common</package> package, and are useful to manage
+<var>&lt;cdd&gt;</var> user groups (see <ref id="userroles">).
+</p>
+</sect1>
+</sect>
+
+<sect id="cdd-common">
+  <heading>Package <package>cdd-common</package></heading>
+
+<p>
+This package creates a common registry for all CDDs in
+<file>/etc/cdd</file>.  Each CDD should put the files that are used
+into a subdirectory named like the CDD of <file>/etc/cdd</file>.  The
+<package>cdd-common</package> package installs a common configuration
+file <file>/etc/cdd/cdd.conf</file>, which can be used to influence the
+behaviour of the tools described below.  
+</p>
+
+<sect1>
+  <heading><!-- document type does not allow element "MANREF" here--><tt>cdd-role(8)</tt></heading>
+<p>
+<taglist>
+  <tag>NAME</tag>
+   <item>
+    <prgn>cdd-role</prgn> - add/remove roles in registered Custom Debian Distribution
+
+   </item>
+  <tag>SYNOPSIS</tag>
+   <item>
+    <prgn>cdd-role</prgn> <var>add|del</var> <var>CDD</var> [<var>Role</var>]
+   </item>
+  <tag>DESCRIPTION</tag>
+   <item>Add/remove (register/unregister) <var>Role</var> for the
+   specified <var>CDD</var>. If <var>Role</var> is not specified, it's
+   assumed to be named like <var>CDD</var>.
+   </item>
+
+   
+  <tag>OPTIONS</tag>
+   <item>
+    <taglist>
+     <tag><var>CDD</var></tag>
+      <item>A registered custom distribution in /etc/cdd, for example
+      one of <tt>med</tt>, <tt>junior</tt>, <tt>desktop</tt>,
+            <tt>edu</tt> or <tt>demudi</tt>
+      </item>
+    </taglist>
+   </item>
+  <tag>AUTHOR</tag>
+   <item>Andreas Tille <email>tille at debian.org</email>, 
+   Cosimo Alfarano <email>kalfa at debian.org</email>.</item>
+</taglist>
+</p>
+</sect1>
+
+<sect1 id="cdd-update-menus">
+  <heading><!-- document type does not allow element "MANREF"
+  here--><tt>cdd-update-menus(8)</tt></heading>
+<p>
+<taglist>
+  <tag>NAME</tag>
+   <item>
+    <prgn>cdd-update-menus</prgn> - add menu of meta package to all Custom Debian Distribution users
+   </item>
+  <tag>SYNOPSIS</tag>
+   <item>
+    <prgn>cdd-update-menus</prgn> [<var>--cdd CDD</var> | <var>--user
+    user</var>]
+   </item>
+  <tag>DESCRIPTION</tag>
+   <item>
+   <p>
+   cdd-update-menus behaves differently depending on who run the
+   command:
+   </p>
+
+   <p>
+   If it is called by a user, it adds, and keeps updated, menu
+   entries for the user who runs it.
+   </p>
+
+   <p>
+   If it is called by root, it adds and keeps updated user's menu entries
+   (see menu package for users' menus) for all users who belong to the
+   group of the specified Custom Debian Distribution, or only for a
+   specified user, depending on which parameter is passed to the script.
+   </p>
+   </item>
+   
+  <tag>OPTIONS</tag>
+   <item>
+    <taglist>
+     <tag><var>CDD</var></tag>
+      <item>one of the installed CDDs, listed in /etc/cdd/, for example
+      (if installed: <tt>med</tt>, <tt>junior</tt>, <tt>desktop</tt>,
+            <tt>edu</tt> or <tt>demudi</tt>
+      </item>
+     <tag><var>user</var></tag>
+      <item>system user</item>
+    </taglist>
+   </item>
+  <tag>AUTHOR</tag>
+   <item>Andreas Tille <email>tille at debian.org</email>,
+   Cosimo Alfarano <email>kalfa at debian.org</email>.</item>
+</taglist>
+</p>
+</sect1>
+
+<sect1>
+  <heading><!-- document type does not allow element "MANREF" here--><tt>cdd-user(8)</tt></heading>
+<p>
+<taglist>
+  <tag>NAME</tag>
+   <item>
+    <prgn>cdd-user</prgn> - add/remove user to Role of a registered Custom Debian Distribution
+
+   </item>
+  <tag>SYNOPSIS</tag>
+   <item>
+    <prgn>cdd-user</prgn> <var>add|del</var> <var>CDD</var> <var>user</var> [<var>Role</var>]
+   </item>
+  <tag>DESCRIPTION</tag>
+   <item>Add/remove user to a <var>Role</var> of the specified <var>CDD</var>.
+
+   If <var>Role</var> is not specified, it's assumed to be named like
+   <var>CDD</var>
+   </item>
+
+   
+  <tag>OPTIONS</tag>
+   <item>
+    <taglist>
+     <tag><var>CDD</var></tag>
+      <item>A registered custom distribution in /etc/cdd, for example
+      one of <tt>med</tt>, <tt>junior</tt>, <tt>desktop</tt>,
+            <tt>edu</tt> or <tt>demudi</tt>
+      </item>
+     <tag><var>user</var></tag>
+      <item>user to add</item>
+     <tag><var>Role</var></tag>
+      <item>the role in the <var>CDD</var> that <var>user</var> will
+      assume</item>
+    </taglist>
+   </item>
+  <tag>AUTHOR</tag>
+   <item>Andreas Tille <email>tille at debian.org</email>, 
+   Cosimo Alfarano <email>kalfa at debian.org</email>.</item>
+</taglist>
+</p>
+</sect1>
+
+<sect1>
+  <heading><tt>cdd.conf(5)</tt></heading>
+<p>
+<taglist>
+  <tag>NAME</tag>
+   <item>
+    <file>cdd.conf</file> - configuration for Custom Debian Distribution registry
+   </item>
+  <tag>DESCRIPTION</tag>
+   <item>This file is sourced from shell scripts inside the Custom
+         Debian Distribution package <package>cdd-common</package> and
+   thus it has to follow shell syntax.  The variables that are set
+   inside this configuration file can be overriden by special CDD
+   configration files
+   <file>/etc/cdd/<var>&lt>cdd&gt;</var>/<var>&lt>cdd&gt;</var>.conf</file>
+   for each single CDD.
+  <tag>SYNTAX</tag>
+   <item>The following variables can be set:
+    <taglist>
+      <tag><tt>DBBACKEND</tt></tag>
+       <item>Set the backend for the user role management system.
+             Currently the only implemented role management system is
+             <tt>unixgroups</tt> but others might be implemented
+             later.  Unsetting this variable leads to use no roles at all.
+       </item>
+      <tag><tt>UPDATEUSERMENU</tt></tag>
+       <item>If this is set to <tt>yes</tt>, the user menus of meta
+             packages can be created automatically at install time of
+             the package if the postinst script of the package allows
+             this.  It is suggested to use this option in the specific
+             configuration files of a special Custom Debian
+             Distribution that override the settings of the general
+             configuration file. 
+       </item>
+      <tag><tt>SHAREDIR</tt></tag>
+       <item>Set the base directory for the user role management
+             system. While this is more or less a feature for
+             debugging this might be also used otherwise. 
+       </item>
+      <tag><tt>DRYRUN</tt></tag>
+       <item>This variable can be set for debugging.  Normally it
+             should be left unset (<em>NOT</em> set to <tt>false</tt>
+             or anything else!). If set to <tt>true</tt> a dry run of
+             the tools is performed or <tt>echo DRYRUN:</tt> would
+             print debugging information. 
+       </item>
+      <tag><tt>DEBUG</tt></tag>
+       <item>If set to <tt>1</tt> debugging mode is switched on.
+    </taglist>
+   </item>
+  <tag>SEE ALSO</tag>
+   <item>
+    <file>cdd-role (8)</file>, <file>cdd-update-menus (8)</file>, 
+    <file>cdd-user (8)</file>
+   </item>
+  <tag>AUTHOR</tag>
+   <item>Andreas Tille <email>tille at debian.org</email>, 
+   Cosimo Alfarano <email>kalfa at debian.org</email>.</item>
+</taglist>
+</p>
+</sect1>
+
+</sect>
+
+
+<sect id="svn">
+  <heading>Working with <file>svn</file></heading>
+<p>
+  Sometimes it might be interesting for developers to check out the
+  latest code of the CDD tools or a special CDD code for the meta
+  packages.  In <ref id="communication"> the directory layout of the
+  <file>svn</file>-directory was described.  How to derive the
+  Debian packages from this layout?
+<taglist>
+  <tag>Checkout</tag>
+   <item>
+    For the CDD tools
+<example>
+  svn checkout svn+ssh://<var>username</var>@svn.debian.org/svn/cdd/cdd/trunk/cdd cdd
+</example>
+    or for the Custom Debian Distribution <var>cdd-name</var>
+<example>
+  svn checkout svn+ssh://<var>username</var>@svn.debian.org/svn/cdd/projects/<var>cdd-name</var>/trunk
+</example>
+   </item>
+  <tag>Build source package</tag>
+   <item>
+    Change into the created directory and type
+<example>
+  make -f debian/rules dist
+</example>
+    This creates a <file>tar.gz</file> source archive of the packages
+    you want to build. (Note: This requires that
+    <file>debian/rules</file> has a <tt>dist</tt> target which is the
+    case for all currently existing files.)
+   </item>
+  <tag>Build Debian packages</tag>
+   <item>
+    Unpack the created source tarball and proceed like you build
+    Debian packages normally.
+   </item>
+</taglist>
+</p>
+<p>
+The current Debian-Med packages provide a working example how to use
+the tools described below.
+</p>
+</sect> 
+  </appendix>
+  
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->

Added: cdd/tags/cdd/0.4.5/doc/en/B_quickintro.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/B_quickintro.sgml	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,226 @@
+  <appendix id="QuickIntro">
+  <heading>Quick intro into building meta packages</heading>
+
+<p>
+There are several descriptions available how to build Debian packages
+in general.  The main resource might be the repository of
+<url
+id="http://www.debian.org/doc/packaging-manuals/"
+name="Debian packaging manuals"> (especially 
+<url
+id="http://www.debian.org/doc/packaging-manuals/developers-reference/ch-best-pkging-practices.en.html"
+name="developers reference chapter 6, best packaging practices">).
+There are several external packaging HOWTOs for example the one from
+<url
+id="http://www-106.ibm.com/developerworks/linux/library/l-debpkg.html"
+name="Joe 'Zonker' Brockmeier">.
+</p>
+
+  <sect id="Dependencies">
+  <heading>Defining dependencies for meta packages</heading>
+
+<p>
+This howto describes the building of meta packages by using the
+<package>cdd-dev</package> package.  It is perfectly possible to build
+a meta package as any other normal Debian package but this HOWTO
+has the only purpose to describe the profit you might gain by using
+these tools.
+
+    <example>
+~> cp -a /usr/share/doc/cdd-dev/examples/tasks .
+~> cat tasks/README
+~> edit tasks/task1
+Description: <var>short description
+ long description as in any debian/control file</var>
+
+Depends: <var>dependency1, dependency2, ...</var>
+    </example>
+
+For each meta package this skeleton of a <file>debian/control</file>
+entry is needed.  All necessary information is available in the
+directory <file>/usr/share/doc/cdd-dev/examples/tasks</file>.
+</p>
+   </sect>
+
+   <sect id="Packaging">
+   <heading>The packaging directory</heading>
+
+<p>
+To build any Debian package you always need a directory named
+<file>debian</file>, which contains a certain set of files.  The
+package <package>cdd-dev</package> provides a complete set of example
+files that only have to be copied and after editing some place
+holders are ready to use.
+<example>
+~> cp -a /usr/share/doc/cdd-dev/examples/debian .
+~> cat debian/README
+~> edit debian/control.stub
+</example>
+Now the variables in the file <file>control.stub</file> change the
+variables named <var>_CDD_</var>, <var>_MAINTAINER_</var> etc. to
+match the names of the Custom Debian Distribution to be built.  Please
+note that the file <file>debian/control</file> is and has to be a
+symbolic link to <file>control.stub</file> to let the
+<package>cdd-dev</package> tools work.
+
+<example>
+~> edit debian/rules
+</example>
+
+Also in the <file>debian/rules</file> the name of the Custom Debian
+Distribution has to be inserted where the template contains
+<var>_CDD_</var>.  Depending from the way the
+<file>sources.list</file> should be scanned the options for the
+<prgn>gen-control</prgn> call can be adjusted. 
+</p>
+<p>
+Optionally a source tarball can be created by
+<example>
+~> make -f debian/rules dist
+</example>
+This tarball can be moved to any location where the meta packages
+should be built or the build process is started directly by calling 
+<example>
+~> debuild
+</example>
+which also creates a source tarball.
+</p>
+<p>
+That's all for the very simple case when the meta packages should not
+contain user menus.  Even if user menus are suggested they are not
+necessary.  The following paragraphs describe how to use the
+<package>cdd-dev</package> tools to support these menus.
+</p>
+
+   </sect>
+
+   <sect id="common-meta-package">
+   <heading>The common meta package</heading>
+
+<p>
+The creation of a common package is optional, but suggested, because it
+adds some special features like menus, user groups, and probably more
+in the future.  It is automatically built by
+<file>cdd-install-helper</file>, which is called in
+<file>debian/rules</file>, if the <file>common</file> directory exists.
+The easiest way to create this is as follows:
+<example>
+~> cp -a /usr/share/doc/cdd-dev/examples/common .
+~> cat common/README
+~> edit common/conf common/control common/common.1
+</example>
+The variables (<var>_CDD_</var>) in these three files have to be
+adjusted to the name of the Custom Debian Distribution in question.
+This <file><var>cdd</var>-common</file> cares for the initialisation
+of the role based menu system and might contain adjustments of the
+general configuration inside the <package>cdd-common</package>.
+</p>
+<p>
+If the meta package <package><var>cdd</var>-common</package> will be
+created according to these rules all other meta packages will depend
+automatically from this common package.  For the friends of
+<prgn>auto-apt</prgn>, a helper
+<file>/usr/bin/<var>&lt;meta-package-name&gt;</var></file> will be
+installed as well, which just prints some information about the meta
+package.  All in all, the usage of the common package is strongly
+suggested to have a common registry for stuff like user roles and
+possibly other things that will be implementd in the future.
+</p>
+   </sect>
+   <sect id="meta-package-menus">
+   <heading>The meta package menus</heading>
+
+<p>
+As explained in <ref id="menu_tools"> the meta packages can contain
+user menus.  This optional feature can be implemented easily by using
+the template from the <package>cdd-dev</package> in the following way:
+
+<example>
+~> cp -a /usr/share/doc/cdd-dev/examples/menu .
+~> cat menu/README
+~> edit menu/task1
+ <var>Edit the example to legal menu entries of the
+ dependencies of this meta package</var>
+~> cp menu/task1 menu/<var>&lt;meta package name&gt;</var>
+</example>
+
+A menu file for each task should be created containing valid menu
+entries for each dependant package.  The easiest way to obtain those
+menu entries is to simply copy the original menu entry files that are
+contained in the packages on which the meta package will depend.
+The only thing that has to be changed in these menu entries is the
+<tt>package</tt> field, which has to be changed from
+<package>&lt;dependent package&gt;</package> to
+<package><var>cdd</var>-<var>task</var></package>.  All other entries
+might remain unchanged.  This is a good point to check whether the
+menu entries of the packages you depend from are formated nicely and
+print the necessary information (for instance make use of "hints").
+Here the meta package maintainer has a good chance for quality
+assurance work, which is also part of the Custom Debian Distributions
+issue.
+</p>
+<p>
+In principle these menu items could be created automatically either at
+meta package build time or even better in the <file>postinst</file>
+script of the meta package because it is granted that the needed menu
+files are installed on the system, which is not really necessary on
+the meta package build machine.  This might be implemented in later
+versions of <package>cdd-dev</package>.  Currently the policy is that
+we like to have a little bit of control about the menu entries for the
+quality assurance issue mentioned above.  Last, but not least, there are
+packages that do not provide a menu entry.  If this is the case
+because the package maintainer just forgot it a bug report should be
+filed.  On the other hand, there are packages with programs that
+provide a command line interface that does not allow a reasonable
+menu entry.  A solution for this case is provided in the next
+paragraph.
+</p>
+
+   </sect>
+   <sect id="any-dependency--menus">
+   <heading>Menu for any dependency</heading>
+
+<p>
+The idea of the meta package menu is to provide the user with easily
+viewable traces of any installed package that helps solving everyday
+tasks.  So if there are packages that do not contain a menu, a screen
+with relevant documentation should be provided in a viewer by the
+creator of the meta package.  Such documentation can be created using
+the following templates:
+
+<example>
+~> cp -a /usr/share/doc/cdd-dev/examples/docs .
+~> cat docs/README
+~> edit docs/task1/dep1
+ <var>Provide information about a package &lt;dep1&gt; that is
+ a dependency of the meta package &lt;task1&gt;, but does not
+ contain a useful menu entry.</var>
+~> cp docs/task1/dep1 docs/task1/<var>&lt;dependent pkg&gt;</var>
+~> cp -a docs/task1 docs/<var>&lt;meta package name&gt;</var>
+</example>
+
+This ensures that our users become aware of all interesting packages
+on their system.  The documentation files should contain hints to man
+pages to read, URLs that should be visited to learn more about the
+package or some short introduction how to get started.
+</p>
+  </appendix>
+
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->

Added: cdd/tags/cdd/0.4.5/doc/en/C_bts.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/C_bts.sgml	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,111 @@
+  <appendix id="bts">
+  <heading>Using the Bug Tracking System</heading>
+
+  <sect id="howto_itp">
+  <heading>How to ask for packages which are not yet included</heading>
+
+<p>
+A very frequently asked question in mailing list is, whether
+<prgn>program_xy</prgn> can be integrated into a Custom Debian
+Distribution.  As long as there is an official package of this program
+it is an easy task.  But mostly users ask for software which is not yet
+integrated into Debian.
+</p>
+<p>
+There is a <url id="http://www.debian.org/devel/wnpp/#l1"
+  name="detailed description"> how anybody can ask for including a
+certain piece of software into Debian.  It explains how to use the
+program <prgn>reportbug</prgn> for this purpose.
+</p>
+<p>
+If you use wnpp sanely you can even tag this bug for the intended
+purpose to include it in a certain Custom Debian Distribution. This
+was described in <url
+id="http://lists.debian.org/debian-devel-announce/2005/09/msg00002.html"
+name="a mail of Anthony Towns"> and
+<url
+id="http://wiki.debian.org/DebianScience/Sponsoring"
+name="the Debian wiki">. It was also described in
+<url id="http://lists.debian.org/debian-custom/2005/04/msg00017.html"
+name="a mail of Ben Armstrong"> and in short works like this:
+
+<list>                                                                              
+  <item><p>
+           Add an usertag to an existing bug by sending to
+           request at bugs.debian.org a mail containing
+           <example>
+             user &lt;email&gt;
+             usertag &lt;bug number&gt; + wnpp &lt;meta-package name&gt;
+           </example>,
+           where email is the electronic address of the person or mailing
+           list which coordinates the relevant Custom Debian
+           Distribution.
+        </p>
+        <p>
+           For instance if you want to tag an ITP with big number
+           #123456 for Debian-Med section biology you would send the
+           following mail to <email>request at bugs.debian.org </email>:
+             <example>
+               user debian-med at lists.debian.org
+               usertag 123456 + wnpp med-bio
+               thanks
+             </example>
+        </p>
+        <p>
+        <strong>Note:</strong> Because the search is case sensitive
+        please always use lower case tags!
+        </p>
+  </item>
+  <item>To search for WNPP bugs of a certain Custom Debian
+        Distribution just visit the URL
+<example>
+http://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=wnpp;users=<var>email</var>
+</example>
+  </item>
+</list>
+
+
+</p>
+  </sect>
+
+  <sect id="howto_file_bugs">
+  <heading>How to report problems</heading>
+
+<p>
+Debian has a very useful Bug Tracking System (BTS) but unfortunately
+users seldom know about this fact and how to use it right.  This is
+the reason why users sometimes become angry about errors because they
+do not know what to do next and just install a different distribution
+instead of trying to solve the problem.
+</p>
+<p>
+A <url id="http://www.debian.org/Bugs/Reporting" name="detailed
+explanation how to report errors"> is helpful in these cases.  While
+the program <prgn>reportbug</prgn> fetches other reports from BTS
+before creating the bug report it is always a good idea to search
+<url id="http://bugs.debian.org"
+name="http://bugs.debian.org/_package_"> for known problems and
+probably suggested solutions before calling <prgn>reportbug</prgn>.
+</p>
+
+</sect>
+
+</appendix>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->

Added: cdd/tags/cdd/0.4.5/etc/cdd/cdd.conf
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/etc/cdd/cdd.conf	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,18 @@
+
+# unset it if no DBBACKEND is wanted (no use of Roles)
+DBBACKEND=unixgroups
+
+SHAREDIR=${SHAREDIR:-/usr/share/cdd}
+
+# unset (NOT set it to false!) for disable dryrun 
+#DRYRUN=true
+# This would print debugging information
+#DRYRUN="echo DRYRUN: "
+#DEBUG=1
+
+# Utility functions, backend indep
+. ${SHAREDIR}/cdd-utils
+. ${SHAREDIR}/cdd-actions
+
+# actual action performed by choosen backend
+. ${SHAREDIR}/${DBBACKEND}/cdd-actions

Added: cdd/tags/cdd/0.4.5/examples/Makefile
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/Makefile	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,3 @@
+#!/usr/bin/make -f
+
+include /usr/share/cdd-dev/Makefile

Added: cdd/tags/cdd/0.4.5/examples/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/README	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,5 @@
+This is an example directory layout for building meta packages for a
+Custom Debian Distribution with the name Debian-_CDD_.  So search for the
+string _CDD_ and replacing it with a real name would provide a basic
+skeleton to work with.
+

Added: cdd/tags/cdd/0.4.5/examples/config/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/config/README	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,2 @@
+If this directory exists a _CDD_-common package is created.
+See for instance Debian-Med packages.

Added: cdd/tags/cdd/0.4.5/examples/config/common
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/config/common	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,6 @@
+#!/bin/sh
+## Prints some info about that package and lets auto-apt work
+dpkg --status `basename $0` | \
+     grep -v ^Priority | \
+     grep -v ^Section | \
+     grep -v ^Installed-Size

Added: cdd/tags/cdd/0.4.5/examples/config/common.1
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/config/common.1	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,19 @@
+.TH _CDD_-common 1 "May 24, 2002" "Debian-_CDD_"
+.SH NAME
+.B _CDD_-common
+.B _CDD_-<meta_package_name>
+\- package information and auto-apt helper
+
+.SH SYNOPSIS
+.B _CDD_-common
+.B _CDD_-<meta_package_name>
+
+.SH DESCRIPTION
+Print just a simple information page about every _CDD_-* package
+of the Debian-_CDD_ Custom Debian Distribution.  Each metapackage has a 
+.I /usr/bin/_CDD_-<meta_package_name>
+file which should print some usefull informations and could be serve
+as auto-apt helper.
+
+.SH AUTHOR
+Andreas Tille <tille at debian.org>.

Added: cdd/tags/cdd/0.4.5/examples/config/conf
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/config/conf	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,6 @@
+## This is a configuration file for Debian-med Custom Debian Distribution
+## It is read after /etc/cdd/cdd.conf and can override or add variables
+
+## Some CDDs do not build their name generic like Debian-#CDD# so
+## we need the correct name here
+CDDNAME=Debian-_CDD_

Added: cdd/tags/cdd/0.4.5/examples/config/control
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/config/control	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,7 @@
+Package: _CDD_-config
+Architecture: all
+Depends: adduser, debconf (>= 0.5), menu
+Description: Debian-_CDD_ Project config package
+ This package builds the basic infra structure of all meta packages
+ for the Debian-_CDD_ Custom Debian Distribution.
+

Added: cdd/tags/cdd/0.4.5/examples/debian/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/debian/README	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,3 @@
+You always need this directory to build meta packages.
+Just change control.stub and replace the variables _CDD_ and
+_MAINTAINER_ to the apropriate strings.

Added: cdd/tags/cdd/0.4.5/examples/debian/cdd-task1.install
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/debian/cdd-task1.install	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,3 @@
+### this file is optional and only needed if the install directory is needed
+install/task1/extra-script-which-is-needed-in-task1 usr/bin
+

Added: cdd/tags/cdd/0.4.5/examples/debian/cdd-task1.manpages
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/debian/cdd-task1.manpages	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,3 @@
+### this file is optional and only needed if the install directory is needed
+install/task1/extra-script-which-is-needed-in-task1.1
+

Added: cdd/tags/cdd/0.4.5/examples/debian/compat
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/debian/compat	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+5

Added: cdd/tags/cdd/0.4.5/examples/debian/control.stub
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/debian/control.stub	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,10 @@
+Source: debian-_CDD_
+Section: misc
+Priority: extra
+Maintainer: _MAINTAINER_ <_maintainer_ at debian.org>
+Uploaders: _OPTIONAL-FURTHER-MAINTAINER_ <_optional-further-maintainer_ at debian.org>
+Build-Depends-Indep: debhelper (>= 5), cdd-dev
+Standards-Version: 3.7.2
+
+Package: _CDD_
+Architecture: all

Added: cdd/tags/cdd/0.4.5/examples/debian/rules
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/debian/rules	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,3 @@
+#!/usr/bin/make -f
+
+include /usr/share/cdd-dev/rules

Added: cdd/tags/cdd/0.4.5/examples/install/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/install/README	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,9 @@
+If some extra files like scripts of manpages are needed in the meta packages
+the should be placed into apropriate subdirectories of this directory.
+While there is no certain procedure in the cdd-dev tools to handle files
+in this directory it might be a good idea to settle down with some
+default place for those extra files.  To move them right into place
+the files debian/<pkg>.install, debian/<pkg>.manpages etc. should
+be used.
+
+See for instance Debian-Med packages.

Added: cdd/tags/cdd/0.4.5/examples/install/task1/extra-script-which-is-needed-in-task1
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/install/task1/extra-script-which-is-needed-in-task1	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo "Do something useful for task1."

Added: cdd/tags/cdd/0.4.5/examples/install/task1/extra-script-which-is-needed-in-task1.1
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/install/task1/extra-script-which-is-needed-in-task1.1	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,15 @@
+.TH extra-script-which-is-needed-in-task1 1 "<date>" "#CDD#"
+.SH NAME
+.B extra-script-which-is-needed-in-task1 
+\- some useful script for task1
+
+.SH SYNOPSIS
+.B extra-script-which-is-needed-in-task1 
+
+.SH DESCRIPTION
+The task makes no sense without this script - or at least this script
+provides extra functionality which is not in any of the single
+dependencies.
+
+.SH AUTHOR
+Meta Package Autor <mpa at debian.org>.

Added: cdd/tags/cdd/0.4.5/examples/menu/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/menu/README	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,24 @@
+If this directory exists, menu entries for the single meta packages can
+be provided here.  The files should have the same name as the files in the
+tasks directory and ideally each single task should have its own menu.
+
+See for instance Debian-Med packages.
+
+In general a meta package should provide a menu for every dependent package.
+This menu entry should either point to a package executable (perhaps with
+some special hints assigned) or to a pager call which proveides some extra
+information how the special package can be used.  For instance this can be
+done via text files /usr/share/doc/_CDD_task1/deppkg1.txt (see Debian-Med).
+
+The idea is to provide a special _CDD_ menu with the relevant parts for
+the users of the _CDD_.
+
+At install time the existing dependencies are checked for their
+menu entries.  These are tekan over into the user menu.  If the
+meta package maintainer wants to override this entry he is able
+to provide menu/<task>/<dep>.menu files.  If there is no reasonable
+menu entry for a package extra documentation can be provided which
+can be viewed via menu entries.  This can either be given as plain
+text files menu/<task>/<dep>.txt or HTML files menu/<task>/<dep>.html.
+The created menu entry calls sensible-pager or sensible-browser,
+respectively.

Added: cdd/tags/cdd/0.4.5/examples/menu/task1/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/menu/task1/README	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,16 @@
+Here you can place overrides for the package maintainer menu entries
+in normal menu syntax as files <dep>.menu .
+
+Sometimes it is not possible to provide a useful menu entry for a
+package and thus we would fail to create a menu entry for a dependency
+inside a meta package.  This sucks in term of user support and thus
+it is strongly suggested to provide some information about each
+dependant package which has no reasonable menu entry.
+
+This can easily done by creating a text file with the name of the
+dependency, i.e. dep2.txt.  Alternatively you can provide HTML
+formated description as dep3.html.
+
+These files should provide all information which is necessary to use
+this package, like man pages online documentation, usage examples,
+upstream URL, etc.

Added: cdd/tags/cdd/0.4.5/examples/menu/task1/dep1.menu
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/menu/task1/dep1.menu	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,5 @@
+?package(dep1): needs   = "X11" \
+                section = "_CDD_/Task1" \
+                title   = "DepPkg1" \
+		command = "/usr/bin/deppkg1" \
+		hints   = "Use of DepPkg1"

Added: cdd/tags/cdd/0.4.5/examples/menu/task1/dep2.txt
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/menu/task1/dep2.txt	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,18 @@
+dep2: Short description of package dep2
+
+Some information about dep2 from the Debian-_CDD_ project.
+
+ long description of dep2
+ 
+ More infromation about the dep2 package can be obtained from the following
+ manpages:
+ 
+   dep2_a.1 dep2_b.1 ...
+
+ You can use this package in the following way:
+
+   ...
+
+ More information about dep2 can be obtained from the home page at
+
+   http://www.dep2.org/

Added: cdd/tags/cdd/0.4.5/examples/menu/task1/dep3.html
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/menu/task1/dep3.html	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,15 @@
+<html>
+<head>
+<title>Description of dep3</title>
+<meta name="author" content="<meta package author>" />
+</head>
+<body>
+<h2>dep3: Short description of package dep3</h2>
+<p>
+ long description of dep3
+</p>
+
+<h4>For more detailed information see:</h4>
+
+</body>
+</html>

Added: cdd/tags/cdd/0.4.5/examples/tasks/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/tasks/README	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,4 @@
+This directory is mandatory.  Each file had to follow a certain syntax
+to build a valid control file entry for the meta package to build.
+
+For an extensive and working example see Debian-Med packages >= 0.8.9 .

Added: cdd/tags/cdd/0.4.5/examples/tasks/task1
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/tasks/task1	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,17 @@
+Task: task1
+Description: Debian-_CDD_ task1 packages
+ This meta package will install Debian packages for use in 
+ task1 of Debian-_CDD_.
+
+Depends: dep-pkg1, dep-pkg2, ...
+Suggests: sug-pkg1, ...
+
+Depends: dep-pkg42
+Why:     You might provide some reasons here ...
+Responsible: Somebody who cares
+NeedConfig:  no / yes via debconf
+
+Depends:     _CDD_-common
+Why:         Reason for dependency of the _CDD_common package
+Responsible: _CDD_Maintainer
+NeedConfig:  yes via debconf

Added: cdd/tags/cdd/0.4.5/share/cdd/cdd-actions
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/share/cdd/cdd-actions	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,53 @@
+# $Id: cdd-actions 431 2006-10-23 06:11:32Z tille $
+#
+# Backend independant functions for cdd package
+#
+# For error codes check in /usr/include/sysexits.h
+
+# CHECK Functions
+
+# checks if CDD $1 exists as a CDD
+checkCDD() {
+	RET=0
+	CDD=$1
+	if [ $# -ne 1 ]; then
+		RET=64 # EX_USAGE
+	elif ! [ -d ${CONFBASE}/`toLower ${CDD}` ]; then
+		RET=67 # EX_NOUSER
+	fi
+	return ${RET}
+}
+
+# GET Functions
+
+# echos a blank-space separated list of CDDs registered into CDD subsystem
+getCDDList() {
+	# print out dir in CONFBASE and stript last space added by printf
+	find ${CONFBASE} -mindepth 1 -maxdepth 1 -not -name CVS -type d -printf "%f " | sed s/.$/\\n/g
+}
+
+# echoes a list of DBBACKEND for CDD present in the current system
+getBackendList() {
+	find ${SHAREDIR} -mindepth 1 -maxdepth 1 \
+		-not -name CVS -and -not -name menu \
+		-type d -printf "%f " | sed s/.$/\\n/g
+}
+
+# is user registered in at least one CDD?
+# it's a kludgy way :(, run a subshell and iterate on every registered CDD
+# checking if a user covers a Role in that CDD.
+isUserRegistered() {
+	RET=1 # return false
+	CDDUSER=$1
+
+	for CDD in `getCDDList`; do
+		# Run a subshell as a environment sandbox
+		(   test -f ${CONFBASE}/${CDD}/${CDD}.conf &&
+				. ${CONFBASE}/${CDD}/${CDD}.conf
+			. ${SHAREDIR}/${DBBACKEND}/cdd-actions
+			checkUserInCDD ${CDD} ${CDDUSER} && exit 0
+		) && RET=0 && break 
+	done
+	return ${RET}
+}
+

Added: cdd/tags/cdd/0.4.5/share/cdd/cdd-update-menus
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/share/cdd/cdd-update-menus	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,26 @@
+# $Id: cdd-update-menus 431 2006-10-23 06:11:32Z tille $
+
+# check if I am a specific user
+amI() {
+	RET=0
+	test `whoami` != "$1" && RET=1
+	return ${RET}
+}
+
+# The following scripts have historical reasons and are currently not
+# used any more. The complete text might be found in version 0.3 of
+# the scripts.
+# updates user's menu for user $1, indipendently from any CDD
+updateUser() {
+	RET=0
+	SYSUSER=$1
+	return ${RET}
+}
+
+# updates menu scripts for any user registered in CDD
+updateCDD() {
+	RET=0
+	CDD=$1
+	
+	return ${RET}
+}

Added: cdd/tags/cdd/0.4.5/share/cdd/cdd-utils
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/share/cdd/cdd-utils	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,36 @@
+# For error codes check in /usr/include/sysexits.h
+
+toLower() {
+	echo $@ | tr "[A-Z]" "[a-z]"
+	return 0
+}
+
+# log (typically echos on stdout)
+cddLog() {
+	echo $@
+	return 0
+}
+
+# log error (typically echos on stderr)
+cddErr() {
+	RET=$1
+	shift
+	echo "err ${RET}: $@" > /dev/stderr
+	return 0
+}
+
+# log on stderr for debug outputs
+cddDebug() {
+	test -n "${DEBUG}" && echo "debug: $@" > /dev/stderr
+	return 0
+}
+
+
+
+# log error and return a fail code $1
+cddFail() {
+	RET=$1
+	shift
+	echo "err ${RET}: $@" > /dev/stderr
+	exit ${RET}
+}

Added: cdd/tags/cdd/0.4.5/share/cdd/unixgroups/cdd-actions
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/share/cdd/unixgroups/cdd-actions	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,272 @@
+# $Id: cdd-actions 224 2004-07-08 08:26:51Z tille $
+#
+# Backend dependant functions for cdd package
+#
+# For error codes check in /usr/include/sysexits.h
+
+# CHECK Functions
+
+#checkCDD() is backend indep, and is defined in ${SHAREDIR}/cdd-action
+
+# Read adduser config to find out from which ID normal users start
+# Default = 1000
+FIRST_UID=1000
+[ -s /etc/adduser.conf ] && . /etc/adduser.conf
+
+# checks if User $1 exists as a system user
+checkUser() {
+	RET=0
+	CDDUSER=$1
+	if [ $# -ne 1 ]; then
+		RET=64 # EX_USAGE
+	elif ! getent passwd "${CDDUSER}" > /dev/null; then
+		RET=67 # EX_NOUSER
+	fi
+	return ${RET}
+}
+
+# checks if Role $1 is registered into system
+# actually a mere check if Unix group, named like the CDD project, exists
+checkRole() {
+	RET=0
+	ROLE=$1
+	if [ "$#" -ne 1 ]; then
+		RET=64 # EX_USAGE
+	elif ! getent group "${ROLE}" > /dev/null; then
+		RET=67 # EX_NOUSER
+	fi
+	return ${RET}
+}
+
+
+# check if CDD ($1) has registered Role ($2) 
+# (or, in other words, if Role has been registerd in CDD)
+checkRoleInCDD() {
+	RET=0
+	CDD=$1
+	ROLE=$2
+	if [ "$#" -ne 2 ]; then 
+		RET=64 # EX_USAGE
+	# currently there is no way to extract a Role from a CDD if
+	# they're named differently, using unixgroups backend
+	elif [ "${CDD}" != "${ROLE}" ]; then
+		RET=69 # EX_UNAVAILABLE
+	fi
+	return ${RET}
+}
+
+# checks if user $2 is registered in CDD $1
+checkUserInCDD() {
+	RET=0
+	CDD=$1
+	CDDUSER=$2
+	if [ "$#" -ne 2 ]; then 
+		RET=64 # EX_USAGE
+	# currently the only way to check if user is registered in a CDD is check
+	# if he/she covers any role the CDD, using unixgroups backend
+	elif [ -z "`getUserRoles ${CDD} ${CDDUSER}`" ]; then
+		RET=1 # user has no role, so is not registered in CDD
+	fi
+	return ${RET}
+}
+
+# GET Functions
+
+# getCDDList() is backend indep and is defined in ${SHAREDIR}/cdd-action
+
+# echos the roles registered by CDD
+# for Unix groups backend, it's actually the identity function
+getCDDRoleList() {
+	RET=0
+	CDD=$1
+	if [ "$#" -ne 1 ]; then
+		RET=64 # EX_USAGE
+	else
+		checkRole ${CDD} && echo ${CDD}
+	fi
+	return ${RET}
+}
+
+# echoes list of users having role $2 in CDD $1
+# if $4 exists use ',' as separator between user names
+getUsersInRole() {
+	RET=0
+	CDD=$1
+	ROLE=$2
+	SIMPLE=$3
+	USERS=""
+	if [ "$#" -ne 3 -a "$#" -ne 4 ]; then
+		return RET=64 # EX_USAGE
+	fi
+	for user in `getent group ${ROLE} | sed -ne "s/.*:\(.*\)$/\1/p" | tr "," " "` ; do
+		REALNAME=" "
+		if [ $SIMPLE -ne 1 ] ; then
+			REALNAME=" (`grep \"^$user:\" /etc/passwd | sed \"s/^$user:[^:]\+:[0-9]\+:[0-9]\+:\([^:]\+\):.*/\1/\" | sed \"s/,.*//\"`)"
+		fi
+		if [ "$#" -eq 4 ]; then
+			if [ "$USERS" != "" ] ; then
+				USERS="${USERS},"
+			fi
+		fi
+		if [ "$USERS" != "" ] ; then
+			USERS="${USERS} "
+		fi
+		USERS="${USERS}${user}${REALNAME}"
+	done
+	echo $USERS
+	return ${RET}
+}
+
+# echoes list of all users of the system
+# $1 = 1 - simply login names, $1 = 0 (or anything else) - login names and real name
+# if $2 exists use ',' as separator between user names
+getAllUsers() {
+	RET=0
+	if [ "$#" -ne 1 -a "$#" -ne 2 ]; then
+		RET=64 # EX_USAGE
+	else
+		SIMPLE=$1
+		TMPFILE=`tempfile`
+		(IFS=":"
+			while read user pass uid gid name rest ; do
+				if [ $uid -ge $FIRST_UID -a "$user" != "nobody" ] ; then
+        				name=`echo $name | sed "s/,.*//"`
+				        if [ $SIMPLE -eq 1 ] ; then
+				                echo "$user" >> ${TMPFILE}
+				        else
+				                echo "$user ($name)" >> ${TMPFILE}
+					fi
+				fi
+			done < /etc/passwd
+		)
+		# Append ',' if second argument is given
+		if [ "$#" -eq 2 ]; then
+		    sort -u "${TMPFILE}" | tr '\n' ',' | sed 's/,/&\ /g' | sed 's/, *$//g'
+		else
+		    sort -u "${TMPFILE}"
+		fi
+		rm -f "${TMPFILE}"
+	fi
+	return ${RET}
+}
+# echo all Role covered by user $2 in CDD $1
+getUserRoles() {
+	RET=0
+	CDD=$1
+	CDDUSER=$2
+	if [ "$#" -ne 2 ]; then
+		RET=64 # EX_USAGE
+	else
+		CDDROLES=`getCDDRoleList ${CDD}`
+		ROLES=""
+		for ROLE in ${CDDROLES}; do
+			for USER in `getUsersInRole ${CDD} ${ROLE} 1`; do
+				test "${USER}" == "${CDDUSER}" && \
+					ROLES="${ROLES} ${ROLE}"
+			done
+		done
+		cddDebug "getUserRoles(): roles covered by user ${CDDUSER} in CDD ${CDD}: ${ROLES}"
+		echo ${ROLES}
+	fi
+	return ${RET}
+}
+
+
+# echos the home directory of the system user
+getUserHome() {
+	RET=0
+	CDDUSER=$1
+	if [ "$#" -ne 1 ]; then
+		RET=64 # EX_USAGE
+	else
+		if checkUser ${CDDUSER}; then
+			getent passwd ${CDDUSER} | sed "s/.*:\([^:]*\):[^:]*$/\1/"
+			RET=$?
+		else
+			RET=67 # EX_NOUSER
+		fi
+	fi
+
+	return ${RET}
+}
+
+
+
+# ADD/SET functions
+
+# adds role $2 to current unix groups for the specified CDD $1, as a system
+# dynamic allocated group
+addRole() {
+	RET=0
+	CDD=$1
+	ROLE=$2
+	if [ "$#" -ne 2 ]; then 
+		RET=64 # EX_USAGE
+	else
+		# Check whether group yet exists
+		TESTGROUP="`getent group ${ROLE}`" || true
+		if [ -z "${TESTGROUP}" ] ; then
+			${DRYRUN} addgroup --system "${ROLE}" || true
+		fi
+		RET=$?
+	fi
+	return ${RET}
+}
+
+# set user $2 to have role $3, for the specified CDD $1
+setUserRole() {
+	RET=0
+	CDD=$1
+	USER=$2
+	ROLE=$3
+	if [ "$#" -ne 3 ]; then 
+		RET=64 # EX_USAGE
+	else
+		${DRYRUN} adduser ${USER} ${ROLE}
+		RET=$?
+	fi
+	return ${RET}
+}
+
+# DEL/USET Functions
+
+# remove role $2 for the specified CDD $1 from current unix groups, as a
+# system dynamic allocated group
+delRole() {
+	RET=0
+	CDD=$1
+	ROLE=$2
+	if [ "$#" -ne 2 ]; then 
+		RET=64 # EX_USAGE
+	else
+		if checkRole "${ROLE}"; then
+			${DRYRUN} delgroup "${ROLE}"
+			RET=$?
+		else
+			RET=67 # EX_NOUSER
+		fi
+	fi
+	return ${RET}
+}
+
+
+# unset user $2 from having role $3, for the specified CDD $1
+unsetUserRole() {
+	RET=0
+	CDD=$1
+	CDDUSER=$2
+	ROLE=$3
+	# Make sure CDDUSER and ROLE are BOTH defined, 
+	# to avoid disasters using deluser
+	if [ "$#" -ne 3 ]; then 
+		RET=64 # EX_USAGE
+	else
+		if checkUser "${CDDUSER}"; then
+			${DRYRUN} deluser "${CDDUSER}" "${ROLE}"
+			RET=$?
+		else
+			RET=67 # EX_NOUSER
+		fi
+	fi
+	return ${RET}
+}

Added: cdd/tags/cdd/0.4.5/share/menu/cdd-menu
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/share/menu/cdd-menu	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,215 @@
+#!/bin/bash
+
+# Script to handle menu profiles for CDD subsystem, installed by your system
+# administrator via cdd-common package.
+#
+# It prints on STDOUT Debian menu entries for user
+
+CONFBASE=${CONFBASE:-/etc/cdd}
+
+# read generic CDD conf
+. ${CONFBASE}/cdd.conf
+
+CDDUSER=`whoami`
+
+tasksdir=/usr/share/cdd/tasks
+
+# it has to be run only by unprivileged users via update-menus
+test "${CDDUSER}" == "root" && exit 0
+
+# Upper case the first letter of a string to have a nicer menu
+NameToUpper() {
+	if [ $# -ne 1 ] ; then
+		RET=64 # EX_USAGE
+		return ${RET}
+	fi
+	echo $1 | perl -ne 'print "\u\L$_";'
+	return 0
+}
+
+# Obtain title from HTML page for menu hints
+GetHTMLTitle () {
+        if [ $# -ne 1 ] ; then
+                RET=64 # EX_USAGE
+                return ${RET}
+        fi
+        perl -ne 'while (<>) {chomp; $all.="$_ ";}
+                    ($title) = ($all =~ /.*\<title\>(.*)\<\/title\>.*/i);
+                    $title =~ s/\s+/ /g ;
+                    print $title ; exit 0;' $1
+	return 0
+}
+
+# Obtain title (= first line) from text file for menu hints
+GetTxtTitle () {
+        if [ $# -ne 1 ] ; then
+                RET=64 # EX_USAGE
+                return ${RET}
+        fi
+	head -1 $1 | sed -e "s/[[:space:]]\+/ /g" -e "s/^[[:space:]]*\(.*\)[[:space:]]*$/\1/"
+	return 0
+}
+
+# Strip CDD-name from meta package name
+GetTaskNameFromPackage () {
+        if [ $# -ne 2 ] ; then
+                RET=64 # EX_USAGE
+                return ${RET}
+        fi
+	CDD=$1  # CDD - name
+	PKG=$2  # meta package name
+	echo $PKG | sed "s/^$CDD-//"
+	return 0
+}
+
+# Obtain task title which has to be defined in the meta package control templates
+GetTaskTitle () {
+        if [ $# -ne 1 ] ; then
+                RET=64 # EX_USAGE
+                return ${RET}
+        fi
+	PKG=$1  # meta package name
+	cat "$tasksdir"/"$CDD"/`GetTaskNameFromPackage "$CDD" "$PKG"`
+	return 0
+}
+
+getMenuEntriesFromDependencies() {
+	RET=""
+	if [ $# -ne 1 ] ; then
+		RET=64 # EX_USAGE
+		return ${RET}
+	fi
+	PKG="$CDD"-$1
+	TASK=`GetTaskTitle $PKG`
+	SECTION=`NameToUpper "$CDD"`/`NameToUpper "$TASK"`
+
+	# find the list of Depends / Recommends / Suggests
+	DepPkgs=`dpkg --status "$PKG" | \
+		sed -e '/^Description/,$d' -e '/^Conffiles/,$d' | \
+		grep -v ^[A-CE-QT-Z] | \
+		grep -v ^S[eot] | \
+		sed -e "s/([^)]*)//" \
+		    -e "s/,* *${CDD}-config//" \
+		    -e "s/^[^:]*: *//" \
+		    -e "s/, */\\n/g" | \
+		sort | uniq`
+
+	# check whether CDD-maintainer provided menu override different from
+	# package maintainers menu file
+	# FIXME: This is outdated!  The concept of menu files named like the
+        #        meta package is stopped in favour of single menu files named like
+        #        the dependant package.  The rationale is that you can get more
+        #        fine grained replacements.
+	cddmenufile=""
+	if   [ -s "$HOME"/.menu/"$PKG" ] ; then
+		cddmenufile="$HOME"/.menu/"$PKG"
+	elif [ -s /etc/cdd/"$CDD"/menu/"$PKG" ] ; then
+		cddmenufile=/etc/cdd/"$CDD"/menu/"$PKG"
+	elif [ -s /usr/lib/cdd/"$CDD"/menu/"$PKG" ] ; then
+		cddmenufile=/usr/lib/cdd/"$CDD"/menu/"$PKG"
+	elif [ -s /usr/share/cdd/"$CDD"/menu/"$PKG" ] ; then
+		cddmenufile=/usr/share/cdd/"$CDD"/menu/"$PKG"
+	fi
+
+	for pkg in $DepPkgs ; do
+	    # if CDD maintainer provided override just continue
+	    [ ! -z "$cddmenufile" ] && grep -q -i "?package($pkg)" "$cddmenufile" && continue
+
+	    # check for documentation text of CDD maintainer which should
+	    # be prefered over package maintainers menu
+	    docfile=""
+	    if   [ -s /usr/share/doc/"$PKG"/"$pkg".html ] ; then
+		docfile=/usr/share/doc/"$PKG"/"$pkg".html
+	    elif [ -s /usr/share/doc/"$PKG"/"$pkg".txt ] ; then
+		docfile=/usr/share/doc/"$PKG"/"$pkg".txt
+	    elif [ -s /usr/share/doc/"$PKG"/"$pkg" ] ; then
+		docfile=/usr/share/doc/"$PKG"/"$pkg"
+	    fi
+	    # if CDD maintainer provides documentation view this as menu entry ...
+	    if [ ! -z "$docfile" -a -s "$docfile" ] ; then
+		hint=""
+		if file "$docfile" | grep -q HTML ; then
+		    senspager=sensible-browser
+		    hint=`GetHTMLTitle "$docfile"`
+		else
+		    senspager=sensible-pager
+		    hint=`GetTxtTitle "$docfile"`
+		fi
+		if [ ! -z "$hint" ] ; then
+		    hint="hints=\""$hint"\""
+		fi
+		# Force menu-1 entry in case before this was menu-2 used
+		cat <<EOT
+!C menu-1
+?package($pkg): needs="text" \\
+        section="$SECTION" \\
+	title="`NameToUpper "$pkg"`" $hint \\
+	command="$senspager $docfile"
+EOT
+	    fi
+
+	    # search for a menu file with the following priority
+	    # ${HOME}/.menu, /etc/menu, /usr/share/cdd/${CDD}/menu, /usr/share/menu, /usr/lib/menu
+	    pkgmenufile=""
+	    donotchange=1
+	    if   [ -s "$HOME"/.menu/"$pkg" ] ; then
+		pkgmenufile="$HOME"/.menu/"$pkg"
+	    elif [ -s /etc/menu/"$pkg" ] ; then
+		pkgmenufile=/etc/menu/"$pkg"
+	    elif [ -s /usr/share/cdd/"$CDD"/menu/"$pkg" ] ; then
+		pkgmenufile=/usr/share/cdd/"$CDD"/menu/"$pkg"
+		donotchange=0
+	    elif [ -s /usr/share/menu/"$pkg" ] ; then
+		pkgmenufile=/usr/share/menu/"$pkg"
+	    elif [ -s /usr/lib/menu/"$pkg" ] ; then
+		pkgmenufile=/usr/lib/menu/"$pkg"
+	    fi
+            if [ ! -z "$pkgmenufile" ] ; then
+		# Force menu-1 entry in case before this was menu-2 used
+		## if ! grep -q -c '^!C' $pkgmenufile ; then
+		echo '!C menu-1'
+		## fi
+		if [ $donotchange -eq 1 ] ; then
+		    # the 2. and 3. -e - expression tries to fix missing '"' around the entries
+		    sed -e "/^[[:space:]]*$/d" \
+			-e 's?\([ :][^=^ ]*=\) *\([^"^=]*\)\( [^=]\+=\)?\1"\2"\3?g' \
+			-e 's?\([ :][^=^ ]*=\) *\([^"^=]*\)\( [^=]\+=\)?\1"\2"\3?g' \
+			-e 's?\( [^=]\+=\) *\([^"^=]\+[^"^\]\)$?\1"\2"?' \
+			-e "s?\(section\)[[:space:]]*=[[:space:]]*\"*[^\"\\]*\"*?\1=\"$SECTION\"?" $pkgmenufile
+		else
+		    # strip possible comments
+		    grep -v "^[[:space:]]*#" $pkgmenufile
+		fi
+	    fi
+	    # HACK: Add blank line which helps in case of missing newlines
+	    echo
+	done
+	
+	[ -s "$cddmenufile" ] && cat "$cddmenufile"
+}
+
+ALLCDD=`getCDDList`
+for CDD in ${ALLCDD}; do
+	# read per CDD conf
+	test -f  ${CONFBASE}/${CDD}/${CDD}.conf && \
+		. ${CONFBASE}/${CDD}/${CDD}.conf
+
+	if [ -d "$tasksdir"/"$CDD" ] ; then
+		for PKG in `ls "$tasksdir"/"$CDD"` ; do
+			getMenuEntriesFromDependencies "$PKG"
+		done
+	fi
+
+#	# print on STDOUT menu generic entries if user belongs to CDD
+#	checkUserInCDD ${CDD} ${CDDUSER} && \
+#		test -d ${CONFBASE}/${CDD}/menu/ && \
+#			find ${CONFBASE}/${CDD}/menu/ -maxdepth 1 -mindepth 1 -type f \
+#				-exec cat {} \;
+#
+#	# and role specific menu entries
+#	for ROLE in `getUserRoles ${CDD} ${CDDUSER}`; do
+#		test -d ${CONFBASE}/${CDD}/menu/${ROLE} &&
+#			find ${CONFBASE}/${CDD}/menu/${ROLE} -maxdepth 1 -mindepth 1 \
+#				-type f -exec cat {} \;
+#	done
+done

Added: cdd/tags/cdd/0.4.5/sources.list.local
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/sources.list.local	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+deb file:/home/ftp/pub/debian/ testing main

Added: cdd/tags/cdd/0.4.5/sources.list.stable
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/sources.list.stable	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+deb http://ftp.debian.org/ stable main

Added: cdd/tags/cdd/0.4.5/sources.list.testing
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/sources.list.testing	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+deb http://ftp.debian.org/ testing main

Added: cdd/tags/cdd/0.4.5/sources.list.unstable
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/sources.list.unstable	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+deb http://ftp.debian.org/ unstable main

Added: cdd/tags/cdd/0.4.5/templates/README.Debian
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/README.Debian	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,22 @@
+This is a meta package which is used by Custom Debian Distributions
+-------------------------------------------------------------------
+
+This package is a metapackage; it depends on several other packages to make
+them be installed when it is installed. If you want to remove one of those
+packages, you have to remove this package as well. The other packages won't be
+touched.
+
+There exists an comprehensive documentation about Custom Debian Distributions
+which can be found at http://alioth.debian.org/projects/cdd/.
+
+The meta packages should always be installable on a Debian system.
+Thus no dependency on a non-available package (ie. a package available
+outside of Debian) have been used. However such dependencies have
+been downgraded to Suggests.
+
+Sometimes some non-free packages are suggested when no good free
+alternatives are known. You're encouraged to find good free
+replacements.
+
+Perhaps type-handling might gives us a way to specify arch-dependant
+dependencies.

Added: cdd/tags/cdd/0.4.5/templates/apt.conf
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/apt.conf	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,10 @@
+/*
+ * $Id: apt.conf 452 2007-08-27 17:56:18Z tille $ 
+ */
+/*
+ * APT configuration file for #CDD#-config package
+ */
+
+DPkg {
+	Post-Invoke {"test -f /var/run/#CDD#-config.usermenu && if [ -x /usr/sbin/cdd-update-usermenus ] ; then /usr/sbin/cdd-update-usermenus #CDD# ; fi ; rm -f /var/run/#CDD#-config.usermenu";};
+}

Added: cdd/tags/cdd/0.4.5/templates/config.config
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/config.config	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,44 @@
+#!/bin/sh -e
+
+# Initialize debconf if not yet done
+if [ _"$DEBCONF_REDIR" = _"" ]; then
+    . /usr/share/debconf/confmodule
+    db_version 2.0
+    db_capb backup
+fi
+
+db_input "medium" "shared/#CDD#-config/useusermenus" || true
+db_go
+db_get shared/#CDD#-config/useusermenus
+if [ $RET ] ; then
+    db_input "medium" "shared/#CDD#-config/usermenus" || true
+    db_go
+fi
+
+# if cdd-config package is not yet installed we have to stop here
+if [ ! -f /etc/cdd/cdd.conf ] ; then
+   db_stop
+   exit 0
+fi
+
+[ -s /etc/cdd/cdd.conf ]         && . /etc/cdd/cdd.conf
+[ -s /etc/cdd/#CDD#/#CDD#.conf ] && . /etc/cdd/#CDD#/#CDD#.conf
+
+# Add at least one default role for each CDD
+addRole #CDD# #CDD#
+
+# Login names of all users of the system as comma separated list 
+USERS=`getAllUsers 0 ,`
+
+# "login (Real Name)" of users registered to the CDD #CDD#
+CDDUSERS=`getUsersInRole #CDD# #CDD# 0 ,`
+
+db_set #CDD#-config/group "$CDDUSERS"
+db_subst #CDD#-config/group users "$USERS"
+db_get #CDD#-config/group
+
+db_input high #CDD#-config/group || true
+db_go
+
+db_stop
+exit 0

Added: cdd/tags/cdd/0.4.5/templates/config.install
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/config.install	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+debian/90#CDD#-config   etc/apt/apt.conf.d

Added: cdd/tags/cdd/0.4.5/templates/config.links
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/config.links	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+usr/share/cdd/cdd-task-lister usr/lib/tasksel/#CDD#-task-files

Added: cdd/tags/cdd/0.4.5/templates/config.postinst
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/config.postinst	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,46 @@
+#!/bin/sh -e
+
+# if cdd-common package is not yet installed we have to stop here
+if [ ! -f /etc/cdd/cdd.conf ] ; then
+   echo "Custom Debian Distribution configuration file /etc/cdd/cdd.conf is missing."
+   exit -1
+fi
+. /etc/cdd/cdd.conf
+
+if [ ! -f /etc/cdd/#CDD#/#CDD#.conf ] ; then
+   echo "#CDDNAME# configuration file /etc/cdd/#CDD#/#CDD#.conf is missing."
+   exit -1
+fi
+. /etc/cdd/#CDD#/#CDD#.conf
+
+# Source debconf library.
+. /usr/share/debconf/confmodule
+db_version 2.0
+
+# If $USEUSERMENU is not set in /etc/cdd/#CDD#/#CDD#.conf read it from debconf database
+if [ -z $USEUSERMENU ] ; then
+    db_get shared/#CDD#-config/useusermenus
+    if [ $RET ] ; then
+	USEUSERMENU="yes"
+    fi
+fi
+
+if [ "$USEUSERMENU" = "yes" ] ; then
+    db_get #CDD#-config/group 
+
+    CURRENTCDDUSERS=`getUsersInRole #CDD# #CDD# 1`
+    # Add those users which were selected but are not yet in the group
+    for user in `echo "$RET" | sed "s/([^)]*)//g" | sed "s/ //g" |  tr ',' '\n'` ; do
+	if [ `echo "${CURRENTCDDUSERS}" | grep -c -w "$user"` -eq 0 ] ; then
+	    /usr/sbin/cdd-user add #CDD# $user
+	fi
+    done
+    # Del those users which were obviousely removed from list of CDD users
+    for user in `getAllUsers 1` ; do
+	if [ `echo "$RET" | grep -c -w "$user"` -eq 0 ] && [ `getent group #CDD# | grep -c -w $user` -gt 0 ] ; then
+	    /usr/sbin/cdd-user del #CDD# $user
+	fi
+    done
+fi
+
+#DEBHELPER#

Added: cdd/tags/cdd/0.4.5/templates/config.templates
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/config.templates	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,35 @@
+Template: #CDD#-config/group
+Type: multiselect
+Choices: ${users}
+_Description: #CDDNAME# users:
+ Please select, among the whole system user list, users who should get
+ a #CDDNAME# user menu.
+
+Template: shared/#CDD#-config/usermenus
+Type: select
+_Choices: Each package installation, End of installation, Never
+Default: never
+_Description: Build user menus at:
+ The meta packages of the #CDDNAME# Custom Debian Distribution
+ contain extra menus that will be auto generated from existing packages.
+ If the role based user menu option was choosen these menus will be built
+ when a user who is registered to a given role uses the "update-menus"
+ utility.  This can be done automatically for all users who are registered
+ for #CDDNAME# after installation of each single meta package,
+ at the end of the whole installation process to save time in case
+ of installing more than one meta package or just leave the call of
+ "update-menus" to the users themselves.
+  * Each package installation : Call "update-menus" after each meta package
+                               (time consuming);
+  * End of installation       : Call "update-menus" only once at the end of
+                                the whole installation/upgrading process;
+  * Never                     : Do not call "update-menus" at all.
+
+Template: shared/#CDD#-config/useusermenus
+Type: boolean
+_Description: Do you want user menus?
+ The menus for the #CDDNAME# Custom Debian Distribution could be
+ implemented as user menus which means they are visible only for those
+ users that will be selected explicitely.  If you want this answer the
+ now with "yes".  Be warned that selecting the users from a large list
+ does not scale very well.

Added: cdd/tags/cdd/0.4.5/templates/po/POTFILES.in
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/po/POTFILES.in	Sun Jan  6 15:44:05 2008
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] config.templates

Added: cdd/tags/cdd/0.4.5/templates/po/ca.po
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/po/ca.po	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,87 @@
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+#    Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: cdd 0.4\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-06-28 15:58+0200\n"
+"PO-Revision-Date: 2004-09-07 20:59+0200\n"
+"Last-Translator: Guillem Jover <guillem at debian.org>\n"
+"Language-Team: Catalan <debian-l10n-catalan at debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid "#CDDNAME# users:"
+msgstr "Usuaris de #CDDNAME#:"
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid ""
+"Please select, among the whole system user list, users who should get a "
+"#CDDNAME# user menu."
+msgstr ""
+"Si us plau seleccioneu, de la llista de tots els usuaris del sistema, "
+"aquells usuaris que han d'obtenir un menú d'usuari de #CDDNAME#."
+
+#. Type: select
+#. Choices
+#: ../config.templates:10
+msgid "Each package installation, End of installation, Never"
+msgstr "En cada instal·lació d'un paquet, Al final de la instal·lació, Mai"
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid "Build user menus at:"
+msgstr "Construir els menús d'usuari a:"
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid ""
+"The meta packages of the #CDDNAME# Custom Debian Distribution contain extra "
+"role based menus for users. These will be built when a user who is "
+"registered to a given role uses the \"update-menus\" utility.  This can be "
+"done automatically for all users who are registered for #CDDNAME# after "
+"installation of each single meta package, at the end of the whole "
+"installation process to save time in case of installing more than one meta "
+"package or just leave the call of \"update-menus\" to the users themselves.\n"
+" * Each package installation : Call \"update-menus\" after each meta "
+"package\n"
+"                              (time consuming);\n"
+" * End of installation       : Call \"update-menus\" only once at the end "
+"of\n"
+"                               the whole installation/upgrading process;\n"
+" * Never                     : Do not call \"update-menus\" at all."
+msgstr ""
+"Els meta paquets de la distribució de Debian adaptada #CDDNAME# contenen "
+"menús extra basats en rols per als usuaris. Aquests seran construïts quan "
+"un usuari que estigui registrat en algun dels rols faci servir la utilitat "
+"«update-menus». Això es pot fer automàticament per a tots els usuaris que "
+"estiguin registrats per #CDDNAME# després de la instal·lació de cada meta "
+"paquet, al final de tot el procés d'instal·lació per a estalviar temps en "
+"cas d'instal·lar més d'un meta paquet o senzillament deixar l'execució de "
+"«update-menus» als propis usuaris.\n"
+" * En cada instal·lació d'un paquet: Executar «update-menus» després de cada\n"
+"                                     meta paquet (consumeix molt de temps);\n"
+" * Al final d'instal·lació         : Executar «update-menus» només al final\n"
+"                                     de tota la instal·lació o procés\n"
+"                                     d'actualització;\n"
+" * Mai                             : No executar mai «update-menus»."
+

Added: cdd/tags/cdd/0.4.5/templates/po/de.po
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/po/de.po	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,84 @@
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+#    Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: #CDD#-config\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-06-28 15:58+0200\n"
+"PO-Revision-Date: 2004-03-26 17:42+0100\n"
+"Last-Translator: Andreas Tille <tille at debian.org>\n"
+"Language-Team: German <debian-l10n-german at lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid "#CDDNAME# users:"
+msgstr "#CDDNAME# Nutzer:"
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid ""
+"Please select, among the whole system user list, users who should get a "
+"#CDDNAME# user menu."
+msgstr ""
+"Bitte wählen Sie aus der Liste aller Nutzer des Systems diejenigen aus, die "
+"ein #CDDNAME# Nutzermenü erhalten sollen."
+
+#. Type: select
+#. Choices
+#: ../config.templates:10
+msgid "Each package installation, End of installation, Never"
+msgstr "Paketinstallation, Installationsende, Nie"
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid "Build user menus at:"
+msgstr "Erzeugen der Nutzermenüs bei:"
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid ""
+"The meta packages of the #CDDNAME# Custom Debian Distribution contain extra "
+"role based menus for users. These will be built when a user who is "
+"registered to a given role uses the \"update-menus\" utility.  This can be "
+"done automatically for all users who are registered for #CDDNAME# after "
+"installation of each single meta package, at the end of the whole "
+"installation process to save time in case of installing more than one meta "
+"package or just leave the call of \"update-menus\" to the users themselves.\n"
+" * Each package installation : Call \"update-menus\" after each meta "
+"package\n"
+"                              (time consuming);\n"
+" * End of installation       : Call \"update-menus\" only once at the end "
+"of\n"
+"                               the whole installation/upgrading process;\n"
+" * Never                     : Do not call \"update-menus\" at all."
+msgstr ""
+"Die Metapakete der Custom Debian Distribution #CDDNAME# enthalten Rollen "
+"basierte Nutzermenüs.  Diese werden erzeugt, wenn ein Nutzer, der für eine "
+"bestimmte Rolle registriert ist, das Programm \"update-menus\" aufruft. Das "
+"kann automatisch für alle für #CDDNAME# registrierten Nutzer geschehen und "
+"zwar nach der Installation jedes einzelnen Metapaketes oder zeitsparend am "
+"Ende des Installationsprozesses mehrerer Metapakete.  Alternativ kann "
+"\"update-menus\" auch manuell durch jeden Nutzer aufgerufen werden.\n"
+" * Paketinstallation : \"update-menus\" nach jeder Metapaketinstallation\n"
+"                       aufrufen (zeitintensiv).\n"
+" * Installationsende : \"update-menus\" einmalig am Ende des\n"
+"                       Installations- oder Updateprozesses aufrufen.\n"
+" * Nie               : \"update-menus\" nicht aufrufen.\n"

Added: cdd/tags/cdd/0.4.5/templates/po/fr.po
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/po/fr.po	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,92 @@
+# translation of fr.po to French
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+#    Developers do not need to manually edit POT or PO files.
+# Christian Perrier <bubulle at debian.org>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: #CDD#-config\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-06-28 15:58+0200\n"
+"PO-Revision-Date: 2004-06-29 08:04+0200\n"
+"Last-Translator: Eric Madesclair <eric-m at wanadoo.fr>\n"
+"Language-Team: French <debian-l10n-french at lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+"Plural-Forms: Plural-Forms: nplurals=2; plural=n>1;\n"
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid "#CDDNAME# users:"
+msgstr "Utilisateurs de #CDDNAME# :"
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid ""
+"Please select, among the whole system user list, users who should get a "
+"#CDDNAME# user menu."
+msgstr ""
+"Veuillez choisir parmi tous les utilisateurs du système ceux qui auront un "
+"menu #CDDNAME#."
+
+#. Type: select
+#. Choices
+#: ../config.templates:10
+msgid "Each package installation, End of installation, Never"
+msgstr "À chaque installation de paquet, À la fin de l'installation, Jamais"
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid "Build user menus at:"
+msgstr "Construction des menus des utilisateurs :"
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid ""
+"The meta packages of the #CDDNAME# Custom Debian Distribution contain extra "
+"role based menus for users. These will be built when a user who is "
+"registered to a given role uses the \"update-menus\" utility.  This can be "
+"done automatically for all users who are registered for #CDDNAME# after "
+"installation of each single meta package, at the end of the whole "
+"installation process to save time in case of installing more than one meta "
+"package or just leave the call of \"update-menus\" to the users themselves.\n"
+" * Each package installation : Call \"update-menus\" after each meta "
+"package\n"
+"                              (time consuming);\n"
+" * End of installation       : Call \"update-menus\" only once at the end "
+"of\n"
+"                               the whole installation/upgrading process;\n"
+" * Never                     : Do not call \"update-menus\" at all."
+msgstr ""
+"Les méta-paquets de la distribution Debian spécialisée #CDDNAME# comportent "
+"des menus additionnels suivant le rôle attribué aux utilisateurs. Ces menus "
+"sont construits quand un utilisateur enregistré dans un rôle donné lancera "
+"la commande « update-menus ». Cette opération peut se faire automatiquement "
+"après l'installation de chaque méta-paquet pour chaque utilisateur "
+"enregistré pour #CDDNAME# ou à la fin du processus d'installation pour "
+"gagner du temps si plu sd'un méta-paquet est installé. Il est également "
+"possible de laisser aux utilisateurs l'initiative de lancer eux-même la "
+"commande.\n"
+" - À chaque installation de paquet : lancer « update-menus » après\n"
+"                                     l'installation de chaque méta-paquet\n"
+"                                     (cette opération peut être longue) ;\n"
+" - À la fin de l'installation      : lancer « update-menus » seulement\n"
+"                                     à la fin de la procédure\n"
+"                                     d'installation ou de mise à jour ;\n"
+" - Jamais                          : ne pas du tout lancer « update-menus »."

Added: cdd/tags/cdd/0.4.5/templates/po/pt_BR.po
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/po/pt_BR.po	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,88 @@
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+#    Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: cdd-dev\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-06-28 15:58+0200\n"
+"PO-Revision-Date: 2004-06-29 22:00-0300\n"
+"Last-Translator: André Luís Lopes <andrelop at debian.org>\n"
+"Language-Team: Debian-BR Project <debian-l10n-portuguese at lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid "#CDDNAME# users:"
+msgstr "Usuários #CDDNAME# : "
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid ""
+"Please select, among the whole system user list, users who should get a "
+"#CDDNAME# user menu."
+msgstr ""
+"Por favor, selecione dentre a lista de usuários de todo o sistema os "
+"usuários que devem obter um menu de usuário do #CDDNAME#."
+
+#. Type: select
+#. Choices
+#: ../config.templates:10
+msgid "Each package installation, End of installation, Never"
+msgstr "A cada instalação de pacote, Ao final da instalação, Nunca"
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid "Build user menus at:"
+msgstr "Construir menus de usuários :"
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid ""
+"The meta packages of the #CDDNAME# Custom Debian Distribution contain extra "
+"role based menus for users. These will be built when a user who is "
+"registered to a given role uses the \"update-menus\" utility.  This can be "
+"done automatically for all users who are registered for #CDDNAME# after "
+"installation of each single meta package, at the end of the whole "
+"installation process to save time in case of installing more than one meta "
+"package or just leave the call of \"update-menus\" to the users themselves.\n"
+" * Each package installation : Call \"update-menus\" after each meta "
+"package\n"
+"                              (time consuming);\n"
+" * End of installation       : Call \"update-menus\" only once at the end "
+"of\n"
+"                               the whole installation/upgrading process;\n"
+" * Never                     : Do not call \"update-menus\" at all."
+msgstr ""
+"Os meta-pacotes da Distribuição Debian Customizada #CDDNAME# contém "
+"menus extras para usuários com base em suas funções. Tais menus serão "
+"gerados quando um usuário registrado para uma função específica utilizar "
+"o utilitário \"update-menus\". Isso pode ser feito automaticamente para "
+"todos os usuários que estejam registrados para o #CDDNAME# após a "
+"instalação de cada meta-pacote, ao final de todo o processo de instalação "
+"para economizar tempo no caso da instalação de mais de um meta-pacote ou "
+"deixar a execução do utilitário \"update-menus\" por conta dos prórios"
+"usuários.\n"
+" * A cada instalação de pacote : Executa \"update-menus\" após cada meta "
+"pacote\n"
+"                                 (consome muito tempo);\n"
+" * Ao final da instalação      : Executa \"update-menus\" uma única vez "
+"no final\n"
+"                                 do processo completo de instalação/atualização;\n"
+" * Nunca                       : Não executa \"update-menus\"."

Added: cdd/tags/cdd/0.4.5/templates/po/templates.pot
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/po/templates.pot	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,71 @@
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+#    Developers do not need to manually edit POT or PO files.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-06-28 15:58+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid "#CDDNAME# users:"
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid ""
+"Please select, among the whole system user list, users who should get a "
+"#CDDNAME# user menu."
+msgstr ""
+
+#. Type: select
+#. Choices
+#: ../config.templates:10
+msgid "Each package installation, End of installation, Never"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid "Build user menus at:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid ""
+"The meta packages of the #CDDNAME# Custom Debian Distribution contain extra "
+"role based menus for users. These will be built when a user who is "
+"registered to a given role uses the \"update-menus\" utility.  This can be "
+"done automatically for all users who are registered for #CDDNAME# after "
+"installation of each single meta package, at the end of the whole "
+"installation process to save time in case of installing more than one meta "
+"package or just leave the call of \"update-menus\" to the users themselves.\n"
+" * Each package installation : Call \"update-menus\" after each meta "
+"package\n"
+"                              (time consuming);\n"
+" * End of installation       : Call \"update-menus\" only once at the end "
+"of\n"
+"                               the whole installation/upgrading process;\n"
+" * Never                     : Do not call \"update-menus\" at all."
+msgstr ""

Added: cdd/tags/cdd/0.4.5/templates/postinst
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/postinst	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,46 @@
+#!/bin/bash -e
+
+# This is the default postinst file from the cdd-dev package which is used
+# in all meta packages.  If there is a certain need to provide extra
+# postinst files for some meta packages this template will be appended.  Thus
+# it will be checked whether debconf was just initialized.
+#
+# You should not insert the _DEBHELPER_ template in the special postscript
+# file because it is in the end of this template anyway.
+
+test -x /usr/sbin/cdd-update-menus && /usr/sbin/cdd-update-menus -d #CDD#
+
+# Initialize debconf if not yet done
+if [ _"$DEBCONF_REDIR" = _"" ]; then
+    . /usr/share/debconf/confmodule
+    db_version 2.0
+fi
+
+. /etc/cdd/cdd.conf
+if [ -s /etc/cdd/#CDD#/#CDD#.conf ] ; then . /etc/cdd/#CDD#/#CDD#.conf ; fi
+
+case "$1" in
+    abort-deconfigure|abort-remove|abort-upgrade)
+	;;
+    configure|upgrade)
+	db_get "shared/#CDD#-config/usermenus" || true
+	case "$RET" in
+    	    "Each package installation")
+        	/usr/sbin/cdd-update-usermenus #CDD#
+                ;;
+            "End of installation")
+                touch /var/run/#CDD#-config.usermenu
+                ;;
+        esac
+	;;
+    *)
+	echo "postinst called with unknown argument \`$1'" >&2
+	exit 1
+	;;
+esac
+
+db_stop
+
+#DEBHELPER#
+
+exit 0

Added: cdd/tags/cdd/0.4.5/templates/postrm
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/postrm	Sun Jan  6 15:44:05 2008
@@ -0,0 +1,48 @@
+#!/bin/bash -e
+
+# This is the default postrm file from the cdd-dev package which is used
+# in all meta packages.  If there is a certain need to provide extra
+# postrm files for some meta packages this template will be appended.  Thus
+# it will be checked whether debconf was just initialized.
+#
+# You should not insert the _DEBHELPER_ template in the special postscript
+# file because it is in the end of this template anyway.
+
+test -x /usr/sbin/cdd-update-menus && /usr/sbin/cdd-update-menus -d #CDD# 
+
+test -s /etc/cdd/cdd.conf         && . /etc/cdd/cdd.conf
+test -s /etc/cdd/#CDD#/#CDD#.conf && . /etc/cdd/#CDD#/#CDD#.conf
+
+if [ -x /usr/sbin/cdd-update-usermenus ] ; then
+    # Initialize debconf if not yet done
+    if [ _"$DEBCONF_REDIR" = _"" ]; then
+        . /usr/share/debconf/confmodule
+        db_version 2.0
+    fi
+
+    . /etc/cdd/cdd.conf
+    if [ -s /etc/cdd/#CDD#/#CDD#.conf ] ; then . /etc/cdd/#CDD#/#CDD#.conf ; fi
+
+    case "$1" in
+	abort-install|abort-upgrade|failed-upgrade|upgrade)
+	    ;;
+	remove|purge)
+	    db_get "shared/#CDD#-config/usermenus" || true
+	    case "$RET" in
+		"Each package installation")
+		    /usr/sbin/cdd-update-usermenus #CDD#
+		    ;;
+		"End of installation")
+		    touch /var/run/#CDD#-config.usermenu
+		    ;;
+	    esac
+	    ;;
+	*)
+	    echo "postrm called with unknown argument \`$1'" >&2
+	    exit 1
+	    ;;
+    esac
+fi
+
+
+#DEBHELPER#



More information about the Cdd-commits mailing list