[Monotone-devel] Re: [Monotone-debian] net.venge.monotone.debian-diff proposed policy

2007-08-06 Thread Richard Levitte
In message <[EMAIL PROTECTED]> on Fri, 03 Aug 2007 22:23:05 +0200, Ludovic 
Brenta <[EMAIL PROTECTED]> said:

ludovic> I think the origin of the problem is that the files generated
ludovic> by autoreconf are in the release tarball,

That's normal behavior according to GNU standards, which we follow to
a point.

ludovic> but not in the working copy after a fresh checkout.

That, too, is normal.  A fresh checkout isn't the same thing as a
distribution, and quite honestly, I would STRONGLY ADVICE anyone not
to engage in the game of committing configure.in, configure,
config.guess or any other of the automagically generated or copied
files into any branch.  The result is usually that as soon as a few
people run different versions of the auto* tools, we get a version
battle of sorts that are 1) difficult to review and 2) a huge
distraction from what we should really review.

ludovic> How about keeping these files in the .debian-diff branch?
ludovic> That makes it possible to patch them if necessary, too.  And
ludovic> without rerunning autoreconf from debian/rules.

That makes it a pain in the nether region to patch.  There is one
package that I can't build any more, simply because it contains a
patch of configure which doesn't work because I've branched off a
little, and did the mistake of using a DIFFERENT version of the auto*
tools than the original author, which means that my branch contains a
different configure and other files that said patch can't be applied
on.  The result is that dpkg-buildpackage barfs.  I've yet to resolve
the situation, but had I not been stupid enough to commit the
automagically generated changes in those files in my branch, I
wouldn't have had a problem.  Do not follow my bad example.

Cheers,
Richard

-
Please consider sponsoring my work on free software.
See http://www.free.lp.se/sponsoring.html for details.

-- 
Richard Levitte [EMAIL PROTECTED]
http://richard.levitte.org/

"When I became a man I put away childish things, including
 the fear of childishness and the desire to be very grown up."
-- C.S. Lewis


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


[Monotone-devel] Re: [Monotone-debian] net.venge.monotone.debian-diff proposed policy

2007-08-03 Thread Ludovic Brenta
Zack Weinberg writes:
> I think I didn't explain things clearly enough.  The Monotone database
> does directly contain the released scripts, and you could in principle
> make packages from a checkout of nvm.debian-diff by running autoreconf
> -i and then dpkg-buildpackage, as long as the current release tarball
> was sitting in the parent directory.  The reason I don't recommend
> this procedure is simply that it risks autoconf / automake version
> skew (at best producing unnecessary junk in the .diff.gz, at worst
> causing build failures).  Taking the diff between mainline and
> .debian-diff and applying it to a non-working-copy unpack of the
> release tarball avoids this problem.

I understand why we don't want to run autoreconf as part of Debian
packaging, and I agree with this.  I think the origin of the problem
is that the files generated by autoreconf are in the release tarball,
but not in the working copy after a fresh checkout.  How about keeping
these files in the .debian-diff branch?  That makes it possible to
patch them if necessary, too.  And without rerunning autoreconf from
debian/rules.

>> * Create a new independent branch named org.debian.monotone,
>>   containing *only* the packaging scripts (i.e. the debian and, if
>>   necessary, patches directories). [...]
>
> My problem with this suggestion is that we currently have to make
> small changes outside the debian directory (see present content of
> the branch).  I would really rather not drag in a build-time
> patching system for them, especially as IMO storing Debian-specific
> changes as proper changes to the files in a branch will be more
> convenient.  For instance, if we backport fixes from mainline (which
> we did do for the 0.35 packages) they'll automatically get
> superseded by the next upstream release when we merge from trunk to
> branch.

OK, that makes sense.

> I see the question of whether there should be a debian/ directory in
> trunk as entirely independent of how the branch holding
> Debian-specific changes is managed.  I like having it on trunk,
> myself - for instance, it means that schema upgrades can be checked
> in together with the necessary update to monotone-server.postinst
> and dummy entry in the Debian changelog.  (Although, having just
> typed that, perhaps we should look for a way to eliminate the
> need...)

OK, that's convenient because you happen to be a Monotone developer
and the Debian package maintainer at the same time :)

-- 
Ludovic Brenta.



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


[Monotone-devel] Re: [Monotone-debian] net.venge.monotone.debian-diff proposed policy

