[Cdd-commits] r453 - in cdd/tags/cdd/0.4: . debian devtools etc etc/cdd examples examples/config examples/debian examples/install examples/install/task1 examples/menu examples/menu/task1 examples/tasks mans_old share share/cdd share/cdd/unixgroups share/menu templates templates/po

CDD Subversion Commit noreply at alioth.debian.org
Mon Aug 27 19:26:15 UTC 2007


Author: tille
Date: Mon Aug 27 19:26:15 2007
New Revision: 453

Added:
   cdd/tags/cdd/0.4/
   cdd/tags/cdd/0.4/AUTHORS
   cdd/tags/cdd/0.4/BUGS
   cdd/tags/cdd/0.4/COPYING
   cdd/tags/cdd/0.4/Changelog
   cdd/tags/cdd/0.4/README.CDD
   cdd/tags/cdd/0.4/TODO
   cdd/tags/cdd/0.4/VERSION
   cdd/tags/cdd/0.4/cdd-role   (contents, props changed)
   cdd/tags/cdd/0.4/cdd-role.8
   cdd/tags/cdd/0.4/cdd-task-lister   (contents, props changed)
   cdd/tags/cdd/0.4/cdd-update-menus   (contents, props changed)
   cdd/tags/cdd/0.4/cdd-update-menus.8
   cdd/tags/cdd/0.4/cdd-update-usermenus   (contents, props changed)
   cdd/tags/cdd/0.4/cdd-update-usermenus.8
   cdd/tags/cdd/0.4/cdd-user   (contents, props changed)
   cdd/tags/cdd/0.4/cdd-user.8
   cdd/tags/cdd/0.4/cdd.conf.5
   cdd/tags/cdd/0.4/debian/
   cdd/tags/cdd/0.4/debian/NEWS.Debian
   cdd/tags/cdd/0.4/debian/cdd-common.README.Debian
   cdd/tags/cdd/0.4/debian/cdd-common.dirs
   cdd/tags/cdd/0.4/debian/cdd-common.docs
   cdd/tags/cdd/0.4/debian/cdd-common.install
   cdd/tags/cdd/0.4/debian/cdd-common.lintian.overrides
   cdd/tags/cdd/0.4/debian/cdd-common.manpages
   cdd/tags/cdd/0.4/debian/cdd-dev.dirs
   cdd/tags/cdd/0.4/debian/cdd-dev.docs
   cdd/tags/cdd/0.4/debian/cdd-dev.examples
   cdd/tags/cdd/0.4/debian/cdd-dev.install
   cdd/tags/cdd/0.4/debian/cdd-dev.lintian.overrides
   cdd/tags/cdd/0.4/debian/cdd-dev.manpages
   cdd/tags/cdd/0.4/debian/changelog
   cdd/tags/cdd/0.4/debian/changelog.med-common
   cdd/tags/cdd/0.4/debian/compat
   cdd/tags/cdd/0.4/debian/control
   cdd/tags/cdd/0.4/debian/copyright
   cdd/tags/cdd/0.4/debian/rules   (contents, props changed)
   cdd/tags/cdd/0.4/devtools/
   cdd/tags/cdd/0.4/devtools/Makefile   (contents, props changed)
   cdd/tags/cdd/0.4/devtools/cdd-gen-control   (contents, props changed)
   cdd/tags/cdd/0.4/devtools/cdd-get-names   (contents, props changed)
   cdd/tags/cdd/0.4/devtools/cdd-install-helper   (contents, props changed)
   cdd/tags/cdd/0.4/devtools/rules   (contents, props changed)
   cdd/tags/cdd/0.4/etc/
   cdd/tags/cdd/0.4/etc/cdd/
   cdd/tags/cdd/0.4/etc/cdd/cdd.conf
   cdd/tags/cdd/0.4/examples/
   cdd/tags/cdd/0.4/examples/README
   cdd/tags/cdd/0.4/examples/config/
   cdd/tags/cdd/0.4/examples/config/README
   cdd/tags/cdd/0.4/examples/config/common   (contents, props changed)
   cdd/tags/cdd/0.4/examples/config/common.1
   cdd/tags/cdd/0.4/examples/config/conf
   cdd/tags/cdd/0.4/examples/config/control
   cdd/tags/cdd/0.4/examples/debian/
   cdd/tags/cdd/0.4/examples/debian/README
   cdd/tags/cdd/0.4/examples/debian/cdd-task1.install
   cdd/tags/cdd/0.4/examples/debian/cdd-task1.manpages
   cdd/tags/cdd/0.4/examples/debian/compat
   cdd/tags/cdd/0.4/examples/debian/control.stub
   cdd/tags/cdd/0.4/examples/debian/rules   (contents, props changed)
   cdd/tags/cdd/0.4/examples/install/
   cdd/tags/cdd/0.4/examples/install/README
   cdd/tags/cdd/0.4/examples/install/task1/
   cdd/tags/cdd/0.4/examples/install/task1/extra-script-which-is-needed-in-task1   (contents, props changed)
   cdd/tags/cdd/0.4/examples/install/task1/extra-script-which-is-needed-in-task1.1
   cdd/tags/cdd/0.4/examples/menu/
   cdd/tags/cdd/0.4/examples/menu/README
   cdd/tags/cdd/0.4/examples/menu/task1/
   cdd/tags/cdd/0.4/examples/menu/task1/README
   cdd/tags/cdd/0.4/examples/menu/task1/dep1.menu
   cdd/tags/cdd/0.4/examples/menu/task1/dep2.txt
   cdd/tags/cdd/0.4/examples/menu/task1/dep3.html
   cdd/tags/cdd/0.4/examples/tasks/
   cdd/tags/cdd/0.4/examples/tasks/README
   cdd/tags/cdd/0.4/examples/tasks/task1
   cdd/tags/cdd/0.4/mans_old/
   cdd/tags/cdd/0.4/mans_old/cdd-gen-control.1
   cdd/tags/cdd/0.4/mans_old/cdd-install-helper.1
   cdd/tags/cdd/0.4/share/
   cdd/tags/cdd/0.4/share/cdd/
   cdd/tags/cdd/0.4/share/cdd/cdd-actions
   cdd/tags/cdd/0.4/share/cdd/cdd-update-menus
   cdd/tags/cdd/0.4/share/cdd/cdd-utils
   cdd/tags/cdd/0.4/share/cdd/unixgroups/
   cdd/tags/cdd/0.4/share/cdd/unixgroups/cdd-actions
   cdd/tags/cdd/0.4/share/menu/
   cdd/tags/cdd/0.4/share/menu/cdd-menu   (contents, props changed)
   cdd/tags/cdd/0.4/sources.list   (contents, props changed)
   cdd/tags/cdd/0.4/sources.list.local
   cdd/tags/cdd/0.4/sources.list.stable
   cdd/tags/cdd/0.4/sources.list.testing
   cdd/tags/cdd/0.4/sources.list.unstable
   cdd/tags/cdd/0.4/templates/
   cdd/tags/cdd/0.4/templates/README.Debian
   cdd/tags/cdd/0.4/templates/apt.conf
   cdd/tags/cdd/0.4/templates/config.config   (contents, props changed)
   cdd/tags/cdd/0.4/templates/config.install
   cdd/tags/cdd/0.4/templates/config.links
   cdd/tags/cdd/0.4/templates/config.postinst   (contents, props changed)
   cdd/tags/cdd/0.4/templates/config.templates
   cdd/tags/cdd/0.4/templates/po/
   cdd/tags/cdd/0.4/templates/po/POTFILES.in
   cdd/tags/cdd/0.4/templates/po/ca.po
   cdd/tags/cdd/0.4/templates/po/de.po
   cdd/tags/cdd/0.4/templates/po/fr.po
   cdd/tags/cdd/0.4/templates/po/pt_BR.po
   cdd/tags/cdd/0.4/templates/po/templates.pot
   cdd/tags/cdd/0.4/templates/postinst   (contents, props changed)
   cdd/tags/cdd/0.4/templates/postrm   (contents, props changed)
