[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Plans for post-sarge: 1. Packaging internals



Hi all,

I've been working again on the packages for the current beta, and I
would like to suggest some changes in the way we do our packaging.

1. introduce eperl

   Many times I struggled with the fact that the same files are acted on
   in several scripts, like rules, preinst, and postrm, or whatever. And
   when I make changes, I quite often forget to check which files need
   the change. Up to now and IIRC, this has only happened during package
   testing, not in uploaded versions, but it's only a question of time...

   One approach to make maintenance easier in this respect would be to
   generate the files using eperl. I have encountered this system first
   when looking at the auctex package, and I must admit the first
   encounter wasn't too friendly. But after one has become acquainted to
   it, I think it's really great.

   Instead of editing, e.g., postinst, you edit postinst.in, and mixed
   with the code as we know it it contains eperl statements - mostly
   just variable substitutions like

   TEXMFD_UCF="<:=$TEXMF_PARTS:>"

   According to the rule

   % :: %.in common.variables_update $(eperlfiles) 
        eperl -P -o $@ $<

   the eperl statement between <:...:> will be replaced. All files will
   include debian/variables, were we write

   <:$TEXMF_PARTS="05TeXMF 15Plain 45TeXinputs 55Fonts 65BibTeX 75DviPS 85Misc 95NonPath":>

   And can reuse the list everywhere. So this gives, in the final
   generated postinst:

   TEXMFD_UCF="05TeXMF 15Plain 45TeXinputs 55Fonts 65BibTeX 75DviPS 85Misc 95NonPath"

   My current version of tetex-bin_2.96.7.20040721 is yet eperl'ed
   (except debian/rules), and I think it rocks...

2. Once we've done that, I'd suggest to create an additional CVS tree
   besides tetex-bin and tetex-base, called tetex-common or the like. It
   would be checked out in a directory somewhere above the package build
   directory, and in Debian rules one target would check if it exists
   and update a common.variables file (and possible more files, see
   below) to the build tree. This way, things can be easily kept in sync
   between the two closely related source packages.

   Developers would usually have that tree, while ordinary users can
   still build the package without it (I have yet implemented this).

3. Support for sarge users

   I still think that our decision not to package the teTeX beta was
   right. However, sarge users will not be happy to use tetex-2.0.2 for
   the next two years or so.

   I think we should not just leave the problem to the users or
   individual backporters. Rather we should try to keep our packages
   compatible with sarge. I suggest that we keep a "debian/sarge/"
   subdirectory with appropriate patches for the packaging scripts, and
   a sarge target in debian/rules that applies those patches (and a sid
   target that reverts them), including a new debian/changelog and an
   according version number.

4. Moving configuration stuff to tetex-base

   Looking back at the last year or so that I closely followed the
   debian-tetex-maint list, I find that the vast majority of uploads of
   tetex-bin were "architecture-independent" things - changes to the
   handling of configuration files (i.e.: text files) in the maintainer
   scripts, changes to configuration files, to update-texmf and so
   forth. Each time the whole tetex-bin package had to be recompiled for
   all architectures - this puts additional load on the buildd's, and
   might once cause a delay of tetex moving into testing.

   This problem could be minimized if we moved as much as possible of
   all this to tetex-base (as the architecture: all source package that
   does not need the buildds). What could we move?

   - language.dat is yet in tetex-base, the maintainer script handling
     of it could be moved, too. 

   - texmf.cnf is put together from the files in texmf.d, which are
     added in diff.gz, and could easily go to tetex-base. Also moving
     update-texmf would not add any dependencies to tetex-base AFAIS.

   - fmtutil.cnf and updmap.cfg are from tetex-bin, but just adding
     those two files in diff.gz would be no big deal. We just have to
     remember to update them when they change (fmtutil.cnf is generated
     in tetex-bin from fmtutil.in), but that could be accomplished with
     the tetex-common tree. Then update-fmtutil can go with it (and
     update-updmap can be dropped, anyway).

  
I'm awaiting your protest,
Frank
-- 
Frank Küster, Biozentrum der Univ. Basel
Abt. Biophysikalische Chemie



Reply to: