[Cdd-commits] r513 - in cdd/tags/cdd/0.4.5: . debian devtools doc doc/en etc etc/cdd examples examples/config examples/debian examples/install examples/install/task1 examples/menu examples/menu/task1 examples/tasks share share/cdd share/cdd/unixgroups share/menu templates templates/po
CDD Subversion Commit
noreply at alioth.debian.org
Sun Jan 6 15:44:05 UTC 2008
Author: tille
Date: Sun Jan 6 15:44:05 2008
New Revision: 513
Added:
cdd/tags/cdd/0.4.5/
cdd/tags/cdd/0.4.5/AUTHORS
cdd/tags/cdd/0.4.5/BUGS
cdd/tags/cdd/0.4.5/COPYING
cdd/tags/cdd/0.4.5/Changelog
cdd/tags/cdd/0.4.5/README.CDD
cdd/tags/cdd/0.4.5/TODO
cdd/tags/cdd/0.4.5/VERSION
cdd/tags/cdd/0.4.5/cdd-role (contents, props changed)
cdd/tags/cdd/0.4.5/cdd-role.8
cdd/tags/cdd/0.4.5/cdd-task-lister (contents, props changed)
cdd/tags/cdd/0.4.5/cdd-update-menus (contents, props changed)
cdd/tags/cdd/0.4.5/cdd-update-menus.8
cdd/tags/cdd/0.4.5/cdd-update-usermenus (contents, props changed)
cdd/tags/cdd/0.4.5/cdd-update-usermenus.8
cdd/tags/cdd/0.4.5/cdd-user (contents, props changed)
cdd/tags/cdd/0.4.5/cdd-user.8
cdd/tags/cdd/0.4.5/cdd.conf.5
cdd/tags/cdd/0.4.5/debian/
cdd/tags/cdd/0.4.5/debian/NEWS.Debian
cdd/tags/cdd/0.4.5/debian/cdd-common.README.Debian
cdd/tags/cdd/0.4.5/debian/cdd-common.dirs
cdd/tags/cdd/0.4.5/debian/cdd-common.docs
cdd/tags/cdd/0.4.5/debian/cdd-common.install
cdd/tags/cdd/0.4.5/debian/cdd-common.lintian.overrides
cdd/tags/cdd/0.4.5/debian/cdd-common.manpages
cdd/tags/cdd/0.4.5/debian/cdd-dev.dirs
cdd/tags/cdd/0.4.5/debian/cdd-dev.docs
cdd/tags/cdd/0.4.5/debian/cdd-dev.examples
cdd/tags/cdd/0.4.5/debian/cdd-dev.install
cdd/tags/cdd/0.4.5/debian/cdd-dev.lintian.overrides
cdd/tags/cdd/0.4.5/debian/cdd-dev.manpages
cdd/tags/cdd/0.4.5/debian/cdd-doc.doc-base
cdd/tags/cdd/0.4.5/debian/cdd-doc.docs
cdd/tags/cdd/0.4.5/debian/cdd-doc.install
cdd/tags/cdd/0.4.5/debian/changelog
cdd/tags/cdd/0.4.5/debian/changelog.med-common
cdd/tags/cdd/0.4.5/debian/compat
cdd/tags/cdd/0.4.5/debian/control
cdd/tags/cdd/0.4.5/debian/copyright
cdd/tags/cdd/0.4.5/debian/rules (contents, props changed)
cdd/tags/cdd/0.4.5/devtools/
cdd/tags/cdd/0.4.5/devtools/Makefile (contents, props changed)
cdd/tags/cdd/0.4.5/devtools/cdd-gen-control (contents, props changed)
cdd/tags/cdd/0.4.5/devtools/cdd-get-names (contents, props changed)
cdd/tags/cdd/0.4.5/devtools/cdd-install-helper (contents, props changed)
cdd/tags/cdd/0.4.5/devtools/rules (contents, props changed)
cdd/tags/cdd/0.4.5/doc/
cdd/tags/cdd/0.4.5/doc/Makefile
cdd/tags/cdd/0.4.5/doc/TODO
cdd/tags/cdd/0.4.5/doc/debian-cdd.en.sgml
cdd/tags/cdd/0.4.5/doc/en/
cdd/tags/cdd/0.4.5/doc/en/00_titletoc.sgml
cdd/tags/cdd/0.4.5/doc/en/01_introduction.sgml
cdd/tags/cdd/0.4.5/doc/en/02_about.sgml
cdd/tags/cdd/0.4.5/doc/en/03_general_ideas.sgml
cdd/tags/cdd/0.4.5/doc/en/04_existing_cdds.sgml
cdd/tags/cdd/0.4.5/doc/en/05_inside.sgml
cdd/tags/cdd/0.4.5/doc/en/06_technology.sgml
cdd/tags/cdd/0.4.5/doc/en/07_starting.sgml
cdd/tags/cdd/0.4.5/doc/en/08_todo.sgml
cdd/tags/cdd/0.4.5/doc/en/A_devel.sgml
cdd/tags/cdd/0.4.5/doc/en/B_quickintro.sgml
cdd/tags/cdd/0.4.5/doc/en/C_bts.sgml
cdd/tags/cdd/0.4.5/etc/
cdd/tags/cdd/0.4.5/etc/cdd/
cdd/tags/cdd/0.4.5/etc/cdd/cdd.conf
cdd/tags/cdd/0.4.5/examples/
cdd/tags/cdd/0.4.5/examples/Makefile (contents, props changed)
cdd/tags/cdd/0.4.5/examples/README
cdd/tags/cdd/0.4.5/examples/config/
cdd/tags/cdd/0.4.5/examples/config/README
cdd/tags/cdd/0.4.5/examples/config/common (contents, props changed)
cdd/tags/cdd/0.4.5/examples/config/common.1
cdd/tags/cdd/0.4.5/examples/config/conf
cdd/tags/cdd/0.4.5/examples/config/control
cdd/tags/cdd/0.4.5/examples/debian/
cdd/tags/cdd/0.4.5/examples/debian/README
cdd/tags/cdd/0.4.5/examples/debian/cdd-task1.install
cdd/tags/cdd/0.4.5/examples/debian/cdd-task1.manpages
cdd/tags/cdd/0.4.5/examples/debian/compat
cdd/tags/cdd/0.4.5/examples/debian/control.stub
cdd/tags/cdd/0.4.5/examples/debian/rules (contents, props changed)
cdd/tags/cdd/0.4.5/examples/install/
cdd/tags/cdd/0.4.5/examples/install/README
cdd/tags/cdd/0.4.5/examples/install/task1/
cdd/tags/cdd/0.4.5/examples/install/task1/extra-script-which-is-needed-in-task1 (contents, props changed)
cdd/tags/cdd/0.4.5/examples/install/task1/extra-script-which-is-needed-in-task1.1
cdd/tags/cdd/0.4.5/examples/menu/
cdd/tags/cdd/0.4.5/examples/menu/README
cdd/tags/cdd/0.4.5/examples/menu/task1/
cdd/tags/cdd/0.4.5/examples/menu/task1/README
cdd/tags/cdd/0.4.5/examples/menu/task1/dep1.menu
cdd/tags/cdd/0.4.5/examples/menu/task1/dep2.txt
cdd/tags/cdd/0.4.5/examples/menu/task1/dep3.html
cdd/tags/cdd/0.4.5/examples/tasks/
cdd/tags/cdd/0.4.5/examples/tasks/README
cdd/tags/cdd/0.4.5/examples/tasks/task1
cdd/tags/cdd/0.4.5/share/
cdd/tags/cdd/0.4.5/share/cdd/
cdd/tags/cdd/0.4.5/share/cdd/cdd-actions
cdd/tags/cdd/0.4.5/share/cdd/cdd-update-menus
cdd/tags/cdd/0.4.5/share/cdd/cdd-utils
cdd/tags/cdd/0.4.5/share/cdd/unixgroups/
cdd/tags/cdd/0.4.5/share/cdd/unixgroups/cdd-actions
cdd/tags/cdd/0.4.5/share/menu/
cdd/tags/cdd/0.4.5/share/menu/cdd-menu (contents, props changed)
cdd/tags/cdd/0.4.5/sources.list.local
cdd/tags/cdd/0.4.5/sources.list.stable
cdd/tags/cdd/0.4.5/sources.list.testing
cdd/tags/cdd/0.4.5/sources.list.unstable
cdd/tags/cdd/0.4.5/templates/
cdd/tags/cdd/0.4.5/templates/README.Debian
cdd/tags/cdd/0.4.5/templates/apt.conf
cdd/tags/cdd/0.4.5/templates/config.config (contents, props changed)
cdd/tags/cdd/0.4.5/templates/config.install
cdd/tags/cdd/0.4.5/templates/config.links
cdd/tags/cdd/0.4.5/templates/config.postinst (contents, props changed)
cdd/tags/cdd/0.4.5/templates/config.templates
cdd/tags/cdd/0.4.5/templates/po/
cdd/tags/cdd/0.4.5/templates/po/POTFILES.in
cdd/tags/cdd/0.4.5/templates/po/ca.po
cdd/tags/cdd/0.4.5/templates/po/de.po
cdd/tags/cdd/0.4.5/templates/po/fr.po
cdd/tags/cdd/0.4.5/templates/po/pt_BR.po
cdd/tags/cdd/0.4.5/templates/po/templates.pot
cdd/tags/cdd/0.4.5/templates/postinst (contents, props changed)
cdd/tags/cdd/0.4.5/templates/postrm (contents, props changed)
Log:
Tagged 0.4.5
Added: cdd/tags/cdd/0.4.5/AUTHORS
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/AUTHORS Sun Jan 6 15:44:05 2008
@@ -0,0 +1,3 @@
+Authors: Andreas Tille <tille at debian.org>
+ Petter Reinholdtsen <pere at debian.org>
+ Cosimo Alfarano <kalfa at debian.org>
Added: cdd/tags/cdd/0.4.5/BUGS
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/BUGS Sun Jan 6 15:44:05 2008
@@ -0,0 +1,5 @@
+List of known bugs:
+-------------------
+
+cdd-gen-control does not regard virtual package syntax ('|') and
+versioned depends.
Added: cdd/tags/cdd/0.4.5/COPYING
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/COPYING Sun Jan 6 15:44:05 2008
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Added: cdd/tags/cdd/0.4.5/Changelog
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/Changelog Sun Jan 6 15:44:05 2008
@@ -0,0 +1,60 @@
+cdd 0.4
+-------
+
+2007-08-23 Andreas Tille <tille at debian.org>
+ - cdd-gen-control is nearly identical to debian-ed/gen-control
+ (which was patched to replace edu/education by variables)
+ - devtools/
+ rules: General rules file to build meta packages
+ Makefile: make debian/control for a CDD
+ cdd-get-names: Read releavant CDD names from
+ debian/control.stub
+ - now build CDD-config package which was formerly named
+ CDD-common; several renamings in the templates, examples
+ and code from common to config were necessary
+ - moved cdd-gen-control to /usr/share/cdd-dev because
+ there is no reason to call it directly any more but
+ rather via make
+ - moved cdd-install-helper to /usr/share/cdd-dev because
+ its only use is to be called from rules file and there
+ is no sense to bloat /usr/bin with this stuff
+ - dropped cdd-clean-helper - the code was moved to
+ the rules file
+ - do not install the man pages for cdd-gen-control,
+ cdd-install-helper (and obviousely not for the removed
+ cdd-clean-helper any more because
+ - /usr/share/cdd-dev/cdd-get-names obtains certain
+ CDD specific names
+
+
+cdd 0.3.11 and earlier
+----------------------
+
+Changes to gen-control
+ - Use /etc/cdd/sources.list as default sources.list
+ If "-s <dist>" is specified /etc/cdd/sources.list.<dist>
+ is used. Otherwise the argument to option -s is used as
+ sources.list.
+ - /tmp/cdd-apt is used as $aptdir
+ The rationale behind this is to keep the cache stored on
+ building machine even after cleaning up build directory.
+ - The file debian/control.stub is searched for an entry
+ "^Package: <cdd>". If this is found it is used as prefix
+ for the packages, so the builded packages are named as
+ <cdd>-{task1,task2,task3,...}. The default cdd remains
+ "education-".
+ - If there is a common directory a <cdd>-common package is
+ builded as well. In this case a file common/control
+ must be provided.
+
+Changes to debian/rules
+ - After cleaning the target debian/control is just a symlink
+ to debian/control.stub. That's why debian/control.stub needs
+ a Package: entry just to let build tools work. This entry
+ is parsed by cdd-gen-control to obtain the CDD name and
+ debian/control is builded in every build process from scratch.
+
+Changes to REAMDE
+ - Moved to README.Debian template which will be installed if
+ the source package contains a docs directory and contains no
+ special README.Debian file.
Added: cdd/tags/cdd/0.4.5/README.CDD
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/README.CDD Sun Jan 6 15:44:05 2008
@@ -0,0 +1,33 @@
+This README file explains how to use cdd-* scripts.
+
+File system:
+- /etc/cdd/<CDD>
+ Each CDD should create this directory, containing all the infos needed
+ by cdd-* scripts and by the CDD itself.
+
+ In this way it's clear for users to realize that CDD is using
+ cdd framework
+
+- /etc/cdd/cdd.conf
+ Main configuration file of cdd-* scripts.
+
+ CDDs should be aware of it, but not modify it.
+
+- /etc/cdd/<CDD>/<CDD>.conf
+ A configuration file, in /bin/sh syntax, in which each CDD can
+ override /etc/cdd/cdd.conf
+
+ CDDs with particular needing, for example a particular backend, should
+ set variables here.
+ In this way a default set of parameters is provided by cdd.conf and a
+ specific set for each CDD instance in <CDD>/<CDD>.conf
+
+- /usr/share/cdd/
+ Where common functions for script are stored.
+ There will be a directory for each backend and a common set of
+ function that should be mandatory for each registred backend.
+
+- /etc/cdd/<CDD>/menu/<ROLE>/
+ Users' menus for each registered role.
+ If <ROLE> directory is not present, all files in /etc/cdd/<CDD>/menu/
+ are considered to be valid Debian menu entries for any Roles in CDD.
Added: cdd/tags/cdd/0.4.5/TODO
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/TODO Sun Jan 6 15:44:05 2008
@@ -0,0 +1,11 @@
+sources.list
+ It would be a good idea to parse /etc/apt/sources.list for the Debian-Mirror
+ which is used on the building box instead of using ftp.debian.org
+
+cdd-gen-control
+ should handle versioned dependencies
+
+cdd-install-helper
+ This script is currently more or less a hack.
+ It might be reasonable to modularize this script.
+
Added: cdd/tags/cdd/0.4.5/VERSION
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/VERSION Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+0.4.5
Added: cdd/tags/cdd/0.4.5/cdd-role
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-role Sun Jan 6 15:44:05 2008
@@ -0,0 +1,77 @@
+#!/bin/bash
+#
+# $Id: cdd-role 431 2006-10-23 06:11:32Z tille $
+
+usage () {
+ echo "Usage: `basename $0` <action> <CDD> [<role>]"
+ echo "action: add|del"
+ echo "CDD: `getCDDList|tr ' ' '|'`"
+ echo "role: `getCDDList|tr ' ' '|'` (default: CDD name)"
+}
+
+
+# the base dir for CDD conffiles, where script expects to find dirs named like
+# each registered CDDs
+CONFBASE=${CONFBASE:-/etc/cdd}
+
+# should be /usr/lib/cdd/*, file should be named differently
+. ${CONFBASE}/cdd.conf
+
+
+# Check consistency of passed argouments
+if [ $# -eq 0 ]; then
+ usage
+ exit 67 # EX_USAGE
+fi
+if [ "`toLower $1`" != "add" -a "`toLower $1`" != "del" ] ; then
+ echo "Missing or wrong action name."
+ echo
+ usage
+ exit 67 # EX_USAGE
+fi
+if [ -z "$2" ] ; then
+ echo "Missing CDD name."
+ echo
+ usage
+ exit 67 # EX_USAGE
+fi
+
+
+ACTION=`toLower $1`
+CDD=$2
+ROLE=${3:-${CDD}}
+
+# Now that we know the selected CDD, we can check if there is a local
+# configuration for it (ie differnt backend from the default one)
+test -n "${CDD}" -a -f ${CONFBASE}/${CDD}/${CDD}.conf &&
+ . ${CONFBASE}/${CDD}/${CDD}.conf
+
+
+if [ -n "${DBBACKEND}" ]; then
+ set -e
+ checkCDD ${CDD} || cddFail $? "Custom Distribution ${CDD} does not exist"
+
+ if [ "${ACTION}" = "add" ]; then
+ checkCDD ${CDD} || cddFail $? "CDD ${CDD} does not exist"
+ checkRole ${ROLE} && cddFail $? "Role ${ROLE} currently exist"
+ checkRoleInCDD ${CDD} ${ROLE} || \
+ cddFail $? "CDD (${CDD}) and Role (${ROLE}) are not correct or incompatible with the selected backend"
+
+ addRole ${CDD} ${ROLE} || \
+ cddFail $? "Failed to add role ${ROLE}"
+ elif [ "${ACTION}" = "del" ]; then
+ checkCDD ${CDD} || cddFail $? "CDD ${CDD} doesn't exist"
+ checkRole ${ROLE} || cddFail $? "Role ${ROLE} doesn't exist"
+ checkRoleInCDD ${CDD} ${ROLE} || \
+ cddFail $? "CDD (${CDD} and Role (${ROLE}) are not correct"
+
+ delRole ${CDD} ${ROLE} || \
+ cddFail $? "Failed to remove role ${ROLE}"
+ cddLog Role ${ROLE} successfully registered in CDD ${CDD}
+ fi
+ set +e
+
+else
+ # EX_USAGE
+ cddFail 67 "You chose to not use Roles"
+fi
Added: cdd/tags/cdd/0.4.5/cdd-role.8
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-role.8 Sun Jan 6 15:44:05 2008
@@ -0,0 +1,43 @@
+.TH cdd-user 8 "2004/04/14" "" "Custom Debian Distributions"
+.SH NAME
+.B cdd-role
+\- add/remove roles in registered Custom Debian Distribution
+
+.SH SYNOPSIS
+.B cdd-user
+.B add|del
+<
+.B CDD
+>
+[<
+.B Role
+>]
+
+.SH DESCRIPTION
+Add/remove (register/unregister)
+.B Role
+for the specified
+.B CDD
+
+If
+.B Role
+is not specified, it's assumed to be named like
+.B CDD
+
+.SH OPTIONS
+.TP
+.B CDD
+- a registered custom distribution in /etc/cdd, of example one of
+.I med
+,
+.I junior
+,
+.I desktop
+,
+.I edu
+or
+.I demudi
+
+.SH AUTHOR
+Andreas Tille <tille at debian.org>
+Cosimo Alfarano <kalfa at debian.org>
Added: cdd/tags/cdd/0.4.5/cdd-task-lister
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-task-lister Sun Jan 6 15:44:05 2008
@@ -0,0 +1,36 @@
+#!/bin/sh
+# This script respects its own file name to find out the CDD it belongs to
+# Names should be builded like <CDD>-task-files
+# The intended use is to create according symlinks to this file
+
+NAME=`basename $0`
+if [ _"$NAME" = _"cdd-task-lister" ] ; then
+ exit
+fi
+
+# the base dir for CDD conffiles, where script expects to find dirs named like
+# each registered CDDs
+CONFBASE=${CONFBASE:-/etc/cdd}
+
+# a local per CDD conf is sourced later, after argument parsing
+. ${CONFBASE}/cdd.conf
+
+CDD=`echo $NAME | sed 's/-task-files//'`
+
+# Now that we know the selected CDD, we can check if there is a local
+# configuration for it (ie different backend from the default one)
+test -n "${CDD}" -a -f ${CONFBASE}/${CDD}/${CDD}.conf &&
+ . ${CONFBASE}/${CDD}/${CDD}.conf
+
+if [ -n "${DBBACKEND}" ]; then
+ set -e
+ checkCDD ${CDD} || cddFail $? "Custom distribution ${CDD} does not exist"
+fi
+
+# Check consistency of passed argouments
+if [ $# -ne 1 ] ; then
+ # printing usage makes no sense here
+ exit 67 # EX_USAGE
+fi
+
+cat /usr/share/cdd/tasksel/${CDD}/$1
Added: cdd/tags/cdd/0.4.5/cdd-update-menus
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-update-menus Sun Jan 6 15:44:05 2008
@@ -0,0 +1,110 @@
+#!/bin/bash
+#
+# $Id: cdd-update-menus 431 2006-10-23 06:11:32Z tille $
+
+usage() {
+ echo "Usage: `basename $0` [ -u <user> | -d <CDD> ]"
+ echo "CDD: `getCDDList|tr ' ' '|'`"
+ echo "user: system user registerd to a CDD"
+ echo
+ echo "run as user updates only the user's menu script"
+}
+
+# the base dir for CDD conffiles, where script expects to find dirs named like
+# each registered CDDs
+CONFBASE=${CONFBASE:-/etc/cdd}
+
+# a local per CDD conf is sourced later, after argument parsing
+. ${CONFBASE}/cdd.conf
+
+# specific utilities for cdd-update-menus
+. ${SHAREDIR}/cdd-update-menus
+
+# Get command line arguments
+GETOPT=`getopt -o d:u:h --long cdd:,user:,help -n "$0" -- "$@"`
+eval set -- "$GETOPT"
+while true
+do
+ case $1 in
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ # get distro name
+ -d|--cdd)
+ if ! amI root; then
+ cddLog "You must be root to specify --cdd parameter"
+ cddLog ""
+ usage
+ exit 64
+ elif [ -n "${CDDUSER}" ]; then
+ cddLog "You cannot specify --cdd and --user at the same time"
+ cddLog ""
+ usage
+ exit 0
+ else
+ CDD=$2
+ shift 2
+ fi
+ ;;
+ # get user name
+ -u|--user)
+ CDDUSER=$2
+ shift 2
+
+ if ! amI root && ! amI "${CDDUSER}"; then
+ cddLog "You must be root to specify --user parameter with a user that's not you"
+ usage
+ exit 64
+ elif [ "${CDDUSER}" == 'root' ]; then
+ cddFail 64 "err: Menus for user 'root' cannot be updated"
+ elif [ -n "${CDD}" ]; then
+ usage
+ exit 0
+ fi
+ ;;
+ --)
+ shift
+ break
+ ;;
+ *)
+ cddLog "$1 not recognized as option" >&2
+ exit 67 # EX_USAGE
+ ;;
+ esac
+done
+
+
+# update menu scripts for CDDUSER, for any CDD, if any
+if [ -n "${CDDUSER}" ]; then
+ SYSSCRIPT="${SHAREDIR}/menu/cdd-menu"
+ USERSCRIPT="`getUserHome ${CDDUSER}`/.menu/cdd-menu"
+
+ set -e
+ checkUser ${CDDUSER} || \
+ cddFail 67 "User does not exist"
+ isUserRegistered ${CDDUSER} || \
+ cddFail 67 "User ${CDDUSER} is not registered to any CDD"
+
+ # there's nothing to do on per user basis criteria
+ #updateUser ${CDDUSER} "${SYSSCRIPT}" "${USERSCRIPT}"
+ set +e
+
+# update menu scripts for any user registered into the specified CDD
+elif [ -n "${CDD}" ]; then
+ # Now that we know the selected CDD, we can check if there is a local
+ # configuration for it (ie differnt backend from the default one)
+ test -n "${CDD}" -a -f ${CONFBASE}/${CDD}/${CDD}.conf &&
+ . ${CONFBASE}/${CDD}/${CDD}.conf
+
+ set -e
+ checkCDD ${CDD} || \
+ cddFail $? "Custom distribution ${CDD} does not exist"
+
+ # there's nothing to do on per CDD basis criteria
+ #SYSSCRIPT="${SHAREDIR}/menu/cdd-menu"
+ #updateCDD ${CDD} "${SYSSCRIPT}"
+ set +e
+else
+ exec $0 --user `whoami`
+fi
Added: cdd/tags/cdd/0.4.5/cdd-update-menus.8
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-update-menus.8 Sun Jan 6 15:44:05 2008
@@ -0,0 +1,45 @@
+.TH cdd-update-menus 8 "2004/03/24" "" "Custom Debian Distributions"
+.SH NAME
+.B cdd-update-menus
+\- add menu of meta package to all Custom Debian Distribution users
+
+.SH SYNOPSIS
+.B cdd-update-menus
+[ --cdd|-d <
+.B CDD
+> |
+--user|-u <
+.B user
+> ]
+
+.SH DESCRIPTION
+cdd-update-menus behaves differently depending on who run the command:
+
+If it's called by a user, it adds and keeps updated menu entries for the
+user who runs it.
+
+If it's called by root, it adds and keeps updated user's menu entries
+(see menu package for users' menus) for all users who belong to the
+group of the specified Custom Debian Distribution, or only for a
+specified user, depending on which parameter is passed to the script.
+
+.SH OPTIONS
+.TP
+.B CDD
+- one of the installed CDDs, listed in /etc/cdd/, for example (if installed):
+.I med
+,
+.I junior
+,
+.I desktop
+,
+.I edu
+or
+.I demudi
+
+.TP
+.B user
+- a user present on the system and belonging to a CDD
+
+.SH AUTHOR
+Andreas Tille <tille at debian.org>, Cosimo Alfarano <kalfa at debian.org>
Added: cdd/tags/cdd/0.4.5/cdd-update-usermenus
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-update-usermenus Sun Jan 6 15:44:05 2008
@@ -0,0 +1,51 @@
+#!/bin/bash
+#
+# $Id: cdd-update-usermenus 431 2006-10-23 06:11:32Z tille $
+
+usage() {
+ echo "Usage: `basename $0` <CDD>"
+ echo "CDD: `getCDDList|tr ' ' '|'`"
+ echo
+ echo "Updates user menus of all users registered for CDD"
+}
+
+# the base dir for CDD conffiles, where script expects to find dirs named like
+# each registered CDDs
+CONFBASE=${CONFBASE:-/etc/cdd}
+
+# a local per CDD conf is sourced later, after argument parsing
+. ${CONFBASE}/cdd.conf
+
+# specific utilities for cdd-update-menus
+. ${SHAREDIR}/cdd-update-menus
+
+if ! amI root; then
+ cddLog "$0 must be called by root. If you are a normal user just call update-menus ."
+ exit 0
+fi
+
+case $1 in
+ -h|--help|"")
+ usage
+ exit 0
+ ;;
+ *)
+ set -e
+ checkCDD $1 || \
+ cddFail $? "Custom distribution $1 does not exist"
+ CDD=$1
+ set +e
+esac
+
+if [ -s /etc/cdd/${CDD}/${CDD}.conf ] ; then
+ . /etc/cdd/${CDD}/${CDD}.conf
+fi
+
+for ROLE in `getCDDRoleList ${CDD}`; do
+ for CDDUSER in `getUsersInRole ${CDD} ${ROLE} 1`; do
+ # Update user menus if UPDATEUSERMENU is set to yes
+ cddLog "Adding menu for user ${CDDUSER} of ${CDD} ..."
+ su ${CDDUSER} -c "update-menus"
+ done
+done
+
Added: cdd/tags/cdd/0.4.5/cdd-update-usermenus.8
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-update-usermenus.8 Sun Jan 6 15:44:05 2008
@@ -0,0 +1,35 @@
+.TH cdd-update-usermenus 8 "2004/03/24" "" "Custom Debian Distributions"
+.SH NAME
+.B cdd-update-usermenus
+\- update user menus of all Custom Debian Distribution users
+
+.SH SYNOPSIS
+.B cdd-update-menus
+<\fBCDD\fR>
+
+
+.SH DESCRIPTION
+The script can only be called by root and calls
+.B update-menus(1)
+for every user who is registered for the Custom Debian Distribution
+\fBCDD\fR. If a user wants to update his own personal menu he should
+call
+.B update-menus(1)
+directly.
+
+.SH OPTIONS
+.TP
+.B CDD
+- one of the installed CDDs, listed in /etc/cdd/, for example (if installed):
+.I med
+,
+.I junior
+,
+.I desktop
+,
+.I edu
+or
+.I demudi
+
+.SH AUTHOR
+Andreas Tille <tille at debian.org>, Cosimo Alfarano <kalfa at debian.org>
Added: cdd/tags/cdd/0.4.5/cdd-user
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-user Sun Jan 6 15:44:05 2008
@@ -0,0 +1,111 @@
+#!/bin/bash
+#
+# $Id: cdd-user 431 2006-10-23 06:11:32Z tille $
+
+usage () {
+ echo "Usage: `basename $0` <action> <CDD> <user> [<Role>]"
+ echo "action: add|del"
+ echo "CDD: `getCDDList|tr ' ' '|'`"
+ echo "user: user of the system who should be added to the CDD"
+ echo "Role: a registered Role for specified CDD"
+ echo " (default: the one named like CDD)"
+}
+
+
+# the base dir for CDD conffiles, where script expects to find dirs named like
+# each registered CDDs
+CONFBASE=${CONFBASE:-/etc/cdd}
+
+# a local per CDD conf is sourced later, after argoument parsing
+. ${CONFBASE}/cdd.conf
+
+
+# Check consistency of passed argouments
+if [ $# -eq 0 ] ; then
+ usage
+ exit 67 # EX_USAGE
+fi
+if [ "`toLower $1`" != "add" -a "`toLower $1`" != "del" ] ; then
+ echo "Missing or wrong action name."
+ echo
+ usage
+ exit 67 # EX_USAGE
+fi
+if [ -z "$2" ] ; then
+ echo "Missing cdd name."
+ echo
+ usage
+ exit 67 # EX_USAGE
+fi
+if [ -z "$3" ] ; then
+ echo "Missing user name."
+ echo
+ usage
+ exit 67 # EX_USAGE
+fi
+
+ACTION=$1
+CDD=$2
+CDDUSER=$3
+ROLE=${4:-${CDD}}
+
+# Now that we know the selected CDD, we can check if there is a local
+# configuration for it (ie differnt backend from the default one)
+test -n "${CDD}" -a -f ${CONFBASE}/${CDD}/${CDD}.conf &&
+ . ${CONFBASE}/${CDD}/${CDD}.conf
+
+if [ -n "${DBBACKEND}" ]; then
+ set -e
+ checkCDD ${CDD} || cddFail $? "Custom distribution ${CDD} does not exist"
+ checkUser ${CDDUSER} || cddFail $? "User ${CDDUSER} does not exist"
+ checkRole ${ROLE} || cddFail $? "Role ${ROLE} does not exist"
+ checkRoleInCDD ${CDD} ${ROLE} || \
+ cddFail $? "CDD (${CDD}) and Role (${ROLE}) are not correct or incompatible with the selected backend"
+
+ if [ "`toLower ${ACTION}`" = "add" ]; then
+ setUserRole ${CDD} ${CDDUSER} ${ROLE} || \
+ cddFail $? "Failed to set user ${CDDUSER} to role ${ROLE}"
+ elif [ "`toLower ${ACTION}`" = "del" ]; then
+ unsetUserRole ${CDD} ${CDDUSER} ${ROLE} || \
+ cddFail $? "Failed to unset user ${CDDUSER} to role ${ROLE}"
+ fi
+
+# # MENU installation
+#
+# # All CDD menu entries will go in .cdd-menu, only one file will goes in
+# # .menu, so it's easy to remove/update
+# UHOME=`getUserHome ${CDDUSER}`
+# if [ ! -d "${UHOME}" ] ; then
+# logFail 67 "Home directory for user ${CDDUSER} does not exist.\n... Sorry can not update menus."
+# fi
+#
+# if [ ! -d ${UHOME}/.menu ] ; then
+# mkdir -p ${UHOME}/.menu
+# chown ${CDDUSER}: ${UHOME}/.menu
+# fi
+#
+# if [ ! -d ${UHOME}/.cdd-menu ] ; then
+# mkdir -p ${UHOME}/.cdd-menu
+# chown ${CDDUSER}: ${UHOME}/.cdd-menu
+# fi
+#
+# MENUS=""
+# if [ -d ${CONFBASE}/${CDD} ] ; then
+# if [ -d ${CONFBASE}/${CDD}/menu ] ; then
+# for MENU in `ls ${CONFBASE}/${CDD}/menu` ; do
+# cp -a ${CONFBASE}/${CDD}/menu/${MENU} ${UHOME}/.cdd-menu
+# chown ${CDDUSER}: ${UHOME}/.cdd-menu/${MENU}
+# MENUS="${MENUS} ${MENU}"
+# done
+# fi
+# fi
+#
+# for MENU in ${MENUS}; do
+# echo '!include'" ${UHOME}/.cdd-menu/${MENU}"
+# done > ${UHOME}/.menu/cdd-menu
+
+ set +e
+else
+ # EX_USAGE
+ cddFail 67 "You choose to not use Roles"
+fi
Added: cdd/tags/cdd/0.4.5/cdd-user.8
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd-user.8 Sun Jan 6 15:44:05 2008
@@ -0,0 +1,51 @@
+.TH cdd-user 8 "2004/03/24" "" "Custom Debian Distributions"
+.SH NAME
+.B cdd-user
+\- add/remove user to Role of a registered Custom Debian Distribution
+
+.SH SYNOPSIS
+.B cdd-user
+.B add|del
+<
+.B CDD
+>
+<
+.B user
+>
+[<
+.B Role
+>]
+
+.SH DESCRIPTION
+Add user to a
+.B Role
+of the specified
+.B CDD
+
+If
+.B Role
+is not specified, it's assumed to be named like
+.B CDD
+
+.SH OPTIONS
+.TP
+.B CDD
+- a registered custom distribution in /etc/cdd, for example one of
+.I med
+,
+.I junior
+,
+.I desktop
+,
+.I edu
+or
+.I demudi
+.TP
+.B user
+- user to add
+.B Role
+- the role in the CDD that user will assume
+
+.SH AUTHOR
+Andreas Tille <tille at debian.org>
+Cosimo Alfarano <kalfa at debian.org>
Added: cdd/tags/cdd/0.4.5/cdd.conf.5
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/cdd.conf.5 Sun Jan 6 15:44:05 2008
@@ -0,0 +1,57 @@
+.TH CDD.CONF 5 2004-05-10 "Custom Debian Distribution Configuration" ""
+.SH NAME
+cdd.conf \- configuration for Custom Debian Distribution registry
+.SH DESCRIPTION
+This file is sourced from shell scripts inside the Custom Debian
+Distribution package
+.B cdd-common
+and thus it has to follow shell syntax. The variables which are set
+inside this configuration file can be overriden by special CDD
+configration files
+.I /etc/cdd/<cdd>/<cdd>.conf
+for each single CDD.
+
+.SH SYNTAX
+The following variables can be set:
+.TP
+.I DBBACKEND
+Set the backend for the user role management system. Currently the
+only implemented role management system is
+.I unixgroups
+but others might be implemented later. Unsetting this variable leads
+to use no roles at all.
+.TP
+.I UPDATEUSERMENU
+If this is set to
+.I yes
+the user menus of meta packages can be created automatically at
+install time of the package if the postinst script of the package
+allows this. It is suggested to use this option in the specific
+configuration files of a special Custom Debian Distribution which
+overrides the settings of the general configuration file.
+.TP
+.I SHAREDIR
+Set the base directory for the user role management system. While this
+is more or less a feature for debugging this might be also used otherwise.
+.TP
+.I DRYRUN
+This variable can be set for debugging. Normally it should be left
+unset (NOT set to false or anything else!). If set to
+.I true
+a dry run of the tools is performed or
+.I echo DRYRUN:
+would print debugging information.
+.TP
+.I DEBUG
+If set to
+.I 1
+debugging mode is switched on.
+
+.SH "SEE ALSO"
+.BR cdd-role (8)
+.BR cdd-update-menus (8)
+.BR cdd-user (8)
+
+.SH AUTHOR
+Andreas Tille <tille at debian.org>
+Cosimo Alfarano <kalfa at debian.org>
Added: cdd/tags/cdd/0.4.5/debian/NEWS.Debian
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/NEWS.Debian Sun Jan 6 15:44:05 2008
@@ -0,0 +1,15 @@
+cdd (0.3.1) unstable; urgency=low
+
+ * In cdd 0.3 user menus where implemented by placing a symlink cdd-menu
+ in the .menu directory of each user who belongs to any Custom
+ Debian Distrinution role. Now a solution was found which does not
+ touch users .menu directory.
+
+ To avoid code for removal of these old cdd-menu links in the users
+ home directories in the future postinst scripts it seems to be the
+ best solution to ask the local administrator do remove these links
+ manually. So please remove all symlinks named
+
+ <userhome>/.menu/cdd-menu
+
+ -- Andreas Tille <tille at debian.org> Thu, 17 May 2004 17:42:38 +0200
Added: cdd/tags/cdd/0.4.5/debian/cdd-common.README.Debian
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-common.README.Debian Sun Jan 6 15:44:05 2008
@@ -0,0 +1,24 @@
+Custom Debian Distributions common files
+----------------------------------------
+
+This package builds the basic infra structure of all meta packages.
+
+You can add or remove users to the group of users of a Custom Debian
+Distribution. This is used for instance by Debian-Med. It provides
+a med-common package which calls the scripts from cdd-common. It
+can be used by
+
+ dpkg-reconfigure med-common
+
+Users of this group are provided by a user menu which will be build from
+menu files which are provided by each single med-* meta package in
+/etc/med/menu.
+
+If you do not want to install the suggested cdd-doc package you might read
+the online version at
+
+ http://people.debian.org/~tille/debian-med/talks/paper-cdd/debian-cdd.html/
+
+which is frequently updated.
+
+Andreas Tille <tille at debian.org> Wed, 5 Jun 2002 23:27:07 +0200
Added: cdd/tags/cdd/0.4.5/debian/cdd-common.dirs
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-common.dirs Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+usr/share/lintian/overrides
Added: cdd/tags/cdd/0.4.5/debian/cdd-common.docs
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-common.docs Sun Jan 6 15:44:05 2008
@@ -0,0 +1,2 @@
+README.CDD
+debian/NEWS.Debian
Added: cdd/tags/cdd/0.4.5/debian/cdd-common.install
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-common.install Sun Jan 6 15:44:05 2008
@@ -0,0 +1,7 @@
+cdd-user usr/sbin
+cdd-role usr/sbin
+cdd-update-menus usr/sbin
+cdd-update-usermenus usr/sbin
+share usr
+etc/* etc
+cdd-task-lister usr/share/cdd
Added: cdd/tags/cdd/0.4.5/debian/cdd-common.lintian.overrides
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-common.lintian.overrides Sun Jan 6 15:44:05 2008
@@ -0,0 +1,12 @@
+# The script /usr/lib/menu/cdd-menu is not intended to be called by the
+# cdd-common package but should be called by meta packages according to
+# the Custom Debian Distribution philosphy which is explained in cdd-doc.
+# That's why neither postinst nor postrm will call update-menus and
+# if they would it would just be a useless call because it just exits 0
+# if called by root.
+cdd-common: postinst-does-not-call-updatemenus usr/share/menu/cdd-menu
+cdd-common: postrm-does-not-call-updatemenus usr/share/menu/cdd-menu
+
+# For obvious reasons the script has to be executable which is the
+# intended use for scripts which dynamically create menu entries.
+cdd-common: executable-menu-file usr/share/menu/cdd-menu 0755
Added: cdd/tags/cdd/0.4.5/debian/cdd-common.manpages
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-common.manpages Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+*.8
Added: cdd/tags/cdd/0.4.5/debian/cdd-dev.dirs
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-dev.dirs Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+usr/share/lintian/overrides
Added: cdd/tags/cdd/0.4.5/debian/cdd-dev.docs
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-dev.docs Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+BUGS
Added: cdd/tags/cdd/0.4.5/debian/cdd-dev.examples
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-dev.examples Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+examples/*
Added: cdd/tags/cdd/0.4.5/debian/cdd-dev.install
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-dev.install Sun Jan 6 15:44:05 2008
@@ -0,0 +1,3 @@
+sources.list* etc/cdd
+templates usr/share/cdd
+devtools/* usr/share/cdd-dev
Added: cdd/tags/cdd/0.4.5/debian/cdd-dev.lintian.overrides
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-dev.lintian.overrides Sun Jan 6 15:44:05 2008
@@ -0,0 +1,5 @@
+# The scripts are not intended to be running before the template
+# variable #CDD# is replaced. The '#' sign in the template variable
+# makes the shell syntax checker fail to interpret the syntax correctly
+cdd-dev: shell-script-fails-syntax-check ./usr/share/cdd/templates/config.config
+cdd-dev: shell-script-fails-syntax-check ./usr/share/cdd/templates/config.postinst
Added: cdd/tags/cdd/0.4.5/debian/cdd-dev.manpages
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-dev.manpages Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+*.1
Added: cdd/tags/cdd/0.4.5/debian/cdd-doc.doc-base
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-doc.doc-base Sun Jan 6 15:44:05 2008
@@ -0,0 +1,24 @@
+Document: cdd-doc
+Title: Custom Debian Distributions
+Author: Andreas Tille
+Abstract: This paper is intended to people who are interested in the philosophy
+ of Custom Debian Distributions and the technique which is used to
+ manage those projects.
+ .
+ It is explained in detail why these are no forks from Debian but reside
+ completely inside the Debian GNU/Linux distribution and which
+ advantages can be gathered by this approach. The concept of
+ meta-packages and user role based menus is explained. In short: This
+ document describes why Custom Debian Distributions are important to
+ the vitality and quality of Debian.
+Section: Debian
+
+Format: HTML
+Index: /usr/share/doc/cdd-doc/html/index.html
+Files: /usr/share/doc/cdd-doc/html/*.html
+
+Format: text
+Files: /usr/share/doc/cdd-doc/debian-cdd.en.txt.gz
+
+Format: pdf
+Files: /usr/share/doc/cdd-doc/debian-cdd.en.pdf
Added: cdd/tags/cdd/0.4.5/debian/cdd-doc.docs
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-doc.docs Sun Jan 6 15:44:05 2008
@@ -0,0 +1,2 @@
+doc/debian-cdd.en.pdf
+doc/debian-cdd.en.txt
Added: cdd/tags/cdd/0.4.5/debian/cdd-doc.install
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/cdd-doc.install Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+doc/debian-cdd.html/* usr/share/doc/cdd-doc/html
Added: cdd/tags/cdd/0.4.5/debian/changelog
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/changelog Sun Jan 6 15:44:05 2008
@@ -0,0 +1,240 @@
+cdd (0.4.5) unstable; urgency=low
+
+ * Add debconf templates for better menu handling
+ * Regard CDD-config.postinst.stub if user provides such a file
+ * share/cdd/unixgroups/cdd-actions: verify whether a group
+ that should be added just exists
+ * share/menu/cdd-menu: Prepend "!C menu-1" before each menu entry
+ that does not contain a "!C" line to enable menu entries in
+ menu-2 format
+ * Added Vcs-Browser and Vcs-SVN tags
+ * Standards-Version: 3.7.3 (no changes needed)
+ * devtools/cdd-install-helper: removed bashism
+ * devtools/rules: removed bashisms
+
+ -- Andreas Tille <tille at debian.org> Sat, 20 Oct 2007 12:22:55 +0200
+
+cdd (0.4.4) unstable; urgency=low
+
+ * Remove old useless comment in share/menu/cdd-menu
+ * If there is no tasksel package wanted, just obtain the
+ meta package prefix from the CDD short name
+ * Make use of cdd-get-names also in cdd-gen-control script
+
+ -- Andreas Tille <tille at debian.org> Fri, 19 Oct 2007 16:12:51 +0200
+
+cdd (0.4.3) unstable; urgency=low
+
+ * Add a newline after adding config/control to debian/control
+ * If a CDD provides an auto-apt helper name it CDD-config instead
+ of CDD-common
+
+ -- Andreas Tille <tille at debian.org> Thu, 18 Oct 2007 20:14:16 +0200
+
+cdd (0.4.2) unstable; urgency=low
+
+ * Build-Depends: texlive-latex-base, texlive-latex-extra,
+ texlive-fonts-recommended, texlive-latex-recommended
+ Closes: #445777
+ * debian/cdd-dev.lintian.overrides: Renamed common to config
+
+ -- Andreas Tille <tille at debian.org> Mon, 08 Oct 2007 12:02:41 +0200
+
+cdd (0.4.1) unstable; urgency=low
+
+ * Moved documentation package cdd-doc into same source package
+ * Reworked debian/copyright
+ * devtools/cdd-install-helper: If "Task:" keyword is missing in
+ a task control file just do not put it into tasksel area under
+ /usr/share/cdd/tasks/CDD
+
+ -- Andreas Tille <tille at debian.org> Fri, 31 Aug 2007 19:01:52 +0200
+
+cdd (0.4) unstable; urgency=low
+
+ * New upstream version that cdd-gen-control in favour of a newly
+ adopted gen-control from Debian-Edu 0.821.
+ (Please see the upstream changelog for all changes)
+ Closes: #436831
+
+ -- Andreas Tille <tille at debian.org> Tue, 21 Aug 2007 20:56:39 +0200
+
+cdd (0.3.11.1) unstable; urgency=low
+
+ * Remove Bashism (source --> .)
+ Closes: #394604 (of med-common, this bug did not really belong to
+ med-common but was caused by the bashism in cdd-common)
+ * Standards-Version: 3.7.2 (no changes necessary)
+ * Build-Depends: debhelper (>= 5)
+
+ -- Andreas Tille <tille at debian.org> Mon, 23 Oct 2006 07:46:58 +0200
+
+cdd (0.3.11) unstable; urgency=low
+
+ * Fix problem with resulting *.dsc files that did not list the
+ files that were actually created in the Binary line
+ * No changes necessary Standards-Version: 3.6.2
+ * Removed: Conflicts: med-common (<= 0.4); which was never released
+ in stable
+ * Because there is no direct use of debconf in the cdd package but
+ debconf is used in the package builded using cdd-dev the ${misc:Depends}
+ variable does not really work. That's why we introduce an explicite
+ Depends: debconf (>= 0.5) | debconf-2.0
+ * Increased dependant menu version from 2.1.12 to 2.1.25
+ * Adapted lintian.overrides to reflect the change in menu
+ (files now in /usr/share/menu instead of /usr/lib/menu)
+
+ -- Andreas Tille <tille at debian.org> Sun, 25 Sep 2005 21:36:29 +0200
+
+cdd (0.3.10) unstable; urgency=low
+
+ * Andreas Tille
+ - Fixed some man pages and examples
+ - Fixed bugs which showed up in Debian-Junior packaging
+ (work around missing final newlines in several places,
+ fix problem with menu items which are not using '"'
+ around the entries)
+ * Guillem Jover
+ - Added Catalan (ca) debconf translation.
+ * Otavio Salvador
+ - cdd-gen-control:
+ o Add -D suport to cdd-gen-control to degrade dependencies to
+ recommends;
+ o Add support for architecture dependent packages;
+ o Add fallback to architecture independent packages so allow
+ backward compatibility;
+ o Add suport to tasksel based tasks;
+ - task-files: added.
+ * Adopted to findutils 4.2.22: specify the -maxdepth option before
+ non-option arguments
+
+ -- Andreas Tille <tille at debian.org> Sat, 21 Aug 2004 09:06:13 +0200
+
+cdd (0.3.9) experimental; urgency=low
+
+ * Otavio Salvador
+ - Move the project to Subversion.
+ * Andreas Tille
+ - Exclude .svn dirs in dist target of debian/rules
+ - Removed Provides/Replaces/Conflicts: med-common-dev
+ because this package vanished completely from the archive now
+ and never reached stable.
+ - Moved cdd-menu from /usr/lib/menu to /usr/share/menu
+ - User menus now are created from installed dependency menus
+ if they are not explicitely overriden by the meta package maintainer
+
+ -- Andreas Tille <tille at debian.org> Thu, 15 Jul 2004 11:13:22 +0200
+
+cdd (0.3.4) unstable; urgency=high
+
+ * Fixed common.postinst template which finally fixed bug #259412.
+ * Removed contrib non-free and non-US from the templates - we want
+ to build packages for main by default, others should be added
+ manually by local maintainers.
+ * Urgency set to high because it *really* fixes a grave bug.
+
+ -- Andreas Tille <tille at debian.org> Thu, 15 Jul 2004 10:51:44 +0200
+
+cdd (0.3.3) unstable; urgency=high
+
+ * Remove broken code from templates/postinst to clean up
+ ${HOME}/.menu directories. This code does more harm than
+ it would help.
+ Closes: #259412
+ * Urgency set to high because it fixes a grave bug.
+
+ -- Andreas Tille <tille at debian.org> Wed, 14 Jul 2004 21:34:55 +0200
+
+cdd (0.3.2) unstable; urgency=low
+
+ * Remove ${HOME}/.menu/cdd-menu in postinst only if ${MENU}/.menu exists
+ * Added /etc/apt/apt.conf.d script to #cdd#-common templates to invoke
+ cdd-update-usermenus after all meta packages of a CDD were installed
+ if requested by a shared debconf variable
+ * Use #CDDNAME# variable in debconf templates of cdd-dev. This variable
+ can be set either in common/conf or it is builded by "Debian-Cdd".
+ * cdd-install-helper handles CDD-common.{config,template}
+ * Usage of get-group-users deprecated, use cdd-tools instead.
+ Moved functionality of get-group-users to unixgroups/cdd-actions.
+ * Enhanced example directory.
+ * Otavio Salvador
+ - Add support to Pre-Depends field in cdd-gen-control script.
+ - Change the default task prefix from 'education-' to 'test-'.
+ - Include code to stop if exist a task with name 'common'.
+ * Andre Luis Lopes
+ - Added Brazilian Portuguese (pt_BR) cdd-dev debconf template
+ translation.
+
+ -- Andreas Tille <tille at debian.org> Wed, 9 Jun 2004 08:20:26 +0200
+
+cdd (0.3.1) unstable; urgency=low
+
+ * Do not change ${HOME}/.menu any more as it was done in 0.3
+ Thanks to Cosimo Alfarano <kalfa at debian.org>
+ * Provide man page for cdd.conf
+ * Added newline at end of examples/common/control
+ Closes: #251889
+
+ -- Andreas Tille <tille at debian.org> Mon, 31 May 2004 22:45:56 +0200
+
+cdd (0.3) unstable; urgency=low
+
+ * Cosimo Alfarano <kalfa at debian.org> did some major rewriting
+ to make the scripts much more flexible (many thanks to Cosimo).
+ * cdd-inst-helper now adds versioned med-common dependency if menu
+ is created by this package.
+ * templates/post{inst,rm} feature user menu creation if variable
+ UPDATEUSERMENU is set to "yes"
+
+ -- Andreas Tille <tille at debian.org> Tue, 13 Apr 2004 21:51:01 +0200
+
+cdd (0.2) unstable; urgency=low
+
+ * Initial release of this package which contains code from several
+ packages but should be of common use now.
+ Closes: #240243
+ * Renamed med-common-dev to cdd-dev because it is intended to work
+ for all Custom Debian Distributions now.
+ * Renamed med-common to cdd-common.
+ (old changelog is available in changelog.med-common.
+ * Adopted gen-control from debian-edu-0.768
+
+ -- Andreas Tille <tille at debian.org> Tue, 23 Mar 2004 18:41:20 +0100
+
+med-common-dev (0.1-5) unstable; urgency=low
+
+ * Standards-Version: 3.6.1.0
+ * Fixed typo in debian/control
+ closes: #221212
+ While I think that also spelling bugs should be reported and fixed
+ I really wonder why people set the priority of those bugs to
+ "normal" instead of "wishlist".
+
+ -- Andreas Tille <tille at debian.org> Tue, 18 Nov 2003 08:58:14 +0100
+
+med-common-dev (0.1-4) unstable; urgency=low
+
+ * really installed the examples to /usr/share/doc/med-common-dev/examples
+
+ -- Andreas Tille <tille at debian.org> Mon, 9 Sep 2002 22:19:53 +0200
+
+med-common-dev (0.1-3) unstable; urgency=low
+
+ * fixes a really stupid bug in med_install_helper
+
+ -- Andreas Tille <tille at debian.org> Wed, 26 Jun 2002 21:06:11 +0200
+
+med-common-dev (0.1-2) unstable; urgency=low
+
+ * med_install_helper script now cares for an /etc/med/menu
+ directory if it was not builded in debian/rules and prints out
+ a warning if no menu is provided
+
+ -- Andreas Tille <tille at debian.org> Wed, 26 Jun 2002 15:59:26 +0200
+
+med-common-dev (0.1-1) unstable; urgency=low
+
+ * Initial release
+ closes: #150938
+
+ -- Andreas Tille <tille at debian.org> Mon, 24 Jun 2002 17:19:38 +0200
Added: cdd/tags/cdd/0.4.5/debian/changelog.med-common
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/changelog.med-common Sun Jan 6 15:44:05 2008
@@ -0,0 +1,69 @@
+med-common (0.3-2) unstable; urgency=low
+
+ * Removed debian/menu because it was just a test which is not necessary
+ any more.
+ * install-sub-menus ignores missing menus in ${CDD}-common
+ * Added French debconf translation
+ Closes: #236300
+ * Added lex and nonprofit Custom Debian Distributions to the used tools
+
+ -- Andreas Tille <tille at debian.org> Mon, 8 Mar 2004 14:44:44 +0100
+
+med-common (0.3-1) unstable; urgency=low
+
+ * Fixed spelling error in med-common.1
+ * Switched to new debconf format (Thanks to
+ Martin Quinson <Martin.Quinson at tuxfamily.org>
+ for the patch.
+ Closes: #234751
+ * Standards-Version: 3.6.1
+ * debian/compat
+ * Added test whether home directory of project user exists.
+
+ -- Andreas Tille <tille at debian.org> Wed, 25 Feb 2004 22:51:25 +0100
+
+med-common (0.2-1) unstable; urgency=low
+
+ * Because the former get-sub-users script might be used also in Packages
+ which do not belong to certain Debian internal projects (for instance
+ the GnuMed package requires a certain list of users belonging to a
+ certain system group) this script was renamed to get-group-users
+ and now handles any group of the system.
+ I hope to get this kind of functionality to the adduser package.
+ * Added desktop, edu and demudi to possible Debian internal projects
+ which are enabled to maintain Project users by these scripts.
+ * Fixed a slight bug in install-sub-menus
+
+ -- Andreas Tille <tille at debian.org> Fri, 29 Nov 2002 17:15:49 +0100
+
+med-common (0.1-3) unstable; urgency=low
+
+ * Respect /etc/adduser.conf for FIRST_UID
+ closes: #152431
+ * Try to detect the project name automatically from the package name
+ * Substitude occurences of string "med" by ${PROJECT} to make life
+ of other project maintainers more easy.
+ * Moved stuff from debian/configure to debian/postinst
+ closes: #152267
+ This was done according to
+ http://lists.debian.org/debian-devel/2002/debian-devel-200207/msg01648.html
+ at the cost of two lintian warnings about problems in debconf stuff.
+ I think I should stick to this approach until the discussion about
+ new Debian menu system in general and the user maintainance of
+ the subprojects was able to find a sane decision.
+
+ -- Andreas Tille <tille at debian.org> Tue, 30 Jul 2002 11:38:27 +0200
+
+med-common (0.1-2) unstable; urgency=low
+
+ * Fixed a typo in med-common.1
+ * additions to long description.
+
+ -- Andreas Tille <tille at debian.org> Tue, 25 Jun 2002 15:01:38 +0200
+
+med-common (0.1-1) unstable; urgency=low
+
+ * Initial release
+ closes: #150937
+
+ -- Andreas Tille <tille at debian.org> Tue, 25 Jun 2002 10:17:28 +0200
Added: cdd/tags/cdd/0.4.5/debian/compat
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/compat Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+5
Added: cdd/tags/cdd/0.4.5/debian/control
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/control Sun Jan 6 15:44:05 2008
@@ -0,0 +1,50 @@
+Source: cdd
+Priority: optional
+Section: devel
+Maintainer: Andreas Tille <tille at debian.org>
+Uploaders: Petter Reinholdtsen <pere at debian.org>, Andreas Tille <tille at debian.org>, Cosimo Alfarano <kalfa at debian.org>
+Build-Depends: debhelper (>= 5), debiandoc-sgml, texlive-latex-base, texlive-latex-extra, texlive-latex-recommended, texlive-fonts-recommended
+Standards-Version: 3.7.3
+Vcs-Browser: http://svn.debian.org/wsvn/cdd/trunk/cdd/
+Vcs-Svn: svn://svn.debian.org/cdd/trunk/cdd/
+
+Package: cdd-dev
+Architecture: all
+Section: devel
+Depends: debconf (>= 0.5) | debconf-2.0, make | build-essential
+Suggests: cdd-doc
+Description: Custom Debian Distributions common files for developing meta packages
+ This package makes life easier when packaging meta packages. Perhaps
+ this will also encourage other people to build meta packages if there are
+ easy to use templates where only the packages, the meta package is depending
+ from, to insert into the right place.
+
+Package: cdd-common
+Architecture: all
+Section: misc
+Depends: adduser, menu (>= 2.1.25), debconf (>= 0.5) | debconf-2.0
+Suggests: cdd-doc
+Description: Custom Debian Distributions common package
+ This package builds the basic infra structure for meta packages.
+ .
+ This package provides some files which are common to meta packages
+ of Common Debian Distributions. It introduces a method to handle
+ system users in a group named according to the name of the
+ Custom Debian Distribution.
+
+Package: cdd-doc
+Architecture: all
+Section: doc
+Suggests: www-browser, postscript-viewer
+Description: Custom Debian Distribution documentation
+ This paper is intended to people who are interested in the philosophy
+ of Custom Debian Distributions and the technique which is used to
+ manage those projects.
+ .
+ It is explained in detail why these are no forks from Debian but reside
+ completely inside the Debian GNU/Linux distribution and which
+ advantages can be gathered by this approach. The concept of
+ meta-packages and user role based menus is explained. In short: This
+ document describes why Custom Debian Distributions are important to
+ the vitality and quality of Debian.
+
Added: cdd/tags/cdd/0.4.5/debian/copyright
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/copyright Sun Jan 6 15:44:05 2008
@@ -0,0 +1,24 @@
+This package was debianized by Andreas Tille Andreas Tille <tille at debian.org>
+Tue, 23 Mar 2004 18:41:20 +0100
+
+It is Debian native software and can be found at Alioth SVN or under
+
+ http://svn.debian.org/wsvn/cdd
+
+Upstream authors:
+
+ Andreas Tille <tille at debian.org>
+ Petter Reinholdtsen <pere at debian.org>
+ Cosimo Alfarano <kalfa at debian.org>
+
+The copyright for the code is
+
+ Copyright (C) 2002-2007 by Andreas Tille, Petter Reinholdtsen, Cosimo Alfarano
+
+The copyright for the Custom Debian Distributions documentation:
+
+ Copyright (C) 2002-2004 by Ben Armstrong.
+ Copyright (C) 2004-2007 by Andreas Tille.
+
+The software and the documentation is licensed under the GPL.
+On Debian systems, the GPL can be found at /usr/share/common-licenses/GPL.
Added: cdd/tags/cdd/0.4.5/debian/rules
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/debian/rules Sun Jan 6 15:44:05 2008
@@ -0,0 +1,69 @@
+#!/usr/bin/make -f
+# debian/rules for cdd-dev
+# This file is public domain software, originally written by Andreas Tille.
+
+# $Id: rules 431 2006-10-23 06:11:32Z tille $
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+build: build-stamp
+build-stamp:
+ dh_testdir
+
+ cd doc; $(MAKE) html; $(MAKE) txt; $(MAKE) pdf
+
+ touch build-stamp
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp
+
+ cd doc; $(MAKE) clean
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+ dh_install
+
+# Build architecture-independent files here.
+binary-indep: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+ dh_installman
+ cp -a debian/cdd-common.lintian.overrides debian/cdd-common/usr/share/lintian/overrides/cdd-common
+ cp -a debian/cdd-dev.lintian.overrides debian/cdd-dev/usr/share/lintian/overrides/cdd-dev
+ dh_link
+ dh_compress -X.pdf
+ dh_fixperms
+ dh_installdeb
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+# Build architecture-dependent files here.
+binary-arch: build install
+# We have nothing to do by default.
+
+dist:
+ distdir=cdd-`cat VERSION` ; \
+ rm -rf $${distdir} ; \
+ mkdir $${distdir} ; \
+ chmod 777 $${distdir} ; \
+ rsync -a --exclude $${distdir} --exclude CVS --exclude .svn --exclude svn-commit.tmp * $${distdir} ; \
+ ln -s sources.list.unstable $${distdir}/sources.list ; \
+ # ln -s control.stub $${distdir}/examples/debian/control ; \
+ rm -f `find . -name "*~"` ; \
+ GZIP=-9 tar -czf ../cdd_`cat VERSION`.tar.gz $${distdir} ; \
+ rm -rf $${distdir}
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
Added: cdd/tags/cdd/0.4.5/devtools/Makefile
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/devtools/Makefile Sun Jan 6 15:44:05 2008
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+
+# This Makefile is used to build a debian/control file
+# for a Custom Debian Distribution.
+#
+# Copyright (C) Andreas Tille <tille at debian.org>
+# License: GPL
+
+# TARGET_DIST is one of stable, sarge, etch, unstable, or any other available
+# sources.list file available
+TARGET_DIST := $(shell head -1 debian/changelog |awk '{print $$3}'|tr -d ';')
+CDD := $(shell /usr/share/cdd-dev/cdd-get-names cddname)
+GENCONTROL := /usr/share/cdd-dev/cdd-gen-control
+
+# Verify whether config/control exists, if yes, add it to the depends of debian/control
+CONFIGCONTROL := $(shell if [ -d config -a -e config/control ] ; then echo config/control; fi)
+
+all: $(CDD)-tasks.desc debian/control
+
+debian/control: debian/control.stub debian/changelog tasks/* $(CONFIGCONTROL)
+ (cat debian/control.stub; \
+ test -f config/control && ( cat config/control; echo ) ; \
+ $(GENCONTROL) -s $(TARGET_DIST) -D -c -m -i -A) > $@.new && mv $@.new $@
+
+tasksel: $(CDD)-tasks.desc
+$(CDD)-tasks.desc: tasks/* debian/changelog
+ $(GENCONTROL) -s $(TARGET_DIST) -t -A > $(CDD)-tasks.desc.new && mv $(CDD)-tasks.desc.new $(CDD)-tasks.desc
+
+packages.txt: tasks/*
+ $(GENCONTROL) -s $(TARGET_DIST) -a > packages.txt.$$$$ && mv packages.txt.$$$$ packages.txt
+
+avoidpackages.txt: tasks/* sources.list.$(TARGET_DIST)
+ $(GENCONTROL) -s $(TARGET_DIST) -e > avoidpackages.txt.$$$$ && mv avoidpackages.txt.$$$$ avoidpackages.txt
+
+by_vote:
+ rm -f by_vote
+ wget http://developer.skolelinux.no/popcon/by_vote
+
+packages-sorted.txt: packages.txt by_vote
+ for pkg in `cat packages.txt` ; do \
+ grep " $$pkg " by_vote ; \
+ done | LANG=C sort -r -n -k 4 -k 3 > packages-sorted.txt
+usage: packages-sorted.txt
+
+clean:
+ rm -rf tmp
+ rm -f tasks/*~
+ rm -rf tasksel
+ rm -f packages.txt by_vote packages-sorted.txt
Added: cdd/tags/cdd/0.4.5/devtools/cdd-gen-control
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/devtools/cdd-gen-control Sun Jan 6 15:44:05 2008
@@ -0,0 +1,622 @@
+#!/usr/bin/perl
+#
+# Authors:
+# Petter Reinholdtsen <pere at hungry.com>
+# Andreas Tille <tille at debian.org>
+# Date: 2001-08-23
+#
+# # $Id: cdd-gen-control 448 2007-08-11 08:02:48Z tille $
+#
+# Generate the control file used by the CDD task package.
+
+use warnings;
+use strict;
+
+use Getopt::Std;
+use File::Path;
+
+use vars qw(%opts %available %excluded %included @wanted %missing
+ @tasks $debug);
+my @arch = qw(alpha arm i386 ia64 m68k mips mipsel powerpc s390 sparc hppa);
+
+my $debug = 0;
+my $nodepends = 0;
+my $ignoreapterrors = 0;
+
+my %taskinfo = ();
+my $tasksdir = "tasks" ;
+my $taskcontrolfile = "tasks.ctl" ;
+
+my $aptsourcesdefaultlocation = "/etc/cdd";
+my $aptsources = $aptsourcesdefaultlocation . "/sources.list";
+my $cdd_dev_dir = "/usr/share/cdd-dev";
+
+my %commondepends ;
+$commondepends{"adduser"} = "0" ;
+$commondepends{"debconf"} = "1.2" ;
+$commondepends{"menu"} = "2.1.14" ;
+
+my $CommonPackage = "" ;
+my $prefix = "test-" ;
+my $cddname = "" ;
+my $cddshortname = "" ;
+my $tasksname = "" ;
+my $hasconfig = 0 ;
+
+sub usage() {
+ print STDERR << "EOF";
+gen-control help screen
+usage: $0 [options]
+
+ -a : print wanted packages
+ -A : ignore APT errors
+ -c : create new debian/control file
+ -d : print debug information
+ -D : lover all Depends: to Recommends:
+ -e : print excluded packages
+ -h : print this help screen and exit
+ -i :
+ -m : print missing packages
+ -s <sourcefile> : specify which sources.list file to use
+ -t : print task descriptions and package list for task
+
+example: $0 -s sources.list.etch -D -c -m -i
+EOF
+}
+
+getopts("cdaemis:tDhA", \%opts);
+
+usage() and exit if $opts{'h'};
+
+my $aptsourcesinput = $opts{'s'} if ($opts{'s'});
+$aptsources = $aptsourcesinput ;
+if ( $aptsources !~ m%^/% && $aptsources !~ /^sources\.list\./ ) {
+ my $cwd ;
+ chomp($cwd = `pwd`) ;
+ $aptsources = $cwd . "/sources.list." . $aptsources ;
+}
+if ( ! -e $aptsources ) {
+ $aptsources = $aptsourcesdefaultlocation . "/sources.list." . $aptsourcesinput;
+ if ( ! -e $aptsources ) {
+ die "Apt sources.list $aptsources not found.\n" ;
+ }
+}
+
+$debug = 1 if ($opts{'d'});
+$nodepends = 1 if ($opts{'D'});
+$ignoreapterrors = 1 if ($opts{'A'});
+
+cdd_init();
+
+# print "$prefix ; $cddshortname ; $cddname ; $tasksname \n";
+
+load_available_packages();
+
+load_tasks();
+
+# An ordered list of CDD tasks, in priority order of which are
+# most needed on the CD. Only leaf tasks need be listed.
+my @priorityorder = get_priorities("priority-high", 1);
+my @medpriorder = get_priorities("priority-med", 0);
+
+# print "high: @priorityorder\nmed: @medpriorder\n" ;
+
+if ($opts{'c'}) {
+ gen_control();
+} elsif ($opts{'e'}) {
+ print_excluded_packages();
+} elsif ($opts{'a'}) {
+ print_all_packages();
+} elsif ($opts{'t'}) {
+ print_task_desc();
+} else {
+ print_available_packages();
+}
+print_missing_packages() if ($opts{'m'});
+
+sub apt {
+ my $op = shift;
+
+ my $aptdir = "../tmp/apt";
+ my @aptopts = ("Dir::Etc::sourcelist=$aptsources",
+ "Dir::State=$aptdir/state",
+ "Dir::Cache=$aptdir/cache",
+ "Dir::State::Status=/dev/null",
+ "Debug::NoLocking=true",
+ "APT::Get::AllowUnauthenticated=true");
+
+ # Stupid apt-get and apt-cache do not understand the same arguments!
+ # I have to map them to different formats to get both working.
+
+ if ("update" eq $op) {
+ mkpath "$aptdir/state/lists/partial";
+ mkpath "$aptdir/cache/archives/partial";
+
+ my $aptget = "apt-get --assume-yes -o " . join(" -o ", @aptopts);
+
+ print STDERR "aptget: $aptget\n" if $debug;
+ if (system("$aptget update 1>&2")) {
+ print STDERR "error: updating apt package lists failed\n";
+ exit 1 unless $ignoreapterrors;
+ }
+ } elsif ("apt-cache" eq "$op") {
+ my $aptcache = "apt-cache -o=" . join(" -o=", @aptopts);
+ print STDERR "aptcache: $aptcache\n" if $debug;
+ return $aptcache;
+ }
+}
+
+sub sort_uniq {
+ my $seen = shift;
+ my @list;
+ for my $entry (sort @_) {
+ push @list,$entry unless $seen->{$entry};
+ $seen->{$entry} = 1;
+ }
+ return @list;
+}
+
+sub uniq {
+ my $seen = shift;
+ my @list;
+ for my $entry (@_) {
+ push @list,$entry unless $seen->{$entry};
+ $seen->{$entry} = 1;
+ }
+ return @list;
+}
+
+sub gen_control {
+ my $task;
+ for $task (sort keys %taskinfo) {
+ print "Package: $task\n";
+
+ my $header;
+ for $header (qw(Section Architecture Priority)) {
+ print "$header: $taskinfo{$task}{$header}\n"
+ if (defined $taskinfo{$task}{$header});
+ }
+ my %seenlist;
+ if ($nodepends) {
+ # degrade dependencies to recommends
+ if ( $tasksname ) {
+ print "Depends: $tasksname";
+ if ( $tasksname =~ /-tasks$/ ) {
+ print ' (= ${binary:Version})';
+ }
+ if ( $hasconfig ) {
+ print ', ' . $prefix . 'config (= ${binary:Version})';
+ }
+ print "\n" ;
+ }
+ # Use common %seenlist, as it is no use listing
+ # packages both in recommends and suggest
+ my @list;
+ for $header (qw(Depends Recommends)) {
+ push (@list, @{$taskinfo{$task}{$header}})
+ if defined $taskinfo{$task}{$header};
+ }
+ my ($pkglist, $missinglist) = process_pkglist(join(",", at list));
+ my (@recommends, @suggests);
+ push @recommends, @{$pkglist};
+ push @suggests, @{$missinglist};
+# push(@recommends, )
+# if defined $taskinfo{$task}{Depends};
+# push(@recommends, )
+# if defined $taskinfo{$task}{Recommends};
+ push(@suggests, @{$taskinfo{$task}{Suggests}})
+ if defined $taskinfo{$task}{Suggests};
+ print("Recommends: ",
+ join(", ", sort_uniq(\%seenlist, @recommends)),"\n")
+ if defined $taskinfo{$task}{Depends};
+ print("Suggests: ",
+ join(", ", sort_uniq(\%seenlist, @suggests)),"\n")
+ if @suggests;
+ }
+ else {
+ for $header (qw(Depends Recommends Suggests)) {
+ print "$header: ", join(", ", sort_uniq(\%seenlist, @{$taskinfo{$task}{$header}})),"\n"
+ if defined $taskinfo{$task}{$header};
+ }
+ }
+
+ # Description Description-long
+ print "Description: $taskinfo{$task}{Description}\n";
+ print "$taskinfo{$task}{'Description-long'}"; # Already contain newline
+
+ print "\n";
+ }
+}
+
+# List all depends, recommends and suggests packages as task packages.
+# Optionally, list depends as key packages, and the rest as task
+# packages.
+# Enable to list all dependencies as key packages
+my $task_depends_are_keys = 0;
+sub print_task_desc {
+ foreach my $task (sort keys %taskinfo) {
+ next if (exists $taskinfo{$task}{'Leaf'} &&
+ $taskinfo{$task}{'Leaf'} eq 'false');
+
+ print "Task: $task\n";
+ print "Section: $cddname\n";
+ print "Description: $taskinfo{$task}{Description}\n";
+ print "$taskinfo{$task}{'Description-long'}"; # Already contain newline
+ print "Relevance: 10\n";
+ print "Key: \n";
+ print " $task\n";
+ my %seen;
+ $seen{$task} = 1;
+ if ($task_depends_are_keys) {
+ foreach my $package (task_packages($task, "Depends")) {
+ print " $package\n" unless $seen{$package};
+ $seen{$package} = 1;
+ }
+ }
+ print "Packages: list\n";
+ for my $header (qw(Depends Recommends)) {
+ foreach my $package (task_packages($task, $header, 1)) {
+ print " $package\n" unless $seen{$package};
+ $seen{$package} = 1;
+ }
+ }
+
+ print "\n";
+ }
+}
+
+sub select_alternative {
+ my $pkglist = shift;
+ return $pkglist;
+}
+
+sub task_packages {
+ my ($task, $header, $includealldeps) = @_;
+ my @packages = $task;
+ foreach my $package (@{$taskinfo{$task}{$header}}) {
+ if ($package=~/\|/) {
+ # Tasksel doesn't allow boolean or-ing of
+ # dependencies. Just take the first one that is
+ # available.
+ my $ok=0;
+ foreach my $alternative (split(' | ', $package)) {
+ if (! exists $taskinfo{$alternative} &&
+ ! exists $available{$alternative}) {
+ if (! exists $missing{$alternative}) {
+ $missing{$alternative} = 1;
+ }
+ }
+ else {
+ print STDERR "task_packages: choosing $alternative from $package\n" if $debug;
+ $package=$alternative;
+ $ok=1;
+ last;
+ }
+ }
+ if (! $ok) {
+ next;
+ }
+ }
+ if (exists $taskinfo{$package}) {
+ # Add packages from task recursively, since
+ # tasksel does not support dependent tasks of
+ # the type used by CDD
+ if (defined $includealldeps && $includealldeps) {
+ for my $h (qw(Depends Recommends)) {
+
+ push(@packages, $package,
+ task_packages($package, $h, 1));
+ }
+ } else {
+ push(@packages, $package,
+ task_packages($package, $header));
+ }
+ }
+ else {
+ push @packages, $package;
+ }
+ }
+ return @packages;
+}
+
+#
+# Check the APT cache, and find the packages currently available.
+#
+sub load_available_packages
+{
+ apt("update");
+ my $aptcache = apt("apt-cache");
+ open(APT, "$aptcache dump |") || die "Unable to start apt-cache";
+ my $pkg;
+ while (<APT>) {
+ chomp;
+ if (/^Package: (.+)$/) {
+ $pkg = $1;
+ print STDERR "Found pkg '$pkg'\n" if $debug;
+ }
+ if (/^\s+Version:\s+(.+)/) {
+ print STDERR " pkg $pkg = ver $1\n" if $debug;
+# print "C: $pkg $available{$pkg} lt $1\n" if ( exists $available{$pkg});
+ $available{$pkg} = $1 if ( ! exists $available{$pkg} ||
+ $available{$pkg} lt $1 );
+ }
+ }
+}
+
+#
+# Load all tasks
+#
+sub load_tasks {
+ my $taskfile;
+
+ # First document their existence, so they can depend on each other.
+ for $taskfile (<tasks/*>) {
+ next if (($taskfile eq "tasks/CVS") || ($taskfile eq "tasks/.svn"));
+ next if ($taskfile =~ m/~$/);
+
+ my $curpkg = $taskfile;
+ $curpkg =~ s%tasks/%$prefix%;
+ $available{$curpkg} = "n/a";
+
+ push(@tasks, "$taskfile:$curpkg");
+ }
+
+ # Next, load their content.
+ my $foo;
+ for $foo (@tasks) {
+ my ($taskfile, $curpkg) = $foo =~ m/^(.+):(.+)$/;
+ next if ("tasks/CVS" eq $taskfile);
+
+ load_task($taskfile, $curpkg);
+ }
+}
+
+sub process_pkglist {
+ my $pkgstring = shift;
+ my @pkglist = ();
+ my @missinglist = ();
+ my $packages;
+ for $packages (split(/\s*,\s*/, $pkgstring)) {
+ print "E: double comma?: $_\n" if ($packages =~ /^\s*$/ && $debug);
+ my $package;
+ my @alternates=split(/\s*\|\s*/, $packages);
+ my $alternatecount=0;
+ for $package (@alternates) {
+ print STDERR "Loading pkg '$package'\n" if $debug;
+ if ($package =~ /^-(.+)$/) {
+ $excluded{$1} = 1;
+ } elsif ( !exists $available{$package} ) {
+ if ( !exists $missing{$package}) {
+ $missing{$package} = 1;
+ }
+ push(@missinglist, $package);
+ } else {
+ if ($alternatecount == 0) {
+ #push(@pkglist, $package) if (! exists $pkglist[$package]);
+ push(@pkglist, $package);
+ }
+ else {
+ $pkglist[-1].=" | $package";
+ }
+ $alternatecount++;
+
+ if ( ! $included{$package} ) {
+ push(@wanted, $package);
+ $included{$package} = 1;
+ }
+ }
+ }
+ }
+ return (\@pkglist, \@missinglist);
+}
+
+sub load_task {
+ my ($taskfile, $curpkg) = @_;
+ open(TASKFILE, "<$taskfile") || die "Unable to open $taskfile";
+ my $line;
+
+ $taskinfo{$curpkg} = ();
+
+ print STDERR "Loading task $curpkg\n" if $debug;
+
+ while (<TASKFILE>) {
+ chomp;
+ next if (m/^\#/); # Skip comments
+ $line = $_;
+
+ # Append multi-line
+ while ($line =~ /\\$/) {
+ $line =~ s/\s*\\//;
+ $_ = <TASKFILE>;
+ chomp;
+ $line .= $_;
+ }
+ # Remove trailing space
+ $line =~ s/\s+$//;
+
+ $_ = $line;
+ $taskinfo{$curpkg}{'Section'} = $1 if (m/^Section:\s+(.+)$/);
+ $taskinfo{$curpkg}{'Architecture'} = $1 if (m/^Architecture:\s+(.+)$/);
+
+ $taskinfo{$curpkg}{'Priority'} = $1 if (m/^Priority:\s+(.+)$/);
+
+ $taskinfo{$curpkg}{'Leaf'} = $1 if (m/^Leaf:\s+(.+)$/);
+
+ if (m/^Description:\s+(.+)$/) {
+ $taskinfo{$curpkg}{'Description'} = $1;
+ $taskinfo{$curpkg}{'Description-long'} = "";
+ while (<TASKFILE>) {
+ # End of description, pass next line to pattern matching
+ last if (m/^\S+/ || m/^\s*$/);
+
+ $taskinfo{$curpkg}{'Description-long'} .= $_;
+ }
+ }
+
+ next unless defined $_;
+
+ my $header;
+ for $header (qw(Depends Recommends Suggests)) {
+ if (m/^$header:\s+(.+)$/ && $1 !~ /^\s*$/) {
+ $taskinfo{$curpkg}{$header} = ()
+ if (! exists $taskinfo{$curpkg}{$header});
+ my ($pkglist, $missinglist) = process_pkglist($1);
+ push(@{$taskinfo{$curpkg}{$header}}, @{$pkglist});
+
+ # Avoid missing packages in Depends lists, allow them
+ # in the two others. Insert missing depends in
+ # suggests list.
+ if (@{$missinglist}) {
+ if ("Depends" eq $header) {
+ push(@{$taskinfo{$curpkg}{'Suggests'}}, @{$missinglist});
+ } else {
+ push(@{$taskinfo{$curpkg}{$header}}, @{$missinglist});
+ }
+ }
+ }
+ }
+
+ if (/^Avoid:\s+(.+)$/) {
+ my @pkgs = split(/\s*,\s*/, $1);
+ my $packages;
+ for $packages (@pkgs) {
+ my $package;
+ for $package (split(/\s*\|\s*/, $packages)) {
+ $excluded{$package} = 1;
+ }
+ }
+ }
+
+ if (/^Ignore:\s+(.+)$/) {
+ my @pkgs = split(/\s*,\s*/, $1);
+ my $packages;
+ for $packages (@pkgs) {
+ my $package;
+ for $package (split(/\s*\|\s*/, $packages)) {
+ # Remove explanations, ie the paranteses at the end.
+ $package =~ s/\s*\([^\)]*\)\s*$//;
+ $missing{$package} = 1;
+ }
+ }
+ }
+ }
+ close(TASKFILE);
+ unless ( $taskinfo{$curpkg}{'Architecture'} ) { $taskinfo{$curpkg}{'Architecture'} = "all" ; }
+}
+
+sub print_excluded_packages {
+ print join("\n", sort keys %excluded),"\n";
+}
+
+sub print_available_packages {
+ print join("\n", @wanted),"\n";
+}
+
+sub print_all_pkgs_tasks {
+ my ($seenref, $headerlistref, @tasks) = @_;
+
+ my @headers;
+ if ( $headerlistref ) {
+ @headers = @{$headerlistref};
+ } else {
+ @headers = qw(Depends Recommends Suggests)
+ }
+
+ for my $header (@headers) {
+ print STDERR " Processing $header\n" if $debug;
+ my %seentask;
+ for my $task (@tasks) {
+ next if $seentask{$task};
+ $seentask{$task} = 1;
+
+ print "# printing $header in $task\n";
+ print STDERR " Printing $task\n" if $debug;
+
+ # Pick the first available if there are alternatives
+ my @pkgs = uniq($seenref, task_packages($task, $header), $task);
+ print join("\n", @pkgs), "\n" if @pkgs;
+ }
+ }
+}
+
+sub print_all_packages {
+ print STDERR "Printing all packages\n" if $debug;
+# print join("\n", @wanted, keys %missing),"\n";
+
+ print "# First process the high priority tasks\n";
+ my %seenlist;
+ print_all_pkgs_tasks(\%seenlist, [qw(Depends Recommends)], @priorityorder );
+
+ print "# Next, medium priority tasks tasks\n";
+ print_all_pkgs_tasks(\%seenlist, [qw(Depends Recommends)], @medpriorder );
+
+ print "# Next process all the others, in alphabetic order\n";
+ print_all_pkgs_tasks(\%seenlist, undef, sort keys %taskinfo);
+
+ print "# And last, the alternatives we dropped above\n";
+ print join("\n", uniq(\%seenlist, @wanted, sort keys %missing)),"\n";
+}
+
+sub print_missing_packages {
+ if (%missing) {
+ print STDERR "Missing or avoided packages:\n";
+ my $package;
+ for $package (sort keys %missing) {
+ if (exists $available{$package}) {
+ print STDERR " $package (v$available{$package} available)\n";
+ } else {
+ print STDERR " $package\n";
+ }
+ }
+ exit 1 unless $opts{'i'};
+ }
+}
+
+## Additions by Andreas Tille
+
+sub get_priorities {
+ my ($prio, $default) = @_;
+ my @list = () ;
+
+ # if there is no taskcontrolfile every task has the same priority
+ if ( ! stat($taskcontrolfile) ) {
+ if ( ! $default ) { return (); }
+ print STDERR "No task control file found - setting all tasks priority high.\n" if $debug;
+ opendir(DIR, $tasksdir) || die("No tasks directory found.");
+ @list = grep { !/^\./ } readdir(DIR);
+ closedir DIR;
+ return @list;
+ }
+ # read taskcontrolfile and find priorities
+ print STDERR "Reading task control file.\n" if $debug;
+ open(PRIO,$taskcontrolfile) || die("Unable to read task control file.");
+ while (<PRIO>) {
+ chomp ;
+ if ( $_=~/^$prio\s*:\s*([-\w]+)/) {
+ push @list,$1;
+ }
+ }
+ close PRIO;
+
+ return @list;
+}
+
+sub cdd_init {
+ # initialise cdd name and other basic stuff
+ unless ( -d "debian" ) {
+ mkdir("debian") || die "mkdir debian: $!";
+ }
+
+ unless ( -e "debian/control.stub" ) {
+ print STDERR "No template debian/control.stub. Use test prefix.\n" ;
+ } else {
+ chomp($prefix = `$cdd_dev_dir/cdd-get-names metapackageprefix`) ;
+ $prefix = $prefix . "-" ;
+ $tasksname = $prefix . "tasks";
+ chomp($cddshortname = `$cdd_dev_dir/cdd-get-names cddshortname`);
+ chomp($cddname = `$cdd_dev_dir/cdd-get-names cddname`);
+ }
+ if ( -d "config" && -e "config/control" ) {
+ $hasconfig = 1;
+ }
+}
Added: cdd/tags/cdd/0.4.5/devtools/cdd-get-names
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/devtools/cdd-get-names Sun Jan 6 15:44:05 2008
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+# Read CDD specific names from debian/control.stub
+#
+# Copyright (C) Andreas Tille <tille at debian.org>
+# License: GPL
+
+# Return codes according to
+# http://epydoc.sourceforge.net/stdlib/posix-module.html
+
+CONTROLFILE=debian/control.stub
+
+GetShortName () {
+ grep '^Source:[[:space:]]*debian-' $CONTROLFILE | \
+ sed 's/^Source:[[:space:]]*debian-//'
+}
+
+if [ ! -e "$CONTROLFILE" ] ; then
+ echo "Missing control file $CONTROLFILE"
+ exit 72 # EX_OSFILE
+fi
+
+if [ "$#" -ne 1 ] ; then
+ echo "Missing argument"
+ echo "Usage: $0 cddname|cddshortname|metapackageprefix"
+ exit 64 # EX_USAGE
+fi
+
+case "$1" in
+ cddname)
+ grep '^Source:[[:space:]]*debian-' "$CONTROLFILE" | \
+ sed 's/^Source:[[:space:]]*//'
+ exit 0
+ ;;
+ cddshortname)
+ GetShortName
+ exit 0
+ ;;
+ metapackageprefix)
+ mprefix=`grep '^Package:[[:space:]]*' "$CONTROLFILE" | \
+ sed 's/^Package:[[:space:]]*\([[:alnum:]]\+\)-*.*/\1/'`
+ if [ -z $mprefix ] ; then
+ GetShortName
+ else
+ echo $mprefix
+ fi
+ exit 0
+ ;;
+ *)
+ echo "Unknown argument $1"
+ echo "Usage: $0 cddname|cddshortname|metapackageprefix"
+ exit 64 # EX_USAGE
+ ;;
+esac
Added: cdd/tags/cdd/0.4.5/devtools/cdd-install-helper
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/devtools/cdd-install-helper Sun Jan 6 15:44:05 2008
@@ -0,0 +1,124 @@
+#!/bin/sh
+
+cdd=`/usr/share/cdd-dev/cdd-get-names metapackageprefix`
+menudir=usr/share/cdd/"$cdd"/menu
+
+SubstCDDName () {
+ sed -e "s/#CDD#/${cdd}/g" \
+ -e "s?\([/ ]\)\(config.templates:*\)?\1${cdd}-\2?" \
+ -e "s/#CDDNAME#/${CDDNAME}/g" /usr/share/cdd/templates/$1 >> \
+ debian/$2
+}
+
+# Make dependency from menu containing packages to the right #CDD#-config version
+version="(>= `dpkg-parsechangelog | grep "^Version:" | sed -e "s/^Version:[[:space:]]\+\([\.0-9]*\)[[:space:]]*/\1/"`)"
+
+# General Task registry, menu registration and post{inst,rm} preparation
+for pkg in `ls tasks | grep -v "^[a-z]*:$*" | grep -v "^$" | sort | uniq` ; do
+ # registration
+ if ! grep -q -w "^Task:" tasks/$pkg ; then
+ echo "Control file template tasks/$pkg does not contain 'Task:' field."
+ # I'm sure there are more clever ways to make the first letter upper case ...
+ # task=`echo $pkg | sed 's/^\(.\).*/\1/' | tr "^[a-z]" "^[A-Z]"``echo $pkg | sed 's/^.//'`
+ # For the moment disable tasksel if there is no "Task:" tag given
+ else
+ task=`grep -w "^Task:" tasks/"$pkg" | sed "s/^Task:[[:space:]]*\([^[:space:]]*\)/\1/"`
+ mkdir -p debian/"$cdd"-"$pkg"/usr/share/cdd/tasks/"$cdd"/
+ echo "$task" > debian/"$cdd"-"$pkg"/usr/share/cdd/tasks/"$cdd"/"$pkg"
+ fi
+
+ # if we provide an extra menu which overrides some menus provided by
+ # the maintainers of the dependand packages move them now to the right
+ # directory
+ [ -d menu ] && [ -d menu/"$pkg" ] && \
+ if [ `find menu/"$pkg" -maxdepth 1 -name \*.menu | wc -l` -gt 0 ] ; then
+ mkdir -p debian/"$cdd"-"$pkg"/"$menudir"
+ for dep in `find menu/"$pkg" -maxdepth 1 -name \*.menu` ; do
+ cp -a "$dep" debian/"$cdd"-"$pkg"/"$menudir"/`basename "$dep" .menu`
+ done
+ fi
+
+ # Provide a README.Debian in any case
+ mkdir -p debian/"$cdd"-"$pkg"/usr/share/doc/"$cdd"-"$pkg"
+ [ ! -s docs/"$pkg"/README.Debian ] && cp -a /usr/share/cdd/templates/README.Debian debian/"$cdd"-"$pkg"/usr/share/doc/"$cdd"-"$pkg"
+ # Check for documentation of packages (*.txt or *.html) which should be viewed in
+ # case of missing GUI
+ [ -d menu ] && [ -d menu/"$pkg" ] && \
+ if [ `find menu/"$pkg" -maxdepth 1 -name \*.txt -o -name \*.html | wc -l` -gt 0 ] ; then
+ for dep in `find menu/"$pkg" -maxdepth 1 -name \*.txt -o -name \*.html` ; do
+ # Formerly here was checked, whether this package is really listed in the
+ # dependencies, with more clever menu handling it is enough to verify
+ # whether it is mentioned at all in the package relations and the menu
+ # system cares about whether a sugested package is installed or not
+ depmenu=`basename ${dep} .txt`
+ if [ "$depmenu" = `basename ${dep}` ] ; then depmenu=`basename ${dep} .html` ; fi
+ if ! grep -A 5 "Package: $cdd-$pkg" debian/control | grep -q -w "$depmenu" ; then
+ ## echo "Package ${depmenu} seems not to be in dependencies"
+ continue
+ fi
+ cp -a "$dep" debian/"$cdd"-"$pkg"/usr/share/doc/"$cdd"-"$pkg"
+ done
+ fi
+
+ # post{inst/rm} template are appended if some extra scripts are provided or just created
+ # an extra postinst has to be saved (*.stub) and restored by the clean target in
+ # debian/rules
+ [ -s debian/"$cdd"-"$pkg".postinst.stub ] && cp debian/"$cdd"-"$pkg".postinst.stub debian/"$cdd"-"$pkg".postinst
+ sed -e "s/#CDD#/${cdd}/g" \
+ -e "s/#PKG#/${cdd}-${pkg}/g" \
+ /usr/share/cdd/templates/postinst >> debian/"$cdd"-"$pkg".postinst
+ sed -e "s/#CDD#/${cdd}/g" \
+ -e "s/#PKG#/${cdd}-${pkg}/g" \
+ /usr/share/cdd/templates/postrm >> debian/"$cdd"-"$pkg".postrm
+done
+
+# if config/config exists use this as general helper script
+if [ -s config/config ] ; then
+ mkdir -p debian/"$cdd"-config/usr/bin
+ mkdir -p debian/"$cdd"-config/usr/share/man/man1
+ cp -a config/config debian/"$cdd"-config/usr/bin/"$cdd"-config
+ cp -a config/config.1 debian/"$cdd"-config/usr/share/man/man1/"$cdd"-config.1
+
+ # install link to package helper script
+ for pkg in `ls tasks` ; do
+ mkdir -p debian/"$cdd"-"$pkg"/usr/bin
+ mkdir -p debian/"$cdd"-"$pkg"/usr/share/man/man1
+ ln -s "$cdd"-config debian/"$cdd"-"$pkg"/usr/bin/"$cdd"-"$pkg"
+ ln -s "$cdd"-config.1.gz debian/"$cdd"-"$pkg"/usr/share/man/man1/"$cdd"-"$pkg".1.gz
+ done
+fi
+
+# config/conf should really exist for the CDD registry in /etc/cdd
+# currently there is no error message issued if it is missing but
+# this might be reasonable
+if [ -s config/conf ] ; then
+ # Get name of Custom Debian Distribution
+ . config/conf
+ # Config file should set CDDNAME, but if not try to build a useful one
+ if [ _"$CDDNAME" = _"" ] ; then
+ CDDNAME=Debian-`echo ${cdd} | perl -ne 'print "\u\L$_";'`
+ fi
+ # Move templates for user configuration script
+ # In case there is a config postinst template, preserve this
+ [ -s debian/"$cdd"-config.postinst.stub ] && cp debian/"$cdd"-config.postinst.stub debian/"$cdd"-config.postinst
+ for comm in `ls /usr/share/cdd/templates/config.* /usr/share/cdd/templates/apt.conf` ; do
+ commname=`basename $comm`
+ SubstCDDName ${commname} ${cdd}-${commname}
+ done
+ # rename apt.conf.d file
+ [ -s debian/${cdd}-apt.conf ] && mv debian/${cdd}-apt.conf debian/90${cdd}-config
+ if [ -d debian/po.stub ] ; then
+ cp -a debian/po.stub debian/po
+ else
+ mkdir -p debian/po
+ fi
+ for po in `ls /usr/share/cdd/templates/po/*` ; do
+ poname=`basename $po`
+ SubstCDDName po/${poname} po/${poname}
+ done
+ [ -d debian/po ] && debconf-updatepo
+
+ # Add common config file for ${cdd}
+ mkdir -p debian/"$cdd"-config/etc/cdd/"$cdd"
+ cp -a config/conf debian/"$cdd"-config/etc/cdd/"$cdd"/"$cdd".conf
+fi
Added: cdd/tags/cdd/0.4.5/devtools/rules
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/devtools/rules Sun Jan 6 15:44:05 2008
@@ -0,0 +1,86 @@
+#!/usr/bin/make -f
+
+# This is a debian/rules file which builds meta packages
+# for a Custom Debian Distribution.
+#
+# Copyright (C) Andreas Tille <tille at debian.org>
+# License: GPL
+
+CDDNAME := $(shell /usr/share/cdd-dev/cdd-get-names cddname)
+PREFIX := $(shell /usr/share/cdd-dev/cdd-get-names metapackageprefix)
+CDDMKFILE := /usr/share/cdd-dev/Makefile
+CDD_INSTALL_HELPER := /usr/share/cdd-dev/cdd-install-helper
+
+all:
+ echo $(PREFIX), $(CDDNAME)
+
+INSTALLREADME := $(shell if test -e README ; then echo "-A README"; fi)
+
+debian/control:
+ $(MAKE) -f $(CDDMKFILE) debian/control
+
+build:
+ $(MAKE) -f $(CDDMKFILE) all
+ dh_testdir
+
+clean: debian/control
+ dh_testdir
+ dh_testroot
+ $(MAKE) -f $(CDDMKFILE) clean
+
+ # Clear apt-get cache
+ rm -rf tmp
+ # Remove backup files from source tarball
+ rm -f tasks/*~
+ # Remove auto generated post{inst,rm} scripts
+ rm -f debian/$(PREFIX)-*.postinst debian/$(PREFIX)-*.postrm
+ # remove tasksel directory
+ ## [ -d tasksel ] && rm -f tasksel/$(PREFIX)-* && rmdir tasksel
+ # remove auto generated files for config package
+ rm -f debian/$(PREFIX)-config.templates debian/$(PREFIX)-config.config \
+ debian/$(PREFIX)-config.install debian/$(PREFIX)-config.links \
+ debian/90$(PREFIX)-config
+ # remove auto generated debconf template translations
+ rm -rf debian/po
+ # Remove auto generated tasksel descriptions:
+ rm -f $(CDDNAME)-tasks.desc
+
+ dh_clean build-stamp
+
+install: debian/control build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+ dh_install $(CDDNAME)-tasks.desc usr/share/tasksel
+
+# Build architecture-dependent files here.
+binary-arch: build install
+# We have nothing to do by default.
+
+# Build architecture-independent files here.
+binary-indep: build install
+ dh_testdir
+ dh_testroot
+ dh_installdocs $(INSTALLREADME)
+ dh_installexamples
+ dh_installmenu
+ dh_installcron
+ dh_installman
+ dh_installinfo
+ $(CDD_INSTALL_HELPER)
+ dh_install
+ dh_installdebconf
+ dh_installchangelogs
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure debian/control
Added: cdd/tags/cdd/0.4.5/doc/Makefile
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/Makefile Sun Jan 6 15:44:05 2008
@@ -0,0 +1,84 @@
+## ----------------------------------------------------------------------
+## Makefile : makefile for debiandoc-sgml-doc
+## ----------------------------------------------------------------------
+
+## ----------------------------------------------------------------------
+## Document definitions
+doc_lang := en
+doc_name := debian-cdd
+doc_sgml := $(doc_name).$(doc_lang).sgml
+doc_pdf := $(doc_name).$(doc_lang).pdf
+doc_ps := $(doc_name).$(doc_lang).ps
+doc_dvi := $(doc_name).$(doc_lang).dvi
+doc_txt := $(doc_name).$(doc_lang).txt
+doc_info := $(doc_name).$(doc_lang).info
+doc_html := $(doc_name).html
+pkg := cdd-doc
+
+## ----------------------------------------------------------------------
+## Package definitions
+pkg_lang := en
+
+## ----------------------------------------------------------------------
+## General definitions
+LN := /bin/ln -sf
+RMR := /bin/rm -fr
+LOCALE := unset LC_ALL; unset LANG; unset LANGUAGE;
+
+## ----------------------------------------------------------------------
+# this can and will be overriden by a higher level makefile
+PUBLISHDIR := tille at people.debian.org:public_html/debian-med/talks/paper-cdd
+
+# There is no difference between letter and a4, but a2 for instance works
+PAPERSIZE := letter
+
+## ----------------------------------------------------------------------
+## Targets
+all: html
+
+validate: $(doc_sgml)
+ # nsgmls -ges -wall $(doc_sgml)
+ nsgmls -wall -E20 -gues $^
+
+html $(doc_html): $(doc_sgml)
+ $(LOCALE) debiandoc2html -l $(doc_lang) -b $(doc_name) -c $^
+ $(LN) index.$(pkg_lang).html $(doc_html)/index.html
+
+txt $(doc_txt): $(doc_sgml)
+ debiandoc2text -l $(doc_lang) $^
+
+ps $(doc_ps): $(doc_sgml)
+ debiandoc2latexps -l $(doc_lang) -p$(PAPERSIZE) $^
+
+pdf $(doc_pdf): $(doc_sgml)
+ $(LOCALE) debiandoc2latexpdf -l $(doc_lang) -p$(PAPERSIZE) $^
+ $(RMR) $(doc_name).$(doc_lang).tpt
+
+dvi $(doc_dvi): $(doc_sgml)
+ debiandoc2latexdvi -l $(doc_lang) -p$(PAPERSIZE) $^
+ $(RMR) $(doc_name).$(doc_lang).out
+
+info $(doc_info): $(doc_sgml)
+ debiandoc2info -l $(doc_lang) $^
+
+publish: $(doc_html)/index.html
+ rsync --rsh="ssh -i ${HOME}/.ssh/id_dsa-debian" -azult --delete $(doc_html) $(PUBLISHDIR)
+ [ -s debian-cdd.en.pdf ] && rsync --rsh="ssh -i ${HOME}/.ssh/id_dsa-debian" -azult $(doc_pdf) $(PUBLISHDIR)
+
+clean:
+ $(RMR) $(doc_html) $(doc_pdf) $(doc_txt) $(doc_ps) $(doc_dvi) $(doc_info)
+ $(RMR) $(doc_name).$(doc_lang).tpt $(doc_name).$(doc_lang).out
+ find . -name "*~" -exec $(RMR) \{\} \;
+
+dist:
+ target=$(pkg)-`cat VERSION` ; \
+ mkdir -p $${target} ; \
+ rsync -azult Makefile *.sgml en debian --exclude=CVS --exclude=.svn $${target} ; \
+ GZIP=-9 tar -czf $(pkg)_`cat VERSION`.tar.gz $${target} ; \
+ rm -rf $${target}
+
+distclean:
+ make clean
+ rm -f $(pkg)_`cat VERSION`.tar.gz
+
+.PHONY: all publish clean distclean validate
Added: cdd/tags/cdd/0.4.5/doc/TODO
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/TODO Sun Jan 6 15:44:05 2008
@@ -0,0 +1,4 @@
+agnula -> rename
+
+debian-live URL
+
Added: cdd/tags/cdd/0.4.5/doc/debian-cdd.en.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/debian-cdd.en.sgml Sun Jan 6 15:44:05 2008
@@ -0,0 +1,60 @@
+<!DOCTYPE debiandoc public "-//DebianDoc//DTD DebianDoc//EN"
+[
+ <!-- textual data entities -->
+ <!entity titletoc system "en/00_titletoc.sgml">
+ <!entity ch-introduction system "en/01_introduction.sgml">
+ <!entity ch-about system "en/02_about.sgml">
+ <!entity ch-general-ideas system "en/03_general_ideas.sgml">
+ <!entity ch-existing-cdds system "en/04_existing_cdds.sgml">
+ <!entity ch-inside system "en/05_inside.sgml">
+ <!entity ch-technology system "en/06_technology.sgml">
+ <!entity ch-starting system "en/07_starting.sgml">
+ <!entity ch-todo system "en/08_todo.sgml">
+ <!entity ap-devel system "en/A_devel.sgml">
+ <!entity ap-quickintro system "en/B_quickintro.sgml">
+ <!entity ap-bts system "en/C_bts.sgml">
+]
+>
+
+<debiandoc>
+
+ <book id="debiandoc-sgml">
+
+ &titletoc;
+
+ &ch-introduction;
+ &ch-about;
+ &ch-general-ideas;
+ &ch-existing-cdds;
+ &ch-inside;
+ &ch-technology;
+ &ch-starting;
+ &ch-todo;
+
+ &ap-devel;
+ &ap-quickintro;
+ &ap-bts;
+
+ </book>
+
+</debiandoc>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:nil
+sgml-parent-document:nil
+sgml-declaration:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+
Added: cdd/tags/cdd/0.4.5/doc/en/00_titletoc.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/00_titletoc.sgml Sun Jan 6 15:44:05 2008
@@ -0,0 +1,87 @@
+<titlepag>
+
+ <title>Custom Debian Distributions</title>
+ <!-- subtitle> Preparing Debian for special user groups </subtitle -->
+
+<author>
+ <name>Andreas Tille</name>
+ <email>tille at debian.org</email>
+</author>
+
+<version><date></version>
+
+<abstract>
+This paper is intended for people who are interested in the philosophy
+of Custom Debian Distributions, and the technique that is used to
+manage those projects.
+It is explained in detail why these are not forks from Debian, but reside
+completely inside the Debian GNU/Linux distribution, and which
+advantages can be enjoyed by taking this approach. The concept of
+meta-packages and user role based menus is explained. In short: This
+document describes why Custom Debian Distributions are important to
+the vitality and quality of Debian.
+</abstract>
+
+ <copyright>
+ <copyrightsummary>
+ Copyright © 2004 - 2007 Andreas Tille
+ </copyrightsummary>
+
+ <p>
+ This manual is Free Software; you may redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2.0, or
+ (at your option) any later version.
+ </p>
+
+ <p>
+ This is distributed in the hope that it will be useful, but
+ <em>without any warranty</em>; without even the implied warranty
+ of merchantability or fitness for a particular purpose. See the
+ GNU General Public License for more details.
+ </p>
+
+ <p>
+ A copy of the GNU General Public License is available
+ on the World Wide Web at <url
+ id="http://www.gnu.org/copyleft/gpl.html" name="&urlname">. You
+ can also obtain it by writing to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ </p>
+
+ <p>
+ You can find the source of this article
+ <url id="http://svn.debian.org/wsvn/cdd/cdd/trunk/cdd/doc/"
+ name="in the Subversion repository at svn.debian.org">.
+ It is also available as Debian package <package>cdd-doc</package>.
+ </p>
+
+ <p>
+ A <url id="../debian-cdd.en.pdf"
+ name="printable version in PDF format"> will be built
+ from time to time.
+ </p>
+
+ </copyright>
+</titlepag>
+
+<toc detail="sect">
+
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
Added: cdd/tags/cdd/0.4.5/doc/en/01_introduction.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/01_introduction.sgml Sun Jan 6 15:44:05 2008
@@ -0,0 +1,58 @@
+<chapt id="introduction">
+ <heading>Introduction</heading>
+<p>
+ A general purpose operating system like Debian can be the
+ perfect solution for many different problems. Whether
+ you want Debian to work for you in the classroom, as a
+ games machine, or in the office, each problem area has its
+ own unique needs and requires a different subset of
+ packages tailored in a different way.
+</p>
+<p>
+Custom Debian Distributions (formerly merged together with Debian Internal
+Projects) provide support for special user interests. They implement a new
+approach to cover interests of specialised users, who might be
+children, lawyers, medical staff, visually impaired people, etc. Of late,
+several Custom Debian Distributions have evolved. The common goal of those is
+to make installation and administration of computers for their target users as
+easy as possible, and to serve in the role as the missing link between software
+developers and users well.
+</p>
+<p>
+Using the object oriented approach as an analogy, if Debian as a whole is an
+object, a Custom Debian Distribution is an instance of this object that
+inherits all features while providing certain properties.
+</p>
+<p>
+So the Debian project releases the Debian Distribution and other
+Custom Debian Distributions. In contrast to this, there might be some
+other Debian related Projects, either external or non-official, which may
+create "derivative distributions". But these are not the
+responsibility of the Debian project.
+</p>
+<p>
+The effort might fall into the same category as the
+<url id="http://platform.progeny.com/componentized-linux/"
+name="Componentized Linux"> of Progeny, but there are certain
+differences that will be outlined in this paper.
+</p>
+
+</chapt>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
Added: cdd/tags/cdd/0.4.5/doc/en/02_about.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/02_about.sgml Sun Jan 6 15:44:05 2008
@@ -0,0 +1,237 @@
+<chapt id="about">
+ <heading>What are Custom Debian Distributions?</heading>
+
+ <sect id="debian">
+ <heading>What is Debian?</heading>
+
+<p>
+ The core of an operating system is a piece of software that
+ interacts with the hardware of the computer, and provides basic
+ functionality for several applications. On Linux based systems, the
+ so-called kernel provides this functionality, and the term Linux just
+ means this core without those applications that provide the
+ functionality for users. Other examples are the Hurd, or the flavours
+ of the BSD kernel.
+</p>
+<p>
+ Many applications around UNIX-like kernels are provided by the
+ <url id="http://www.gnu.org/" name="GNU"> system. That is why Linux
+ based operating systems are described as GNU/Linux systems. The GNU
+ tools around the Linux kernel build a complete operating system.
+</p>
+<p>
+ Users do not need only an operating system. They also need certain
+ applications like web servers, or office suites. A
+ <em>distribution</em> is a collection of software packages around the
+ GNU/Linux operating system that satisfies the needs of the target user
+ group. There are general distributions, which try to support all
+ users, and there are several specialised distributions, which each
+ target a special group of users.
+</p>
+<p>
+ <em>Distributors</em> are those companies that are building these
+ collections of software around the GNU/Linux operating system.
+ Because it is Free Software, the user who buys a distribution pays for
+ the service that the distributor is providing. These services might
+ be:
+ <list>
+ <item>Preparing a useful collection of software around GNU/Linux.</item>
+ <item>Caring for smooth installation that the target user is able to
+ manage.</item>
+ <item>Providing software updates and security fixes.</item>
+ <item>Writing documentation and translations to enable the user to use
+ the distribution with maximum effect.</item>
+ <item>Selling Boxes with ready to install CDs and printed
+ documentation.</item>
+ <item>Offering training and qualification.</item>
+ </list>
+</p>
+<p>
+ Most distributors ship their distribution in binary packages. Two
+ package formats are widely used:
+ <taglist>
+ <tag>RPM (RedHat Package Manager)</tag>
+ <item>which is supported by RedHat, SuSE, Mandrake and others.
+ <tag>DEB (Debian Package)</tag>
+ <item>used by Debian and derived distributions.
+ </item>
+ </taglist>
+ All GNU/Linux distributions have a certain amount of common ground,
+ and the <url id="http://www.linuxbase.org/" name="Linux Standard
+ Base"> (LSB) is attempting to develop and promote a set of standards
+ that will increase compatibility among Linux distributions, and enable
+ software applications to run on any compliant system.
+</p>
+<p>
+ The very essence of any distribution, (whether delivered as RPMs, DEBs,
+ Source tarballs or ports) is the choice of <em>policy statements</em>
+ made (or not made, as the case may be) by the creators of the distribution.
+</p>
+<p>
+ <em>Policy statements</em> in this sense are things like
+ "configuration files live in
+ <file>/etc/$package/$package.conf</file>, logfiles go to
+ <file>/var/log/$package/$package.log</file> and the documentation
+ files can be found in <file>/usr/share/doc/$package</file>."
+</p>
+<p>
+ The policy statements are followed by the tool-chains and
+ libraries used to build the software, and the lists of dependencies, which
+ dictate the prerequisites and order in which the software has to be
+ built and installed. (It's easier to ride a bicycle if you put the wheels
+ on first. ;-) )
+</p>
+<p>
+ It is this <em>adherence to policy</em> that causes a distribution
+ to remain consistent within its own bounds. At the same time, this is
+ the reason why packages can not always be safely installed across
+ distribution boundaries. A SuSE <file>package.rpm</file> might not
+ play well with a RedHat <file>package.rpm</file>, although the
+ packages work perfectly well within their own distributions. A
+ similar compatability problem could also apply to packages from the
+ same distributor, but from a different version or generation of the
+ distribution.
+</p>
+<p>
+<comment>AT: The context is somehow missing here.</comment>
+ As you will see later in more detail, Custom Debian Distributions are
+ just a modified ruleset for producing a modified (specialised)
+ version of Debian GNU/Linux.
+</p>
+<p>
+ A package management system is a very strong tool to manage software
+ packages on your computer. A large amount of the work of a
+ distributor is building these software packages.
+</p>
+<p>
+ Distributors you might know are
+ <url name="Mandrake" id="http://www.mandrakelinux.com/">,
+ <url name="RedHat" id="http://www.redhat.com/">,
+ <url name="SuSE" id="http://www.suse.com/">
+ (now owned by <url name="Novell" id="http://www.novell.com/linux/">)
+ and others.
+</p>
+<p>
+ <url id="http://www.debian.org" name="Debian"> is just one of them.
+</p>
+
+<p>
+Well, at least this is what people who do not know Debian well might
+think about it. But, in fact, Debian is a different kind of
+distribution ...
+</p>
+</sect>
+
+<sect id="whatdebian">
+ <heading>What is Debian? (next try)</heading>
+
+<p>
+The Debian Project is an association of individuals who have made
+common cause to create a free operating system. This operating system
+that we have created is called <strong>Debian GNU/Linux</strong>,
+or simply Debian for short.
+</p>
+<p>
+Moreover, work is in progress to provide Debian of kernels other than
+Linux, primarily for the Hurd. Other possible kernels are the
+flavours of BSD, and there are even people who think about ports to MS
+Windows.
+</p>
+<p>
+All members of the Debian project are connected in a <url name ="web of
+trust" id="http://people.debian.org/~edward/globe/earthkeyring/">,
+which is woven by signing GPG keys. One requirement to become a
+member of the Debian project is to have a GPG key signed by a Debian
+developer. Every time one Debian developer meets another developer
+for the first time, they sign each other's keys. In this way, the web
+of trust is woven.
+</p>
+</sect>
+
+<sect id="difference">
+ <heading>Differences from other distributions</heading>
+
+<p>
+<list>
+ <item>Debian is not a company, but an organisation.</item>
+ <item>It does not sell anything.</item>
+ <item>Debian members are volunteers.</item>
+ <item>Maintainers are working on the common goal:
+ to build the best operating system they can achieve.</item>
+ <item>Debian maintains the largest collection of ready-to-install Free
+ Software on the Internet.</item>
+ <item>There are two ways to obtain Debian GNU/Linux:
+ <enumlist>
+ <item>Buy it from some <em>other</em> distributor on
+ CD. Perhaps the correct term would be
+ <em>re</em>distributor. Because Debian is free, anybody can
+ build his own distribution based on it, sell CDs, and even
+ add new features, such as printed documentation, more software,
+ support for different installers and more.
+ </item>
+ <item>Download Debian from the web for free.</item>
+ </enumlist>
+ The latter is the common way, and there are really great tools
+ to do it this way. Certainly it is always possible to copy Debian
+ from a friend.
+ </item>
+</list>
+</p>
+ </sect>
+
+<sect id="CDD">
+ <heading>Custom Debian Distributions</heading>
+
+<p>
+Debian contains nearly 10000 binary packages, and this number is
+constantly increasing. There is no single user who needs all these
+packages (even if conflicting packages are not considered).
+</p>
+<p>The normal user is interested in a subset of these packages. But
+how does the user find out which packages are really interesting?
+</p>
+<p>
+One solution is provided by the <package>tasksel</package> package. It
+provides a reasonable selection of quite general tasks that can be
+accomplished using a set of packages installed on a Debian GNU/Linux system.
+But this is not really fine grained, and does not address all of the needs of
+user groups with special interests.
+</p>
+<p>
+<em>Custom Debian Distributions</em> (formerly known as Debian Internal
+Projects) try to provide a solution for <em>special groups of target
+users with different skills and interests</em>.
+<!-- BA: Somehow this "They are" snuck in. It is not grammatically correct.
+ I have reverted it to my wording. If you think it still needs fixing,
+ please fix it in a way that obeys the rules of English grammar. :) -->
+Not only do
+they provide handy collections of specific program packages, but they
+also ease installation and configuration for the intended purpose.
+</p>
+<p>
+To clarify a common misunderstanding: Custom Debian Distributions are
+<strong>not forks</strong> from Debian. They are completely included,
+and if you obtain the complete Debian GNU/Linux distribution, you have
+all available Custom Debian Distributions included.
+</p>
+</sect>
+
+</chapt>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
Added: cdd/tags/cdd/0.4.5/doc/en/03_general_ideas.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/03_general_ideas.sgml Sun Jan 6 15:44:05 2008
@@ -0,0 +1,342 @@
+<chapt id="general">
+ <heading>General ideas</heading>
+
+
+ <sect id="lookbeyond">
+ <heading>Looking beyond</heading>
+
+ <p>
+ Commercial Linux distributors sell certain products that try to
+ address special user needs.
+
+ <taglist>
+ <tag>Enterprise solutions</tag>
+ <item>
+ <list>
+ <item>Corporate Server - Mandrake</item>
+ <item>Advanced Server - RedHat</item>
+ <item>Enterprise Server - SuSE</item>
+ </list>
+ </item>
+ <tag>Small Office and Home Office (SOHO)</tag>
+ <item>There are a couple of workstation or home editions, as well as
+ office desktops built by several GNU/Linux distributors.</item>
+ <tag>Special task products</tag>
+ <item>
+ <taglist>
+ <tag>Mail server</tag>
+ <item>SuSE Linux Openexchange Server</item>
+ <tag>Firewall</tag>
+ <item>Multi Network Firewall - Mandrake, SuSE Firewall on CD,
+ ...</item>
+ <tag>Cluster</tag>
+ <item>Mandrake Clustering</item>
+ <tag>Content Management System</tag>
+ <item>RedHat</item>
+ <tag>Portal Server</tag>
+ <item>RedHat</item>
+ </taglist>
+ </item>
+</taglist>
+
+This is only a small set of examples of commercial GNU/Linux
+distributors addressing specific user interests with certain
+products.
+</p>
+<p>
+Debian solves this problem with
+<strong>Custom Debian Distributions</strong>.
+</p>
+
+ </sect>
+
+ <sect id="motivation">
+ <heading>Motivation</heading>
+
+ <sect1 id="userprofile">
+ <heading>Profile of target users</heading>
+
+<p>
+The target user of a Custom Debian Distribution may be a specialist
+of a certain profession, (e.g. a doctor or lawyer,) a
+person who has not (yet) gathered a certain amount of computer
+knowledge, (e.g. a child,) or a person with disabilities (e.g.
+a visually or hearing impaired person.) Moreover, the customisation
+might deal with peculiarities of certain regions where users have needs
+that differ from Debian as a whole.
+</p>
+<p>
+It is not unusual for these target users to be less technically
+competent than the stereotypical Linux user. These people are
+often not interested in the computer for its own sake, but just
+want it to work for them. Imagine the frustration of a doctor who
+has to move the focus of interest from the patient to his stupid
+computer that does not work as expected.
+</p>
+<p>
+Because of limited knowledge or time, the target user is usually unable to
+install upstream programs. This means that in the first place, they must find
+out which software packages in their distribution might serve for a certain
+problem. The next step would be to download and install the packages they
+choose, perhaps requiring a certain amount of configuration effort. This
+problem is nearly impossible for a user with limited technical competence
+and perhaps poor English language comprehension, which prevents the user from
+understanding the installation manual.
+</p>
+<p>
+The language barrier in this field is an important issue, because we
+are targeting everyday users who are not compelled to learn English,
+like Free Software developers are, for everyday communication. So the
+installation process has to involve the least possible user
+interaction, and any such interaction has to be internationalised.
+</p>
+<p>
+Furthermore, most target users have no or little interest in
+administration of their computer. In short, the optimal situation
+would be that he would not even notice the existence of the computer,
+but just focus on using the application to accomplish the task at hand.
+</p>
+<p>
+Common to all groups of target users is their interest in a defined
+subset of available Free Software. None of them would like to spend
+much time searching for the package that fits his interest.
+Instead, the target user would prefer to immediately and effortlessly
+locate and access all material relevant to solving his own problems.
+</p>
+<p>
+There is an absolute need for easy usage of the programs. This is not
+to say users expect to not have to learn to use the software. Adults
+generally accept that they must spend a reasonable amount of time in
+learning how to use a piece of software before they can do something
+useful and productive with it. But a simple-to-learn
+environment greatly enhances the value of the software, and if you
+consider children as target users, they just want to start using it
+right away without reading any documentation.
+</p>
+<p>
+The more important part of the request for easy usage is a
+professional design that is functional and effective. To accomplish
+this, the programmers need expert knowledge, or at least a quick
+communication channel to experts to learn more about their
+requirements. One task for Custom Debian Distributions is to bring
+programmers and experts who will use those special programs together.
+</p>
+<p>
+Last, but not least, we find certain requirements beyond just which packages
+are provided in each target user group. These may differ between different
+Custom Debian Distributions. For instance, while a doctor has to protect his
+database against snooping by outside attackers, the privacy risk for a child's
+system are of lesser importance. Thus, the Debian Junior project cares more
+for ensuring that the user himself does not damage the desktop environment
+while playing around with it than about remote attacks. So we find a "defined
+security profile" for each single Custom Debian Distribution.
+</p>
+</sect1>
+
+ <sect1 id="adminprofile">
+ <heading>Profile of target administrators</heading>
+
+<p>
+In the field that should be covered by Custom Debian Distributions, we
+have to face also some common problems for system administrators. Often
+they have limited time in which they must serve quite a number of computers,
+and thus they are happy about each simplification of the administration
+process. The time required to make special adaptations for the intended
+purpose has to be reduced to a minimum.
+</p>
+<p>
+So, administrators are looking for timesaving in repetitive
+tasks. While this is a common issue for each general GNU/Linux
+distribution, this could have certain consequences in the special
+fields Custom Debian Distributions want to address.
+</p>
+<p>
+Another problem administrators face is that they are often not experts in
+their clients' special field of work. Thus, they may need some specialist
+knowledge to explain the use of special programs to their users, or at
+least need to be able to communicate well with the experts about their
+special needs, and how the software can be used to address them.
+</p>
+</sect1>
+
+</sect>
+
+<sect id="status">
+ <heading>Status of specialised Free Software</heading>
+
+<p>
+Programs like a web server, or a mail user agent are used by many
+different users. That is why many gifted programmers feel obliged for
+this kind of Free Software - they just need it for their own. So you
+normally find a fast, growing community around Free Software packages
+that have a wide use. This is different for specialised software.
+</p>
+<p>
+In this context, the term "specialised software" refers to the kind
+of software that is needed by some experts for their job. This might
+be a practice management system that is used by doctors, a graphical
+information system (GIS) that is used by geographers, a screen reader
+that helps blind people to work with the computer, etc. The
+difference between such software and widely used software like office
+suites is that the user base is relatively small. This is
+also true for certain software that supports special localisation
+issues.
+<list>
+ <item>
+Specialist software is used only by a limited set of users (i.e. the
+specialists). There exists a set of software tools that work perfectly in the
+environment where they were developed. If the developers catch the idea of
+Free Software, and just release this software as-is, people in the new, broader
+user community often run into trouble getting it to work in their environment.
+This happens because the developers did not really care about a robust
+installation process that works outside their special environment. As well,
+installation instructions are often badly written, if they exist at all. But
+these problem can be easily solved by shipping the software as policy-compliant
+binary packages, which not only ease installation, but also require
+documentation to be included. Thus, mere inclusion in Debian benefits the whole
+user base of any specialised software.
+</item>
+<item>
+The trouble often continues in the maintenance of the installed software.
+</item>
+<item>
+When it comes to the usage of the specialist software, it often happens that it
+perfectly fits the needs of the developer who wrote it for his own purposes,
+and who is familiar with its quirks, but in many cases such software does not
+comply with ergonomic standards of user interfaces.
+</item>
+<item>
+Several existing programs that might be useful for specialists are
+not really free in the sense of the <url
+id="http://www.debian.org/social_contract#guidelines" name="Debian
+Free Software Guidelines (DFSG)">. Programs that are incompatible
+with the DFSG cannot be included in Debian. This is possibly a
+drawback for those programs, because they could profit by spreading
+widely on the back of Debian over the whole world.
+</item>
+<item>
+A certain number of programs are developed at universities by
+students or graduates. Once these people leave the university, the programs
+they developed might be orphaned; <em>i.e.</em>, not actively maintained
+anymore. If their licenses are too restrictive, it may be impossible
+for anyone else to take over; sticking to
+<comment>AT: We should find a way to avoid printing the URL in PDF output.</comment>
+<url id="http://www.debian.org/social_contract#guidelines"
+name="DFSG">-free licenses avoids that problem.
+</item>
+<item>
+In special fields, often "typical" (not necessarily Intel-based)
+hardware architectures are used. Debian currently runs on 11
+different architectures, and automatic build servers normally compile
+software packages as necessary. If auto-builders for other
+architectures show problems, Debian maintainers will normally fix them,
+and send the original authors a patch. Moreover, users can report
+run-time problems via the
+<url id="http://www.debian.org/Bugs/" name="Debian Bug Tracking System">.
+</item>
+<item>
+Many programs that are written from scratch use their own
+non-standard file formats. However, it is often important for
+programs to be able to share data with each other.
+</item>
+<item>
+Often there are several programs that try to solve identical or similar
+problems. The <url
+id="http://people.debian.org/~tille/debian-med/talks/paper/debian-med.html"
+name="paper about Debian-Med"> illustrates this in detail for the
+problem of medical practice management. Normally, all these programs
+take very interesting approaches but all of them have certain
+drawbacks. So, joining programmers' forces might make sense here.
+</item>
+<item>
+Sometimes the tools or back-ends used in Free Software are not
+appropriate for such applications. For instance, sometimes
+database servers that do not use transactions are used to store
+medical records, which is completely unacceptable. Other programs use web
+clients as their front-end, which is not really good for quick (mouse-less)
+usage, a great shortcoming for repetitive tasks.
+</item>
+</list>
+</p>
+</sect>
+
+ <sect id="general_problem">
+ <heading>General problem</heading>
+<p>
+Free Software development is a kind of evolutionary process. It needs a
+critical mass of supporters, who are:
+<list>
+ <item>programmers <em>and</em></item>
+ <item>users</item>
+</list>
+Because specialised software has a limited set of users, (specialists,)
+this results in a limited set of programmers.
+</p>
+<p>
+Debian wants to attract both groups to get it working.
+</p>
+<p>
+<strong>Debian is the missing link between upstream developers and users.</strong>
+</p>
+</sect>
+
+ <sect id="philosophy">
+ <heading>Custom Debian Distributions from philosophical point of view</heading>
+<p>
+Debian currently grows in several directions:
+
+<list>
+ <item>Number of involved people</item>
+ <item>Number of packages</item>
+ <item>Number of architectures</item>
+ <item>Number of bugs</item>
+ <item>Number of users</item>
+ <item>Number of derivatives</item>
+ <item>Time span between releases</item>
+</list>
+
+So several features are changing at different rates their quantity.
+According to Hegel a change of quantity leads into a change in
+quality. That means that Debian will change at a certain point in
+time (or over a certain time span) its quality.
+</p>
+<p>
+"To determine at the right moment the critical point where
+ quantity changes into quality is one of the most important and
+ difficult tasks in all the spheres of knowledge." (Trotzki) This
+ might mean that we just passed the point in time when Debian changed
+ its quality. At one point we even observed a change once the package
+ pool system was implemented to cope with the increased number of
+ packages while trying to reduce the time span between releases. Even
+ if the plan to increase the frequencies of releases failed Debian
+ became a new quality. People started using the <file>testing</file>
+ distribution even in production which was not really intended and in
+ a consequence even security in <file>testing</file> was implemented
+ for Sarge.
+</p>
+<p>
+According to Darwin evolution happens through quantitative
+transformations passing into qualitative. So Debian has to evolve and
+to cope with the inner changes and outer requirements to survive in
+the Linux distribution environment.
+</p>
+</sect>
+</chapt>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
Added: cdd/tags/cdd/0.4.5/doc/en/04_existing_cdds.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/04_existing_cdds.sgml Sun Jan 6 15:44:05 2008
@@ -0,0 +1,512 @@
+<chapt id="existing">
+ <heading>Existing Custom Debian Distributions</heading>
+
+ <sect id="debian-jr">
+ <heading>Debian Junior: Debian for children from 1 to 99</heading>
+
+<p>
+<taglist>
+ <tag>Start</tag>
+ <item>beginning of 2000</item>
+ <tag>URL</tag>
+ <item><url name="Debian Jr." id="http://www.debian.org/devel/debian-jr"></item>
+ <tag>Mailing list</tag>
+ <item><url name=" debian-jr at lists.debian.org" id="http://lists.debian.org/debian-jr/"></item>
+ <tag>Initiator</tag>
+ <item>Ben Armstrong <email>synrg at debian.org</email></item>
+ <tag>Release</tag>
+ <item>Debian 3.0 (Woody)</item>
+ <tag>Goals</tag>
+ <item>
+ <list>
+ <item>To make Debian an OS that children of all ages will <em>want</em>
+ to use, preferring it over the alternatives.</item>
+ <item>To care for those applications in Debian suitable for children,
+ and ensure their quality, to the best of our abilities.
+ <item>To make Debian a playground for children's enjoyment and
+ exploration.</item>
+ </list>
+ </item>
+
+</taglist>
+The main target is young children. By the time children are teenaged, they
+should be comfortable with using Debian without any special modifications.
+</p>
+<p>
+Debian Jr. was the first Custom Debian Distribution. In fact, at the time this
+project was created, the idea of Custom Debian Distributions was born, although then,
+we used the term "internal project". Over time, this name was changed because
+it was too broad, as it was equally descriptive of a number of quite different
+projects, such as IPv6 and QA.
+</p>
+<p>
+Debian Jr. not only provides games, but is also concerned about their quality
+from a child's perspective. Thus, games that are regarded as not well suited
+to young children are omitted. Moreover, choices are made about which packages
+are best suited for children to use for various other activities and tasks that
+interest them. This includes, for example, simple text processing, web browsing
+and drawing.
+</p>
+</sect>
+
+
+ <sect id="debian-med">
+ <heading>Debian-Med: Debian in Health Care</heading>
+
+<p>
+<taglist>
+ <tag>Start</tag>
+ <item><url name="beginning of 2002" id="http://lists.debian.org/debian-devel/2002/01/msg01730.html"></item>
+ <tag>URL</tag>
+ <item><url name="Debian-Med" id="http://www.debian.org/devel/debian-med"></item>
+ <tag>Mailing list</tag>
+ <item><url name=" debian-med at lists.debian.org" id="http://lists.debian.org/debian-med/"></item>
+ <tag>Initiator</tag>
+ <item>Andreas Tille <email>tille at debian.org</email></item>
+ <tag>Release</tag>
+ <item>Sarge</item>
+ <tag>Goals</tag>
+ <item>
+ <list>
+ <item>To build an integrated software environment for all medical tasks.</item>
+ <item>To care especially for the quality of program packages in the field of medicine
+ that are already integrated within Debian.</item>
+ <item>To build and include in Debian packages of medical software that are missing
+ in Debian.</item>
+ <item>To care for a general infrastructure for medical users.</item>
+ <item>To make efforts to increase the quality of third party Free Software
+ in the field of medicine.</item>
+ </list>
+ </item>
+</taglist>
+
+</sect>
+
+ <sect id="debian-edu">
+ <heading>Debian Edu: Debian for Education</heading>
+
+<p>
+<taglist>
+ <tag>Start</tag>
+ <item>Summer of 2002, since 2003 merged with SkoleLinux, which is now
+ synonymous with Debian Edu</item>
+ <tag>URL</tag>
+ <item><url name="Debian Edu Wiki"
+ id="http://wiki.debian.net/?DebianEdu"></item>
+ <tag>Mailing list</tag>
+ <item><url name=" debian-edu at lists.debian.org" id="http://lists.debian.org/debian-edu/"></item>
+ <tag>Former Initiator</tag>
+ <item>Raphaël Hertzog <email>hertzog at debian.org</email></item>
+ <tag>Now responsible</tag>
+ <item>Petter Reinholdtsen <email>pere at hungry.com</email></item>
+ <tag>Release</tag>
+ <item>Sarge</item>
+ <tag>Goals</tag>
+ <item>
+ <list>
+ <item>To make Debian the best distribution available for educational
+ use.</item>
+ <item>Provide a ready to run classroom installation with free
+ educational software. An automatically installed server
+ provides net-boot services for disk-less thin clients and
+ all necessary applications for educational use.</item>
+ <item>To federate many initiatives around education, which are
+ partly based on forks of Debian.</item>
+ <item>To continue the internationalisation efforts of SkoleLinux.
+ </item>
+ <item>To focus on easy installation in schools.</item>
+ <item>To cooperate with other education-related projects (like
+ <url id="http://schoolforge.net/" name="Schoolforge">,
+ <url id="http://www.ofset.org/" name="Ofset">,
+ <url id="http://edu.kde.org/" name="KdeEdu">).</item>
+ </list>
+ </item>
+</taglist>
+
+This project started with the intention to bring back into Debian a fork from
+Debian that was started by some people in France. Because they had some
+time constraints, the people who initially started this effort
+handed over responsibility to the Norwegian <url name="Skolelinux"
+id="http://www.skolelinux.org">, which is currently more or less
+identical to Debian Edu.
+</p>
+<p>
+The Debian Edu project gathered special interest in Spain because
+there are derived Debian distributions from this country that are
+intended to be used in schools. For instance there are:
+ <taglist>
+ <tag><url id="http://www.linex.org/" name="LinEX"></tag>
+ <item><p>A Debian derivative distribution used in all schools in
+ Extremadura.</p>
+ <p>Currently a fruitful cooperation between Debian Edu and
+ LinEX is established.
+ </p>
+ </item>
+ <tag><url id="http://www.lliurex.net/" name="LliureX"></tag>
+ <item>A Debian derivative distribution in development to be used in
+ schools in Valencia. The goal is to integrate as much as
+ <!-- [BA] This is a difficult passage to interpret. What does "integrate
+ as much as possible as a CDD" mean? Does it mean they mean to literally
+ produce a CDD (impossible if they remain a derivative)? Or does it mean
+ they are going to "give back" their work into Debian so it could be
+ incorporated into a CDD (debian-edu itself?) Or something else?
+ [AT] More or less something else. They have not really
+ settled down what to do and how to proceed which I wanted to
+ say by "in development". I hope they will follow the
+ Debian Edu way (which I regard as a very clever solution as
+ close as possible but they have to respect local government
+ issues and perhaps need some stuff which can not be
+ integrated. We have to wait a little bit until they have
+ found a decision.
+ -->
+ possible as a Custom Debian Distribution.</item>
+ <tag><url id="http://www.guadalinex.org/" name="Guadalinex"></tag>
+ <item>This distribution is not only related to education, but might
+ try also to integrate what they have produced back into Debian.</item>
+ </taglist>
+</p>
+</sect>
+
+ <sect id="demudi">
+ <heading>DeMuDi: Debian Multimedia Distribution</heading>
+
+<p>
+<taglist>
+ <tag>Start</tag>
+ <item>Currently not announced as an official Custom Debian
+ Distribution, but intends to integrate back. DeMuDi is part of the
+ <url name="Agnula" id="http://www.agnula.org/"> project (founded by European
+ Community) (since 2000).</item>
+ <tag>URL</tag>
+ <item><url name="Demudi"
+ id="http://www.agnula.org/"></item>
+ <tag>Initiator</tag>
+ <item>Marco Trevisani <email>marco at centrotemporeale.it</email></item>
+ <tag>Goals</tag>
+ <item>
+ <list>
+ <item>To bring back this fork into Debian.</item>
+ <!-- [BA] This is not a goal. However, I don't know how to fix it. The
+ DeMuDi site was no help, as I couldn't find goals for the project listed
+ there. Perhaps the point should just be stricken?
+ [AT] I just wanted to express the fact that I got the word
+ that the first meta-packages are in preparation by Free Enkanayaka.
+ -->
+ <item>Oriented toward music and multimedia.</item>
+ <item>To make GNU/Linux a platform of choice for the musician
+ and the multimedia artist.</item>
+ </list>
+ </item>
+</taglist>
+
+The initiator is not yet a Debian developer, but it is possible to work on
+Debian without being an official developer.
+</p>
+</sect>
+
+<sect id="debian-gis">
+ <heading>Debian-GIS: Geographical Information Systems</heading>
+<p>
+<taglist>
+ <tag>Start</tag>
+ <item><url name="October 2004" id="http://lists.debian.org/debian-devel-announce/2004/10/msg00007.html"</item>
+ <tag>URL</tag>
+ <item><url name="DebianGIS Wiki"
+ id="http://wiki.debian.org/DebianGis"></item>
+ <tag>Mailing list</tag>
+ <item><url name="user and developer list" id="http://wiki.debian.org/DebianGis/MailingLists"></item>
+ <tag>Initiator</tag>
+ <item>Francesco P. Lovergine <email>frankie at debian.org</email></item>
+</taglist>
+</p>
+</sect>
+
+<sect id="debichem">
+ <heading>DebiChem: Debian for Chemestry</heading>
+
+<p>
+<taglist>
+ <tag>Start</tag>
+ <item>October 2004</item>
+ <tag>URL</tag>
+ <item><url name="Debichem Alioth page"
+ id="http://alioth.debian.org/projects/debichem/"></item>
+ <tag>Mailing list</tag>
+ <item><url name="debichem-users at lists.alioth.debian.org" id="http://lists.alioth.debian.org/mailman/listinfo/debichem-users"></item>
+ <tag>Initiator</tag>
+ <item>Michael Banck <email>mbanck at debian.org</email></item>
+</taglist>
+</p>
+
+</sect>
+
+<sect id="debian-science">
+ <heading>Debian-Science: Debian for science</heading>
+
+<p>
+<taglist>
+ <tag>Start</tag>
+ <item><url name="July 2005" id="http://lists.debian.org/debian-devel/2005/07/msg01555.html"></item>
+ <tag>URL</tag>
+ <item><url name="Debian-Science Wiki"
+ id="http://wiki.debian.org/DebianScience"></item>
+ <tag>Mailing list</tag>
+ <item><url name="debian-science at lists.debian.org" id="http://lists.debian.org/debian-science/"></item>
+ <tag>Initiator</tag>
+ <item>Helen Faulkner <email>helen at debian.org</email></item>
+</taglist>
+</p>
+
+<p>
+ While there are Custom Debian Distributions that care for certain
+ sciences (Debian-Med deals in a main part with Biology, DebiChem for
+ Chemestry and Debian-GIS for geography) not all sciences are covered
+ by a specific CDD. The main reason is that at the moment not enough
+ people support such an effort for every science. The temporary
+ solution was to build a general Debian-Science CDD that makes use of
+ the work of other CDDs in case it exists.
+</p>
+</sect>
+
+
+<sect id="stalled-cdds">
+ <heading>CDDs that were announced but development is stalled</heading>
+
+ <sect1 id="debian-desktop">
+ <heading>Debian-Desktop: Debian GNU/Linux for everybody</heading>
+
+<p>
+Motto: "Software that Just Works".
+
+<taglist>
+ <tag>Start</tag>
+ <item>October 2002</item>
+ <tag>URL</tag>
+ <item><url name="Debian-Desktop" id="http://www.debian.org/devel/debian-desktop"></item>
+ <tag>Mailing list</tag>
+ <item><url name=" debian-desktop at lists.debian.org" id="http://lists.debian.org/debian-desktop/"></item>
+ <tag>Initiator</tag>
+ <item>Colin Walters <email>walters at debian.org</email></item>
+ <tag>Goals</tag>
+ <item>
+ <list>
+ <item>To try to build the best possible operating system for home
+ and corporate workstation use.</item>
+ <item>To ensure desktops like GNOME and KDE coexist well in Debian and
+ work optimally.</item>
+ <item>To balance ease of use for beginners with flexibility
+ for experts.</item>
+ <item>To make the system easy to install and configure (e.g. via
+ hardware-detection).</item>
+ </list>
+ </item>
+</taglist>
+
+This Custom Debian Distribution has many common issues with other
+Custom Distributions. The latest move of Debian-Desktop was to care
+about more up to date software that can be used as common base for
+all Custom Debian Distributions. The common interest is described in
+detail in <ref id="new_ways_of_distribution">.
+</p>
+</sect1>
+
+ <sect1 id="debian-lex">
+ <heading>Debian-Lex: Debian GNU/Linux for Lawyers</heading>
+
+<p>
+<taglist>
+ <tag>Start</tag>
+ <item>April 2003</item>
+ <tag>URL</tag>
+ <item><url name="Debian-Lex" id="http://www.debian.org/devel/debian-lex"></item>
+ <tag>Mailing list</tag>
+ <item><url name=" debian-lex at lists.debian.org" id="http://lists.debian.org/debian-lex/"></item>
+ <tag>Initiator</tag>
+ <item>Jeremy Malcolm <email>Jeremy at Malcolm.id.au</email></item>
+ <tag>Goals</tag>
+ <item>
+ <list>
+ <item>To build a complete system for all tasks in legal
+ practice.</item>
+ <item>To add value by providing customised templates for lawyers to
+ existing packages like OpenOffice.org and SQL-Ledger, and
+ sample database schemas for PostgreSQL.
+ </item>
+ </list>
+ </item>
+</taglist>
+The word <em>lex</em> is the Latin word for law.
+</p>
+</sect1>
+
+
+ <sect1 id="debian-np">
+ <heading>Debian-NP: Debian GNU/Linux for Non-profit Organisations</heading>
+
+<p>
+<taglist>
+ <tag>Start</tag>
+ <item>July 2003</item>
+ <tag>URL</tag>
+ <item><url name="Debian-NP" id="http://www.debian.org/devel/debian-nonprofit"></item>
+ <tag>Initiator</tag>
+ <item>Benjamin 'Mako' Hill <email>mako at debian.org</email></item>
+ <tag>Goals</tag>
+ <item>
+ <list>
+ <item>To address requirements of small non-profit organisations.</item>
+ <item>To prepare Debian for desktop use in non-profit organisations.</item>
+ <item>To provide software that solves non-profit tasks such as fund raising,
+ membership lists, and conference organisation.</item>
+ </list>
+ </item>
+</taglist>
+Non-profits are often familiar with Free Software.
+</p>
+</sect1>
+
+
+ <sect1 id="accessibility">
+ <heading>Debian Accessibility Project</heading>
+
+<p>
+Debian for blind and visually impaired people
+
+<taglist>
+ <tag>Start</tag>
+ <item>February 2003</item>
+ <tag>Initiator</tag>
+ <item>Mario Lang <email>mlang at debian.org</email></item>
+ <tag>URL</tag>
+ <item><url name="Debian-Accessibility" id="http://www.debian.org/devel/debian-accessibility/"></item>
+ <tag>Mailing list</tag>
+ <item><url name=" debian-accessibility at lists.debian.org" id="http://lists.debian.org/debian-accessibility/"></item>
+ <tag>Goals</tag>
+ <item>
+ <list>
+ <item>To make Debian accessible to people with disabilities.</item>
+ <item>To take special care for:
+ <list>
+ <item>Screen readers</item>
+ <item>Screen magnification programs</item>
+ <item>Software speech synthesisers</item>
+ <item>Speech recognition software</item>
+ <item>Scanner drivers and OCR software</item>
+ <item>Specialised software like edbrowse (web-browse in the
+ spirit of line-editors)</item>
+ </list>
+ </item>
+ <item>To make text-mode interfaces available.</item>
+ <item>To provide screen reader functionality during installation.</item>
+ </list>
+ </item>
+</taglist>
+
+</p>
+</sect1>
+
+
+ <sect1 id="debian-enterprise">
+ <heading>Debian Enterprise</heading>
+
+<p>
+Debian GNU/Linux for Enterprise Computing
+
+<taglist>
+ <tag>Start</tag>
+ <item>End of 2003</item>
+ <tag>URL</tag>
+ <item>Debian-Enterprise</item>
+ <tag>Initiator</tag>
+ <item>Zenaan Harkness <email>zen at iptaustralia.net</email></item>
+ <tag>Goals</tag>
+ <item>
+ <list>
+ <!-- [BA] The following are stated on the web site as what Debian-Enterprise
+ does, and not as goals. But the goals section on the web site is hard
+ to reduce to specific goals point-by-point. I believe this needs fixing,
+ and perhaps could be improved by talking it over with Zenaan. -->
+ <item>To apply the UserLinux Manifesto.</item>
+ <item>To establish the benchmark in world class Enterprise
+ operating systems engineered within an industry driven
+ shared-cost development model.</item>
+ <item>To vigorously defend its distinctive trademarks and
+ branding.</item>
+ <item>To develop extensive and professional quality
+ documentation.</item>
+ <item>To provide engineer certification through partner
+ organisations.</item>
+ <item>To certify the Debian Enterprise GNU/Linux operating system
+ to specific industry standards.</item>
+ <item>To pre-configure server tasks</item>
+ <!-- [BA] I don't know what this point means, nor can I find it on the
+ web site, so perhaps it should simply be removed.
+ <item>To provide install-time options regarding the intended
+ purpose.</item>
+ [AT] Removed by comment
+ The idea behind it was that it might be interesting to
+ provide some configuration options for certain servers
+ which might have connections to others. For instance Zope
+ can be run behind Apache using some rewriting rules but
+ this is poorly documented and a working example or
+ something else could help here. It was discussed via
+ E-Mail that Debian-Enterprise could provide such
+ "inter-package-connection" configurations as examples.
+ This was badly worded above and not officially stated at
+ their web site, but should not be lost out of focus and
+ should remain here at least as comment. Perhaps you might
+ find a better wording.
+ -->
+ </list>
+ </item>
+</taglist>
+</p>
+
+</sect1>
+
+ <sect1 id="other">
+ <heading>Other possible Custom Debian Distributions</heading>
+<p>
+ There are fields that could be served nicely by not yet existing
+ Custom Debian Distributions:
+ <taglist>
+ <tag>Debian-eGov</tag>
+ <item>Could address government issues, administration, offices of authorities,
+ accounting.</item>
+ <tag>Office</tag>
+ <item>Could cover all office issues.</item>
+ <tag>Accounting</tag>
+ <item>Could integrate accounting systems into Debian.</item>
+ <tag>Biology</tag>
+ <item>Could perhaps take over some stuff from Debian-Med.</item>
+ <tag>Physics</tag>
+ <item>Might look after simulation software.</item>
+ <tag>Mathematics</tag>
+ <item>There is even already a live CD - see Quantian in <ref id="liveCD"></item>
+ <tag>???</tag>
+ <item>There are a lot more potential Custom Debian Distributions.</item>
+ </taglist>
+</p>
+</sect1>
+
+</sect>
+
+</chapt>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
Added: cdd/tags/cdd/0.4.5/doc/en/05_inside.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/05_inside.sgml Sun Jan 6 15:44:05 2008
@@ -0,0 +1,263 @@
+<chapt id="inside">
+ <heading>Distributions inside Debian</heading>
+
+ <sect id="fork">
+ <heading>To fork or not to fork</heading>
+
+<p>
+There are many distributions that decided to fork from a certain
+state of Debian. This is perfectly all right because Debian is
+completely free and everybody is allowed to do this. People who
+built those derived distributions had certain reasons to proceed
+this way.
+</p>
+
+ <sect1 id="commercialfork">
+ <heading>Commercial forks</heading>
+
+<p>
+If Debian should be used as the base for a commercial distribution
+like
+ <url id="http://www.linspire.com/" name="Linspire"> (formerly Lindows),
+ <url id="http://www.libranet.com/" name="Libranet"> or
+ <url id="http://www.xandros.com/" name="Xandros">,
+there is no other choice than forking because these companies
+normally add some stuff that is non-free. While Custom Debian
+Distributions might be interesting in technical terms for those
+commercial distributions by making it easier to build a separate
+distribution, these non-free additions are not allowed to be integrated
+into Debian, and thus integration into Debian is impossible.
+</p>
+ </sect1>
+
+ <sect1 id="noncommercialfork">
+ <heading>Non-commercial forks</heading>
+
+<p>
+Custom Debian Distributions are a solution for derivatives from Debian
+that are as free as Debian but had certain reasons to fork.
+Most of these reasons existed in the past but have now vanished because
+Debian is becoming easier to adapt for special
+purposes. To increase this flexibility, the Custom Debian
+Distributions approach was invented. Some examples of forks from
+Debian that are probably now able to integrate back into Debian are:
+
+<taglist>
+ <tag><url id="http://www.skolelinux.org" name="SkoleLinux"></tag>
+ <item>Mentioning SkoleLinux in the category of forks is more or less
+ history. The merge back into Debian started with the SkoleLinux
+ people really doing a great job to enhance Debian for their own
+ purposes in the form of their work on debian-installer, and
+ culminated with the formal merging of the Custom Debian Distribution
+ Debian-Edu and SkoleLinux, so that they are now virtually equivalent.
+ This is the recommended way for forked distributions, and the
+ reasons for this recommendation are given below.
+ </item>
+ <tag>DeMuDi</tag>
+ <item>The <url name="Agnula"
+ id="http://www.agnula.org/"> project, which is founded by the
+ European Community, (and in fact is the first Free Software project
+ that was founded by the EU at all,) forked for the
+ following reasons:
+ <taglist>
+ <tag>Technical</tag>
+ <item>They had some special requirements for the kernel and
+ configuration. This is more or less solved in the
+ upcoming Debian release.</item>
+ <tag>License</tag>
+ <item>When DeMuDi started, not enough free programs in this
+ field existed. This situation is better now.</item>
+ <tag>Organisational</tag>
+ <item>Because of the founded status of the project, an extra
+ distribution had to be developed. To accomplish this
+ requirement, Custom Debian Distributions plan to build common
+ tools to facilitate building separate CDs with the
+ contents of only a single distribution.</item>
+ </taglist>
+ This shows that there is no longer a real need for a fork, and
+ in fact, the organiser of the DeMuDi project is in contact to
+ start bringing DeMuDi back into Debian. (That is why DeMuDi is
+ mentioned in the list of Custom Debian Distributions above.)
+ </item>
+ <tag>LinEx</tag>
+ <item>LinEx is the very successful Distribution for schools in the
+ Region Extremadura in Spain. The work of the LinEx people
+ perhaps made Debian more popular than any other distribution.
+ The project was founded by the local government of Extremadura,
+ and each school in this region is running this distribution.
+ While this is a great success, the further development of LinEx
+ has to face the problems that will be explained below. So it
+ might be worth considering following the path of SkoleLinux to
+ integrate the needed stuff back into Debian. The LinEx people
+ just did the first step, for instance, to try to get a free
+ license for the very nice program
+ <url id="http://www.squeak.org/" name="Squeak">.
+ </item>
+</taglist>
+</p>
+<p>
+If developers of a non-commercial fork consider integrating back into
+Debian in the form of a Custom Debian Distribution, it might happen
+that their field is covered already by a Custom Debian Distribution. For
+instance, this would be the case for LinEx, which has exactly the
+same group of target users as Debian-Edu. On the other hand, some special
+adaptations might be necessary to fit the requirements of the local
+educational system. The specific changes that might be necessary
+would be called <strong>flavours</strong> of a Custom Debian
+Distribution.
+</p>
+ </sect1>
+
+ <sect1 id="disadvantages">
+ <heading>Disadvantages of separate distribution</heading>
+
+<p>
+In general, a separate distribution costs extra effort. Because it is
+hardly possible to hire enough developers who can double the great
+work of many volunteer Debian developers, this would be a bad idea for
+economical reasons. These people would have to deal with continuous
+changes to keep the base system, installer, etc. up to date with the
+current Debian development. It would be more sane to send patches that
+address their special requirements to Debian instead of
+maintaining a complete Debian tree containing these patches.
+</p>
+<p>
+Debian is well known for its strong focus on security. Security is
+mainly based on manpower and knowledge. So the best way to deal with
+security issues would be to base it on the Debian infrastructure,
+instead of inventing something new.
+</p>
+<p>
+New projects with special intentions often have trouble to become
+popular to the user group they want to address. This is a matter of
+attaining the critical mass that was explained in <ref id="general_problem">.
+</p>
+<p>
+Larger Free Software projects need certain infrastructure like
+web servers, ftp servers, (both with mirrors,) a bug tracking system,
+etc. It takes a fair amount of extra effort to build an entire infrastructure
+that is already available for free in Debian.
+</p>
+<p>
+<strong>Forking would be a bad idea.</strong>
+</p>
+ </sect1>
+
+ <sect1 id="advantages">
+ <heading>Advantages of integration into Debian</heading>
+
+<p>
+Debian has a huge user base all over the world. Any project that is
+integrated within Debian has a good chance to become popular on the back
+of Debian if the target users of the project just notice that it
+enables them to solve their problems. So there is no
+need for extra research on the side of the users, and no need for
+advertising for a special distribution. This fact has been
+observed in the Debian-Med project, which is well known for many
+people in medical care. It would not have gained this popularity if
+it had been separated from Debian.
+</p>
+<p>
+You get a secure and stable system without extra effort for free.
+</p>
+<p>
+Debian offers a sophisticated Bug Tracking System for free, which is a
+really important resource for development.
+</p>
+<p>
+There is a solid infrastructure of web servers, ftp servers with
+mirrors, mail servers, and an LDAP directory of developers with a strongly
+woven web of trust (through gpg key signing) for free.
+</p>
+</sect1>
+
+ <sect1>
+ <heading>Enhancing Debian</heading>
+
+<p>
+By making changes to some packages to make them fit the needs of a target
+user group, the overall quality of Debian can be enhanced. In this way,
+enhancing Debian by making it more user friendly is a good way for
+the community to give back something to Debian. It would be a shame
+if somebody would refuse all the advantages to keeping a project
+inside Debian, and instead would decide to try to cope with the disadvantages
+because he just does not know how to do it the right way, and that it is
+normally easy to propogate changes into Debian. For instance, see
+<ref id="howto_itp">. This section explains how you can ask for
+a certain piece of software to be included in Debian.
+The next section describes the reason why Debian is flexible enough
+to be adapted to any purpose.
+</p>
+
+</sect1>
+</sect>
+
+ <sect>
+ <heading>Adaptation to any purpose</heading>
+
+<p>
+Debian is developed by about 1000 volunteers. Within this large group,
+the developers are encouraged to care for their own interests in packages
+they have chosen to look after. Thus, Debian is not bound to commercial
+interests.
+</p>
+<p>
+Those who might fear this amount of freedom given to every single developer
+should realize that there are very strict rules, as laid out in
+<url id="http://www.debian.org/doc/debian-policy/" name ="Debian's policy">,
+which glue everything together. To keep their packages in each new
+release, every developer must ensure that their packages abide by that policy.
+</p>
+<p>
+One common interest each individual developer shares is to make the
+best operating system for himself. This way, people with similar
+interests and tasks profit from the work of single developers. If
+users, in turn, work together with the developers by sending patches or
+bug reports for further enhancement, Debian can be improved also for
+special tasks.
+</p>
+<p>
+For instance, developers may have children, or may work in some
+special fields of work, and so they try to make the best system for
+their own needs. For children, they contribute to Debian Jr. or
+Debian-Edu. For their field of work, they contribute to the appropriate
+CDD: Debian-Med, Debian-Lex, and so forth.
+</p>
+<p>
+In contrast to employees of companies, every single Debian developer
+has the freedom and ability to realize his vision. He is not bound to
+decisions of the management of his company. Commercial distributors
+have to aim their distributions at gaining a big market share. The
+commercial possibilities in targeting children's PCs at home are
+slight, so distributions comparable to Debian-Junior are not attractive
+for commercial distributors to make.
+</p>
+<p>
+Thus, single developers have influence on development - they just have
+to <strong>do</strong> it, which is a very different position compared
+with employees of a commercial distributor. This is the reason for the
+flexibility of Debian that makes it adaptable for any purpose. In
+the Debian world, this kind of community is called
+"<em><strong>Do</strong>ocracy</em>" - the one who does, rules.
+</p>
+ </sect>
+
+</chapt>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
Added: cdd/tags/cdd/0.4.5/doc/en/06_technology.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/06_technology.sgml Sun Jan 6 15:44:05 2008
@@ -0,0 +1,795 @@
+<chapt id="technology">
+ <heading>Technology</heading>
+
+ <sect id="metapackages">
+ <heading>Meta packages</heading>
+
+ <sect1 id="defmetapackages">
+ <heading>Meta package definition</heading>
+
+<p>
+A meta package, as used by CDDs, is a Debian package that contains:
+<list>
+ <item>Dependencies on other Debian packages (essential)
+ <taglist>
+ <tag>Depends</tag>
+ <item><p>Use "Depends" for packages that are definitely needed
+ for all basic stuff of the CDD in question.</p>
+ <p>Remark: For
+ <package>cdd-dev</package> versions < 0.4 the list of
+ packages that should be installed for a certain task was
+ declared as "Depends". This is now changed te enable
+ installing the meta-package even if a package belongig
+ to this task is missing for whatever reason. It also
+ allows finally to remove the meta package. The change
+ makes even more sense since <prgn>apt-get</prgn>
+ considers "Recommends" as default installation targets.
+ </p>
+ <p>
+ The above behaviour is enforced by
+ <package>cdd-dev</package> which changes "Depends" that
+ are given in the tasks files into "Recommends".
+ </p>
+ </item>
+ <tag>Recommends</tag>
+ <item>The packages that are listed as "Recommends" in the
+ tasks file should be installed on the machine where the
+ meta package is installed and which are needed to work
+ on a specific task.
+ </item>
+ <tag>Suggests</tag>
+ <!-- [BA] Why would we suggest non-free? Doesn't policy allow a non-free
+ package to specify "Enhances" to avoid this problem?
+ [AT] I have to admit that "Enhances" is new to me. When
+ reading policy I think this field is out of control of
+ the meta-package developer because it has to be included
+ by the package maintainer. I'm not really convinced that
+ this is a good solution - but I would follow the suggestions
+ of others in this issue.
+ -->
+ <item>Use "Suggests" for others of lesser importance that
+ might be possibly useful, or non-free packages. When a
+ package is not available for the target distribution at
+ meta package build time the "Recommends" is turned into
+ a "Suggests" to enable a flawless installation of the
+ meta package.
+ </item>
+ </taglist>
+ </item>
+ <item>Menu entries (recommended)
+ <list>
+ <item>Place these in <file>/etc/cdd/<var><cdd></var>/menu/<var><pkg-name></var></file>
+ <item>Maintain these via role based tools</item>
+ </list>
+ </item>
+ <item>Configuration stuff (optional)
+ <list>
+ <item><prgn>debconf</prgn> questions or pre-seeding</item>
+ <item><prgn>cfengine</prgn> scripts (or similar see <ref id="EnhancingTechnology">)</item>
+ </list>
+ </item>
+ <item>Special meta packages:
+ <list>
+ <item><package><var><cdd></var>-tasks</package>:
+ Contains information for <prgn>tasksel</prgn></item>
+ <item><package><var><cdd></var>-config</package>:
+ Special configurations, basic stuff for user menus</item>
+ </list>
+ </item>
+</list>
+</p>
+<p>
+Meta packages are small packages with nearly no contents. The main
+feature of this type of package is its dependencies on other
+packages. The naming of meta packages follows the pattern
+<var><cdd></var>-<var><task></var> where <var><cdd></var> stands for the
+short name of a Custom Debian Distribution,
+e.g. <package>junior</package> for Debian Jr. or <package>med</package>
+for Debian-Med, and <var><task></var> means the certain task inside the
+Custom Debian Distribution, e.g. puzzle or bio.
+</p>
+<p>
+Examples:
+<taglist>
+ <tag><package>junior-puzzle</package></tag>
+ <item>Debian Jr. Puzzles</item>
+ <tag><package>education-tasks</package></tag>
+ <item>Tasksel files for SkoleLinux systems</item>
+ <tag><package>med-bio</package></tag>
+ <item>Debian-Med micro-biology packages</item>
+</taglist>
+</p>
+
+
+ <sect1 id="collection">
+ <heading>Collection of specific software</heading>
+
+<p>
+When using meta packages, no research for available software inside Debian is
+necessary. It would not be acceptable for normal users to have to browse the
+descriptions of the whole list of the 10000 packages in Debian to find
+everything they need. So, meta packages are an easy method to help users to
+find the packages that are interesting for their work quickly.
+</p>
+<p>
+If the author of a meta package includes several packages with similar
+functionality, an easy comparison between software covering the same task is
+possible.
+</p>
+<p>
+Moreover, the installation of a meta package ensures that no package
+that is necessary for the intended task can be removed without
+explicit notice that also the meta package has to be removed. This
+helps non specialist administrators to keep the installation fit for
+the specialized users.
+</p>
+<p>
+By defining conflicts with some other packages inside the meta package,
+it is possible to ensure that a package that might conflict for some
+reasons for the intended task can not be installed at the same time as
+the meta package is installed.
+</p>
+<p>
+All in all, meta packages enable an easy installation from scratch, and
+keep the effort required for administration low.
+</p>
+ </sect1>
+
+ <sect1 id="configuration">
+ <heading>Adapted configuration inside meta packages</heading>
+
+<p>
+Besides the simplification of installing relevant packages by
+dependencies inside meta packages, these packages might contain special
+configuration for the intended task. This might either be
+accomplished by pre-seeding <prgn>debconf</prgn> questions, or by
+modifying configuration files in a <prgn>postinst</prgn> script. It
+has to be ensured that no changes that have been done manually by the
+administrator will be changed by this procedure. So to speak, the
+<prgn>postinst</prgn> script takes over the role of a local
+administrator.
+<!-- FIXME:
+ An improved version of the pre-seeding scripts are included in newer
+ debconf versions. I just replaced the debian-edu scripts with the
+ scripts from debconf. Look at debconf-set-selections and
+ debconf-get-selections.
+ -->
+</p>
+
+ </sect1>
+
+ <sect1 id="documentation">
+ <heading>Documentation packages</heading>
+
+<p>
+A "traditional" weakness of Free Software projects is missing
+documentation. To fix this, Custom Debian Distributions try to provide
+relevant documentation to help users to solve their problems. This
+can be done by building <package>*-doc</package> packages of existing
+documentation, and by writing extra documentation, like manpages, etc. By
+supplying documentation, Custom Debian Distributions fulfil
+their role in addressing the needs of specialised users, who have a great
+need for good documentation in their native language.
+</p>
+<p>
+Thus, translation is a very important thing to make programs more
+useful for the target user group. Debian has established a <url
+id="http://ddtp.debian.net/" name="Debian Description Translation
+Project">, which has the goal to translate package descriptions. There
+is a good chance this system could also be used for other types of
+documentation, which might be a great help for Custom Debian
+Distributions.
+</p>
+
+ </sect1>
+ </sect>
+
+ <sect id="mp_handling">
+ <heading>Handling of meta packages</heading>
+
+<p>
+<!-- [BA] I think we need to qualify what 'handle' means, because there
+ certainly are other tools that 'handle' them (e.g. synaptic) if that term
+ is taken in its broadest sense.
+ [AT] ACK, here that we have to define 'handle'. The term
+ 'nicely' was intended to be the keyword because meta-packages are
+ currently handled as any other package which is fine, but no help
+ for users who do not know anything about meta-packages. We need
+ special tools to gain all profits we could have. Could you set
+ this into good English???
+ -->
+In short, there are no special tools available to handle meta packages
+nicely. But there are some tricks that might help, for the moment.
+</p>
+
+ <sect1 id="cmdline">
+ <heading>Command line tools</heading>
+
+<p>
+<taglist>
+ <tag><prgn>apt-cache</prgn></tag>
+ <item>
+ The program <prgn>apt-cache</prgn> is useful to search for
+ relevant keywords in package descriptions. With it, you could search
+ for a certain keyword connected to your topic (for instance
+ "<tt>med</tt>") and combine it reasonably with <prgn>grep</prgn>:
+ <example>
+~> apt-cache search med | grep '^med-'
+med-bio - Debian-Med micro-biology packages
+med-common-dev - Debian-Med Project common files for developing...
+med-dent - Debian-Med package for dental practice client
+med-doc - Debian-Med documentation packages
+med-imaging - Debian-Med imaging packages
+med-imaging-dev - Debian-Med packages for medical image develop...
+med-tools - Debian-Med several tools
+med-bio-contrib - Debian-Med micro-biology packages (contrib an...
+med-common - Debian-Med Project common package
+med-cms - Debian-Med content management systems
+ </example>
+ This is <strong>not really straightforward</strong>, and
+ absolutely unacceptable for end users.
+ </item>
+ <tag><prgn>grep-dctrl</prgn></tag>
+ <item>
+ The program <prgn>grep-dctrl</prgn> is a grep for Debian package
+ information, which is helpful for extracting specific package details
+ matching certain patterns:
+ <example>
+~> grep-dctrl ': med-' /var/lib/dpkg/available | \
+ grep -v '^[SIMAVF]' | \
+ grep -v '^Pri'
+Package: med-imaging
+Depends: paul, ctsim, ctn, minc-tools, medcon, xmedcon, med-common
+Description: Debian-Med imaging packages
+
+Package: med-dent
+Depends: debianutils (>= 2.6.2), mozilla-browser | www-browser, ...
+Description: Debian-Med package for dental practice client
+
+Package: med-bio
+Depends: bioperl, blast2, bugsx, fastdnaml, fastlink, garlic...
+Description: Debian-Med micro-biology packages
+
+Package: med-common
+Depends: adduser, debconf (>= 0.5), menu
+Description: Debian-Med Project common package
+
+Package: med-common-dev
+Depends: debconf (>= 0.5)
+Description: Debian-Med Project common files for developing ...
+
+Package: med-tools
+Depends: mencal, med-common
+Description: Debian-Med several tools
+
+Package: med-doc
+Depends: doc-linux-html | doc-linux-text, resmed-doc, med-co...
+Description: Debian-Med documentation packages
+
+Package: med-cms
+Depends: zope-zms
+Description: Debian-Med content management systems
+
+Package: med-imaging-dev
+Depends: libgtkimreg-dev, ctn-dev, libminc0-dev, libmdc2-dev...
+Description: Debian-Med packages for medical image development
+
+Package: med-bio-contrib
+Depends: clustalw | clustalw-mpi, clustalx, molphy, phylip, ...
+Description: Debian-Med micro-biology packages (contrib and ...
+ </example>
+ This is, like the <prgn>apt-cache</prgn> example, <strong>also
+ a bit cryptic</strong>, and again is not acceptable for end users.
+ </item>
+ <tag><prgn>auto-apt</prgn></tag>
+ <item>
+ The program <prgn>auto-apt</prgn> is really cool if you are
+ running a computer that was installed from scratch in a hurry, and
+ are sitting at a tradeshow booth preparing to do a demo. If you had
+ no time to figure out which packages you needed for the demo were missing
+ so you could install all of them in advance, you could use
+ <prgn>auto-apt</prgn> in the following manner to guarantee that you
+ have all of the files or programs you need:
+ <example>
+~> sudo auto-apt update
+put: 880730 files, 1074158 entries
+put: 903018 files, 1101981 entries
+~> auto-apt -x -y run
+Entering auto-apt mode: /bin/bash
+Exit the command to leave auto-apt mode.
+bash-2.05b$ less /usr/share/doc/med-bio/copyright
+Reading Package Lists... Done
+Building Dependency Tree... Done
+The following extra packages will be installed:
+ bugsx fastlink readseq
+The following NEW packages will be installed:
+ bugsx fastlink med-bio readseq
+0 packages upgraded, 4 newly installed, 0 to remove and 183 ...
+Need to get 0B/1263kB of archives. After unpacking 2008kB wi...
+Reading changelogs... Done
+Selecting previously deselected package bugsx.
+(Reading database ... 133094 files and directories currently...
+Unpacking bugsx (from .../b/bugsx/bugsx_1.08-6_i386.deb) ...
+Selecting previously deselected package fastlink.
+Unpacking fastlink (from .../fastlink_4.1P-fix81-2_i386.deb) ...
+Selecting previously deselected package med-bio.
+Unpacking med-bio (from .../med-bio_0.4-1_all.deb) ...
+Setting up bugsx (1.08-6) ...
+
+Setting up fastlink (4.1P-fix81-2) ...
+
+Setting up med-bio (0.4-1) ...
+
+localepurge: checking for new locale files ...
+localepurge: processing locale files ...
+localepurge: processing man pages ...
+This package is Copyright 2002 by Andreas Tille <tille at debian.org>
+
+This software is licensed under the GPL.
+
+On Debian systems, the GPL can be found at /usr/share/common-...
+/usr/share/doc/med-bio/copyright
+ </example>
+ Just do your normal business - in the above example, <tt>less
+ /usr/share/doc/med-bio/copyright</tt> - and if the necessary
+ package is not yet installed, <prgn>auto-apt</prgn> will care for
+ the installation and proceed with your command. While this is
+ really cool, this is <strong>not really intended for a production
+ machine</strong>.
+ </item>
+</taglist>
+
+The short conclusion here is: <strong>There are no sophisticated tools
+that might be helpful to handle meta packages as they are used in Custom
+Debian Distributions - just some hacks using the powerful tools inside
+Debian.</strong>
+</p>
+
+ </sect1>
+
+ <sect1 id="text_ui">
+ <heading>Text user interfaces</heading>
+<p>
+<taglist>
+ <tag><prgn>dselect</prgn></tag>
+ <item>
+ This good old package handling tool provides no special help to
+ handle meta packages in an elegant manner.
+ </item>
+ <tag><prgn>tasksel</prgn></tag>
+ <item>
+ The Debian task installer <prgn>Tasksel</prgn> is the first
+ interface for package selection that is presented to the user
+ when installing a new computer. The <tt>End-user</tt> section
+ should contain an entry for each Custom Debian Distribution. This
+ is currently the case for Debian-Jr.
+ <example>
+Debian Task Installer v1.43 - (c) 1999-2003 SPI and others
+
+————— Select tasks to install —————
+ –– End-user ––––
+ [X] Debian Jr.
+ [ ] Desktop environment
+ [ ] Games
+ [ ] Linux Standard Base
+ [ ] X window system
+ [ ] Office environment
+ –– Hardware Support ––––
+ [ ] Dialup internet
+ [ ] Laptop
+ [ ] Broadband internet connection
+ –– Servers ––––
+ [ ] DNS server
+ [ ] File server
+ [ ] Mail server
+ [ ] Usenet news server
+ [ ] SQL database
+ [ ] Print server
+ [ ] Conventional Unix server
+
+ <Finish> <Task Info> <Help>
+
+
+ </example>
+ Unfortunately, there are some
+ issues that prevent further Custom Debian Distributions from
+ being included in the <prgn>tasksel</prgn> list, because the
+ dependencies of this task can affect what appears on the first
+ installation CD. This problem would be even greater if all Custom
+ Debian Distributions were added, and so a different solution has to
+ be found here. (See <url id="http://bugs.debian.org/186085"
+ name="#186085">.) In principle, <prgn>tasksel</prgn> is a good
+ tool for easy installation of Custom Debian Distributions.
+ </item>
+ <tag><prgn>aptitude</prgn></tag>
+ <item>
+ This is a better replacement for <prgn>dselect</prgn>, and has some
+ useful support for searching for and grouping of packages. While
+ this is not bad, it was not intended for the purpose of handling
+ Custom Debian Distributions, and thus there could be some better support
+ to handle meta packages more cleverly.
+ </item>
+</taglist>
+Short conclusion: <strong>There is a good chance meta packages could be
+handled nicely by the text based Debian package administration tools,
+but this is not yet implemented.</strong>
+</p>
+
+ </sect1>
+
+ <sect1 id="gui">
+ <heading>Graphical user interfaces</heading>
+<p>
+Debian <em>Woody</em> does not contain a really nice graphical
+user interface for the Debian package management system. But the
+efforts to support users with an easy to use tool have increased, and
+so there there will be some usable options in Sarge.
+<taglist>
+ <tag><prgn>gnome-apt</prgn></tag>
+ <item>This is the native GNOME flavour of graphical user interfaces
+ to apt. It has a nice <tt>Search</tt> feature that can be
+ found in the <tt>Package</tt> menu section. If for
+ instance the packages of the Debian Jr. project come into the
+ focus of interest a search for "<tt>junior-*</tt>" will show
+ up all related packages including their descriptions. This
+ will give a reasonable overview about meta packages of the
+ project.
+ </item>
+ <tag><prgn>synaptic</prgn></tag>
+ <item>Even more sophisticated and perhaps the best choice for users
+ of Custom Debian Distributions. <prgn>Synaptic</prgn> has a
+ nice filter feature, which makes it a great tool here.
+ Moreover <prgn>synaptic</prgn> is currently the only user
+ interface that supports Debian Package Tags (see <ref
+ id="debtags">).
+ </item>
+ <tag><prgn>kpackage</prgn></tag>
+ <item>This is the user interface of choice for KDE lovers.
+ Regarding its features (with exception of Debian Package Tags)
+ it is similar to both above.
+ </item>
+</taglist>
+Short conclusion: <strong>As well as the text based user interfaces
+these tools are quite usable but need enhancements to be regarded as
+powerful tools for Custom Debian Distributions.</strong>
+</p>
+ </sect1>
+
+ <sect1 id="web_if">
+ <heading>Web interfaces</heading>
+
+<p>
+<taglist>
+ <tag><url id="http://packages.debian.org/" name="Web search"></tag>
+ <item><p>Debian has a web interface that can be used to search for certain substrings
+ in package names. For instance if you are searching the meta
+ packages of Debian-Med you could point your favourite Browser
+ to</p>
+ <p>
+<comment>FIXME: & is sometimes broken!!!
+<url id="http://packages.debian.org/cgi-bin/search_packages.pl?keywords=med-&subword=1">
+ ^^^^^
+</comment>
+<url id="http://packages.debian.org/cgi-bin/search_packages.pl?keywords=med-&subword=1">
+ </p><p>
+ As a result you will get a list of all Debian-Med packages.
+ </item>
+ <tag><url id="http://qa.debian.org/developer.php" name="Package Tracking System"></tag>
+ <item><p>
+ The Package Tracking System is a really great tool that
+ provides essential information about packages. Regarding
+ Custom Debian Distributions it can help if you know the
+ Debian user name of the developer who is responsible for the
+ meta packages:
+ <taglist>
+ <tag>Debian-Jr:</tag>
+ <item>
+ <url id="http://qa.debian.org/developer.php?login=synrg">
+ </item>
+ <tag>Debian-Med:</tag>
+ <item>
+ <url id="http://qa.debian.org/developer.php?login=tille">
+ </item>
+ <tag>Debian-Edu:</tag>
+ <item>
+ <url id="http://qa.debian.org/developer.php?login=pere">
+ </item>
+<!-- currently no meta packages released for this project ...
+ <tag>Debian-NP:</tag>
+ <item>
+ <url id="http://qa.debian.org/developer.php?login=mako">
+ </item>
+ <tag>Debian-Lex:</tag>
+ <item>
+ <url id="http://qa.debian.org/developer.php?login=terminus">
+ </item>
+-->
+ </taglist>
+ The other way to use the Package Tracking System is to search
+ for packages starting with a certain letter:
+ <taglist>
+ <tag>Debian-Jr:</tag>
+ <item>
+ <url id="http://packages.qa.debian.org/j">
+ </item>
+ <tag>Debian-Med:</tag>
+ <item>
+ <url id="http://packages.qa.debian.org/m">
+ </item>
+ </taglist>
+ But the list that is obtained by this method is much larger
+ than it would be useful for a good overview.
+ </p><p>
+ So the conclusion is - we just need better support here for
+ Custom Debian Distributions.
+ </p>
+ <tag><prgn>list-junior.sh</prgn></tag>
+ <item>The package <package>junior-doc</package> contains a script
+ <file>/usr/share/doc/junior-doc/examples/scripts/list-junior.sh</file>
+ that checks for the installed packages of a Custom Debian
+ Distribution and builds a simple web page describing these
+ packages. (The BTS contains a patch to let this script work
+ also for other Custom Debian Distributions.)
+ </item>
+</taglist>
+Short conclusion: <strong>Some very basic things can be done with the
+web interfaces described above but techniques have to be developed to
+provide useful information about each Custom Debian Distribution.</strong>
+</p>
+ </sect1>
+
+ <sect1 id="future_handling">
+ <heading>Future handling of meta packages</heading>
+
+<p>
+Obviously there are no nifty tools as you might know them from Debian
+available yet. The user interfaces for <prgn>apt-get</prgn> have to be
+enhanced drastically to make them easy enough to make them useful in
+the hands of an end user. This might implicitly mean that we need
+some additional control fields in <package>dpkg</package> to implement
+reasonable functionality. The following items are target of future
+development:
+<list>
+ <item>Searching for existing meta packages</item>
+ <item>Overview about dependencies of these meta packages</item>
+ <item>Enhancing tools like <prgn>aptitude</prgn>,
+ <prgn>synaptic</prgn>, etc.</item>
+ <item>Special <prgn>tasksel</prgn> section</item>
+ <item>Web tools that keep meta package information up to
+ date</item>
+</list>
+</p>
+<p>
+Furthermore it is necessary to find a set of keywords for each Custom
+Debian Distribution and write a tool to search these keywords
+comfortable. The best way to accomplish this might be to make use of
+Debian Package Tags, which is a quite promising technique.
+</p>
+<p>
+Tools that grep the apt cache directly for meta packages have to be
+written or rather the available tools for this should be patched for
+this actual functionality.
+</p>
+ </sect1>
+ </sect>
+
+ <sect id="userroles">
+ <heading>User roles</heading>
+
+<p>
+As stated above specialists have only interest in a subset of the
+available software on the system they are using. In an ideal world, this
+would be the only software that is presented in the menu. This would
+allow the user to concentrate on his real world tasks instead of
+browsing large menu trees with entries he does not understand.
+</p>
+<p>
+To accomplish this, a technique has to be implemented that allows to
+define a set of users who get a task-specific menu while getting rid
+of the part of software they are not interested in. Moreover this has
+to be implemented for certain groups of users of one Custom Debian
+Distribution, which are called "roles". There are several techniques
+available to manage user roles. Currently in the field of Custom
+Debian Distributions a UNIX group based role system is implemented.
+This means, that a user who belongs to a certain group of a Custom
+Debian Distribution is mentioned in the <file>/etc/group</file> file
+in the appropriate group and gets a special user menu that is
+provided for exactly this group.
+</p>
+<p>
+Strictly speaking it is not the best solution to conflate a
+configuration mechanism, which users see with menus, with access
+control, i.e. unix groups. It might be confusing, and wastes the limited
+number of groups to which a user can belong. On the other hand this
+is a solution that works for the moment, and has no real negative
+impact on the general use of the system. The benefit of using unix
+groups is that there is a defined set of tools provided to handle user
+groups. This makes life much easier; there is no
+<em>practical</em> limit to the number of groups to which a user
+may belong for the existing Custom Debian Distributions at this time.
+</p>
+<p>
+In the long run, this role system might even be enhanced to
+certain "<em>levels</em>" a user can have and here the UNIX groups
+approach will definitely fail and has to be replaced by other
+mechanisms. This will include the possibility to enable the user
+adjust his own level ("novice", "intermediate", "expert") while only
+the administrator is able to access the UNIX groups. On the other hand
+such kind of user level maintenance is not only a topic for Custom
+Debian Distributions but might be interesting for Debian in general.
+</p>
+<p>
+Another point that speaks against using UNIX groups for role
+administration is the fact that local administrators are not in all
+cases competent enough to understand the UNIX role concept as a
+security feature and thus a real role concept including tools to
+maintain roles are needed in the future.
+</p>
+<p>
+The handling of the user menus according to the groups is implemented
+in a flexible plugin system and other ways of handling groups
+(i.e. LDAP) should be easy to implement.
+</p>
+
+ <sect1 id="menu_tools">
+ <heading>User menu tools</heading>
+
+ <sect2 id="user-menus">
+ <heading>Using the Debian menu system</heading>
+<p>
+The Debian menu system cares for menu updates after each package
+installation. To enable compliance with the <em>role</em> based menu
+approach it is necessary to rebuild the user menu after each package
+installation or after adding new users to the intended role. This can
+be done by using the <manref name="cdd-update-menus" section="8"> (see
+<ref id="cdd-update-menus">) script from
+<package>cdd-common</package>. It has to be said that using
+<prgn>cdd-update-menus</prgn> is not enough to change the menu of a
+user. To accomplish this a call of the general
+<prgn>update-menu</prgn> script for every single user of a Custom
+Debian Distribution is necessary if this is not done by the
+<file>postinst</file> script of a meta package. This can easily been
+done if the configuration file of a Custom Debian Distribution
+<file>/etc/cdd/<var><cdd></var>/<var><cdd></var>.conf</file> contains the
+line
+<example>
+ UPDATEUSERMENU=yes
+</example>
+
+</p>
+<p>
+It is strongly suggested to use the package <package>cdd-dev</package>
+to build meta packages of a Custom Debian Distribution that will move
+all necessary files right into place if there exists a
+<file>menu</file> directory with the menu entries. Note, that the users
+<file>${HOME}/.menu</file> directory remains untouched.
+</p>
+ </sect2>
+
+ <sect2 id="user-debconf">
+ <heading>Managing Custom Debian Distribution users with <prgn>debconf</prgn></heading>
+
+<p>
+Using <package>cdd-dev</package> it is very easy to build a
+<var>cdd</var><package>-config</package> package that contains
+<prgn>debconf</prgn> scripts to configure system users who should
+belong to the group of users of the Custom Debian Distribution <var>cdd</var>.
+For example see the <package>med-common</package> package.
+
+ <example>
+~> dpkg-reconfigure med-common
+
+Configuring med-common
+----------------------
+
+Here is a list of all normal users of the system. Now you can select those users who
+should get a Debian-Med user menu.
+
+ 1. auser (normal user A) 6. fmeduser (med user F)
+ 2. bmeduser (med user B) 7. glexuser (lex user G)
+ 3. cjruser (jr user C) 8. hmeduser (med user H)
+ 4. djruser (jr user D) 9. iadmin (administrator I)
+ 5. eadmin (administrator E) 10. juser (normal user J)
+
+(Enter the items you want to select, separated by spaces.)
+
+:-! Please specify the Debian-Med users! 2 8
+ </example>
+This example shows the situation when you
+<prgn>dpkg-reconfigure</prgn> <package>med-common</package> if
+<var>med user B</var> and <var>med user H</var> were defined as users
+of Debian-Med previously and <var>med user F</var> should be added to
+the group of medical staff. (For sure it is more convenient to use the
+more comfortable interfaces to <package>debconf</package> but the used
+SGML DTD <url id="http://bugs.debian.org/140684" name="does not yet
+ support screen shots">.)
+</p>
+ </sect2>
+ </sect1>
+ </sect>
+
+ <sect id="devtools">
+ <heading>Development tools</heading>
+
+<p>
+Building a meta package is more or less equal for each meta
+package. This was the reason to build a common source package
+<package>cdd</package> that builds into two binary packages
+<taglist>
+ <tag><package>cdd-dev</package></tag>
+ <item><p>Helpful tools to build meta packages from a set of template
+ files. These tools are interesting for people who want to
+ build meta packages in the style Debian-Edu and Debian-Med
+ are currently doing this. The purpose of this package is to
+ make maintenance of meta packages as easy as possible.</p>
+ <p>This package is described in detail in appendix <ref
+ id="cdd-dev">.</p>
+ </item>
+ <tag><package>cdd-common</package></tag>
+ <item><p>This package provides some files that are common to meta
+ packages of Common Debian Distributions especially those
+ that were built using the tools of the package
+ <package>cdd-dev</package>. It introduces a method to handle
+ system users in a group named according to the name of the
+ Custom Debian Distribution. The user menu approach is
+ explained in detail in <ref id="userroles">.</p>
+ <p>This package is described in detail in appendix <ref
+ id="cdd-common">.</p>
+ </item>
+</taglist>
+The usage of the tools that are contained in these packages are
+described now in detail.
+</p>
+
+ <sect id="othertools">
+ <heading>Other interesting tools</heading>
+
+ <sect1 id="simple-cdd">
+ <heading>Simple-CDD</heading>
+
+<p>
+The tool <prgn>simple-cdd</prgn> is a limited though relatively easy
+tool to create a customized debian-installer CD.
+</p><p>
+It includes simple mechanisms to create "profiles" that define common
+system configurations, which can be selected during system
+installation. <prgn>Simple-cdd</prgn> also makes it easy to build CDs
+with language and country settings pre-configured, or to use a 2.6
+kernel by default.
+</p><p>
+This can be used to create a crude "Custom Debian Distribution" using
+packages from debian, with pre-configuration of packages that use
+<prgn>debconf</prgn>. Custom configuration scripts can be specified
+to handle packages that don't support <prgn>debconf</prgn>
+pre-configuration.
+</p><p>
+Testing CD images with <prgn>qemu</prgn> is also made simple with a
+provided script.
+</p><p>
+It has only been tested with <prgn>debian-cd</prgn> from sarge (other
+than <prgn>debpartial-mirror</prgn>), so if using a new
+<prgn>debian-cd</prgn> or <prgn>debian-installer</prgn>, it may
+require some tweaks.
+</p>
+ </sect1>
+ </sect>
+</chapt>
+
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
Added: cdd/tags/cdd/0.4.5/doc/en/07_starting.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/07_starting.sgml Sun Jan 6 15:44:05 2008
@@ -0,0 +1,433 @@
+<chapt id="starting">
+ <heading>How to start a Custom Debian Distribution</heading>
+
+<p>
+This chapter more or less covers the text of the <url
+id="http://packages.debian.org/unstable/doc/subproject-howto.html"
+name="Debian Subproject HOWTO">, which was written by Ben Armstrong
+<email>synrg at debian.org</email>. Ben has agreed that his text should
+be included here, and the <package>subproject-howto</package> will be
+orphaned once the current document is ready for packaging.
+</p>
+
+ <sect id="planning">
+ <heading>Planning to form a Custom Debian Distribution</heading>
+
+ <p>
+ In this section, issues to think about before starting a Custom
+ Debian Distribution will be discussed. It is important to have a
+ clear idea where to head and how to get there before launching into
+ this adventure.
+ </p>
+
+ <sect1 id="leadership">
+ <heading>Leadership</heading>
+ <p>
+ The existing Custom Debian Distributions have clearly shown
+ that they depend on a person who keeps things running. If anybody
+ wants to start a project at first, he has to answer the question:
+ <em>"Am I the right person for the job?"</em> Surely this is a
+ question that may be faced with some amount of uncertainty. The
+ way Custom Debian Distributions started in the past
+ was for the person with the idea for the project to just start
+ doing the work. After some time using this approach, it became clear that
+ if the project lacked a person to take leadership, the project would become
+ stale. So the initiator has to answer the question clearly, whether
+ or not he is able to continue in the <em>job</em> of leader, considering
+ the amount of time he will have to spend, and the technical and social
+ skills which are needed.
+ </p>
+ </sect1>
+
+ <sect1 id="defining_scope">
+ <heading>Defining the subproject scope</heading>
+ <p>
+ It is as important to decide what your group is not going to do as
+ it is what it is going to do. A clear borderline is essential for
+ the development of the project. Without it, outsiders might
+ either expect more from the project than it can accomplish, or may ignore
+ the project, finding it not helpful because they are
+ not able to find out the purpose.
+ </p>
+ <p>
+ By maintaining a good relationship with other Free Software projects,
+ some common tasks can be done very effectively. When efforts can be
+ shared, the amount of work for each project can be reduced.
+ </p>
+ <p>
+ Checking for cooperation with other Custom Debian Distributions is
+ always a good idea. In technical terms, this is obvious, but
+ sometimes there are possibilities to share efforts when the goals
+ of two projects have parts in common.
+ </p>
+ <p>
+ The one who decides to start a Custom Debian Distribution takes on a
+ responsibility for this project. It has to be for the good of
+ Debian as a whole, and should bring an extra reputation to our common
+ goal to build the best operating system.
+ </p>
+ </sect1>
+
+ <sect1 id="initial_discussion">
+ <heading>Initial discussion</heading>
+ <p>
+ By the time you have begun to think about forming the subproject,
+ have made the commitment to lead it, and have sketched out a
+ bit of where you want to go and how you'll get there, you have
+ likely already done some informal discussion with your peers.
+ It is time, if you haven't already, to take these ideas to the
+ broader Debian developer community, opening discussion on the
+ creation of your group.
+ </p>
+
+ <sect2 id="calling_all_developers">
+ <heading>Calling all developers</heading>
+ <p>
+ At this stage, you will want to reach as broad an audience as possible.
+ You have carefully thought out what you're going to do, and are able
+ to articulate it to Debian as a whole. Let everyone know through
+ the <email>debian-devel-announce at lists.debian.org</email> mailing
+ list, setting the <tt>Reply-to:
+ </tt><email>debian-devel at lists.debian.org</email> and listen to what
+ everyone has to say about your idea. You may learn some valuable
+ things about pitfalls that may lie ahead for your group. Maybe even
+ show-stoppers at that. You may also find a number of like-minded
+ individuals who are willing to join your group and help get it
+ established.
+ </p>
+ </sect2>
+
+ <sect2 id="steering_the_discussion">
+ <heading>Steering the discussion</heading>
+ <p>
+ It's all too easy to get lost in ever-branching-out sub-threads at
+ this point. Many people will be firing off ideas left, right and
+ centre about what your group should do. Don't worry too much about
+ containing the discussion and keeping it on track with your main
+ idea. You would rather not squelch enthusiasm at this point. But
+ do try to steer the discussion a bit, focusing on the ideas that
+ are central to your subproject and not getting lost in the details.
+ </p>
+ <p>
+ At some point, you'll decide you've heard enough, and you're ready
+ to get down to the business of starting your group.
+ </p>
+ </sect2>
+
+ </sect1>
+
+</sect>
+
+<sect id="setting_up">
+ <heading>Setting up</heading>
+
+<sect1>
+ <heading>Mailing list</heading>
+ <p>
+ It is fairly important to enable some means for communication for
+ the project. The most natural way to do this is with a mailing
+ list.
+ </p>
+ <p>
+ Creating a new mailing list starts with a wishlist bug against
+ <package><var>lists.debian.org</var></package>. The format of this bug has to follow
+ <url id="http://www.debian.org/MailingLists/HOWTO_start_list"
+ name="certain rules">.
+ </p>
+ <p>
+ Before your list can be created, the listmasters will want
+ assurance that creation of the list is, in fact, necessary.
+ So for this reason, don't wait for your list to be created.
+ Start discussing your new project
+ on <email>debian-devel at lists.debian.org</email> immediately. To
+ help distinguish your project's posts from the large amount of
+ traffic on this list, tag them in the Subject field with
+ an agreed-upon tag. For instance for general discussion about Custom
+ Debian Distributions the tag <tt>[custom]</tt> should be used. An
+ example bug report to create the relevant list is bug
+ <url id="http://bugs.debian.org/237017" name="#237017">.
+ </p>
+ <p>
+ When sufficient discussion on the developer's list has
+ taken place and it is time to move it to a subproject list,
+ add to your wishlist bug report some URLs pointing to these
+ discussions in the archives as justification for creation of
+ your list.
+ </p>
+</sect1>
+
+<sect1>
+ <heading>Web space</heading>
+ <p>
+ A fairly important way to let people know what your Custom
+ Debian Distribution is about is certainly a web page. While there
+ are a number of ways to go about this, the simplest is to put them
+ at the developer home page at <url id="http://people.debian.org"> if an
+ official Debian developer is starting the project.
+ </p>
+ <p>
+ Another possibility, and one which is fairly attractive because
+ it facilitates collaborative web site creation and maintenance,
+ is to put a page on the <url name="Wiki" id="http://wiki.debian.org">. There
+ is a special <url id="http://wiki.debian.org/index.cgi?CustomDebian"
+ name="Wiki page for Custom Debian Distributions">.
+ </p>
+ <p>
+ A third, and more recent possibility is to start a project at
+ <url id="http://alioth.debian.org" name="alioth.debian.org">, since
+ hosting Debian development projects is the whole reason for this
+ site.
+ </p>
+ <p>
+ Finally, the best way is to have a page under <url
+ id="http://www.debian.org/devel">. While not as straightforward as
+ any of the other options, this approach has its
+ advantages. First, the site is mirrored everywhere. Second, the
+ Debian web site translators translate pages into many different
+ languages, reaching new potential audiences for your Custom Debian
+ Distribution, and improving communication with other members of your
+ project and interested parties for whom English is not their most
+ comfortable language. Third, a number of templates are available to
+ make your site more integrated with the main web site, and to assist
+ with incorporating some dynamic content into your site. Before you
+ join the Debian-Web team you should <url
+ id="http://www.debian.org/devel/website" name="learn more about building
+ Debian web pages">.
+ </p>
+ <p>
+ Once this is done, the Debian web pages team should be contacted via
+ the mailing list <email>debian-www at lists.debian.org</email> to add the
+ project to the <url id="http://www.debian.org/intro/organization"
+ name="organisation page">.
+ </p>
+</sect1>
+
+<sect1>
+ <heading>Repository</heading>
+ <p>
+ On <url id="http://alioth.debian.org/" name="alioth.debian.org"> a
+ <url id="http://gforge.org/" name="Gforge">-site is running to host
+ all Debian related project work. Creating a project on Alioth is a
+ good idea to start teamwork on the code a certain Custom Debian
+ Distribution is releasing.
+ </p>
+</sect1>
+
+<sect1>
+ <heading>Formal announcement</heading>
+ <p>
+ Once there is a list, or at least enough preliminary discussion on
+ debian-devel to get started, and there is some information about the
+ newly planned Custom Debian Distribution available on the web,
+ it is time to send a formal announcement to
+ <email>debian-devel-announce at lists.debian.org</email>. The
+ announcement should include references to past discussions, any web
+ pages and code which might already exist, and summarise in a well thought
+ out manner what the project is setting out to achieve. Enlisting the
+ help of fellow developers on irc or in private email to look over
+ the draft and work out the final wording before it is sent out is
+ always a good idea.
+ </p>
+ <p>
+ Emails to <email>debian-devel-announce at lists.debian.org</email> have to
+ be signed by the GPG key of an official Debian developer. However, it
+ should not be a very hard task if somebody wants to support Debian
+ while not yet being a developer to find a developer who volunteers
+ to sign an announcement of a reasonable project. It might be
+ reasonable to send this announcement also to other relevant non-Debian
+ lists. If your announcement is well done, it will draw a number
+ of responses from many outsiders, and will attract people to Debian.
+ </p>
+</sect1>
+
+<sect1>
+ <heading>Explaining the project</heading>
+ <p>
+ Now the real work starts. People who are involved in the project
+ should be aware that they have to answer questions about the project
+ whenever they show up at conferences or at an exhibition booth. So
+ being prepared with some flyers or posters is always a good idea.
+ </p>
+</sect1>
+</sect>
+
+<sect id="structure">
+ <heading>Project structure</heading>
+
+<sect1 id="subsetting_debian">
+ <heading>Sub-setting Debian</heading>
+ <p>
+ While there are a variety of different kinds of work to be done in
+ Debian, and not all of them follow this pattern, this document
+ describes one particular kind of project. Our discussion about
+ Custom Debian Distributions concerns sub-setting Debian. A
+ sub-setting project aims to identify, expand, integrate, enhance, and
+ maintain a collection of packages suitable for a particular purpose
+ by a particular kind of user.
+ </p>
+ <p>
+ Now, strictly speaking, a subset of packages could be more general
+ than described above. A subset could be a broad category like
+ "audio applications" or "network applications". Or it could be more
+ specific, such as "web browsers" or "text editors". But what a
+ sub-setting project such as Debian Jr. aims to do is not focus on the
+ kind of package, but rather the kind of user. In the case of Debian
+ Jr. it is a young child.
+ </p>
+ <p>
+ The sort of user the project looks after, and which of the needs the
+ project hopes to address are defined by the project's goals.
+ <comment>BA: I had a bit of trouble deciding how to punctuate the following
+ passage. I considered and rejected the advice given here in response to
+ Kirsten's question about punctuating a list of questions:
+ http://www.udel.edu/eli/g20.html, instead following the advice found
+ elsewhere on the Web that double punctuation should be avoided.</comment>
+ Thus, Debian Jr. first had to decide which children the project
+ would reach: "What age?" "English speaking children only, or
+ other languages as well?" Then the project had to determine
+ how and where they would be using Debian: "At home?" "In school?"
+ "Playing games?" "On their own systems?" "On their parents' systems?"
+ </p>
+ <p>
+ The answers to all of these questions are not straightforward. It is
+ very much up to the project to choose some arbitrary limits for the
+ scope of their work. Choose too broad a focus, or one which duplicates
+ work already done elsewhere, and the energy of the project dissipates,
+ making the project ineffective. Choose too narrow a focus and the
+ project ends up being marginal, lacking the critical mass necessary
+ to sustain itself.
+ </p>
+ <p>
+ A good example was the request to split the microbiology
+ related packages out of Debian-Med into a Debian-Bio project. This
+ is reasonable in principle, and should really be done. In fact, the
+ initiator of Debian-Med would support this idea. So he gave the
+ answer: "Just start the Debian-Bio project to take over all related
+ material. Until this happens, Debian-Med will cover medical material
+ that deals with sequence analysis and so forth." Unfortunately,
+ there was silence from the Debian-Bio proponents after this answer.
+ </p>
+ <p>
+ Of course, it sometimes turns out that you start working on a project
+ thinking you know what it is about, only to find out later that you
+ really had no idea what it would become until the user base has grown
+ beyond the small community of developers that started it. So, none of
+ the decisions you make about your project's scope at the beginning
+ should be taken as set in stone. On the other hand, it is your project,
+ and if you see it veering off in directions that are contrary to your
+ vision for it, by all means steer it back on course.
+ </p>
+</sect1>
+
+<sect1 id="tasksel">
+ <heading>Using tasksel and meta packages</heading>
+<p>
+ According to the plan of the project, the first meta packages (<ref
+ id="metapackages">) should be developed. It is not always easy to
+ decide what should be included, and which meta packages should be
+ built. The best way to decide on this point is to discuss on the
+ mailing list some well thought out proposals.
+</p>
+<p>
+ Section <ref id="text_ui"> mentions <prgn>tasksel</prgn> as a tool
+ to select a Custom Debian Distribution, and explains why
+ it is currently not possible to get a Custom Debian Distribution
+ included into the task selection list.
+</p>
+ </sect1>
+
+</sect>
+
+<sect id="first_release">
+ <heading>First release</heading>
+
+<sect1 id="release_announcement">
+ <heading>Release announcement</heading>
+ <p>
+ Beyond the release announcement for Debian itself, it is necessary
+ to put some thought and work into a release announcement for the
+ first release of a Custom Debian Distribution. This will not only
+ be directed at the Debian developer community, but also at the users.
+ This will include potential new Debian users abroad, who may not be
+ on a Debian mailing list. Here, the same principle applies as for
+ the first announcement of the project: it is important to consider
+ sending the information to other relevant forums.
+ </p>
+</sect1>
+
+<sect1 id="users">
+ <heading>Users of a Custom Debian Distribution</heading>
+ <p>
+ By this time, people have newly installed Debian along with the
+ material in the Custom Debian Distribution, or have installed the meta
+ packages on their existing Debian systems. Now comes the fun part,
+ building relationships with the user community.
+ </p>
+
+<sect2 id="user_support">
+ <heading>Devoting resources to the users</heading>
+ <p>
+ Users are a mixed blessing. In the first development phase there are
+ some developers who are users, and some intrepid "early adopters."
+ But once it is released, the first version is "out there," and the
+ project will certainly attract all kinds of users who are not
+ necessarily as technically savvy as your small development user
+ community. Be prepared to spend some time with them. Be patient
+ with them. And be listening carefully for the underlying questions
+ beneath the surface questions. As draining as it can be to deal
+ with users, they are a very key component to keeping your
+ development effort vital.
+ </p>
+</sect2>
+
+<sect2 id="devel_vs_user_list">
+ <heading>Developer vs. user mailing list</heading>
+ <p>
+ Should a user list be created? It's not as cut-and-dried as it
+ might at first appear. When user help requests start coming in,
+ you might at first see them as a distraction from the development
+ effort. However, you don't necessarily want to "ghettoize" the
+ user community into a separate list early. That's a
+ recipe for developers to get out of touch very quickly with the
+ users. Tolerate the new user questions on the developer list
+ for a while. Once a user list is finally set up, courteously
+ redirect user questions to the user list. Treat your users as
+ the valuable resource about how your project is working "in the
+ field" that they are.
+ </p>
+</sect2>
+
+<sect2 id="user_support_beyond_debian">
+ <heading>User support beyond Debian</heading>
+ <p>
+ Fortunately, we're not in the business of supporting users alone.
+ Look beyond Debian for your allies in user support: Linux user
+ groups (LUGs) and the users themselves. Develop an awareness of who
+ has stakes in seeing your project succeed, and enlist their help
+ in getting a strong network of support established for your work.
+ </p>
+</sect2>
+
+</sect1>
+
+</sect>
+
+</chapt>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
Added: cdd/tags/cdd/0.4.5/doc/en/08_todo.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/08_todo.sgml Sun Jan 6 15:44:05 2008
@@ -0,0 +1,644 @@
+<chapt id="todo">
+ <heading>To do</heading>
+
+ <sect id="communication">
+ <heading>Establishing and using communication platforms</heading>
+
+<p>
+Each Custom Debian Distribution has an own mailing list for discussion
+of specific development issues. Because there are several common
+issues between all Custom Debian Distributions also a common mailing
+list was created. People who are interested in working on common
+issues like building meta packages, technical issues of menu systems
+or how to create CDs for Custom Debian Distributions could <url
+id="http://lists.debian.org/debian-custom/" name="subscribe to this
+list or read the list archive">.
+</p>
+<p>
+Moreover the project <url
+id="http://alioth.debian.org/projects/cdd/" name="cdd"> on Alioth was
+started. The <url id="http://svn.debian.org/viewcvs/cdd/"
+name="subversion repository"> can be browsed or checked out by
+by
+<example>
+ svn checkout svn://svn.debian.org/svn/cdd/cdd/trunk
+</example>
+for anonymous users. Developers should check out via
+<example>
+ svn checkout svn+ssh://<var>username</var>@svn.debian.org/svn/cdd/cdd/trunk cdd
+</example>
+The current layout for the repository is as follows:
+<example>
+ cdd -+- cdd -+- branches -+- cdd -+- 0.3.x
+ | |
+ | +- tags -----+- cdd -+- 0.3 [older versions of cdd tools]
+ | | | +- 0.3.1
+ | | | ...
+ | | | +- <var><latest></var>
+ | | |
+ | | +- doc -+- 0.1 [older versions of this doc]
+ | | +- 0.2
+ | | +- 0.3
+ | | [Since 0.4.1 the doc is in cdd directory]
+ | |
+ | +- trunk ----cdd [code in development for cdd source package]
+ | |
+ | +-- doc [this document = cdd-doc package]
+ |
+ +- projects -+--- med ---+- branches
+ | |
+ | +- tags
+ | |
+ | +- trunk [development version of Debian-Med]
+ |
+ +- science -+- branches
+ | |
+ | +- tags
+ | |
+ | +- trunk [development version of Debian-Science]
+ |
+ +- ...
+ |
+ ...
+</example>
+There is a <url
+id="http://lists.alioth.debian.org/mailman/listinfo/cdd-commits"
+name="mailing list"> with subversion changes and a <url
+id="http://cia.navi.cx/stats/project/debian-custom" name="CIA system">
+for tracking changes in the Custom Debian Distributions projects in
+real-time.
+</p>
+ </sect>
+
+ <sect id="visibility">
+ <heading>Enhancing visibility</heading>
+
+<p>
+If a user installs Debian via official install CDs the first chance to
+do a package selection to customise the box is <prgn>tasksel</prgn>.
+The first Custom Debian Distribution Debian-Junior is mentioned in the
+task selection list and thus it is clearly visible to the user who
+installs Debian.
+</p>
+<p>
+In bug <url id="http://bugs.debian.org/186085" name="#186085"> a
+request was filed to include Debian-Med in the same manner. The
+problem with the <prgn>tasksel</prgn>-approach is that all included
+packages should be on the first install CD. This would immediately
+have the consequence that the first install CD would run out of space
+if all Custom Debian Distributions would be included in the task
+selection list.
+</p>
+<p>
+How to enhance visibility of Custom Debian Distributions for the user
+who installs Debian from scratch?
+<taglist>
+ <tag>Change <prgn>tasksel</prgn> policy.</tag>
+ <item>If the <em>packages must be on the first CD</em> feature of
+ <prgn>tasksel</prgn> would be dropped all Custom Debian
+ Distributions could be listed under this topic in the task
+ selection list.
+ </item>
+ <tag>Custom Debian Distributions information screen.</tag>
+ <item>Alternatively a new feature could be added to
+ <prgn>tasksel</prgn> or in addition to <prgn>tasksel</prgn>
+ in the installation procedure which presents a screen which
+ gives some very short information about Custom Debian
+ Distributions (perhaps pointing to this document for further
+ reference) and enables the user to select from a list of the
+ available Custom Debian Distributions.
+ </item>
+ <tag>Provide separate install CDs</tag>
+ <item>By completely ignoring the installation of the official
+ installation CD each Custom Debian Distribution can offer a
+ separate installation CD. This will be done anyway for
+ certain practical reasons (see for instance the Debian-Edu -
+ SkoleLinux approach). But this is really no solution we
+ could prefer because this does not work if the user wants to
+ install more than one Custom Debian Distribution on one
+ computer.
+ </item>
+ <tag>Change overall distribution philosophy of Debian.</tag>
+ <item>This way is concerned to some ideas from Debian developers
+ who took part in Open Source World Conference in Malaga and
+ is explained in Detail in <ref
+ id="new_ways_of_distribution">. This would save the problem
+ of making Custom Debian Distribution visible to users in a
+ completely different way because in this case Debian would be
+ released as its various flavours of Custom Debian
+ Distributions.
+ </item>
+</taglist>
+</p>
+<p>
+Whichever way Debian developers will decide to go it is our vital
+interest to support users and <em>show</em> our users the tools we
+invented to support them.
+</p>
+ <sect1 id="webpages">
+ <heading>Custom Debian Distributions web pages</heading>
+<p>
+Most Custom Debian Distributions maintain their own web space under
+<tt>http://www.debian.org/devel/cdd</tt> to provide general
+information which will be translated by the Debian web team. This is a
+good way to inform users about the progress of a project. A special
+way to announce what is done and what is planed is the list of yet
+packaged software and software which is intended to be included. To
+do this in a nice manner Tobias Toedter
+<email>t.toedter at gmx.net</email> defined a new tag for Debian-Med
+in order to ease translation by making use of the
+<prgn>gettext</prgn> functionality. In the meantime, this new tag was
+extended to be useful for other Custom Debian Distributions as well.
+</p>
+<p>
+As a result, a new <file>.pot</file> file was created, called
+<file>debian-cdd.pot</file>. Translators of the web pages should
+update their <file>.po</file> files and translate this new file into
+their language. For the translation teams who have already begun to
+translate the web pages of the Debian-Med Custom Debian Distribution,
+here is a short explanation of the newly introduced tag and its use.
+The tag is called <tt>project</tt>, and it takes a few attributes. The
+complete (empty) tag looks like this:
+
+<example>
+<project name=""
+ url=""
+ license=""
+ deb=""
+ anchorid="">
+ Here goes the description of the project.
+</project>
+</example>
+
+The meaning of the attributes is as follows:
+
+<taglist>
+ <tag>name</tag>
+ <item>This is the name of the project which is yet packaged or
+ should be packaged for the Custom Debian Distribution in
+ question. In most cases, you won't have to translate this
+ attribute.</item>
+ <tag>url</tag>
+ <item>This is the URL of the homepage of the project. You will
+ almost never have to do any translational work here. At least
+ I can't think of any.
+ </item>
+ <tag>license</tag>
+ <item>The license under which the project is released. In most
+ cases (e.g. GPL, BSD) you don't have to modify anything
+ here. Some projects use a custom license or there's anything
+ other which requires some more explanation in plain text. Of
+ course, this plain text should be translated.
+ </item>
+ <tag>deb</tag>
+ <item>This is the URL of a Debian package. If the project is
+ available as an official Debian package (i.e. it is included
+ in the Debian distribution or available in the contrib or
+ non-free section) or if the project is being packaged by
+ someone, but not stored on the Debian servers, this attribute
+ is used. If there's no package available at all, this
+ attribute is either left blank or omitted completely. There's
+ no need to change this value in your translations.
+ </item>
+ <tag>anchorid</tag>
+ <item>Every project gets an automatically created HTML anchor. This
+ auto-anchor is created by using the project's name (Convert
+ all ASCII characters into lowercase and replace any other
+ character with the underscore. Silly example: "BioSig - For
+ Everyone" -> "biosig___for_everyone"). If for some reason
+ this is not wanted, the id and name of the anchor can be
+ specified with this attribute. An example of the use of this
+ attribute can be found in other.wml. The project's name is
+ "HARP - HArmonisation for the secuRity of web technologies
+ and aPplications", which is awfully long. The anchorid
+ attribute in this case is set to "harp". Note that you should
+ never have to change anything here, if it is already defined
+ in the English page. If you have to translate the name of
+ the project, the automatic creation of the anchorid will
+ naturally give a different result then the English
+ anchorid. In this case, please use this attribute to manually
+ specify the anchor which should be used, according to the
+ rules above: Convert all (ASCII) characters into lowercase,
+ and replace any other character with an underscore. So in
+ conclusion, you should always use the anchorid attribute if
+ you've translated the name attribute.
+ </item>
+</taglist>
+
+The interesting part of the <tt>project</tt>-tag is the body, between
+the opening and the closing tag. This is the description of the
+project, and this is the part where you're going to have to translate
+the text. The best way to learn the usage of this tag is to have a
+look at the Debian-Med examples.
+</p>
+<p>
+Moreover it might make sense to sort the list of projects according to
+the following keys:
+<taglist>
+ <tag>available Debian package</tag>
+ <item>Top most you should list all packages which are just inside
+ Debian and thus (hopefully) included in the meta package
+ dependencies. This should be followed by the projects which
+ has unofficial packages outside Debian. A last group should
+ list all not yet packaged projects which are interesting for
+ the Custom Debian Distribution. These groups are using a
+ certain green-yellow-red color code.
+ </item>
+ <tag>alphabetically</tag>
+ <item>Inside each of these three groups an alphabetical order is
+ proposed to gain some consistency between all Custom Debian
+ Distributions.
+ </item>
+</taglist>
+The users who are visiting the web pages will like this comfortable
+overview ...
+</p>
+ </sect1>
+ <sect1 id="graphingwebpages">
+ <heading>Automatically graphing the meta-package dependencies for web
+ pages</heading>
+<p>
+The new <package>cddtk</package> contains a tool which allows browsing
+a <file>Packages</file> file for all packages that are listed in the
+dependency list of a package.
+
+<example>
+ pkgtool -p UNCOMPRESSED_PACKAGES_FILE pdeps LIST_OF_PACKAGE_NAMES
+</example>
+
+This could be used as a start to build the web-pages as suggested above
+automatically - at least for the packages which are just at the
+Debian-Mirror. For the unofficial packages and not yet existing
+packages a fake-<file>Packages</file> following the same syntax could
+be created and processed with the same tool.
+</p>
+ </sect1>
+ </sect>
+
+ <sect id="debtags">
+ <heading>Debian Package Tags</heading>
+
+<p>
+<url id="http://deb-usability.alioth.debian.org/debtags/" name="Debian
+Package Tags"> is a work to add more metadata to Debian packages.
+At the beginning it could be seen as a way to allow to specify
+multiple sections (called "tags") per package where now only one can
+be used.
+</p>
+<p>
+However, the system has evolved so that tags are organised in
+"facets", which are separate ontologies used to categorise the
+packages under different points of view.
+</p>
+<p>
+This means that the new categorisation system supports tagging
+different facets of packages. There can be a set of tags for the
+"purpose" of a package (like "chatting", "searching", "editing"),
+a set of tags for the technologies used by a package (like "html",
+"http", "vorbis") and so on.
+</p>
+<p>
+Besides being able to perform package selection more efficiently by
+being able to use a better categorisation, one of the first outcomes
+of Debian Package Tags for CDDs is that every CDD could maintain its
+own set of tags organised under a "facet", providing categorisation
+data which could be used by its users and which automatically
+interrelates with the rest of the tags.
+</p>
+<p>
+For example, Debian-Edu could look for "edu::administration" packages
+and then select "use::configuring". The "edu::administration"
+classification would be managed by the Debian-Edu people, while
+"use::configuring" would be managed by Debian. At the same time, non
+Debian-Edu users looking for "use::configuring" could have a look at
+what packages in that category are suggested by the Debian-Edu
+community.
+</p>
+<p>
+It is not excluded that this could evolve in being able to create a
+Custom Debian Distribution just by selecting all packages tagged by
+"edu::*" tags, plus dependencies; however, this option is still being
+investigated.
+</p>
+<p>
+Please write to the list <email>deb-usability-list at lists.alioth.debian.org</email>
+for more information about Debian Package Tags or if you want to get
+involved in Debian Package Tags development.
+</p>
+ </sect>
+
+ <sect id="EnhancingTechnology">
+ <heading>Enhancing basic technologies regarding Custom Debian Distributions</heading>
+
+<p>
+In section <ref id="future_handling"> several issues where raised how
+handling of meta packages should be enhanced.
+</p>
+<p>
+Regarding to building meta packages for all Custom Debian
+Distributions consistently it might make sense to use the following
+approach:
+</p>
+ <!-- FIXME: How to indent a paragraph??? -->
+ <p>
+ The method how Debian-Edu currently builds its meta packages from a
+ kind of <em>database</em> (in the <file>tasks</file> directory of the source)
+ was generalised in the packages <package>cdd-dev</package> (<ref
+ id="cdd-dev">) and <package>cdd-common</package> (<ref
+ id="cdd-common">). This approach definitely needs some
+ enhancements to fit the needs of all Custom Debian Distributions.
+ It might be a good idea to maintain a more general kind of database
+ than this <file>tasks</file> directory approach currently represents
+ for each Custom Debian Distribution. From
+ this database the control files for all meta packages could be
+ built on demand to build the necessary files of the
+ <file>debian</file> directory in the package build process
+ dynamically. The extra plus would be that it would be easy to
+ build tools which parse this database to generate docs and websites
+ dynamically. It would drastically reduce the amount of work for
+ keeping the project related web sites up to date if this could be
+ done automatically. Some tools like the following might be easily
+ done to support maintenance and documentation of the meta packages:
+<example>
+ build_cdd-package med bio
+ build_cdd-package junior toys
+ build_cdd-package education [all]
+
+ build_cdd-wml-template nonprofit <foo>
+ build_cdd-wml-template demudi <bar>
+
+ cdd-package-info.php?cdd=<foo>&pkg=<bar>
+</example>
+ If the database structure is well thought (perhaps using XML or by
+ stealing the format of other databases which are usually used in
+ Debian) not really hard to implement.
+</p>
+<p>
+Last but not least the special configuration issue has to be
+addressed. In general developers of meta packages should provide
+patches for dependent packages if they need a certain configuration
+option and the package in question does feature a
+<prgn>debconf</prgn> configuration for this case. Then the
+meta package could provide the needed options by pre-seeding the
+<prgn>debconf</prgn> database while using very low priority questions
+which do not came to users notice.
+</p>
+<p>
+If the maintainer of a package which is listed in a meta package
+dependency and needs some specific configuration does not accept such
+kind of patch it would be possible to go with a <prgn>cfengine</prgn>
+script which just does the configuration work. According to the
+following arguing this is no policy violation: A local maintainer can
+change the configuration of any package and the installation scripts
+have to care for these changes and are not allowed to disturb these
+adaptations. In the case described above the <prgn>cfengine</prgn>
+script takes over the role of the local administrator: It just handles
+as an
+"automated-<prgn>cfengine</prgn>-driven-administrator-robot".
+</p>
+<p>
+If there is some agreement to use <prgn>cfengine</prgn> scripts to
+change configuration - either according to <prgn>debconf</prgn>
+questions or even to adapt local configuration for Custom Debian
+Distribution use in general - a common location for this kind of stuff
+should be found. Because these scripts are not configuration itself
+but substantial part of a meta package the suggestion would be to
+store this stuff under
+<example>
+ /usr/share/cdd/#CDD#/#METAPACKAGE#/cf.#SOMETHING#
+</example>
+</p>
+<p>
+There was another suggestion at the Valencia workshop: Make use of
+<prgn>ucf</prgn> for the purpose mentioned above. This is a topic
+for discussion. At least currently Debian-Edu seems to have good
+experiences with <prgn>cfengine</prgn> but perhaps it is worth comparing
+both.
+</p>
+<p>
+A further option might be
+<url id="http://freedesktop.org/Software/CFG" name="Config4GNU"> from
+freedesktop.org but it is not even yet packaged for Debian.
+</p>
+ </sect>
+
+ <sect id="liveCD">
+ <heading>Building Live CDs of each Custom Debian Distribution</heading>
+
+<p>
+The first step to convince a user to switch to Debian is to show him
+how it works while leaving his running system untouched.
+<url id="http://www.knoppix.org/" name="Knoppix"> - <em>the "mother" of
+all Debian-based live CDs</em> - is a really great success and it is a
+fact that can not be ignored that Debian gains a certain amount of
+popularity because people want to know what distribution is working
+behind the scenes of Knoppix.
+</p>
+<p>
+But Knoppix is a very common demonstration and its purpose is to work
+in everyday live. There is no room left for special applications and
+thus people started to adopt it for there special needs. In fact
+there exist so many Debian based Live CDs that it makes hardly sense
+to list them all here. The main problem is that most of them
+containing special applications and thus are interesting in the CDD
+scope are out of date because they way the usually were builded was a
+pain. One exception is perhaps <url id="http://dirk.eddelbuettel.com/quantian.html"
+name="Quantian"> which is quite regularly updated and is intended for
+scientists.
+</p>
+<p>
+The good news is that the problem of orphaned or outdated Live CDs can
+easily solved by debian-live and the <package>live-helper</package>.
+This package turns all work to get an up to date ISO image for a Live
+CD into calling a single script. For the CDD tools this would simply
+mean that the tasks files have to be turned into a live-helper input
+file and the basic work is done. This will be done in a future
+cdd-dev version.
+</p>
+
+ </sect>
+
+ <sect id="new_ways_of_distribution">
+ <heading>New way to distribute Debian</heading>
+
+<p>
+<em>This section is kind of "Request For Comments" in the sense that
+solid input and arguing is needed to find out whether it is worth
+implementing it or drop this idea in favour of a better solution.</em>
+</p>
+<p>
+At Open Source World Conference in Malaga 2004 there was a workshop of
+Debian Developers. Among other things the topic was raised how the
+distribution cycle or rather the method of distribution could be
+changed to increase release frequency and to better fit user interests.
+</p>
+<p>
+There was a suggestion by Bdale Garbee <email>bdale at gag.com</email> to
+think about kind of sub-setting Debian in the following way: Debian
+developers upload their packages to <tt>unstable</tt>. The normal
+process which propagates packages to <tt>testing</tt> and releasing a
+complete <tt>stable</tt> distribution also remains untouched. The new
+thing is that the package pool could be enhanced to store more package
+versions which belong to certain subsets alias Custom Debian
+Distributions which all have a set of <tt>tested inside the
+subset</tt> distribution which leads to a <tt>stable</tt> subset
+release. The following graph might clarify this:
+
+<example>
+DD -> unstable --> testing --> stable
+ |
+ +---> CDD_A testing --> stable CDD_A
+ |
+ +---> CDD_B testing --> stable CDD_B
+ |
+ +---> ...
+</example>
+
+where <tt>CDD_A</tt> / <tt>CDD_B</tt> might be something like
+<tt>debian-edu</tt> / <tt>debian-med</tt>. To implement this
+sub-setting the following things are needed:
+<taglist>
+ <tag>Promotion rules</tag>
+ <item>There was a general agreement that technical implementation
+ of this idea in the package pool scripts / database is not too
+ hard. In fact at LinuxTag Chemnitz 2004 Martin Loschwitz
+ <email>madkiss at debian.org</email> announced exactly this as
+ "nearly implemented for testing purpose" which should solve
+ the problem of outdated software for desktop users as a goal
+ of the <tt>debian-desktop</tt> project.
+ </item>
+ <tag>Reasonable subsets</tag>
+ <item>Once the promotion tools are able to work with sub-setting,
+ reasonable subsets have to be defined and maintained. A
+ decision has to be made (if this will be implemented at all)
+ whether this sub-setting should be done according to the
+ Custom Debian Distribution layout or if there are better ways
+ to find subsets.
+ </item>
+ <tag>BTS support</tag>
+ <item>The Bug Tracking System has to deal with different package
+ versions or even version ranges to work nicely together with
+ the sub-setting approach.
+ </item>
+ <tag>Security</tag>
+ <item>As a consequence of having more than only a single
+ <tt>stable</tt> each CDD-team has to form a security team to
+ care for those package versions that are not identically with
+ the "old" <tt>stable</tt>.
+ </item>
+</taglist>
+</p>
+<p>
+A not so drastically change would be to find a <em>common</em> set of
+packages which are interesting for all Custom Debian Distributions
+which will obtained from the "releasable set" of testing (i.e. no
+RC-bugs). This would make the structure above a little bit more flat:
+
+<example>
+DD -> unstable --> testing --> releasable --> stable
+ |
+ +---> stable CDD_A
+ |
+ +---> stable CDD_B
+ |
+ +---> ...
+</example>
+
+A third suggestion was given at Congreso Software Libre Comunidad
+Valenciana:
+
+<example>
+ testing_proposed_updated
+ |
+ |
+ v
+DD -> unstable --> testing --> stable
+ |
+ +---> stable CDD_A
+ |
+ +---> stable CDD_B
+ |
+ +---> ...
+</example>
+
+The rationale behind these testing backports is that sometimes a
+Custom Debian Distribution is able to reduce the set of releasable
+architectures. Thus some essential packages could be moved much
+faster to testing and these might be "backported" to testing for this
+special Custom Debian Distribution. For instance this might make
+sense for Debian-Edu where usually i386 architecture is used.
+</p>
+<p>
+All these different suggestions would lead to a modification of the
+package pool scripts which could end up in a new way to distribute
+Debian. This might result from the fact that some Custom Debian
+Distributions need a defined release cycle. For instance the
+education related distributions might trigger their release by the
+start-end-cycle of the school year. Another reason to change the
+package pool system is the fact that some interested groups, who
+provide special service for a certain Custom Debian Distribution,
+would take over support only for the subset of packages which is
+included in the meta package dependencies or suggestions but they
+refuse to provide full support for the whole range of Debian
+packages. This would lead to a new layout of the file structures of
+the Debian mirrors:
+
+<example>
+ debian/dists/stable/binary-i386
+ /binary-sparc
+ /binary-...
+ /testing/...
+ /unstable/...
+ debian-CDD_A/dists/stable/binary-[supported_architecture1]
+ /binary-[supported_architecture2]
+ /...
+ /testing/...
+ debian-CDD_B/dists/testing/...
+ /stable/...
+ ...
+ pool/main
+ /contrib
+ /non-free
+</example>
+To avoid flooding the archive with unnecessarily many versions of
+packages for each single Custom Debian Distribution a common base of
+all these Custom Debian Distributions has to be defined. Here some
+LSB conformance statement comes into mind: The base system of all
+currently released (stable) Custom Debian Distributions is compliant
+to LSB version x.y.
+</p>
+<p>
+Regarding to security issues there are two ways: Either one Custom
+Debian Distribution goes with the current stable Debian and thus the
+<file>Packages.gz</file> is just pointing to the very same versions
+which are also in debian/stable. Then no extra effort regarding to
+security issues is need. But if there would be a special support team
+which takes over maintenance and security service for the packages in
+one certain Custom Debian Distribution they should be made reliable
+for this certain subset.
+</p>
+<p>
+This reduced subset of Debian packages of a Custom Debian Distribution
+would also make it easier to provide special install CDs at is it
+currently done by Debian-Edu.
+</p>
+ </sect>
+</chapt>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
Added: cdd/tags/cdd/0.4.5/doc/en/A_devel.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/A_devel.sgml Sun Jan 6 15:44:05 2008
@@ -0,0 +1,402 @@
+ <appendix id="DevelDescription">
+ <heading>Description of development tools</heading>
+ <sect id="cdd-dev">
+ <heading>Package <package>cdd-dev</package></heading>
+
+<p>
+If meta packages are builded using the tools inside the
+<package>cdd-dev</package> package it can be ensured that the
+resulting meta packages will work nicely with the same version of
+<package>cdd-common</package> package. The goal is to keep necessary
+changes for the source of the meta packages of a Custom Debian
+Distribution as low as possible when the version of the
+<package>cdd</package> source package changes. Thus it is
+strongly recommended to use the tools described below.
+</p>
+<p>
+The usage of the tools in the <package>cdd-dev</package> package might
+introduce a versioned dependency in the
+<package><var><cdd></var>-common</package> package from which
+all other meta packages of the <var>CDD</var> in question will
+depend. This <package><var><cdd></var>-common</package> package
+instantiates the <var>CDD</var> in the common registry for all CDDs in
+<file>/etc/cdd</file>.
+</p>
+<p>
+The best idea to use the tools provided by the
+<package>cdd-dev</package> is to put a <file>Makefile</file> into the
+build directory containig one single line
+
+<example>
+ include /usr/share/cdd-dev/Makefile
+</example>
+
+(see <file>/usr/share/doc/cdd-dev/examples/Makefile</file>). Using
+this <file>Makefile</file> all tools that were contained in
+<package>cdd-dev</package> package versions before 0.4. These tools
+are moved to <file>/usr/share/cdd-dev/</file> because there is no need
+to call them directly. Here is a list of the <file>make</file> targets.
+</p>
+
+<sect1 id="cdd-tasks.desc">
+ <heading>CDD<tt>-tasks.desk</tt></heading>
+
+<p>
+This target is the description file that is used in
+<prgn>tasksel</prgn> to enable selecting the tasks belonging to the
+CDD. The file will be moved to the
+<var>cdd</var><package>-tasks</package>. All information is obtained
+from the single task files in the <file>tasks</file> directory of the
+CDD source.
+</p>
+
+</sect1>
+<sect1 id="debian_control">
+ <heading><tt>debian/control</tt></heading>
+
+<p>
+</p>
+</sect1>
+
+<sect1 id="cdd-clean-helper">
+ <heading><!-- document type does not allow element "MANREF" here--><tt>cdd-clean-helper(1)</tt></heading>
+
+<p>
+<taglist>
+ <tag>NAME</tag>
+ <item>
+ <prgn>cdd-clean-helper</prgn> - cleans up debian directory in a
+ meta package building tree
+ </item>
+ <tag>SYNOPSIS</tag>
+ <item>
+ <prgn>cdd-clean-helper</prgn>
+ </item>
+ <tag>DESCRIPTION</tag>
+ <item>
+ <p>
+ This script can be used in <file>debian/rules</file> file to
+ revert the changes which were done by <manref
+ name="cdd-install-helper" section="1"> to get a clean packaging
+ tree. Using this helper ensures that the
+ <file>debian/rules</file> file does not needed to be changed if
+ there are changes in the <package>cdd-dev</package> package.
+ </p>
+ </item>
+ <tag>EXAMPLES</tag>
+ <item>For the usage of this tool just have a look at the
+ <package>debian-med</package> source package.
+ </item>
+ <tag>AUTHOR</tag>
+ <item>Andreas Tille <email>tille at debian.org</email>.</item>
+ </taglist>
+</p>
+</sect1>
+
+<sect1>
+ <heading>Apt <file>sources.list</file> files in <file>/etc/cdd/</file></heading>
+<p>
+These files are used by <manref name="cdd-gen-control" section="1"> to
+build valid <file>debian/control</file> files that contain only
+available packages in their dependencies. This enables building meta
+packages for <tt>stable</tt>, <tt>testing</tt>, <tt>unstable</tt> or
+even a completely different distribution that has valid
+<file>sources.list</file> entries. The file
+<file>/etc/cdd/control.list</file> is used as default for <manref
+name="cdd-gen-control" section="1"> and usually is a symbolic link
+(see <manref name="ln" section="1">) to
+<file>sources.list.</file><var>distribution</var>. It might be
+changed using the <tt>-s </tt><var>dist</var> option of <manref
+name="cdd-gen-control" section="1">.
+</p>
+<p>
+<strong>TODO:</strong> <em>Either parse the available
+<file>/etc/apt/sources.list</file> or use a sane <prgn>debconf</prgn>
+question to use the "nearest" mirror.</em>
+</p>
+</sect1>
+
+<sect1>
+ <heading>Templates in <file>/usr/share/cdd/templates</file></heading>
+<p>
+The directory <file>/usr/share/cdd/templates</file> contains templates
+that can be used to build a <var><cdd></var><package>-common</package>,
+which uses the tools that are contained in the
+<package>cdd-common</package> package, and are useful to manage
+<var><cdd></var> user groups (see <ref id="userroles">).
+</p>
+</sect1>
+</sect>
+
+<sect id="cdd-common">
+ <heading>Package <package>cdd-common</package></heading>
+
+<p>
+This package creates a common registry for all CDDs in
+<file>/etc/cdd</file>. Each CDD should put the files that are used
+into a subdirectory named like the CDD of <file>/etc/cdd</file>. The
+<package>cdd-common</package> package installs a common configuration
+file <file>/etc/cdd/cdd.conf</file>, which can be used to influence the
+behaviour of the tools described below.
+</p>
+
+<sect1>
+ <heading><!-- document type does not allow element "MANREF" here--><tt>cdd-role(8)</tt></heading>
+<p>
+<taglist>
+ <tag>NAME</tag>
+ <item>
+ <prgn>cdd-role</prgn> - add/remove roles in registered Custom Debian Distribution
+
+ </item>
+ <tag>SYNOPSIS</tag>
+ <item>
+ <prgn>cdd-role</prgn> <var>add|del</var> <var>CDD</var> [<var>Role</var>]
+ </item>
+ <tag>DESCRIPTION</tag>
+ <item>Add/remove (register/unregister) <var>Role</var> for the
+ specified <var>CDD</var>. If <var>Role</var> is not specified, it's
+ assumed to be named like <var>CDD</var>.
+ </item>
+
+
+ <tag>OPTIONS</tag>
+ <item>
+ <taglist>
+ <tag><var>CDD</var></tag>
+ <item>A registered custom distribution in /etc/cdd, for example
+ one of <tt>med</tt>, <tt>junior</tt>, <tt>desktop</tt>,
+ <tt>edu</tt> or <tt>demudi</tt>
+ </item>
+ </taglist>
+ </item>
+ <tag>AUTHOR</tag>
+ <item>Andreas Tille <email>tille at debian.org</email>,
+ Cosimo Alfarano <email>kalfa at debian.org</email>.</item>
+</taglist>
+</p>
+</sect1>
+
+<sect1 id="cdd-update-menus">
+ <heading><!-- document type does not allow element "MANREF"
+ here--><tt>cdd-update-menus(8)</tt></heading>
+<p>
+<taglist>
+ <tag>NAME</tag>
+ <item>
+ <prgn>cdd-update-menus</prgn> - add menu of meta package to all Custom Debian Distribution users
+ </item>
+ <tag>SYNOPSIS</tag>
+ <item>
+ <prgn>cdd-update-menus</prgn> [<var>--cdd CDD</var> | <var>--user
+ user</var>]
+ </item>
+ <tag>DESCRIPTION</tag>
+ <item>
+ <p>
+ cdd-update-menus behaves differently depending on who run the
+ command:
+ </p>
+
+ <p>
+ If it is called by a user, it adds, and keeps updated, menu
+ entries for the user who runs it.
+ </p>
+
+ <p>
+ If it is called by root, it adds and keeps updated user's menu entries
+ (see menu package for users' menus) for all users who belong to the
+ group of the specified Custom Debian Distribution, or only for a
+ specified user, depending on which parameter is passed to the script.
+ </p>
+ </item>
+
+ <tag>OPTIONS</tag>
+ <item>
+ <taglist>
+ <tag><var>CDD</var></tag>
+ <item>one of the installed CDDs, listed in /etc/cdd/, for example
+ (if installed: <tt>med</tt>, <tt>junior</tt>, <tt>desktop</tt>,
+ <tt>edu</tt> or <tt>demudi</tt>
+ </item>
+ <tag><var>user</var></tag>
+ <item>system user</item>
+ </taglist>
+ </item>
+ <tag>AUTHOR</tag>
+ <item>Andreas Tille <email>tille at debian.org</email>,
+ Cosimo Alfarano <email>kalfa at debian.org</email>.</item>
+</taglist>
+</p>
+</sect1>
+
+<sect1>
+ <heading><!-- document type does not allow element "MANREF" here--><tt>cdd-user(8)</tt></heading>
+<p>
+<taglist>
+ <tag>NAME</tag>
+ <item>
+ <prgn>cdd-user</prgn> - add/remove user to Role of a registered Custom Debian Distribution
+
+ </item>
+ <tag>SYNOPSIS</tag>
+ <item>
+ <prgn>cdd-user</prgn> <var>add|del</var> <var>CDD</var> <var>user</var> [<var>Role</var>]
+ </item>
+ <tag>DESCRIPTION</tag>
+ <item>Add/remove user to a <var>Role</var> of the specified <var>CDD</var>.
+
+ If <var>Role</var> is not specified, it's assumed to be named like
+ <var>CDD</var>
+ </item>
+
+
+ <tag>OPTIONS</tag>
+ <item>
+ <taglist>
+ <tag><var>CDD</var></tag>
+ <item>A registered custom distribution in /etc/cdd, for example
+ one of <tt>med</tt>, <tt>junior</tt>, <tt>desktop</tt>,
+ <tt>edu</tt> or <tt>demudi</tt>
+ </item>
+ <tag><var>user</var></tag>
+ <item>user to add</item>
+ <tag><var>Role</var></tag>
+ <item>the role in the <var>CDD</var> that <var>user</var> will
+ assume</item>
+ </taglist>
+ </item>
+ <tag>AUTHOR</tag>
+ <item>Andreas Tille <email>tille at debian.org</email>,
+ Cosimo Alfarano <email>kalfa at debian.org</email>.</item>
+</taglist>
+</p>
+</sect1>
+
+<sect1>
+ <heading><tt>cdd.conf(5)</tt></heading>
+<p>
+<taglist>
+ <tag>NAME</tag>
+ <item>
+ <file>cdd.conf</file> - configuration for Custom Debian Distribution registry
+ </item>
+ <tag>DESCRIPTION</tag>
+ <item>This file is sourced from shell scripts inside the Custom
+ Debian Distribution package <package>cdd-common</package> and
+ thus it has to follow shell syntax. The variables that are set
+ inside this configuration file can be overriden by special CDD
+ configration files
+ <file>/etc/cdd/<var><>cdd></var>/<var><>cdd></var>.conf</file>
+ for each single CDD.
+ <tag>SYNTAX</tag>
+ <item>The following variables can be set:
+ <taglist>
+ <tag><tt>DBBACKEND</tt></tag>
+ <item>Set the backend for the user role management system.
+ Currently the only implemented role management system is
+ <tt>unixgroups</tt> but others might be implemented
+ later. Unsetting this variable leads to use no roles at all.
+ </item>
+ <tag><tt>UPDATEUSERMENU</tt></tag>
+ <item>If this is set to <tt>yes</tt>, the user menus of meta
+ packages can be created automatically at install time of
+ the package if the postinst script of the package allows
+ this. It is suggested to use this option in the specific
+ configuration files of a special Custom Debian
+ Distribution that override the settings of the general
+ configuration file.
+ </item>
+ <tag><tt>SHAREDIR</tt></tag>
+ <item>Set the base directory for the user role management
+ system. While this is more or less a feature for
+ debugging this might be also used otherwise.
+ </item>
+ <tag><tt>DRYRUN</tt></tag>
+ <item>This variable can be set for debugging. Normally it
+ should be left unset (<em>NOT</em> set to <tt>false</tt>
+ or anything else!). If set to <tt>true</tt> a dry run of
+ the tools is performed or <tt>echo DRYRUN:</tt> would
+ print debugging information.
+ </item>
+ <tag><tt>DEBUG</tt></tag>
+ <item>If set to <tt>1</tt> debugging mode is switched on.
+ </taglist>
+ </item>
+ <tag>SEE ALSO</tag>
+ <item>
+ <file>cdd-role (8)</file>, <file>cdd-update-menus (8)</file>,
+ <file>cdd-user (8)</file>
+ </item>
+ <tag>AUTHOR</tag>
+ <item>Andreas Tille <email>tille at debian.org</email>,
+ Cosimo Alfarano <email>kalfa at debian.org</email>.</item>
+</taglist>
+</p>
+</sect1>
+
+</sect>
+
+
+<sect id="svn">
+ <heading>Working with <file>svn</file></heading>
+<p>
+ Sometimes it might be interesting for developers to check out the
+ latest code of the CDD tools or a special CDD code for the meta
+ packages. In <ref id="communication"> the directory layout of the
+ <file>svn</file>-directory was described. How to derive the
+ Debian packages from this layout?
+<taglist>
+ <tag>Checkout</tag>
+ <item>
+ For the CDD tools
+<example>
+ svn checkout svn+ssh://<var>username</var>@svn.debian.org/svn/cdd/cdd/trunk/cdd cdd
+</example>
+ or for the Custom Debian Distribution <var>cdd-name</var>
+<example>
+ svn checkout svn+ssh://<var>username</var>@svn.debian.org/svn/cdd/projects/<var>cdd-name</var>/trunk
+</example>
+ </item>
+ <tag>Build source package</tag>
+ <item>
+ Change into the created directory and type
+<example>
+ make -f debian/rules dist
+</example>
+ This creates a <file>tar.gz</file> source archive of the packages
+ you want to build. (Note: This requires that
+ <file>debian/rules</file> has a <tt>dist</tt> target which is the
+ case for all currently existing files.)
+ </item>
+ <tag>Build Debian packages</tag>
+ <item>
+ Unpack the created source tarball and proceed like you build
+ Debian packages normally.
+ </item>
+</taglist>
+</p>
+<p>
+The current Debian-Med packages provide a working example how to use
+the tools described below.
+</p>
+</sect>
+ </appendix>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
Added: cdd/tags/cdd/0.4.5/doc/en/B_quickintro.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/B_quickintro.sgml Sun Jan 6 15:44:05 2008
@@ -0,0 +1,226 @@
+ <appendix id="QuickIntro">
+ <heading>Quick intro into building meta packages</heading>
+
+<p>
+There are several descriptions available how to build Debian packages
+in general. The main resource might be the repository of
+<url
+id="http://www.debian.org/doc/packaging-manuals/"
+name="Debian packaging manuals"> (especially
+<url
+id="http://www.debian.org/doc/packaging-manuals/developers-reference/ch-best-pkging-practices.en.html"
+name="developers reference chapter 6, best packaging practices">).
+There are several external packaging HOWTOs for example the one from
+<url
+id="http://www-106.ibm.com/developerworks/linux/library/l-debpkg.html"
+name="Joe 'Zonker' Brockmeier">.
+</p>
+
+ <sect id="Dependencies">
+ <heading>Defining dependencies for meta packages</heading>
+
+<p>
+This howto describes the building of meta packages by using the
+<package>cdd-dev</package> package. It is perfectly possible to build
+a meta package as any other normal Debian package but this HOWTO
+has the only purpose to describe the profit you might gain by using
+these tools.
+
+ <example>
+~> cp -a /usr/share/doc/cdd-dev/examples/tasks .
+~> cat tasks/README
+~> edit tasks/task1
+Description: <var>short description
+ long description as in any debian/control file</var>
+
+Depends: <var>dependency1, dependency2, ...</var>
+ </example>
+
+For each meta package this skeleton of a <file>debian/control</file>
+entry is needed. All necessary information is available in the
+directory <file>/usr/share/doc/cdd-dev/examples/tasks</file>.
+</p>
+ </sect>
+
+ <sect id="Packaging">
+ <heading>The packaging directory</heading>
+
+<p>
+To build any Debian package you always need a directory named
+<file>debian</file>, which contains a certain set of files. The
+package <package>cdd-dev</package> provides a complete set of example
+files that only have to be copied and after editing some place
+holders are ready to use.
+<example>
+~> cp -a /usr/share/doc/cdd-dev/examples/debian .
+~> cat debian/README
+~> edit debian/control.stub
+</example>
+Now the variables in the file <file>control.stub</file> change the
+variables named <var>_CDD_</var>, <var>_MAINTAINER_</var> etc. to
+match the names of the Custom Debian Distribution to be built. Please
+note that the file <file>debian/control</file> is and has to be a
+symbolic link to <file>control.stub</file> to let the
+<package>cdd-dev</package> tools work.
+
+<example>
+~> edit debian/rules
+</example>
+
+Also in the <file>debian/rules</file> the name of the Custom Debian
+Distribution has to be inserted where the template contains
+<var>_CDD_</var>. Depending from the way the
+<file>sources.list</file> should be scanned the options for the
+<prgn>gen-control</prgn> call can be adjusted.
+</p>
+<p>
+Optionally a source tarball can be created by
+<example>
+~> make -f debian/rules dist
+</example>
+This tarball can be moved to any location where the meta packages
+should be built or the build process is started directly by calling
+<example>
+~> debuild
+</example>
+which also creates a source tarball.
+</p>
+<p>
+That's all for the very simple case when the meta packages should not
+contain user menus. Even if user menus are suggested they are not
+necessary. The following paragraphs describe how to use the
+<package>cdd-dev</package> tools to support these menus.
+</p>
+
+ </sect>
+
+ <sect id="common-meta-package">
+ <heading>The common meta package</heading>
+
+<p>
+The creation of a common package is optional, but suggested, because it
+adds some special features like menus, user groups, and probably more
+in the future. It is automatically built by
+<file>cdd-install-helper</file>, which is called in
+<file>debian/rules</file>, if the <file>common</file> directory exists.
+The easiest way to create this is as follows:
+<example>
+~> cp -a /usr/share/doc/cdd-dev/examples/common .
+~> cat common/README
+~> edit common/conf common/control common/common.1
+</example>
+The variables (<var>_CDD_</var>) in these three files have to be
+adjusted to the name of the Custom Debian Distribution in question.
+This <file><var>cdd</var>-common</file> cares for the initialisation
+of the role based menu system and might contain adjustments of the
+general configuration inside the <package>cdd-common</package>.
+</p>
+<p>
+If the meta package <package><var>cdd</var>-common</package> will be
+created according to these rules all other meta packages will depend
+automatically from this common package. For the friends of
+<prgn>auto-apt</prgn>, a helper
+<file>/usr/bin/<var><meta-package-name></var></file> will be
+installed as well, which just prints some information about the meta
+package. All in all, the usage of the common package is strongly
+suggested to have a common registry for stuff like user roles and
+possibly other things that will be implementd in the future.
+</p>
+ </sect>
+ <sect id="meta-package-menus">
+ <heading>The meta package menus</heading>
+
+<p>
+As explained in <ref id="menu_tools"> the meta packages can contain
+user menus. This optional feature can be implemented easily by using
+the template from the <package>cdd-dev</package> in the following way:
+
+<example>
+~> cp -a /usr/share/doc/cdd-dev/examples/menu .
+~> cat menu/README
+~> edit menu/task1
+ <var>Edit the example to legal menu entries of the
+ dependencies of this meta package</var>
+~> cp menu/task1 menu/<var><meta package name></var>
+</example>
+
+A menu file for each task should be created containing valid menu
+entries for each dependant package. The easiest way to obtain those
+menu entries is to simply copy the original menu entry files that are
+contained in the packages on which the meta package will depend.
+The only thing that has to be changed in these menu entries is the
+<tt>package</tt> field, which has to be changed from
+<package><dependent package></package> to
+<package><var>cdd</var>-<var>task</var></package>. All other entries
+might remain unchanged. This is a good point to check whether the
+menu entries of the packages you depend from are formated nicely and
+print the necessary information (for instance make use of "hints").
+Here the meta package maintainer has a good chance for quality
+assurance work, which is also part of the Custom Debian Distributions
+issue.
+</p>
+<p>
+In principle these menu items could be created automatically either at
+meta package build time or even better in the <file>postinst</file>
+script of the meta package because it is granted that the needed menu
+files are installed on the system, which is not really necessary on
+the meta package build machine. This might be implemented in later
+versions of <package>cdd-dev</package>. Currently the policy is that
+we like to have a little bit of control about the menu entries for the
+quality assurance issue mentioned above. Last, but not least, there are
+packages that do not provide a menu entry. If this is the case
+because the package maintainer just forgot it a bug report should be
+filed. On the other hand, there are packages with programs that
+provide a command line interface that does not allow a reasonable
+menu entry. A solution for this case is provided in the next
+paragraph.
+</p>
+
+ </sect>
+ <sect id="any-dependency--menus">
+ <heading>Menu for any dependency</heading>
+
+<p>
+The idea of the meta package menu is to provide the user with easily
+viewable traces of any installed package that helps solving everyday
+tasks. So if there are packages that do not contain a menu, a screen
+with relevant documentation should be provided in a viewer by the
+creator of the meta package. Such documentation can be created using
+the following templates:
+
+<example>
+~> cp -a /usr/share/doc/cdd-dev/examples/docs .
+~> cat docs/README
+~> edit docs/task1/dep1
+ <var>Provide information about a package <dep1> that is
+ a dependency of the meta package <task1>, but does not
+ contain a useful menu entry.</var>
+~> cp docs/task1/dep1 docs/task1/<var><dependent pkg></var>
+~> cp -a docs/task1 docs/<var><meta package name></var>
+</example>
+
+This ensures that our users become aware of all interesting packages
+on their system. The documentation files should contain hints to man
+pages to read, URLs that should be visited to learn more about the
+package or some short introduction how to get started.
+</p>
+ </appendix>
+
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
Added: cdd/tags/cdd/0.4.5/doc/en/C_bts.sgml
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/doc/en/C_bts.sgml Sun Jan 6 15:44:05 2008
@@ -0,0 +1,111 @@
+ <appendix id="bts">
+ <heading>Using the Bug Tracking System</heading>
+
+ <sect id="howto_itp">
+ <heading>How to ask for packages which are not yet included</heading>
+
+<p>
+A very frequently asked question in mailing list is, whether
+<prgn>program_xy</prgn> can be integrated into a Custom Debian
+Distribution. As long as there is an official package of this program
+it is an easy task. But mostly users ask for software which is not yet
+integrated into Debian.
+</p>
+<p>
+There is a <url id="http://www.debian.org/devel/wnpp/#l1"
+ name="detailed description"> how anybody can ask for including a
+certain piece of software into Debian. It explains how to use the
+program <prgn>reportbug</prgn> for this purpose.
+</p>
+<p>
+If you use wnpp sanely you can even tag this bug for the intended
+purpose to include it in a certain Custom Debian Distribution. This
+was described in <url
+id="http://lists.debian.org/debian-devel-announce/2005/09/msg00002.html"
+name="a mail of Anthony Towns"> and
+<url
+id="http://wiki.debian.org/DebianScience/Sponsoring"
+name="the Debian wiki">. It was also described in
+<url id="http://lists.debian.org/debian-custom/2005/04/msg00017.html"
+name="a mail of Ben Armstrong"> and in short works like this:
+
+<list>
+ <item><p>
+ Add an usertag to an existing bug by sending to
+ request at bugs.debian.org a mail containing
+ <example>
+ user <email>
+ usertag <bug number> + wnpp <meta-package name>
+ </example>,
+ where email is the electronic address of the person or mailing
+ list which coordinates the relevant Custom Debian
+ Distribution.
+ </p>
+ <p>
+ For instance if you want to tag an ITP with big number
+ #123456 for Debian-Med section biology you would send the
+ following mail to <email>request at bugs.debian.org </email>:
+ <example>
+ user debian-med at lists.debian.org
+ usertag 123456 + wnpp med-bio
+ thanks
+ </example>
+ </p>
+ <p>
+ <strong>Note:</strong> Because the search is case sensitive
+ please always use lower case tags!
+ </p>
+ </item>
+ <item>To search for WNPP bugs of a certain Custom Debian
+ Distribution just visit the URL
+<example>
+http://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=wnpp;users=<var>email</var>
+</example>
+ </item>
+</list>
+
+
+</p>
+ </sect>
+
+ <sect id="howto_file_bugs">
+ <heading>How to report problems</heading>
+
+<p>
+Debian has a very useful Bug Tracking System (BTS) but unfortunately
+users seldom know about this fact and how to use it right. This is
+the reason why users sometimes become angry about errors because they
+do not know what to do next and just install a different distribution
+instead of trying to solve the problem.
+</p>
+<p>
+A <url id="http://www.debian.org/Bugs/Reporting" name="detailed
+explanation how to report errors"> is helpful in these cases. While
+the program <prgn>reportbug</prgn> fetches other reports from BTS
+before creating the bug report it is always a good idea to search
+<url id="http://bugs.debian.org"
+name="http://bugs.debian.org/_package_"> for known problems and
+probably suggested solutions before calling <prgn>reportbug</prgn>.
+</p>
+
+</sect>
+
+</appendix>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-namecase-general:t
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../debian-cdd.en.sgml" "book" "chapt")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
Added: cdd/tags/cdd/0.4.5/etc/cdd/cdd.conf
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/etc/cdd/cdd.conf Sun Jan 6 15:44:05 2008
@@ -0,0 +1,18 @@
+
+# unset it if no DBBACKEND is wanted (no use of Roles)
+DBBACKEND=unixgroups
+
+SHAREDIR=${SHAREDIR:-/usr/share/cdd}
+
+# unset (NOT set it to false!) for disable dryrun
+#DRYRUN=true
+# This would print debugging information
+#DRYRUN="echo DRYRUN: "
+#DEBUG=1
+
+# Utility functions, backend indep
+. ${SHAREDIR}/cdd-utils
+. ${SHAREDIR}/cdd-actions
+
+# actual action performed by choosen backend
+. ${SHAREDIR}/${DBBACKEND}/cdd-actions
Added: cdd/tags/cdd/0.4.5/examples/Makefile
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/Makefile Sun Jan 6 15:44:05 2008
@@ -0,0 +1,3 @@
+#!/usr/bin/make -f
+
+include /usr/share/cdd-dev/Makefile
Added: cdd/tags/cdd/0.4.5/examples/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/README Sun Jan 6 15:44:05 2008
@@ -0,0 +1,5 @@
+This is an example directory layout for building meta packages for a
+Custom Debian Distribution with the name Debian-_CDD_. So search for the
+string _CDD_ and replacing it with a real name would provide a basic
+skeleton to work with.
+
Added: cdd/tags/cdd/0.4.5/examples/config/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/config/README Sun Jan 6 15:44:05 2008
@@ -0,0 +1,2 @@
+If this directory exists a _CDD_-common package is created.
+See for instance Debian-Med packages.
Added: cdd/tags/cdd/0.4.5/examples/config/common
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/config/common Sun Jan 6 15:44:05 2008
@@ -0,0 +1,6 @@
+#!/bin/sh
+## Prints some info about that package and lets auto-apt work
+dpkg --status `basename $0` | \
+ grep -v ^Priority | \
+ grep -v ^Section | \
+ grep -v ^Installed-Size
Added: cdd/tags/cdd/0.4.5/examples/config/common.1
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/config/common.1 Sun Jan 6 15:44:05 2008
@@ -0,0 +1,19 @@
+.TH _CDD_-common 1 "May 24, 2002" "Debian-_CDD_"
+.SH NAME
+.B _CDD_-common
+.B _CDD_-<meta_package_name>
+\- package information and auto-apt helper
+
+.SH SYNOPSIS
+.B _CDD_-common
+.B _CDD_-<meta_package_name>
+
+.SH DESCRIPTION
+Print just a simple information page about every _CDD_-* package
+of the Debian-_CDD_ Custom Debian Distribution. Each metapackage has a
+.I /usr/bin/_CDD_-<meta_package_name>
+file which should print some usefull informations and could be serve
+as auto-apt helper.
+
+.SH AUTHOR
+Andreas Tille <tille at debian.org>.
Added: cdd/tags/cdd/0.4.5/examples/config/conf
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/config/conf Sun Jan 6 15:44:05 2008
@@ -0,0 +1,6 @@
+## This is a configuration file for Debian-med Custom Debian Distribution
+## It is read after /etc/cdd/cdd.conf and can override or add variables
+
+## Some CDDs do not build their name generic like Debian-#CDD# so
+## we need the correct name here
+CDDNAME=Debian-_CDD_
Added: cdd/tags/cdd/0.4.5/examples/config/control
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/config/control Sun Jan 6 15:44:05 2008
@@ -0,0 +1,7 @@
+Package: _CDD_-config
+Architecture: all
+Depends: adduser, debconf (>= 0.5), menu
+Description: Debian-_CDD_ Project config package
+ This package builds the basic infra structure of all meta packages
+ for the Debian-_CDD_ Custom Debian Distribution.
+
Added: cdd/tags/cdd/0.4.5/examples/debian/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/debian/README Sun Jan 6 15:44:05 2008
@@ -0,0 +1,3 @@
+You always need this directory to build meta packages.
+Just change control.stub and replace the variables _CDD_ and
+_MAINTAINER_ to the apropriate strings.
Added: cdd/tags/cdd/0.4.5/examples/debian/cdd-task1.install
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/debian/cdd-task1.install Sun Jan 6 15:44:05 2008
@@ -0,0 +1,3 @@
+### this file is optional and only needed if the install directory is needed
+install/task1/extra-script-which-is-needed-in-task1 usr/bin
+
Added: cdd/tags/cdd/0.4.5/examples/debian/cdd-task1.manpages
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/debian/cdd-task1.manpages Sun Jan 6 15:44:05 2008
@@ -0,0 +1,3 @@
+### this file is optional and only needed if the install directory is needed
+install/task1/extra-script-which-is-needed-in-task1.1
+
Added: cdd/tags/cdd/0.4.5/examples/debian/compat
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/debian/compat Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+5
Added: cdd/tags/cdd/0.4.5/examples/debian/control.stub
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/debian/control.stub Sun Jan 6 15:44:05 2008
@@ -0,0 +1,10 @@
+Source: debian-_CDD_
+Section: misc
+Priority: extra
+Maintainer: _MAINTAINER_ <_maintainer_ at debian.org>
+Uploaders: _OPTIONAL-FURTHER-MAINTAINER_ <_optional-further-maintainer_ at debian.org>
+Build-Depends-Indep: debhelper (>= 5), cdd-dev
+Standards-Version: 3.7.2
+
+Package: _CDD_
+Architecture: all
Added: cdd/tags/cdd/0.4.5/examples/debian/rules
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/debian/rules Sun Jan 6 15:44:05 2008
@@ -0,0 +1,3 @@
+#!/usr/bin/make -f
+
+include /usr/share/cdd-dev/rules
Added: cdd/tags/cdd/0.4.5/examples/install/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/install/README Sun Jan 6 15:44:05 2008
@@ -0,0 +1,9 @@
+If some extra files like scripts of manpages are needed in the meta packages
+the should be placed into apropriate subdirectories of this directory.
+While there is no certain procedure in the cdd-dev tools to handle files
+in this directory it might be a good idea to settle down with some
+default place for those extra files. To move them right into place
+the files debian/<pkg>.install, debian/<pkg>.manpages etc. should
+be used.
+
+See for instance Debian-Med packages.
Added: cdd/tags/cdd/0.4.5/examples/install/task1/extra-script-which-is-needed-in-task1
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/install/task1/extra-script-which-is-needed-in-task1 Sun Jan 6 15:44:05 2008
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo "Do something useful for task1."
Added: cdd/tags/cdd/0.4.5/examples/install/task1/extra-script-which-is-needed-in-task1.1
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/install/task1/extra-script-which-is-needed-in-task1.1 Sun Jan 6 15:44:05 2008
@@ -0,0 +1,15 @@
+.TH extra-script-which-is-needed-in-task1 1 "<date>" "#CDD#"
+.SH NAME
+.B extra-script-which-is-needed-in-task1
+\- some useful script for task1
+
+.SH SYNOPSIS
+.B extra-script-which-is-needed-in-task1
+
+.SH DESCRIPTION
+The task makes no sense without this script - or at least this script
+provides extra functionality which is not in any of the single
+dependencies.
+
+.SH AUTHOR
+Meta Package Autor <mpa at debian.org>.
Added: cdd/tags/cdd/0.4.5/examples/menu/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/menu/README Sun Jan 6 15:44:05 2008
@@ -0,0 +1,24 @@
+If this directory exists, menu entries for the single meta packages can
+be provided here. The files should have the same name as the files in the
+tasks directory and ideally each single task should have its own menu.
+
+See for instance Debian-Med packages.
+
+In general a meta package should provide a menu for every dependent package.
+This menu entry should either point to a package executable (perhaps with
+some special hints assigned) or to a pager call which proveides some extra
+information how the special package can be used. For instance this can be
+done via text files /usr/share/doc/_CDD_task1/deppkg1.txt (see Debian-Med).
+
+The idea is to provide a special _CDD_ menu with the relevant parts for
+the users of the _CDD_.
+
+At install time the existing dependencies are checked for their
+menu entries. These are tekan over into the user menu. If the
+meta package maintainer wants to override this entry he is able
+to provide menu/<task>/<dep>.menu files. If there is no reasonable
+menu entry for a package extra documentation can be provided which
+can be viewed via menu entries. This can either be given as plain
+text files menu/<task>/<dep>.txt or HTML files menu/<task>/<dep>.html.
+The created menu entry calls sensible-pager or sensible-browser,
+respectively.
Added: cdd/tags/cdd/0.4.5/examples/menu/task1/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/menu/task1/README Sun Jan 6 15:44:05 2008
@@ -0,0 +1,16 @@
+Here you can place overrides for the package maintainer menu entries
+in normal menu syntax as files <dep>.menu .
+
+Sometimes it is not possible to provide a useful menu entry for a
+package and thus we would fail to create a menu entry for a dependency
+inside a meta package. This sucks in term of user support and thus
+it is strongly suggested to provide some information about each
+dependant package which has no reasonable menu entry.
+
+This can easily done by creating a text file with the name of the
+dependency, i.e. dep2.txt. Alternatively you can provide HTML
+formated description as dep3.html.
+
+These files should provide all information which is necessary to use
+this package, like man pages online documentation, usage examples,
+upstream URL, etc.
Added: cdd/tags/cdd/0.4.5/examples/menu/task1/dep1.menu
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/menu/task1/dep1.menu Sun Jan 6 15:44:05 2008
@@ -0,0 +1,5 @@
+?package(dep1): needs = "X11" \
+ section = "_CDD_/Task1" \
+ title = "DepPkg1" \
+ command = "/usr/bin/deppkg1" \
+ hints = "Use of DepPkg1"
Added: cdd/tags/cdd/0.4.5/examples/menu/task1/dep2.txt
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/menu/task1/dep2.txt Sun Jan 6 15:44:05 2008
@@ -0,0 +1,18 @@
+dep2: Short description of package dep2
+
+Some information about dep2 from the Debian-_CDD_ project.
+
+ long description of dep2
+
+ More infromation about the dep2 package can be obtained from the following
+ manpages:
+
+ dep2_a.1 dep2_b.1 ...
+
+ You can use this package in the following way:
+
+ ...
+
+ More information about dep2 can be obtained from the home page at
+
+ http://www.dep2.org/
Added: cdd/tags/cdd/0.4.5/examples/menu/task1/dep3.html
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/menu/task1/dep3.html Sun Jan 6 15:44:05 2008
@@ -0,0 +1,15 @@
+<html>
+<head>
+<title>Description of dep3</title>
+<meta name="author" content="<meta package author>" />
+</head>
+<body>
+<h2>dep3: Short description of package dep3</h2>
+<p>
+ long description of dep3
+</p>
+
+<h4>For more detailed information see:</h4>
+
+</body>
+</html>
Added: cdd/tags/cdd/0.4.5/examples/tasks/README
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/tasks/README Sun Jan 6 15:44:05 2008
@@ -0,0 +1,4 @@
+This directory is mandatory. Each file had to follow a certain syntax
+to build a valid control file entry for the meta package to build.
+
+For an extensive and working example see Debian-Med packages >= 0.8.9 .
Added: cdd/tags/cdd/0.4.5/examples/tasks/task1
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/examples/tasks/task1 Sun Jan 6 15:44:05 2008
@@ -0,0 +1,17 @@
+Task: task1
+Description: Debian-_CDD_ task1 packages
+ This meta package will install Debian packages for use in
+ task1 of Debian-_CDD_.
+
+Depends: dep-pkg1, dep-pkg2, ...
+Suggests: sug-pkg1, ...
+
+Depends: dep-pkg42
+Why: You might provide some reasons here ...
+Responsible: Somebody who cares
+NeedConfig: no / yes via debconf
+
+Depends: _CDD_-common
+Why: Reason for dependency of the _CDD_common package
+Responsible: _CDD_Maintainer
+NeedConfig: yes via debconf
Added: cdd/tags/cdd/0.4.5/share/cdd/cdd-actions
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/share/cdd/cdd-actions Sun Jan 6 15:44:05 2008
@@ -0,0 +1,53 @@
+# $Id: cdd-actions 431 2006-10-23 06:11:32Z tille $
+#
+# Backend independant functions for cdd package
+#
+# For error codes check in /usr/include/sysexits.h
+
+# CHECK Functions
+
+# checks if CDD $1 exists as a CDD
+checkCDD() {
+ RET=0
+ CDD=$1
+ if [ $# -ne 1 ]; then
+ RET=64 # EX_USAGE
+ elif ! [ -d ${CONFBASE}/`toLower ${CDD}` ]; then
+ RET=67 # EX_NOUSER
+ fi
+ return ${RET}
+}
+
+# GET Functions
+
+# echos a blank-space separated list of CDDs registered into CDD subsystem
+getCDDList() {
+ # print out dir in CONFBASE and stript last space added by printf
+ find ${CONFBASE} -mindepth 1 -maxdepth 1 -not -name CVS -type d -printf "%f " | sed s/.$/\\n/g
+}
+
+# echoes a list of DBBACKEND for CDD present in the current system
+getBackendList() {
+ find ${SHAREDIR} -mindepth 1 -maxdepth 1 \
+ -not -name CVS -and -not -name menu \
+ -type d -printf "%f " | sed s/.$/\\n/g
+}
+
+# is user registered in at least one CDD?
+# it's a kludgy way :(, run a subshell and iterate on every registered CDD
+# checking if a user covers a Role in that CDD.
+isUserRegistered() {
+ RET=1 # return false
+ CDDUSER=$1
+
+ for CDD in `getCDDList`; do
+ # Run a subshell as a environment sandbox
+ ( test -f ${CONFBASE}/${CDD}/${CDD}.conf &&
+ . ${CONFBASE}/${CDD}/${CDD}.conf
+ . ${SHAREDIR}/${DBBACKEND}/cdd-actions
+ checkUserInCDD ${CDD} ${CDDUSER} && exit 0
+ ) && RET=0 && break
+ done
+ return ${RET}
+}
+
Added: cdd/tags/cdd/0.4.5/share/cdd/cdd-update-menus
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/share/cdd/cdd-update-menus Sun Jan 6 15:44:05 2008
@@ -0,0 +1,26 @@
+# $Id: cdd-update-menus 431 2006-10-23 06:11:32Z tille $
+
+# check if I am a specific user
+amI() {
+ RET=0
+ test `whoami` != "$1" && RET=1
+ return ${RET}
+}
+
+# The following scripts have historical reasons and are currently not
+# used any more. The complete text might be found in version 0.3 of
+# the scripts.
+# updates user's menu for user $1, indipendently from any CDD
+updateUser() {
+ RET=0
+ SYSUSER=$1
+ return ${RET}
+}
+
+# updates menu scripts for any user registered in CDD
+updateCDD() {
+ RET=0
+ CDD=$1
+
+ return ${RET}
+}
Added: cdd/tags/cdd/0.4.5/share/cdd/cdd-utils
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/share/cdd/cdd-utils Sun Jan 6 15:44:05 2008
@@ -0,0 +1,36 @@
+# For error codes check in /usr/include/sysexits.h
+
+toLower() {
+ echo $@ | tr "[A-Z]" "[a-z]"
+ return 0
+}
+
+# log (typically echos on stdout)
+cddLog() {
+ echo $@
+ return 0
+}
+
+# log error (typically echos on stderr)
+cddErr() {
+ RET=$1
+ shift
+ echo "err ${RET}: $@" > /dev/stderr
+ return 0
+}
+
+# log on stderr for debug outputs
+cddDebug() {
+ test -n "${DEBUG}" && echo "debug: $@" > /dev/stderr
+ return 0
+}
+
+
+
+# log error and return a fail code $1
+cddFail() {
+ RET=$1
+ shift
+ echo "err ${RET}: $@" > /dev/stderr
+ exit ${RET}
+}
Added: cdd/tags/cdd/0.4.5/share/cdd/unixgroups/cdd-actions
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/share/cdd/unixgroups/cdd-actions Sun Jan 6 15:44:05 2008
@@ -0,0 +1,272 @@
+# $Id: cdd-actions 224 2004-07-08 08:26:51Z tille $
+#
+# Backend dependant functions for cdd package
+#
+# For error codes check in /usr/include/sysexits.h
+
+# CHECK Functions
+
+#checkCDD() is backend indep, and is defined in ${SHAREDIR}/cdd-action
+
+# Read adduser config to find out from which ID normal users start
+# Default = 1000
+FIRST_UID=1000
+[ -s /etc/adduser.conf ] && . /etc/adduser.conf
+
+# checks if User $1 exists as a system user
+checkUser() {
+ RET=0
+ CDDUSER=$1
+ if [ $# -ne 1 ]; then
+ RET=64 # EX_USAGE
+ elif ! getent passwd "${CDDUSER}" > /dev/null; then
+ RET=67 # EX_NOUSER
+ fi
+ return ${RET}
+}
+
+# checks if Role $1 is registered into system
+# actually a mere check if Unix group, named like the CDD project, exists
+checkRole() {
+ RET=0
+ ROLE=$1
+ if [ "$#" -ne 1 ]; then
+ RET=64 # EX_USAGE
+ elif ! getent group "${ROLE}" > /dev/null; then
+ RET=67 # EX_NOUSER
+ fi
+ return ${RET}
+}
+
+
+# check if CDD ($1) has registered Role ($2)
+# (or, in other words, if Role has been registerd in CDD)
+checkRoleInCDD() {
+ RET=0
+ CDD=$1
+ ROLE=$2
+ if [ "$#" -ne 2 ]; then
+ RET=64 # EX_USAGE
+ # currently there is no way to extract a Role from a CDD if
+ # they're named differently, using unixgroups backend
+ elif [ "${CDD}" != "${ROLE}" ]; then
+ RET=69 # EX_UNAVAILABLE
+ fi
+ return ${RET}
+}
+
+# checks if user $2 is registered in CDD $1
+checkUserInCDD() {
+ RET=0
+ CDD=$1
+ CDDUSER=$2
+ if [ "$#" -ne 2 ]; then
+ RET=64 # EX_USAGE
+ # currently the only way to check if user is registered in a CDD is check
+ # if he/she covers any role the CDD, using unixgroups backend
+ elif [ -z "`getUserRoles ${CDD} ${CDDUSER}`" ]; then
+ RET=1 # user has no role, so is not registered in CDD
+ fi
+ return ${RET}
+}
+
+# GET Functions
+
+# getCDDList() is backend indep and is defined in ${SHAREDIR}/cdd-action
+
+# echos the roles registered by CDD
+# for Unix groups backend, it's actually the identity function
+getCDDRoleList() {
+ RET=0
+ CDD=$1
+ if [ "$#" -ne 1 ]; then
+ RET=64 # EX_USAGE
+ else
+ checkRole ${CDD} && echo ${CDD}
+ fi
+ return ${RET}
+}
+
+# echoes list of users having role $2 in CDD $1
+# if $4 exists use ',' as separator between user names
+getUsersInRole() {
+ RET=0
+ CDD=$1
+ ROLE=$2
+ SIMPLE=$3
+ USERS=""
+ if [ "$#" -ne 3 -a "$#" -ne 4 ]; then
+ return RET=64 # EX_USAGE
+ fi
+ for user in `getent group ${ROLE} | sed -ne "s/.*:\(.*\)$/\1/p" | tr "," " "` ; do
+ REALNAME=" "
+ if [ $SIMPLE -ne 1 ] ; then
+ REALNAME=" (`grep \"^$user:\" /etc/passwd | sed \"s/^$user:[^:]\+:[0-9]\+:[0-9]\+:\([^:]\+\):.*/\1/\" | sed \"s/,.*//\"`)"
+ fi
+ if [ "$#" -eq 4 ]; then
+ if [ "$USERS" != "" ] ; then
+ USERS="${USERS},"
+ fi
+ fi
+ if [ "$USERS" != "" ] ; then
+ USERS="${USERS} "
+ fi
+ USERS="${USERS}${user}${REALNAME}"
+ done
+ echo $USERS
+ return ${RET}
+}
+
+# echoes list of all users of the system
+# $1 = 1 - simply login names, $1 = 0 (or anything else) - login names and real name
+# if $2 exists use ',' as separator between user names
+getAllUsers() {
+ RET=0
+ if [ "$#" -ne 1 -a "$#" -ne 2 ]; then
+ RET=64 # EX_USAGE
+ else
+ SIMPLE=$1
+ TMPFILE=`tempfile`
+ (IFS=":"
+ while read user pass uid gid name rest ; do
+ if [ $uid -ge $FIRST_UID -a "$user" != "nobody" ] ; then
+ name=`echo $name | sed "s/,.*//"`
+ if [ $SIMPLE -eq 1 ] ; then
+ echo "$user" >> ${TMPFILE}
+ else
+ echo "$user ($name)" >> ${TMPFILE}
+ fi
+ fi
+ done < /etc/passwd
+ )
+ # Append ',' if second argument is given
+ if [ "$#" -eq 2 ]; then
+ sort -u "${TMPFILE}" | tr '\n' ',' | sed 's/,/&\ /g' | sed 's/, *$//g'
+ else
+ sort -u "${TMPFILE}"
+ fi
+ rm -f "${TMPFILE}"
+ fi
+ return ${RET}
+}
+# echo all Role covered by user $2 in CDD $1
+getUserRoles() {
+ RET=0
+ CDD=$1
+ CDDUSER=$2
+ if [ "$#" -ne 2 ]; then
+ RET=64 # EX_USAGE
+ else
+ CDDROLES=`getCDDRoleList ${CDD}`
+ ROLES=""
+ for ROLE in ${CDDROLES}; do
+ for USER in `getUsersInRole ${CDD} ${ROLE} 1`; do
+ test "${USER}" == "${CDDUSER}" && \
+ ROLES="${ROLES} ${ROLE}"
+ done
+ done
+ cddDebug "getUserRoles(): roles covered by user ${CDDUSER} in CDD ${CDD}: ${ROLES}"
+ echo ${ROLES}
+ fi
+ return ${RET}
+}
+
+
+# echos the home directory of the system user
+getUserHome() {
+ RET=0
+ CDDUSER=$1
+ if [ "$#" -ne 1 ]; then
+ RET=64 # EX_USAGE
+ else
+ if checkUser ${CDDUSER}; then
+ getent passwd ${CDDUSER} | sed "s/.*:\([^:]*\):[^:]*$/\1/"
+ RET=$?
+ else
+ RET=67 # EX_NOUSER
+ fi
+ fi
+
+ return ${RET}
+}
+
+
+
+# ADD/SET functions
+
+# adds role $2 to current unix groups for the specified CDD $1, as a system
+# dynamic allocated group
+addRole() {
+ RET=0
+ CDD=$1
+ ROLE=$2
+ if [ "$#" -ne 2 ]; then
+ RET=64 # EX_USAGE
+ else
+ # Check whether group yet exists
+ TESTGROUP="`getent group ${ROLE}`" || true
+ if [ -z "${TESTGROUP}" ] ; then
+ ${DRYRUN} addgroup --system "${ROLE}" || true
+ fi
+ RET=$?
+ fi
+ return ${RET}
+}
+
+# set user $2 to have role $3, for the specified CDD $1
+setUserRole() {
+ RET=0
+ CDD=$1
+ USER=$2
+ ROLE=$3
+ if [ "$#" -ne 3 ]; then
+ RET=64 # EX_USAGE
+ else
+ ${DRYRUN} adduser ${USER} ${ROLE}
+ RET=$?
+ fi
+ return ${RET}
+}
+
+# DEL/USET Functions
+
+# remove role $2 for the specified CDD $1 from current unix groups, as a
+# system dynamic allocated group
+delRole() {
+ RET=0
+ CDD=$1
+ ROLE=$2
+ if [ "$#" -ne 2 ]; then
+ RET=64 # EX_USAGE
+ else
+ if checkRole "${ROLE}"; then
+ ${DRYRUN} delgroup "${ROLE}"
+ RET=$?
+ else
+ RET=67 # EX_NOUSER
+ fi
+ fi
+ return ${RET}
+}
+
+
+# unset user $2 from having role $3, for the specified CDD $1
+unsetUserRole() {
+ RET=0
+ CDD=$1
+ CDDUSER=$2
+ ROLE=$3
+ # Make sure CDDUSER and ROLE are BOTH defined,
+ # to avoid disasters using deluser
+ if [ "$#" -ne 3 ]; then
+ RET=64 # EX_USAGE
+ else
+ if checkUser "${CDDUSER}"; then
+ ${DRYRUN} deluser "${CDDUSER}" "${ROLE}"
+ RET=$?
+ else
+ RET=67 # EX_NOUSER
+ fi
+ fi
+ return ${RET}
+}
Added: cdd/tags/cdd/0.4.5/share/menu/cdd-menu
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/share/menu/cdd-menu Sun Jan 6 15:44:05 2008
@@ -0,0 +1,215 @@
+#!/bin/bash
+
+# Script to handle menu profiles for CDD subsystem, installed by your system
+# administrator via cdd-common package.
+#
+# It prints on STDOUT Debian menu entries for user
+
+CONFBASE=${CONFBASE:-/etc/cdd}
+
+# read generic CDD conf
+. ${CONFBASE}/cdd.conf
+
+CDDUSER=`whoami`
+
+tasksdir=/usr/share/cdd/tasks
+
+# it has to be run only by unprivileged users via update-menus
+test "${CDDUSER}" == "root" && exit 0
+
+# Upper case the first letter of a string to have a nicer menu
+NameToUpper() {
+ if [ $# -ne 1 ] ; then
+ RET=64 # EX_USAGE
+ return ${RET}
+ fi
+ echo $1 | perl -ne 'print "\u\L$_";'
+ return 0
+}
+
+# Obtain title from HTML page for menu hints
+GetHTMLTitle () {
+ if [ $# -ne 1 ] ; then
+ RET=64 # EX_USAGE
+ return ${RET}
+ fi
+ perl -ne 'while (<>) {chomp; $all.="$_ ";}
+ ($title) = ($all =~ /.*\<title\>(.*)\<\/title\>.*/i);
+ $title =~ s/\s+/ /g ;
+ print $title ; exit 0;' $1
+ return 0
+}
+
+# Obtain title (= first line) from text file for menu hints
+GetTxtTitle () {
+ if [ $# -ne 1 ] ; then
+ RET=64 # EX_USAGE
+ return ${RET}
+ fi
+ head -1 $1 | sed -e "s/[[:space:]]\+/ /g" -e "s/^[[:space:]]*\(.*\)[[:space:]]*$/\1/"
+ return 0
+}
+
+# Strip CDD-name from meta package name
+GetTaskNameFromPackage () {
+ if [ $# -ne 2 ] ; then
+ RET=64 # EX_USAGE
+ return ${RET}
+ fi
+ CDD=$1 # CDD - name
+ PKG=$2 # meta package name
+ echo $PKG | sed "s/^$CDD-//"
+ return 0
+}
+
+# Obtain task title which has to be defined in the meta package control templates
+GetTaskTitle () {
+ if [ $# -ne 1 ] ; then
+ RET=64 # EX_USAGE
+ return ${RET}
+ fi
+ PKG=$1 # meta package name
+ cat "$tasksdir"/"$CDD"/`GetTaskNameFromPackage "$CDD" "$PKG"`
+ return 0
+}
+
+getMenuEntriesFromDependencies() {
+ RET=""
+ if [ $# -ne 1 ] ; then
+ RET=64 # EX_USAGE
+ return ${RET}
+ fi
+ PKG="$CDD"-$1
+ TASK=`GetTaskTitle $PKG`
+ SECTION=`NameToUpper "$CDD"`/`NameToUpper "$TASK"`
+
+ # find the list of Depends / Recommends / Suggests
+ DepPkgs=`dpkg --status "$PKG" | \
+ sed -e '/^Description/,$d' -e '/^Conffiles/,$d' | \
+ grep -v ^[A-CE-QT-Z] | \
+ grep -v ^S[eot] | \
+ sed -e "s/([^)]*)//" \
+ -e "s/,* *${CDD}-config//" \
+ -e "s/^[^:]*: *//" \
+ -e "s/, */\\n/g" | \
+ sort | uniq`
+
+ # check whether CDD-maintainer provided menu override different from
+ # package maintainers menu file
+ # FIXME: This is outdated! The concept of menu files named like the
+ # meta package is stopped in favour of single menu files named like
+ # the dependant package. The rationale is that you can get more
+ # fine grained replacements.
+ cddmenufile=""
+ if [ -s "$HOME"/.menu/"$PKG" ] ; then
+ cddmenufile="$HOME"/.menu/"$PKG"
+ elif [ -s /etc/cdd/"$CDD"/menu/"$PKG" ] ; then
+ cddmenufile=/etc/cdd/"$CDD"/menu/"$PKG"
+ elif [ -s /usr/lib/cdd/"$CDD"/menu/"$PKG" ] ; then
+ cddmenufile=/usr/lib/cdd/"$CDD"/menu/"$PKG"
+ elif [ -s /usr/share/cdd/"$CDD"/menu/"$PKG" ] ; then
+ cddmenufile=/usr/share/cdd/"$CDD"/menu/"$PKG"
+ fi
+
+ for pkg in $DepPkgs ; do
+ # if CDD maintainer provided override just continue
+ [ ! -z "$cddmenufile" ] && grep -q -i "?package($pkg)" "$cddmenufile" && continue
+
+ # check for documentation text of CDD maintainer which should
+ # be prefered over package maintainers menu
+ docfile=""
+ if [ -s /usr/share/doc/"$PKG"/"$pkg".html ] ; then
+ docfile=/usr/share/doc/"$PKG"/"$pkg".html
+ elif [ -s /usr/share/doc/"$PKG"/"$pkg".txt ] ; then
+ docfile=/usr/share/doc/"$PKG"/"$pkg".txt
+ elif [ -s /usr/share/doc/"$PKG"/"$pkg" ] ; then
+ docfile=/usr/share/doc/"$PKG"/"$pkg"
+ fi
+ # if CDD maintainer provides documentation view this as menu entry ...
+ if [ ! -z "$docfile" -a -s "$docfile" ] ; then
+ hint=""
+ if file "$docfile" | grep -q HTML ; then
+ senspager=sensible-browser
+ hint=`GetHTMLTitle "$docfile"`
+ else
+ senspager=sensible-pager
+ hint=`GetTxtTitle "$docfile"`
+ fi
+ if [ ! -z "$hint" ] ; then
+ hint="hints=\""$hint"\""
+ fi
+ # Force menu-1 entry in case before this was menu-2 used
+ cat <<EOT
+!C menu-1
+?package($pkg): needs="text" \\
+ section="$SECTION" \\
+ title="`NameToUpper "$pkg"`" $hint \\
+ command="$senspager $docfile"
+EOT
+ fi
+
+ # search for a menu file with the following priority
+ # ${HOME}/.menu, /etc/menu, /usr/share/cdd/${CDD}/menu, /usr/share/menu, /usr/lib/menu
+ pkgmenufile=""
+ donotchange=1
+ if [ -s "$HOME"/.menu/"$pkg" ] ; then
+ pkgmenufile="$HOME"/.menu/"$pkg"
+ elif [ -s /etc/menu/"$pkg" ] ; then
+ pkgmenufile=/etc/menu/"$pkg"
+ elif [ -s /usr/share/cdd/"$CDD"/menu/"$pkg" ] ; then
+ pkgmenufile=/usr/share/cdd/"$CDD"/menu/"$pkg"
+ donotchange=0
+ elif [ -s /usr/share/menu/"$pkg" ] ; then
+ pkgmenufile=/usr/share/menu/"$pkg"
+ elif [ -s /usr/lib/menu/"$pkg" ] ; then
+ pkgmenufile=/usr/lib/menu/"$pkg"
+ fi
+ if [ ! -z "$pkgmenufile" ] ; then
+ # Force menu-1 entry in case before this was menu-2 used
+ ## if ! grep -q -c '^!C' $pkgmenufile ; then
+ echo '!C menu-1'
+ ## fi
+ if [ $donotchange -eq 1 ] ; then
+ # the 2. and 3. -e - expression tries to fix missing '"' around the entries
+ sed -e "/^[[:space:]]*$/d" \
+ -e 's?\([ :][^=^ ]*=\) *\([^"^=]*\)\( [^=]\+=\)?\1"\2"\3?g' \
+ -e 's?\([ :][^=^ ]*=\) *\([^"^=]*\)\( [^=]\+=\)?\1"\2"\3?g' \
+ -e 's?\( [^=]\+=\) *\([^"^=]\+[^"^\]\)$?\1"\2"?' \
+ -e "s?\(section\)[[:space:]]*=[[:space:]]*\"*[^\"\\]*\"*?\1=\"$SECTION\"?" $pkgmenufile
+ else
+ # strip possible comments
+ grep -v "^[[:space:]]*#" $pkgmenufile
+ fi
+ fi
+ # HACK: Add blank line which helps in case of missing newlines
+ echo
+ done
+
+ [ -s "$cddmenufile" ] && cat "$cddmenufile"
+}
+
+ALLCDD=`getCDDList`
+for CDD in ${ALLCDD}; do
+ # read per CDD conf
+ test -f ${CONFBASE}/${CDD}/${CDD}.conf && \
+ . ${CONFBASE}/${CDD}/${CDD}.conf
+
+ if [ -d "$tasksdir"/"$CDD" ] ; then
+ for PKG in `ls "$tasksdir"/"$CDD"` ; do
+ getMenuEntriesFromDependencies "$PKG"
+ done
+ fi
+
+# # print on STDOUT menu generic entries if user belongs to CDD
+# checkUserInCDD ${CDD} ${CDDUSER} && \
+# test -d ${CONFBASE}/${CDD}/menu/ && \
+# find ${CONFBASE}/${CDD}/menu/ -maxdepth 1 -mindepth 1 -type f \
+# -exec cat {} \;
+#
+# # and role specific menu entries
+# for ROLE in `getUserRoles ${CDD} ${CDDUSER}`; do
+# test -d ${CONFBASE}/${CDD}/menu/${ROLE} &&
+# find ${CONFBASE}/${CDD}/menu/${ROLE} -maxdepth 1 -mindepth 1 \
+# -type f -exec cat {} \;
+# done
+done
Added: cdd/tags/cdd/0.4.5/sources.list.local
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/sources.list.local Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+deb file:/home/ftp/pub/debian/ testing main
Added: cdd/tags/cdd/0.4.5/sources.list.stable
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/sources.list.stable Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+deb http://ftp.debian.org/ stable main
Added: cdd/tags/cdd/0.4.5/sources.list.testing
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/sources.list.testing Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+deb http://ftp.debian.org/ testing main
Added: cdd/tags/cdd/0.4.5/sources.list.unstable
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/sources.list.unstable Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+deb http://ftp.debian.org/ unstable main
Added: cdd/tags/cdd/0.4.5/templates/README.Debian
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/README.Debian Sun Jan 6 15:44:05 2008
@@ -0,0 +1,22 @@
+This is a meta package which is used by Custom Debian Distributions
+-------------------------------------------------------------------
+
+This package is a metapackage; it depends on several other packages to make
+them be installed when it is installed. If you want to remove one of those
+packages, you have to remove this package as well. The other packages won't be
+touched.
+
+There exists an comprehensive documentation about Custom Debian Distributions
+which can be found at http://alioth.debian.org/projects/cdd/.
+
+The meta packages should always be installable on a Debian system.
+Thus no dependency on a non-available package (ie. a package available
+outside of Debian) have been used. However such dependencies have
+been downgraded to Suggests.
+
+Sometimes some non-free packages are suggested when no good free
+alternatives are known. You're encouraged to find good free
+replacements.
+
+Perhaps type-handling might gives us a way to specify arch-dependant
+dependencies.
Added: cdd/tags/cdd/0.4.5/templates/apt.conf
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/apt.conf Sun Jan 6 15:44:05 2008
@@ -0,0 +1,10 @@
+/*
+ * $Id: apt.conf 452 2007-08-27 17:56:18Z tille $
+ */
+/*
+ * APT configuration file for #CDD#-config package
+ */
+
+DPkg {
+ Post-Invoke {"test -f /var/run/#CDD#-config.usermenu && if [ -x /usr/sbin/cdd-update-usermenus ] ; then /usr/sbin/cdd-update-usermenus #CDD# ; fi ; rm -f /var/run/#CDD#-config.usermenu";};
+}
Added: cdd/tags/cdd/0.4.5/templates/config.config
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/config.config Sun Jan 6 15:44:05 2008
@@ -0,0 +1,44 @@
+#!/bin/sh -e
+
+# Initialize debconf if not yet done
+if [ _"$DEBCONF_REDIR" = _"" ]; then
+ . /usr/share/debconf/confmodule
+ db_version 2.0
+ db_capb backup
+fi
+
+db_input "medium" "shared/#CDD#-config/useusermenus" || true
+db_go
+db_get shared/#CDD#-config/useusermenus
+if [ $RET ] ; then
+ db_input "medium" "shared/#CDD#-config/usermenus" || true
+ db_go
+fi
+
+# if cdd-config package is not yet installed we have to stop here
+if [ ! -f /etc/cdd/cdd.conf ] ; then
+ db_stop
+ exit 0
+fi
+
+[ -s /etc/cdd/cdd.conf ] && . /etc/cdd/cdd.conf
+[ -s /etc/cdd/#CDD#/#CDD#.conf ] && . /etc/cdd/#CDD#/#CDD#.conf
+
+# Add at least one default role for each CDD
+addRole #CDD# #CDD#
+
+# Login names of all users of the system as comma separated list
+USERS=`getAllUsers 0 ,`
+
+# "login (Real Name)" of users registered to the CDD #CDD#
+CDDUSERS=`getUsersInRole #CDD# #CDD# 0 ,`
+
+db_set #CDD#-config/group "$CDDUSERS"
+db_subst #CDD#-config/group users "$USERS"
+db_get #CDD#-config/group
+
+db_input high #CDD#-config/group || true
+db_go
+
+db_stop
+exit 0
Added: cdd/tags/cdd/0.4.5/templates/config.install
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/config.install Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+debian/90#CDD#-config etc/apt/apt.conf.d
Added: cdd/tags/cdd/0.4.5/templates/config.links
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/config.links Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+usr/share/cdd/cdd-task-lister usr/lib/tasksel/#CDD#-task-files
Added: cdd/tags/cdd/0.4.5/templates/config.postinst
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/config.postinst Sun Jan 6 15:44:05 2008
@@ -0,0 +1,46 @@
+#!/bin/sh -e
+
+# if cdd-common package is not yet installed we have to stop here
+if [ ! -f /etc/cdd/cdd.conf ] ; then
+ echo "Custom Debian Distribution configuration file /etc/cdd/cdd.conf is missing."
+ exit -1
+fi
+. /etc/cdd/cdd.conf
+
+if [ ! -f /etc/cdd/#CDD#/#CDD#.conf ] ; then
+ echo "#CDDNAME# configuration file /etc/cdd/#CDD#/#CDD#.conf is missing."
+ exit -1
+fi
+. /etc/cdd/#CDD#/#CDD#.conf
+
+# Source debconf library.
+. /usr/share/debconf/confmodule
+db_version 2.0
+
+# If $USEUSERMENU is not set in /etc/cdd/#CDD#/#CDD#.conf read it from debconf database
+if [ -z $USEUSERMENU ] ; then
+ db_get shared/#CDD#-config/useusermenus
+ if [ $RET ] ; then
+ USEUSERMENU="yes"
+ fi
+fi
+
+if [ "$USEUSERMENU" = "yes" ] ; then
+ db_get #CDD#-config/group
+
+ CURRENTCDDUSERS=`getUsersInRole #CDD# #CDD# 1`
+ # Add those users which were selected but are not yet in the group
+ for user in `echo "$RET" | sed "s/([^)]*)//g" | sed "s/ //g" | tr ',' '\n'` ; do
+ if [ `echo "${CURRENTCDDUSERS}" | grep -c -w "$user"` -eq 0 ] ; then
+ /usr/sbin/cdd-user add #CDD# $user
+ fi
+ done
+ # Del those users which were obviousely removed from list of CDD users
+ for user in `getAllUsers 1` ; do
+ if [ `echo "$RET" | grep -c -w "$user"` -eq 0 ] && [ `getent group #CDD# | grep -c -w $user` -gt 0 ] ; then
+ /usr/sbin/cdd-user del #CDD# $user
+ fi
+ done
+fi
+
+#DEBHELPER#
Added: cdd/tags/cdd/0.4.5/templates/config.templates
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/config.templates Sun Jan 6 15:44:05 2008
@@ -0,0 +1,35 @@
+Template: #CDD#-config/group
+Type: multiselect
+Choices: ${users}
+_Description: #CDDNAME# users:
+ Please select, among the whole system user list, users who should get
+ a #CDDNAME# user menu.
+
+Template: shared/#CDD#-config/usermenus
+Type: select
+_Choices: Each package installation, End of installation, Never
+Default: never
+_Description: Build user menus at:
+ The meta packages of the #CDDNAME# Custom Debian Distribution
+ contain extra menus that will be auto generated from existing packages.
+ If the role based user menu option was choosen these menus will be built
+ when a user who is registered to a given role uses the "update-menus"
+ utility. This can be done automatically for all users who are registered
+ for #CDDNAME# after installation of each single meta package,
+ at the end of the whole installation process to save time in case
+ of installing more than one meta package or just leave the call of
+ "update-menus" to the users themselves.
+ * Each package installation : Call "update-menus" after each meta package
+ (time consuming);
+ * End of installation : Call "update-menus" only once at the end of
+ the whole installation/upgrading process;
+ * Never : Do not call "update-menus" at all.
+
+Template: shared/#CDD#-config/useusermenus
+Type: boolean
+_Description: Do you want user menus?
+ The menus for the #CDDNAME# Custom Debian Distribution could be
+ implemented as user menus which means they are visible only for those
+ users that will be selected explicitely. If you want this answer the
+ now with "yes". Be warned that selecting the users from a large list
+ does not scale very well.
Added: cdd/tags/cdd/0.4.5/templates/po/POTFILES.in
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/po/POTFILES.in Sun Jan 6 15:44:05 2008
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] config.templates
Added: cdd/tags/cdd/0.4.5/templates/po/ca.po
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/po/ca.po Sun Jan 6 15:44:05 2008
@@ -0,0 +1,87 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: cdd 0.4\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-06-28 15:58+0200\n"
+"PO-Revision-Date: 2004-09-07 20:59+0200\n"
+"Last-Translator: Guillem Jover <guillem at debian.org>\n"
+"Language-Team: Catalan <debian-l10n-catalan at debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid "#CDDNAME# users:"
+msgstr "Usuaris de #CDDNAME#:"
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid ""
+"Please select, among the whole system user list, users who should get a "
+"#CDDNAME# user menu."
+msgstr ""
+"Si us plau seleccioneu, de la llista de tots els usuaris del sistema, "
+"aquells usuaris que han d'obtenir un menú d'usuari de #CDDNAME#."
+
+#. Type: select
+#. Choices
+#: ../config.templates:10
+msgid "Each package installation, End of installation, Never"
+msgstr "En cada instal·lació d'un paquet, Al final de la instal·lació, Mai"
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid "Build user menus at:"
+msgstr "Construir els menús d'usuari a:"
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid ""
+"The meta packages of the #CDDNAME# Custom Debian Distribution contain extra "
+"role based menus for users. These will be built when a user who is "
+"registered to a given role uses the \"update-menus\" utility. This can be "
+"done automatically for all users who are registered for #CDDNAME# after "
+"installation of each single meta package, at the end of the whole "
+"installation process to save time in case of installing more than one meta "
+"package or just leave the call of \"update-menus\" to the users themselves.\n"
+" * Each package installation : Call \"update-menus\" after each meta "
+"package\n"
+" (time consuming);\n"
+" * End of installation : Call \"update-menus\" only once at the end "
+"of\n"
+" the whole installation/upgrading process;\n"
+" * Never : Do not call \"update-menus\" at all."
+msgstr ""
+"Els meta paquets de la distribució de Debian adaptada #CDDNAME# contenen "
+"menús extra basats en rols per als usuaris. Aquests seran construïts quan "
+"un usuari que estigui registrat en algun dels rols faci servir la utilitat "
+"«update-menus». Això es pot fer automàticament per a tots els usuaris que "
+"estiguin registrats per #CDDNAME# després de la instal·lació de cada meta "
+"paquet, al final de tot el procés d'instal·lació per a estalviar temps en "
+"cas d'instal·lar més d'un meta paquet o senzillament deixar l'execució de "
+"«update-menus» als propis usuaris.\n"
+" * En cada instal·lació d'un paquet: Executar «update-menus» després de cada\n"
+" meta paquet (consumeix molt de temps);\n"
+" * Al final d'instal·lació : Executar «update-menus» només al final\n"
+" de tota la instal·lació o procés\n"
+" d'actualització;\n"
+" * Mai : No executar mai «update-menus»."
+
Added: cdd/tags/cdd/0.4.5/templates/po/de.po
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/po/de.po Sun Jan 6 15:44:05 2008
@@ -0,0 +1,84 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: #CDD#-config\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-06-28 15:58+0200\n"
+"PO-Revision-Date: 2004-03-26 17:42+0100\n"
+"Last-Translator: Andreas Tille <tille at debian.org>\n"
+"Language-Team: German <debian-l10n-german at lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid "#CDDNAME# users:"
+msgstr "#CDDNAME# Nutzer:"
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid ""
+"Please select, among the whole system user list, users who should get a "
+"#CDDNAME# user menu."
+msgstr ""
+"Bitte wählen Sie aus der Liste aller Nutzer des Systems diejenigen aus, die "
+"ein #CDDNAME# Nutzermenü erhalten sollen."
+
+#. Type: select
+#. Choices
+#: ../config.templates:10
+msgid "Each package installation, End of installation, Never"
+msgstr "Paketinstallation, Installationsende, Nie"
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid "Build user menus at:"
+msgstr "Erzeugen der Nutzermenüs bei:"
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid ""
+"The meta packages of the #CDDNAME# Custom Debian Distribution contain extra "
+"role based menus for users. These will be built when a user who is "
+"registered to a given role uses the \"update-menus\" utility. This can be "
+"done automatically for all users who are registered for #CDDNAME# after "
+"installation of each single meta package, at the end of the whole "
+"installation process to save time in case of installing more than one meta "
+"package or just leave the call of \"update-menus\" to the users themselves.\n"
+" * Each package installation : Call \"update-menus\" after each meta "
+"package\n"
+" (time consuming);\n"
+" * End of installation : Call \"update-menus\" only once at the end "
+"of\n"
+" the whole installation/upgrading process;\n"
+" * Never : Do not call \"update-menus\" at all."
+msgstr ""
+"Die Metapakete der Custom Debian Distribution #CDDNAME# enthalten Rollen "
+"basierte Nutzermenüs. Diese werden erzeugt, wenn ein Nutzer, der für eine "
+"bestimmte Rolle registriert ist, das Programm \"update-menus\" aufruft. Das "
+"kann automatisch für alle für #CDDNAME# registrierten Nutzer geschehen und "
+"zwar nach der Installation jedes einzelnen Metapaketes oder zeitsparend am "
+"Ende des Installationsprozesses mehrerer Metapakete. Alternativ kann "
+"\"update-menus\" auch manuell durch jeden Nutzer aufgerufen werden.\n"
+" * Paketinstallation : \"update-menus\" nach jeder Metapaketinstallation\n"
+" aufrufen (zeitintensiv).\n"
+" * Installationsende : \"update-menus\" einmalig am Ende des\n"
+" Installations- oder Updateprozesses aufrufen.\n"
+" * Nie : \"update-menus\" nicht aufrufen.\n"
Added: cdd/tags/cdd/0.4.5/templates/po/fr.po
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/po/fr.po Sun Jan 6 15:44:05 2008
@@ -0,0 +1,92 @@
+# translation of fr.po to French
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+# Christian Perrier <bubulle at debian.org>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: #CDD#-config\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-06-28 15:58+0200\n"
+"PO-Revision-Date: 2004-06-29 08:04+0200\n"
+"Last-Translator: Eric Madesclair <eric-m at wanadoo.fr>\n"
+"Language-Team: French <debian-l10n-french at lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+"Plural-Forms: Plural-Forms: nplurals=2; plural=n>1;\n"
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid "#CDDNAME# users:"
+msgstr "Utilisateurs de #CDDNAME# :"
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid ""
+"Please select, among the whole system user list, users who should get a "
+"#CDDNAME# user menu."
+msgstr ""
+"Veuillez choisir parmi tous les utilisateurs du système ceux qui auront un "
+"menu #CDDNAME#."
+
+#. Type: select
+#. Choices
+#: ../config.templates:10
+msgid "Each package installation, End of installation, Never"
+msgstr "À chaque installation de paquet, À la fin de l'installation, Jamais"
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid "Build user menus at:"
+msgstr "Construction des menus des utilisateurs :"
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid ""
+"The meta packages of the #CDDNAME# Custom Debian Distribution contain extra "
+"role based menus for users. These will be built when a user who is "
+"registered to a given role uses the \"update-menus\" utility. This can be "
+"done automatically for all users who are registered for #CDDNAME# after "
+"installation of each single meta package, at the end of the whole "
+"installation process to save time in case of installing more than one meta "
+"package or just leave the call of \"update-menus\" to the users themselves.\n"
+" * Each package installation : Call \"update-menus\" after each meta "
+"package\n"
+" (time consuming);\n"
+" * End of installation : Call \"update-menus\" only once at the end "
+"of\n"
+" the whole installation/upgrading process;\n"
+" * Never : Do not call \"update-menus\" at all."
+msgstr ""
+"Les méta-paquets de la distribution Debian spécialisée #CDDNAME# comportent "
+"des menus additionnels suivant le rôle attribué aux utilisateurs. Ces menus "
+"sont construits quand un utilisateur enregistré dans un rôle donné lancera "
+"la commande « update-menus ». Cette opération peut se faire automatiquement "
+"après l'installation de chaque méta-paquet pour chaque utilisateur "
+"enregistré pour #CDDNAME# ou à la fin du processus d'installation pour "
+"gagner du temps si plu sd'un méta-paquet est installé. Il est également "
+"possible de laisser aux utilisateurs l'initiative de lancer eux-même la "
+"commande.\n"
+" - À chaque installation de paquet : lancer « update-menus » après\n"
+" l'installation de chaque méta-paquet\n"
+" (cette opération peut être longue) ;\n"
+" - À la fin de l'installation : lancer « update-menus » seulement\n"
+" à la fin de la procédure\n"
+" d'installation ou de mise à jour ;\n"
+" - Jamais : ne pas du tout lancer « update-menus »."
Added: cdd/tags/cdd/0.4.5/templates/po/pt_BR.po
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/po/pt_BR.po Sun Jan 6 15:44:05 2008
@@ -0,0 +1,88 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: cdd-dev\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-06-28 15:58+0200\n"
+"PO-Revision-Date: 2004-06-29 22:00-0300\n"
+"Last-Translator: André Luís Lopes <andrelop at debian.org>\n"
+"Language-Team: Debian-BR Project <debian-l10n-portuguese at lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid "#CDDNAME# users:"
+msgstr "Usuários #CDDNAME# : "
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid ""
+"Please select, among the whole system user list, users who should get a "
+"#CDDNAME# user menu."
+msgstr ""
+"Por favor, selecione dentre a lista de usuários de todo o sistema os "
+"usuários que devem obter um menu de usuário do #CDDNAME#."
+
+#. Type: select
+#. Choices
+#: ../config.templates:10
+msgid "Each package installation, End of installation, Never"
+msgstr "A cada instalação de pacote, Ao final da instalação, Nunca"
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid "Build user menus at:"
+msgstr "Construir menus de usuários :"
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid ""
+"The meta packages of the #CDDNAME# Custom Debian Distribution contain extra "
+"role based menus for users. These will be built when a user who is "
+"registered to a given role uses the \"update-menus\" utility. This can be "
+"done automatically for all users who are registered for #CDDNAME# after "
+"installation of each single meta package, at the end of the whole "
+"installation process to save time in case of installing more than one meta "
+"package or just leave the call of \"update-menus\" to the users themselves.\n"
+" * Each package installation : Call \"update-menus\" after each meta "
+"package\n"
+" (time consuming);\n"
+" * End of installation : Call \"update-menus\" only once at the end "
+"of\n"
+" the whole installation/upgrading process;\n"
+" * Never : Do not call \"update-menus\" at all."
+msgstr ""
+"Os meta-pacotes da Distribuição Debian Customizada #CDDNAME# contém "
+"menus extras para usuários com base em suas funções. Tais menus serão "
+"gerados quando um usuário registrado para uma função específica utilizar "
+"o utilitário \"update-menus\". Isso pode ser feito automaticamente para "
+"todos os usuários que estejam registrados para o #CDDNAME# após a "
+"instalação de cada meta-pacote, ao final de todo o processo de instalação "
+"para economizar tempo no caso da instalação de mais de um meta-pacote ou "
+"deixar a execução do utilitário \"update-menus\" por conta dos prórios"
+"usuários.\n"
+" * A cada instalação de pacote : Executa \"update-menus\" após cada meta "
+"pacote\n"
+" (consome muito tempo);\n"
+" * Ao final da instalação : Executa \"update-menus\" uma única vez "
+"no final\n"
+" do processo completo de instalação/atualização;\n"
+" * Nunca : Não executa \"update-menus\"."
Added: cdd/tags/cdd/0.4.5/templates/po/templates.pot
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/po/templates.pot Sun Jan 6 15:44:05 2008
@@ -0,0 +1,71 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-06-28 15:58+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid "#CDDNAME# users:"
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../config.templates:4
+msgid ""
+"Please select, among the whole system user list, users who should get a "
+"#CDDNAME# user menu."
+msgstr ""
+
+#. Type: select
+#. Choices
+#: ../config.templates:10
+msgid "Each package installation, End of installation, Never"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid "Build user menus at:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../config.templates:12
+msgid ""
+"The meta packages of the #CDDNAME# Custom Debian Distribution contain extra "
+"role based menus for users. These will be built when a user who is "
+"registered to a given role uses the \"update-menus\" utility. This can be "
+"done automatically for all users who are registered for #CDDNAME# after "
+"installation of each single meta package, at the end of the whole "
+"installation process to save time in case of installing more than one meta "
+"package or just leave the call of \"update-menus\" to the users themselves.\n"
+" * Each package installation : Call \"update-menus\" after each meta "
+"package\n"
+" (time consuming);\n"
+" * End of installation : Call \"update-menus\" only once at the end "
+"of\n"
+" the whole installation/upgrading process;\n"
+" * Never : Do not call \"update-menus\" at all."
+msgstr ""
Added: cdd/tags/cdd/0.4.5/templates/postinst
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/postinst Sun Jan 6 15:44:05 2008
@@ -0,0 +1,46 @@
+#!/bin/bash -e
+
+# This is the default postinst file from the cdd-dev package which is used
+# in all meta packages. If there is a certain need to provide extra
+# postinst files for some meta packages this template will be appended. Thus
+# it will be checked whether debconf was just initialized.
+#
+# You should not insert the _DEBHELPER_ template in the special postscript
+# file because it is in the end of this template anyway.
+
+test -x /usr/sbin/cdd-update-menus && /usr/sbin/cdd-update-menus -d #CDD#
+
+# Initialize debconf if not yet done
+if [ _"$DEBCONF_REDIR" = _"" ]; then
+ . /usr/share/debconf/confmodule
+ db_version 2.0
+fi
+
+. /etc/cdd/cdd.conf
+if [ -s /etc/cdd/#CDD#/#CDD#.conf ] ; then . /etc/cdd/#CDD#/#CDD#.conf ; fi
+
+case "$1" in
+ abort-deconfigure|abort-remove|abort-upgrade)
+ ;;
+ configure|upgrade)
+ db_get "shared/#CDD#-config/usermenus" || true
+ case "$RET" in
+ "Each package installation")
+ /usr/sbin/cdd-update-usermenus #CDD#
+ ;;
+ "End of installation")
+ touch /var/run/#CDD#-config.usermenu
+ ;;
+ esac
+ ;;
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+db_stop
+
+#DEBHELPER#
+
+exit 0
Added: cdd/tags/cdd/0.4.5/templates/postrm
==============================================================================
--- (empty file)
+++ cdd/tags/cdd/0.4.5/templates/postrm Sun Jan 6 15:44:05 2008
@@ -0,0 +1,48 @@
+#!/bin/bash -e
+
+# This is the default postrm file from the cdd-dev package which is used
+# in all meta packages. If there is a certain need to provide extra
+# postrm files for some meta packages this template will be appended. Thus
+# it will be checked whether debconf was just initialized.
+#
+# You should not insert the _DEBHELPER_ template in the special postscript
+# file because it is in the end of this template anyway.
+
+test -x /usr/sbin/cdd-update-menus && /usr/sbin/cdd-update-menus -d #CDD#
+
+test -s /etc/cdd/cdd.conf && . /etc/cdd/cdd.conf
+test -s /etc/cdd/#CDD#/#CDD#.conf && . /etc/cdd/#CDD#/#CDD#.conf
+
+if [ -x /usr/sbin/cdd-update-usermenus ] ; then
+ # Initialize debconf if not yet done
+ if [ _"$DEBCONF_REDIR" = _"" ]; then
+ . /usr/share/debconf/confmodule
+ db_version 2.0
+ fi
+
+ . /etc/cdd/cdd.conf
+ if [ -s /etc/cdd/#CDD#/#CDD#.conf ] ; then . /etc/cdd/#CDD#/#CDD#.conf ; fi
+
+ case "$1" in
+ abort-install|abort-upgrade|failed-upgrade|upgrade)
+ ;;
+ remove|purge)
+ db_get "shared/#CDD#-config/usermenus" || true
+ case "$RET" in
+ "Each package installation")
+ /usr/sbin/cdd-update-usermenus #CDD#
+ ;;
+ "End of installation")
+ touch /var/run/#CDD#-config.usermenu
+ ;;
+ esac
+ ;;
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+ esac
+fi
+
+
+#DEBHELPER#
More information about the Cdd-commits
mailing list