Log:
Tagged 0.4


Added: cdd/tags/cdd/0.4/AUTHORS
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/AUTHORS	Mon Aug 27 19:26:15 2007
@@ -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/BUGS
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/BUGS	Mon Aug 27 19:26:15 2007
@@ -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/COPYING
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/COPYING	Mon Aug 27 19:26:15 2007
@@ -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/Changelog
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/Changelog	Mon Aug 27 19:26:15 2007
@@ -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/README.CDD
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/README.CDD	Mon Aug 27 19:26:15 2007
@@ -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/TODO
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/TODO	Mon Aug 27 19:26:15 2007
@@ -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/VERSION
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/VERSION	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+0.4

Added: cdd/tags/cdd/0.4/cdd-role
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/cdd-role	Mon Aug 27 19:26:15 2007
@@ -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/cdd-role.8
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/cdd-role.8	Mon Aug 27 19:26:15 2007
@@ -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/cdd-task-lister
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/cdd-task-lister	Mon Aug 27 19:26:15 2007
@@ -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/cdd-update-menus
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/cdd-update-menus	Mon Aug 27 19:26:15 2007
@@ -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/cdd-update-menus.8
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/cdd-update-menus.8	Mon Aug 27 19:26:15 2007
@@ -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/cdd-update-usermenus
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/cdd-update-usermenus	Mon Aug 27 19:26:15 2007
@@ -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/cdd-update-usermenus.8
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/cdd-update-usermenus.8	Mon Aug 27 19:26:15 2007
@@ -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/cdd-user
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/cdd-user	Mon Aug 27 19:26:15 2007
@@ -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/cdd-user.8
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/cdd-user.8	Mon Aug 27 19:26:15 2007
@@ -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/cdd.conf.5
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/cdd.conf.5	Mon Aug 27 19:26:15 2007
@@ -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/debian/NEWS.Debian
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/NEWS.Debian	Mon Aug 27 19:26:15 2007
@@ -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/debian/cdd-common.README.Debian
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/cdd-common.README.Debian	Mon Aug 27 19:26:15 2007
@@ -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/debian/cdd-common.dirs
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/cdd-common.dirs	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+usr/share/lintian/overrides