2007-08-03 Thread Zack Weinberg
On 8/3/07, Ludovic Brenta <[EMAIL PROTECTED]> wrote:
> "Zack Weinberg" <[EMAIL PROTECTED]> writes:
> > * To make a Debian release, starting from a release tarball:  Rename
> > the release tarball to Debian's convention
> > (monotone_VERSION.orig.tar.gz).  Unpack it.  Take the diff between the
> > corresponding release tag and the head of n.v.m.debian-diff, and apply
> > it to the unpacked directory.  Proceed with dpkg-buildpackage.
> >
> > (You do not simply check out the head of n.v.m.debian-diff and run
> > autoreconf -i, because that risks skew between the generated files in
> > the tarball and the generated files on the branch, which will lead to
> > problems.)
>
> I kind of disagree with this proposed policy.  I find it too
> complicated and leaves too much opportunity for mistakes.  In
> particular, the part about applying a diff outside of a checkout
> worries me quite a lot, as it means the Monotone database does not
> directly contain the Debian scripts that are released.  I believe the
> whole point of maitaining packaging scripts in a version control
> system is to be able to make packages from within a working copy :)

I think I didn't explain things clearly enough.  The Monotone database
does directly contain the released scripts, and you could in principle
make packages from a checkout of nvm.debian-diff by running autoreconf
-i and then dpkg-buildpackage, as long as the current release tarball
was sitting in the parent directory.  The reason I don't recommend
this procedure is simply that it risks autoconf / automake version
skew (at best producing unnecessary junk in the .diff.gz, at worst
causing build failures).  Taking the diff between mainline and
.debian-diff and applying it to a non-working-copy unpack of the
release tarball avoids this problem.

> * Create a new independent branch named org.debian.monotone,
>   containing *only* the packaging scripts (i.e. the debian and, if
>   necessary, patches directories). (The new branch name is for
>   consistency with all the other packages I maintain with monotone,
>   but not mandatory; I would replicate this branch to my monotone
>   server on www.ada-france.org).

My problem with this suggestion is that we currently have to make
small changes outside the debian directory (see present content of the
branch).  I would really rather not drag in a build-time patching
system for them, especially as IMO storing Debian-specific changes as
proper changes to the files in a branch will be more convenient.  For
instance, if we backport fixes from mainline (which we did do for the
0.35 packages) they'll automatically get superseded by the next
upstream release when we merge from trunk to branch.

I see the question of whether there should be a debian/ directory in
trunk as entirely independent of how the branch holding
Debian-specific changes is managed.  I like having it on trunk, myself
- for instance, it means that schema upgrades can be checked in
together with the necessary update to monotone-server.postinst and
dummy entry in the Debian changelog.  (Although, having just typed
that, perhaps we should look for a way to eliminate the need...)

zw


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


[Monotone-devel] Re: [Monotone-debian] net.venge.monotone.debian-diff proposed policy

2007-08-03 Thread Ludovic Brenta
"Zack Weinberg" <[EMAIL PROTECTED]> writes:
> * To make a Debian release, starting from a release tarball:  Rename
> the release tarball to Debian's convention
> (monotone_VERSION.orig.tar.gz).  Unpack it.  Take the diff between the
> corresponding release tag and the head of n.v.m.debian-diff, and apply
> it to the unpacked directory.  Proceed with dpkg-buildpackage.
>
> (You do not simply check out the head of n.v.m.debian-diff and run
> autoreconf -i, because that risks skew between the generated files in
> the tarball and the generated files on the branch, which will lead to
> problems.)
>
> Alles klar?
> zw

I kind of disagree with this proposed policy.  I find it too
complicated and leaves too much opportunity for mistakes.  In
particular, the part about applying a diff outside of a checkout
worries me quite a lot, as it means the Monotone database does not
directly contain the Debian scripts that are released.  I believe the
whole point of maitaining packaging scripts in a version control
system is to be able to make packages from within a working copy :)

I would propose an alternative:

* Create a new independent branch named org.debian.monotone,
  containing *only* the packaging scripts (i.e. the debian and, if
  necessary, patches directories). (The new branch name is for
  consistency with all the other packages I maintain with monotone,
  but not mandatory; I would replicate this branch to my monotone
  server on www.ada-france.org).

This makes it possible to build a Debian package like so:
- unpack the release tarball
- rename the top-level directory to monotone_VERSION.orig
- cp --archive monotone_VERSION.orig monotone_VERSION
- cd monotone_VERSION
- checkout --branch org.debian.monotone .
- dpkg-buildpackage -i'_MTN|\.mt'(note: this is in my .bashrc aliases :))

I think this is much more reproducible than your proposed policy, and
more obviously correct (as opposed to just "correct").

* Remove the debian/ subdirectory from n.v.m, and thereby from the
  release tarballs.

This removes the need for merges between branches, and most of the
associated 'don't' rules and opportunities for error in your proposed
policy, and consequently the need to enforce these rules.  It also
makes the release tarballs more distribution-agnostic.

Thoughts?

-- 
Ludovic Brenta.



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel