Subject: Re: experimental texmf packages
From: "Robert Collins" <[email-masked]>
To: "Charles Wilson" <[email-masked]>, "Jan Nieuwenhuizen" <[email-masked]>
Cc: "Gerrit P. Haase" <[email-masked]>
Date: Thu, 6 Dec 2001 00:45:26 +1100

----- Original Message -----
From: "Jan Nieuwenhuizen" <[email-masked]>
>
> Well, I still thought it was silly to have identical forward and
> backward patches, when we have a patch -R flag.  Normal mode of
> operation is to (apply and) supply forward patches; now my (and
> everyone else's packaging procedure) I must be rewritten to do unpack,
> rename -> .orig, patch, run diff from .orig tree.  Or, be hacked to
> try to determine the direction of the patch before applying, but

Well to diff you always need two trees, the orig and the working tree.
So having your pristine source in .orig doesn't seem hard to me :}.

> > So, we said "provide prepatched source" -- because people wanted to
> > just unpack, configure, make -- but also "provide the diff between
> > your source and the official version".
>
> Sure, but I don't see any advantage in reversed patches.

With patches that remove the cygwin code from the source in a tarball,
you need a separate tarball + a separate patch for each -1, -2, -3 of a
given upstream source tarball.

With patches that add the cygwin code to the source in a tarball, you
need a single tarball for the given upstream source tarball + a single
patch for each of the -1 -2 -3 releases. So this is more bandwidth
efficient for everyone. Does setup.exe support this now? No. Will it?
Yes.

> > Yes, it's a pain.  Yes, there are better ways.  But silly? no.  (I
think
> > the silly part was insisting that the source code be PRE-patched.
>
> Yes, I think that requirement is silly too.  Because people will be
> using a download cache, the pristine source is there too.  Build
> environments now hold pristine sources, patched sources, and patches
> in both directions.  But, whatever gets you going :-)

Build environments to recreate a -src package need
a) pristine source TARBALL.
b) patch for current -x version
c) extracted and patched working dir.

I don't see where patchs in both directions come in.

> I'm not sure I understand.  Have the 1-diff,reversed diff, pre-patched
> -src requirements been dropped?  Currently, I dist the pristine

the pre-patch -src requirement has been. See
http://www.cygwin.com/setup.html. No mention of a prepatched source
tarball is made at all.

> Is this sort of what it should be now:
>
>     $ tar xzf foo-1.1-1-src.tar.gz
>     $ ls foo-1.1-1-src
>     foo-1.1-1-src/foo-1.1.tar.gz  # pristine src
yes
>     foo-1.1-1-src/foo-1.1-1.patch # forward diff
yes
>     foo-1.1-1-src/other.patch
what's this?

>
>     $ cat foo-1.1-1-src/doit.sh
>     #!/bin/bash
>     set -e
>     tar xzf foo-1.1.tar.gz
>     mv foo-1.1 foo-1.1-1

Not sure why you're bothering to rename this.

>     cd foo-1.1-1
>     patch -p1 < ../other.patch
>     patch -p1 < ../foo-1.1-1.patch
>     autoconf

autoheader + automake etc etc as needed.

>     ./configure --prefix=/usr
>     make
>     make install prefix=/tmp/foo-root/usr
>     cd /tmp/foo-root
>     tar czf /usr/src/foo-1.1-1.tar.gz *
>
> How about an example dummy package like this?

Chuck went around this with mktemp. It looks similar, but you don't need
to use /tmp, just `pwd`/=install will do.

> Now every package should contain a build script.  Isn't that a step
> backwards in the evolution?  You'd want a central tool(set) to do the
> building and packaging, and package specific scripts/makefile
> snippets.

Yep, like rpm/deb have. But, setup can't read files from either of those
formats (yet).

> >   2) Nobody, and I mean NOBODY, has followed thru on porting,
packaging,
> > and maintaining the berkeley-db and rpm packages as official,
> > cygwin-mirror-system distributed packages (surely that's the FIRST
step
> > before attempting to use rpm as the be-all and end-all package
> > management application for cygwin?  PROVIDE it and maintain an
official
> > port?)
>
> I didn't have the webspace to do that.  But I did implement

Grr. Thats the whole point. Chris has repeatedly offered web space to
interested parties. The WHOLE point is that it should be _here_ for it
to catch on. Then there is no need for any single individual to generate
the whole list of pacakges, or

...
> Also, while I am/was willing to help out the Cygwin project, I'd
> rather work on LilyPond than reinvent packaging/do porting.  I
> hoped people to be interested, discuss and maybe take over what I
> tried to start, but nothing much happened, then.

do porting. So the point is that if RPM had been contributed, and you
maintain *just that one package* as an official package (Hey, Chuck this
goes for you too :}) then there is a chance that it could have caught
on, and maybe the open file issue would have had a workaround
implemented in rpm (which is possible, just non-trivial BTW).

> > a) source code autobuilding and packing
> > b) installation and unpacking
> >
> > Part A assumes you already have a working cygwin development
environment
> > installed on your machine. Part B must be doable on a "virgin"
> > system.
> > Thus, the installer-unpacker must NOT rely on cygwin.
>
> What I did, using rpm, was provide a rpm-x.y.z.bin.tar.gz, including
> necessary libs.  If setup.exe can't run rpm, it gets and untars the
> tarball.  After that, it installs/upgrades the cygwin, rpm, zlib
> .rpm's.  Of course, that's the easy part.  But it wouldn't be hard to
> let setup.exe handle the final placment of any binaries that were in
> use during the rpm phase.  Is that too kludgy?

Potentially. What you have to do is group a set of related files from
multiple packages that solve a dependency issue where *any one* of the
files cannot be installed due to open file issues, schedule those for
copy-after-not-in-use, and the trigger that, and then return to that
exact internal rpm state, and start running the postinstall scripts etc
for that group of files.

> Ok, so, a native port, that should be more feasible with the current
> state of mingw(?), would pose other problems.  But these seem even
> easier to solve?

That hasn't changed - mingw doesn't aim for posix support. A native port
is purely a matter of effort and creating win32 code that does what rpm
does.

> What if you'd only allow setup.exe to choose the cygwin root for the
> first installation?

I'm not sure what that does other than cripple users who want to move
cygwin around on their hard drive.

> You're right to rant here, because my mail really was a rant too, I'm
> sorry.  But I always try to put code first, and then start a
> discussion.  In this case, I've presented rpm stuff, my cross-build
> scripts, and some months ago a patch for a setup.exe postremove
> feature.  Maybe it was bad timing, maybe my code was just too bad, but
> on each of these occasions I got so little sensible feedback if any at
> all.  That turned me off a bit.

BTW: can you freshed up your postremove patch? I'd like that to be
included in setup.

Rob

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/