Added: cdd/tags/cdd/0.4/debian/cdd-common.docs
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/cdd-common.docs	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,2 @@
+README.CDD
+debian/NEWS.Debian

Added: cdd/tags/cdd/0.4/debian/cdd-common.install
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/cdd-common.install	Mon Aug 27 19:26:15 2007
@@ -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/debian/cdd-common.lintian.overrides
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/cdd-common.lintian.overrides	Mon Aug 27 19:26:15 2007
@@ -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/debian/cdd-common.manpages
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/cdd-common.manpages	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+*.8

Added: cdd/tags/cdd/0.4/debian/cdd-dev.dirs
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/cdd-dev.dirs	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+usr/share/lintian/overrides

Added: cdd/tags/cdd/0.4/debian/cdd-dev.docs
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/cdd-dev.docs	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+BUGS

Added: cdd/tags/cdd/0.4/debian/cdd-dev.examples
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/cdd-dev.examples	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+examples/*

Added: cdd/tags/cdd/0.4/debian/cdd-dev.install
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/cdd-dev.install	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,3 @@
+sources.list*       etc/cdd
+templates           usr/share/cdd
+devtools/*          usr/share/cdd-dev

Added: cdd/tags/cdd/0.4/debian/cdd-dev.lintian.overrides
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/cdd-dev.lintian.overrides	Mon Aug 27 19:26:15 2007
@@ -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/common.config
+cdd-dev: shell-script-fails-syntax-check ./usr/share/cdd/templates/common.postinst

Added: cdd/tags/cdd/0.4/debian/cdd-dev.manpages
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/cdd-dev.manpages	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+*.1

Added: cdd/tags/cdd/0.4/debian/changelog
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/changelog	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,188 @@
+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/debian/changelog.med-common
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/changelog.med-common	Mon Aug 27 19:26:15 2007
@@ -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/debian/compat
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/compat	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+5

Added: cdd/tags/cdd/0.4/debian/control
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/control	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,32 @@
+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)
+Standards-Version: 3.7.2
+
+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.
+

Added: cdd/tags/cdd/0.4/debian/copyright
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/copyright	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,5 @@
+This package is Copyright 2004 by Andreas Tille <tille at debian.org>
+
+This software 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/debian/rules
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/debian/rules	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,65 @@
+#!/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
+
+	touch build-stamp
+
+clean:
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp
+
+	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
+	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/devtools/Makefile
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/devtools/Makefile	Mon Aug 27 19:26:15 2007
@@ -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; \
+	$(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/*~a
+	rm -rf tasksel
+	rm -f packages.txt by_vote packages-sorted.txt

Added: cdd/tags/cdd/0.4/devtools/cdd-gen-control
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/devtools/cdd-gen-control	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,629 @@
+#!/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 %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");
+
+    # 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 ( open(STUB, "debian/control.stub" ) ) {
+        print STDERR "No template debian/control.stub.  Use test prefix.\n" ;
+    } else {
+        while ( <STUB> ) {
+            if ( /^Package: (\w+)/) {
+                $prefix  = $1."-";
+		$cddname = "debian-".$cddshortname ;
+		if ( /^Package:\s.*-tasks$/) {
+		    $tasksname = $prefix . "tasks";
+		}
+		last ;
+            }
+            if ( /^Source:\s+debian-(.+)$/) {
+		$cddshortname = $1 ;
+            }
+        }
+	close(STUB) ;
+    }
+    if  ( -d "config" && -e "config/control" ) {
+	$hasconfig = 1;
+    }
+}

Added: cdd/tags/cdd/0.4/devtools/cdd-get-names
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/devtools/cdd-get-names	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,45 @@
+#!/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
+
+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)
+        grep '^Source:[[:space:]]*debian-' "$CONTROLFILE" | \
+	    sed 's/^Source:[[:space:]]*debian-//'
+	exit 0
+	;;
+    metapackageprefix)
+	grep '^Package:[[:space:]]*' "$CONTROLFILE" | \
+	    sed 's/^Package:[[:space:]]*\([[:alnum:]]\+\)-*.*/\1/'
+	exit 0
+	;;
+    *)
+	echo "Unknown argument $1"
+	echo "Usage: $0 cddname|cddshortname|metapackageprefix"
+	exit 64   #  EX_USAGE
+	;;
+esac

Added: cdd/tags/cdd/0.4/devtools/cdd-install-helper
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/devtools/cdd-install-helper	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,119 @@
+#!/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."
+	exit -1
+    fi
+    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"
+
+    # 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/common exists use this as general helper script
+if [ -s config/common ] ; then
+  mkdir -p debian/"$cdd"-config/usr/bin
+  mkdir -p debian/"$cdd"-config/usr/share/man/man1
+  cp -a config/common   debian/"$cdd"-config/usr/bin/"$cdd"-common
+  cp -a config/common.1 debian/"$cdd"-config/usr/share/man/man1/"$cdd"-common.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"-common debian/"$cdd"-"$pkg"/usr/bin/"$cdd"-"$pkg"
+    ln -s "$cdd"-common.1.gz debian/"$cdd"-"$pkg"/usr/share/man/man1/"$cdd"-"$pkg".1.gz
+  done
+fi
+
+# common/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
+  for comm in `ls /usr/share/cdd/templates/{config.*,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/devtools/rules
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/devtools/rules	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,84 @@
+#!/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)-*.post{inst,rm}
+	# remove tasksel directory
+	## [ -d tasksel ] && rm -f tasksel/$(PREFIX)-* && rmdir tasksel
+	# remove auto generated files for config package
+	rm -f debian/$(PREFIX)-config.{templates,config,install,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/etc/cdd/cdd.conf
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/etc/cdd/cdd.conf	Mon Aug 27 19:26:15 2007
@@ -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/examples/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/README	Mon Aug 27 19:26:15 2007
@@ -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/examples/config/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/config/README	Mon Aug 27 19:26:15 2007
@@ -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/examples/config/common
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/config/common	Mon Aug 27 19:26:15 2007
@@ -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/examples/config/common.1
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/config/common.1	Mon Aug 27 19:26:15 2007
@@ -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/examples/config/conf
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/config/conf	Mon Aug 27 19:26:15 2007
@@ -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/examples/config/control
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/config/control	Mon Aug 27 19:26:15 2007
@@ -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/examples/debian/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/debian/README	Mon Aug 27 19:26:15 2007
@@ -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/examples/debian/cdd-task1.install
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/debian/cdd-task1.install	Mon Aug 27 19:26:15 2007
@@ -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/examples/debian/cdd-task1.manpages
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/debian/cdd-task1.manpages	Mon Aug 27 19:26:15 2007
@@ -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/examples/debian/compat
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/debian/compat	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+5

Added: cdd/tags/cdd/0.4/examples/debian/control.stub
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/debian/control.stub	Mon Aug 27 19:26:15 2007
@@ -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/examples/debian/rules
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/debian/rules	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,3 @@
+#!/usr/bin/make -f
+
+include /usr/share/cdd-dev/rules

Added: cdd/tags/cdd/0.4/examples/install/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/install/README	Mon Aug 27 19:26:15 2007
@@ -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/examples/install/task1/extra-script-which-is-needed-in-task1
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/install/task1/extra-script-which-is-needed-in-task1	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo "Do something useful for task1."

Added: cdd/tags/cdd/0.4/examples/install/task1/extra-script-which-is-needed-in-task1.1
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/install/task1/extra-script-which-is-needed-in-task1.1	Mon Aug 27 19:26:15 2007
@@ -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/examples/menu/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/menu/README	Mon Aug 27 19:26:15 2007
@@ -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/examples/menu/task1/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/menu/task1/README	Mon Aug 27 19:26:15 2007
@@ -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/examples/menu/task1/dep1.menu
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/menu/task1/dep1.menu	Mon Aug 27 19:26:15 2007
@@ -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/examples/menu/task1/dep2.txt
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/menu/task1/dep2.txt	Mon Aug 27 19:26:15 2007
@@ -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/examples/menu/task1/dep3.html
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/menu/task1/dep3.html	Mon Aug 27 19:26:15 2007
@@ -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/examples/tasks/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/tasks/README	Mon Aug 27 19:26:15 2007
@@ -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/examples/tasks/task1
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/examples/tasks/task1	Mon Aug 27 19:26:15 2007
@@ -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/mans_old/cdd-gen-control.1
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/mans_old/cdd-gen-control.1	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,61 @@
+.TH cdd-gen-control 1 "2004/03/23" "" "Debian Internal Projects"
+.SH NAME
+.B cdd-gen-control
+\- generate debian/control file from tasks directory
+
+.SH SYNOPSIS
+.B cdd-gen-control
+[
+.B options
+]
+[
+.B project
+]
+
+.SH DESCRIPTION
+The script
+.B cdd-gen-control
+parses the
+.I tasks
+directory for text files which have a similar syntax to
+.I debian/control
+files.  Each text file is used as template for a
+.I <cdd>-<textfile_name>
+meta package and has to define the dependencies. In addition
+there is a further tag named
+.B Task
+which is mandatory and is used later as registry of all tasks in
+.I /usr/share/cdd/tasks/<cdd> .
+
+.SH OPTIONS
+.TP
+.B -c
+Create debian/control file using template debian/control.stub.
+.TP
+.B -d
+Turn on debugging mode.
+.TP
+.B -a
+Print all available packages.
+.TP
+.B -e
+Print excluded packages.
+.TP
+.B -m
+Print missing packages.
+.TP
+.B -s <dist>
+Without the
+.B -s
+option /etc/cdd/sources.list is used to verify which packages are available.
+You can specify one of
+.I stable
+,
+.I testing
+or
+.I unstable
+as argument or a complete path to a valid sources.list file.
+
+.SH AUTHORS
+Petter Reinholdtsen <pere at hungry.com>
+Andreas Tille <tille at debian.org>

Added: cdd/tags/cdd/0.4/mans_old/cdd-install-helper.1
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/mans_old/cdd-install-helper.1	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,108 @@
+.TH "cdd-install-helper" "1" "March 23, 2004" "CDD - Development" ""
+.SH "NAME"
+.B cdd\-install\-helper
+\- install menu and link to helper bin and according manpage
+
+.SH "SYNOPSIS"
+.B cdd\-install\-helper
+
+.SH "DESCRIPTION"
+This script can be used in debian/rules file to install the user menu
+files to /etc/cdd/\fI<cdd>\fR/menu/\fI<package>\fR,  a link for the
+helper script of every \fI<cdd>\fR\-* package and the link to the manpage
+for this script.
+.TP 
+.I menu
+If a directory
+.I menu
+exists in the building directory it checks subdirectories
+.I menu/<task>
+(named like meta package without the "cdd\-" name
+prefix).  This subdirectory might contain three types of files:
+.IP
+.I <dep>.menu
+These files should be valid menu files as they are provided for Debian
+packages in debian/menu.   They will be copied to
+.I usr/share/cdd/<cdd>/menu/<dep>
+and can be used to override the menu items which are provided by the
+maintainer of the package
+.I <dep>
+in case the meta package author likes to change the normal menu item
+for the user menus.
+.IP
+.I <dep>.html
+These files might contain documentation of the dependency in HTML
+format if it makes no sense to provide a menu entry to actually call a
+program in the package.
+.IP
+.I <dep>.txt
+These files might contain documentation of the dependency in text
+format if it makes no sense to provide a menu entry to actually call a
+program in the package.
+
+The rationale of the latter both types is to enable a menu entry in
+the user menus for
+.B every
+call a certain program via the menu.  These files should provide
+reasonable information how to use this program in text form.  This is
+better than having no menu entry at all because the target user might
+use the menu as the first interface of information of his system.
+.TP 
+.I config
+If there exists a file
+.I config/control
+and has a size greater than 0 a <cdd>\-config package is builded.  The
+file
+.I config/control
+was just used to build the appropriate
+.I debian/control
+file using the
+.B  cdd\-gen\-control(1)
+tool.
+.TP 
+.I conf
+If there exists a file
+.I config/conf
+and has a size greater than 0 this is used as special configuration file
+.I /etc/cdd/<cdd>/<cdd>.conf
+which can override variables from the general configuration file
+.I /etc/cdd/cdd.conf
+or add further variables. Because it is sourced from shell it has to
+follow shell syntax.
+.TP 
+.I install
+Here the extra files which might be needed in a meta package (like scripts,
+manpages, etc.) should be copied in a directory named
+.I install/<pkg_without_cdd\-prefix>/
+and the files should be moved into place by using
+.I debian/<pkg>.install
+or
+.I debian/<pkg>.manpages
+etc.
+
+Moreover it is possible to provide extra
+.I debian/<pkg>.config
+and
+.I debian/<pkg>.templates
+files for each meta package if additional
+.I debconf
+configuration is needed.  For the translations of the
+.I debconf
+questions some extra caution is required.  Because 
+.B cdd\-install\-helper
+uses general templates to provide translations for some general questions
+the directory
+.I debian/po
+is overriden in the package building process.  To enable translations
+of the extra templates these should be stored in a directory named
+.I debian/po.stub
+and the contents of the files in this directory is appended to the
+apropriate files.
+
+.SH "EXAMPLES"
+For the usage of this tool just have a look at the 
+.B debian\-med
+source package.
+
+.SH "AUTHOR"
+Andreas Tille <tille at debian.org>.

Added: cdd/tags/cdd/0.4/share/cdd/cdd-actions
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/share/cdd/cdd-actions	Mon Aug 27 19:26:15 2007
@@ -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/share/cdd/cdd-update-menus
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/share/cdd/cdd-update-menus	Mon Aug 27 19:26:15 2007
@@ -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/share/cdd/cdd-utils
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/share/cdd/cdd-utils	Mon Aug 27 19:26:15 2007
@@ -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/share/cdd/unixgroups/cdd-actions
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/share/cdd/unixgroups/cdd-actions	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,268 @@
+# $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
+		${DRYRUN} addgroup --system "${ROLE}" || true
+		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/share/menu/cdd-menu
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/share/menu/cdd-menu	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,214 @@
+#!/bin/bash
+
+# Script to handle menu profiles for CDD subsystem, installed by your system
+# administrator via cdd-common package.
+#
+# this script should be put in ${HOME}./menu/cdd-menu and is executed by
+# update-menus when run by user (not root)
+#
+# It prints on STDOUT Debian menu entries for user
+#
+# DO NOT REMOVE IT UNLESS YOU KNOW WHAT YOU ARE DOING
+
+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
+		cat <<EOT
+?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
+		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/sources.list
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/sources.list	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+link sources.list.unstable
\ No newline at end of file

Added: cdd/tags/cdd/0.4/sources.list.local
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/sources.list.local	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+deb file:/home/ftp/pub/debian/ testing main

Added: cdd/tags/cdd/0.4/sources.list.stable
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/sources.list.stable	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+deb http://ftp.debian.org/ stable main

Added: cdd/tags/cdd/0.4/sources.list.testing
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/sources.list.testing	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+deb http://ftp.debian.org/ testing main

Added: cdd/tags/cdd/0.4/sources.list.unstable
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/sources.list.unstable	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+deb http://ftp.debian.org/ unstable main

Added: cdd/tags/cdd/0.4/templates/README.Debian
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/templates/README.Debian	Mon Aug 27 19:26:15 2007
@@ -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/templates/apt.conf
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/templates/apt.conf	Mon Aug 27 19:26:15 2007
@@ -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/templates/config.config
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/templates/config.config	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,39 @@
+#!/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/usermenus" || true
+db_go
+
+# 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/templates/config.install
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/templates/config.install	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+debian/90#CDD#-config   etc/apt/apt.conf.d

Added: cdd/tags/cdd/0.4/templates/config.links
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/templates/config.links	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+usr/share/cdd/cdd-task-lister usr/lib/tasksel/#CDD#-task-files

Added: cdd/tags/cdd/0.4/templates/config.postinst
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/templates/config.postinst	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,36 @@
+#!/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
+
+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
+
+#DEBHELPER#

Added: cdd/tags/cdd/0.4/templates/config.templates
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/templates/config.templates	Mon Aug 27 19:26:15 2007
@@ -0,0 +1,25 @@
+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 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.
+  * 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.

Added: cdd/tags/cdd/0.4/templates/po/POTFILES.in
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/templates/po/POTFILES.in	Mon Aug 27 19:26:15 2007
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] config.templates

Added: cdd/tags/cdd/0.4/templates/po/ca.po
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/templates/po/ca.po	Mon Aug 27 19:26:15 2007
@@ -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/templates/po/de.po
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/templates/po/de.po	Mon Aug 27 19:26:15 2007
@@ -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/templates/po/fr.po
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/templates/po/fr.po	Mon Aug 27 19:26:15 2007
@@ -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/templates/po/pt_BR.po
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/templates/po/pt_BR.po	Mon Aug 27 19:26:15 2007
@@ -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/templates/po/templates.pot
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/templates/po/templates.pot	Mon Aug 27 19:26:15 2007
@@ -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/templates/postinst
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/templates/postinst	Mon Aug 27 19:26:15 2007
@@ -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/templates/postrm
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4/templates/postrm	Mon Aug 27 19:26:15 2007
@@ -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