Bug#876191: most: configure cannot be built from source

2022-12-09 Thread Jakub Wilk

Control: tags -1 + fixed-upstream

* Helmut Grohne , 2017-09-19 14:27:

I was trying to fix a bug in most that requires modifying configure.
Thus I tried to regenerate it and ... failed.

It seems that configure was generated with autoconf2.61.


The latest upstream release (v5.2.0) uses Autoconf 2.69.

--
Jakub Wilk



Bug#876191: most: configure cannot be built from source

2017-11-28 Thread Benj. Mako Hill
severity 876191 minor
retitle 876191 most: configure file cannot be regenerated automatically
thanks

Greetings!

For the reasons discussed on this bug already, I'm retitling this bug
and reducing its severity. I know Helmut doesn't agree. If we want to
have a bigger conversation about policy on -legal or -policy or
something, please keep me in the loop!

Otherwise, we both agree that the first order of business should be
closing this bug! I hope to getto that Real Soon but patches (even
NMUs to fix the issue) are always, always, always welcome.

Later,
Mako



-- 
Benjamin Mako Hill
http://mako.cc/academic/

Creativity can be a social contribution, but only in so far
as society is free to use the results. --GNU Manifesto


signature.asc
Description: PGP signature


Bug#876191: most: configure cannot be built from source

2017-11-26 Thread Benj. Mako Hill

> On Sat, Nov 25, 2017 at 12:36:33PM -0800, Benj. Mako Hill wrote:
> > I agree that a hand-modified binary a binary would not mean that you
> > don't need to provide source for that binary. I think there's likely
> > going to be consensus on that in Debian.
> 
> That put's you in a difficult spot as to where to draw the line.

Drawing lines on these sort of issues involves judgment calls—often
difficult ones. We're not going to avoid that.

> > To say that DFSG#3 is moot (i.e., that you /can not/ make
> > modifications or derived versions) seems to me to be an
> > exaggeration. It is more difficult than it might be if the software
> > and build scripts were created in a different way. But that's not
> > necessary a DFSG issue. Writing your software in a obscure programming
> > language makes it harder to modify as well and that is obviously
> > allowed.
> 
> DFSG #3 is about enabling users. It doesn't really matter if users
> refrain from modifying due to licensing or due to being
> impractical. The end result is, that the purported freedom hasn't
> transferred into reality.

We agree on this. It should also be clear that we allow some amount
of annoyance, difficulty, and practicality in modifying software in
that we allow software in allow advertising clauses, esoteric
programming languages, single character variable names, no comments,
etc.

We also, generally speaking, have allowed software that involves
hand-modified versions of auto-generated build scripts and other code.

> > Are you willing to say that source code can never contain code
> > that was partially generated by another program that is provided?
> > Even if it is generated by computers and then modified by hand?
> > That's a much stronger position than I think is supportable by any
> > reading of the DFSG than I've ever heard and it would eliminate
> > many hundreds or even thousands of packages from Debian.
> 
> That's a tough question indeed. Half a year ago, the strict answer
> would have eliminated nothing less than perl (#762638). Even though
> the Debian perl maintainers were heavily patching the generated
> file, they are now generating it at build time.

That's still just a bug about an autoconf-generated configure
script. I was asking a much bigger question. Much of what we would
both agree is the source code of many /programs/ (like the .c files or
whatever) is at least partially generated by programs. How often to
programmers create keyboard macros to autogenerate code? How often do
they include them?

> To evade answering it, I try to work from the impact. Whenever
> fixing a bug is impeded by the inability to regenerate build
> artifacts, I file a bug, because it clearly demonstrates that the
> freedom to modify is limited here.

I agree that this is the right approach. But that bug is still to have
one severity or another and I'm still not convinced that this is a
serious DFSG issue.

> > This is distinctly different. The source code in the JS example is
> > obviously not minified the Javascript if we use the GPL's "preferred
> > form for modification" heuristic regardless of the change in
> > question. If upstream wanted to make a change to the Javascript in
> > their program, they would almost never use the minified version. If
> > most's upstream wanted to make a change to their configure file, they
> > would likely modify the pre-built version. Or they would go through
> > rebuilding it again.
> 
> Most commonly, Javascript is not copy-left, but something like MIT.
> Downstream projects commonly embed minified, embedded copies and just
> update them whenever convenient. So yes, some upstreams (e.g. a past
> Doxygen) do prefer to deal with minified Javascript.

The GPL defines source as preferred form for modification. Upstreams
may prefer to just use/update their minified Javascript with a new one
but there is no way athat the minified version is the version nearly
anybody would turn to if they wanted to make a modification. It's
nearly impossible to do so!

Again, it's a judgment call. But if it came to a copyright case
someone would have to make the argument in front of a judge that the
minified version was the preferred form for modification. It would not
be hard to find expert witnesses to convince any reasonable judge
otherwise.

> > I agree! But I think that having packages removed from testing (as
> > has now happened to most) over this interpretation is an
> > overreaction to what I think constitutes an annoyance.
> 
> The removal happened due to not responding to the bug. You can defer
> automatic removals indefinitely by continuously mailing the bug.

I'm sure that neither one of us thinks that this is an actually
solution. Either there's a serious bug, and it should be marked as
much, or there's not.

> Do you think DFGS #2 would be a better justification for the
> severity?

Yes. I think it's much more plausible but I still don't think it
applies for reasons I've described here and that you've not talked me

Bug#876191: most: configure cannot be built from source

2017-11-25 Thread Helmut Grohne
On Sat, Nov 25, 2017 at 12:36:33PM -0800, Benj. Mako Hill wrote:
> I agree that a hand-modified binary a binary would not mean that you
> don't need to provide source for that binary. I think there's likely
> going to be consensus on that in Debian.

That put's you in a difficult spot as to where to draw the line.

> I also think this situation is different because I think that a
> configure file is more like computer-generated, hand-modified,
> /source/ than like a binary.

What makes configure source? It doesn't come with indentation or things
that make normal source code human-consumable. Even though shell
scripting supports scoped variables, autoconf deliberately avoids using
them. Thus they are much closer to named, global memory locations.
Generated configure scripts are much closer to a disassembly of a
binary.

> I think one could also argue that there is an difference between the
> program binary and a build script which is used to build the package
> in question.

So do you argue that you can use a pre-built binary during build, but
you cannot ship in the binary package?

> To say that DFSG#3 is moot (i.e., that you /can not/ make
> modifications or derived versions) seems to me to be an
> exaggeration. It is more difficult than it might be if the software
> and build scripts were created in a different way. But that's not
> necessary a DFSG issue. Writing your software in a obscure programming
> language makes it harder to modify as well and that is obviously
> allowed.

DFSG #3 is about enabling users. It doesn't really matter if users
refrain from modifying due to licensing or due to being impractical. The
end result is, that the purported freedom hasn't transferred into
reality.

By your very same argument you could ship binaries, because you can
simply disassemble them, edit them and reassemble. It might be a bit
more difficult, but if the binary was liberally licensed would that
prevent you from doing so?

> Are you willing to say that source code can never contain code that
> was partially generated by another program that is provided? Even if
> it is generated by computers and then modified by hand? That's a much
> stronger position than I think is supportable by any reading of the
> DFSG than I've ever heard and it would eliminate many hundreds or even
> thousands of packages from Debian.

That's a tough question indeed. Half a year ago, the strict answer would
have eliminated nothing less than perl (#762638). Even though the Debian
perl maintainers were heavily patching the generated file, they are now
generating it at build time.

To evade answering it, I try to work from the impact. Whenever fixing a
bug is impeded by the inability to regenerate build artifacts, I file a
bug, because it clearly demonstrates that the freedom to modify is
limited here.

> This is distinctly different. The source code in the JS example is
> obviously not minified the Javascript if we use the GPL's "preferred
> form for modification" heuristic regardless of the change in
> question. If upstream wanted to make a change to the Javascript in
> their program, they would almost never use the minified version. If
> most's upstream wanted to make a change to their configure file, they
> would likely modify the pre-built version. Or they would go through
> rebuilding it again.

Most commonly, Javascript is not copy-left, but something like MIT.
Downstream projects commonly embed minified, embedded copies and just
update them whenever convenient. So yes, some upstreams (e.g. a past
Doxygen) do prefer to deal with minified Javascript.

> I agree! But I think that having packages removed from testing (as has
> now happened to most) over this interpretation is an overreaction to
> what I think constitutes an annoyance.

The removal happened due to not responding to the bug. You can defer
automatic removals indefinitely by continuously mailing the bug.

Do you think DFGS #2 would be a better justification for the severity?
The configure script in question was generated with autoconf 2.61. This
version of autoconf has been removed from Debian. Now, most is missing
the source for regenerating configure.

Compare this to bumping gcc versions. When a package fails to build with
a more recent gcc, it receives a FTBFS bug as well. You can temporarily
avoid them by explicitly selecting a lower version, but when that
version gets removed, such a package inevitably becomes RC buggy. The
only difference here is that by not rebuilding from source at build
time, you get the RC bug with a delay as has happened here. That's why
debhelper 10 autoreconfs by default.

I believe that the inability to fix bugs is a serious issue.

Helmut



Bug#876191: most: configure cannot be built from source

2017-11-25 Thread Benj. Mako Hill
Greetings Helmut!

Thanks for engaging productively on this!


> I deliberately avoided the FTBFS language, because it is not a FTBFS.
> It's different. It's like shipping a binary that cannot be regenerated
> and using that during build. The term FTBFS is well defined and does not
> cover this case.

Got it. We agree about that.

I'm don't think we agree on what constitutes the source for this
package. Until we do, I think a more descriptive title might be
better. Something like: "configure file cannot be regenerated
automatically."

> Would you say the same if you compile a binary, use a hex editor to fix
> the binary and then ship the binary in your source package? I mean you
> preferred to edit the binary with a hex editor, so wouldn't it be
> preferred form for modification?

I agree that a hand-modified binary a binary would not mean that you
don't need to provide source for that binary. I think there's likely
going to be consensus on that in Debian.

I also think this situation is different because I think that a
configure file is more like computer-generated, hand-modified,
/source/ than like a binary.

I think one could also argue that there is an difference between the
program binary and a build script which is used to build the package
in question.

> Also consider that autoconf projects tend to ship embedded copies of
> .m4 files. A bug in those .m4 files is often fixed upstream. Fixing
> it could be a simple matter of updating the embedded copy if one
> could regenerate configure.
> 
> In both of these examples, I very much do not prefer working with
> the generated configure as it feels very much like editing a binary
> with a hex editor. Thus I argue that configure is not the preferred
> form for modification. Shipping only configure makes DFGS #3
> practically moot.

To say that DFSG#3 is moot (i.e., that you /can not/ make
modifications or derived versions) seems to me to be an
exaggeration. It is more difficult than it might be if the software
and build scripts were created in a different way. But that's not
necessary a DFSG issue. Writing your software in a obscure programming
language makes it harder to modify as well and that is obviously
allowed.

Are you willing to say that source code can never contain code that
was partially generated by another program that is provided? Even if
it is generated by computers and then modified by hand? That's a much
stronger position than I think is supportable by any reading of the
DFSG than I've ever heard and it would eliminate many hundreds or even
thousands of packages from Debian.

> > If this has been discussed elsewhere or if there is Debian policy
> > on this I don't know about, I'd appreciate being pointed to this
> > and I'm happy to defer to this. In the meantime, I'd appreciate
> > help fixing this issue. I'm not likely to have bandwidth for a few
> > more weeks.
> 
> I guess we should document this issue class centrally. It is similar
> to the javascript bundling issue (where people suppose that minified
> or concatenated javascript files could be considered source).

This is distinctly different. The source code in the JS example is
obviously not minified the Javascript if we use the GPL's "preferred
form for modification" heuristic regardless of the change in
question. If upstream wanted to make a change to the Javascript in
their program, they would almost never use the minified version. If
most's upstream wanted to make a change to their configure file, they
would likely modify the pre-built version. Or they would go through
rebuilding it again.

> This issue comes about every time Debian is bootstrapped for a new
> architecture as configure tends to have bugs (e.g. ppc64el). I'm
> seeing it now as I bootstrap Debian for something like a new
> architecture (cross building). So this is the class of bugs to watch
> out.

I agree! But I think that having packages removed from testing (as has
now happened to most) over this interpretation is an overreaction to
what I think constitutes an annoyance.

I think that the main goal should be focusing on trying to fix these
bugs. I think a secondary goal should be discussing this in a
systematic way to get some sort of consensus.

Until then, my sense is to reduce the severity of this (likely to
normal) and to retitle the bug as described above. As I said, I think
this is a real bug. I just don't agree that it's a showstopper or a
DFSG issue.

Regards,
Mako


-- 
Benjamin Mako Hill
http://mako.cc/

Creativity can be a social contribution, but only in so far
as society is free to use the results. --GNU Manifesto


signature.asc
Description: PGP signature


Bug#876191: most: configure cannot be built from source

2017-11-24 Thread Helmut Grohne
On Fri, Nov 24, 2017 at 06:22:05PM -0800, Benj. Mako Hill wrote:
> I'll also say that I'm skeptical about both the severity you've chosen
> here (serious), about describing this as a FTBFS issue, and about your
> suggestion that this is a DFSG issue.

I deliberately avoided the FTBFS language, because it is not a FTBFS.
It's different. It's like shipping a binary that cannot be regenerated
and using that during build. The term FTBFS is well defined and does not
cover this case.

> If there is a serious DFSG issue here, it's not a FTBFS issue but
> rather a question of whether or not the source package contains the
> full source in the first place. I'm open to being convinced otherwise
> but I think it does.

I do believe that this is a DFSG issue.

> If I generate a configure file with autoconf and then modify it by
> hand in order to create a working build script, I don't I've somehow
> made it impossible to provide source for that package. I think I'm
> still providing the preferred form of modification (as the GPL defines
> source). I agree that that situation is brittle and bad and should be
> avoided.  But I don't think it's a DFSG issue.

Would you say the same if you compile a binary, use a hex editor to fix
the binary and then ship the binary in your source package? I mean you
preferred to edit the binary with a hex editor, so wouldn't it be
preferred form for modification?

Now consider my case. Most commonly, I want to change AC_RUN_IFELSE into
AC_TRY_COMPILE or AC_COMPUTE_INT. That's a very simple change on
configure.ac that produces a big diff on the generated configure.

Also consider that autoconf projects tend to ship embedded copies of .m4
files. A bug in those .m4 files is often fixed upstream. Fixing it could
be a simple matter of updating the embedded copy if one could regenerate
configure.

In both of these examples, I very much do not prefer working with the
generated configure as it feels very much like editing a binary with a
hex editor. Thus I argue that configure is not the preferred form for
modification. Shipping only configure makes DFGS #3 practically moot.

> If this has been discussed elsewhere or if there is Debian policy on
> this I don't know about, I'd appreciate being pointed to this and I'm
> happy to defer to this. In the meantime, I'd appreciate help fixing
> this issue. I'm not likely to have bandwidth for a few more weeks.

I guess we should document this issue class centrally. It is similar to
the javascript bundling issue (where people suppose that minified or
concatenated javascript files could be considered source). A very
similar bu is #874261. #882538 could be called related.

This issue comes about every time Debian is bootstrapped for a new
architecture as configure tends to have bugs (e.g. ppc64el). I'm seeing
it now as I bootstrap Debian for something like a new architecture
(cross building). So this is the class of bugs to watch out.

Helmut



Bug#876191: most: configure cannot be built from source

2017-11-24 Thread Benj. Mako Hill
Greetings Helmut!


> I was trying to fix a bug in most that requires modifying configure.
> Thus I tried to regenerate it and ... failed.

I'll start by saying that this is a real bug and that I agree that it
should be fixed. And thanks so much for notice and submitting it! And
for trying to fix the other issue!

I'll also say that I'm skeptical about both the severity you've chosen
here (serious), about describing this as a FTBFS issue, and about your
suggestion that this is a DFSG issue.

After all, the package still builds from its source and I think we
have everything that upstream has.

If there is a serious DFSG issue here, it's not a FTBFS issue but
rather a question of whether or not the source package contains the
full source in the first place. I'm open to being convinced otherwise
but I think it does.

If I generate a configure file with autoconf and then modify it by
hand in order to create a working build script, I don't I've somehow
made it impossible to provide source for that package. I think I'm
still providing the preferred form of modification (as the GPL defines
source). I agree that that situation is brittle and bad and should be
avoided.  But I don't think it's a DFSG issue.

If this has been discussed elsewhere or if there is Debian policy on
this I don't know about, I'd appreciate being pointed to this and I'm
happy to defer to this. In the meantime, I'd appreciate help fixing
this issue. I'm not likely to have bandwidth for a few more weeks.

Regards,
Mako


-- 
Benjamin Mako Hill
http://mako.cc/

Creativity can be a social contribution, but only in so far
as society is free to use the results. --GNU Manifesto


signature.asc
Description: PGP signature


Bug#876191: most: configure cannot be built from source

2017-09-19 Thread Helmut Grohne
Source: most
Version: 5.0.0a-4
Severity: serious
User: helm...@debian.org
Usertags: rebootstrap

I was trying to fix a bug in most that requires modifying configure.
Thus I tried to regenerate it and ... failed.

It seems that configure was generated with autoconf2.61. The archive
does have autoconf 2.13, 2.64 and 2.69, but not 2.61. So I tried
autoconf 2.64 as that seemed closest. However autoheader2.64 failed:

| configure.ac:4: warning: AC_REQUIRE: `AC_PROG_CC' was expanded before it was 
required
| configure.ac:4: 
http://www.gnu.org/software/autoconf/manual/autoconf.html#Expanded-Before-Required
| ../../lib/autoconf/c.m4:429: AC_LANG_COMPILER(C) is expanded from...
| ../../lib/autoconf/lang.m4:329: AC_LANG_COMPILER_REQUIRE is expanded from...
| ../../lib/autoconf/lang.m4:372: AC_LANG_PREPROC_REQUIRE is expanded from...
| ../../lib/autoconf/general.m4:2549: AC_EGREP_CPP is expanded from...
| ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
| ../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
| ../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
| ../../lib/autoconf/c.m4:543: AC_PROG_GCC_TRADITIONAL is expanded from...
| aclocal.m4:496: JD_ANSI_CC is expanded from...
| configure.ac:4: the top level
| configure.ac:4: warning: AC_REQUIRE: `AC_PROG_CPP' was expanded before it was 
required
| configure.ac:4: 
http://www.gnu.org/software/autoconf/manual/autoconf.html#Expanded-Before-Required
| ../../lib/autoconf/c.m4:336: AC_LANG_PREPROC(C) is expanded from...
| ../../lib/autoconf/lang.m4:372: AC_LANG_PREPROC_REQUIRE is expanded from...
| ../../lib/autoconf/general.m4:2549: AC_EGREP_CPP is expanded from...
| ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
| ../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
| ../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
| ../../lib/autoconf/c.m4:543: AC_PROG_GCC_TRADITIONAL is expanded from...
| aclocal.m4:496: JD_ANSI_CC is expanded from...
| configure.ac:4: the top level
| configure.ac:4: warning: AC_REQUIRE: `AC_PROG_CC' was expanded before it was 
required
| configure.ac:4: 
http://www.gnu.org/software/autoconf/manual/autoconf.html#Expanded-Before-Required
| ../../lib/autoconf/c.m4:429: AC_LANG_COMPILER(C) is expanded from...
| ../../lib/autoconf/lang.m4:329: AC_LANG_COMPILER_REQUIRE is expanded from...
| ../../lib/autoconf/lang.m4:372: AC_LANG_PREPROC_REQUIRE is expanded from...
| ../../lib/autoconf/general.m4:2549: AC_EGREP_CPP is expanded from...
| ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
| ../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
| ../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
| ../../lib/autoconf/c.m4:543: AC_PROG_GCC_TRADITIONAL is expanded from...
| aclocal.m4:496: JD_ANSI_CC is expanded from...
| configure.ac:4: the top level
| configure.ac:4: warning: AC_REQUIRE: `AC_PROG_CPP' was expanded before it was 
required
| configure.ac:4: 
http://www.gnu.org/software/autoconf/manual/autoconf.html#Expanded-Before-Required
| ../../lib/autoconf/c.m4:336: AC_LANG_PREPROC(C) is expanded from...
| ../../lib/autoconf/lang.m4:372: AC_LANG_PREPROC_REQUIRE is expanded from...
| ../../lib/autoconf/general.m4:2549: AC_EGREP_CPP is expanded from...
| ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
| ../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
| ../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
| ../../lib/autoconf/c.m4:543: AC_PROG_GCC_TRADITIONAL is expanded from...
| aclocal.m4:496: JD_ANSI_CC is expanded from...
| configure.ac:4: the top level
| configure.ac:4: warning: AC_REQUIRE: `AC_PROG_CC' was expanded before it was 
required
| configure.ac:4: 
http://www.gnu.org/software/autoconf/manual/autoconf.html#Expanded-Before-Required
| ../../lib/autoconf/c.m4:429: AC_LANG_COMPILER(C) is expanded from...
| ../../lib/autoconf/lang.m4:329: AC_LANG_COMPILER_REQUIRE is expanded from...
| ../../lib/autoconf/lang.m4:372: AC_LANG_PREPROC_REQUIRE is expanded from...
| ../../lib/autoconf/general.m4:2549: AC_EGREP_CPP is expanded from...
| ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
| ../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
| ../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
| ../../lib/autoconf/c.m4:543: AC_PROG_GCC_TRADITIONAL is expanded from...
| aclocal.m4:496: JD_ANSI_CC is expanded from...
| configure.ac:4: the top level
| configure.ac:4: warning: AC_REQUIRE: `AC_PROG_CPP' was expanded before it was 
required
| configure.ac:4: 
http://www.gnu.org/software/autoconf/manual/autoconf.html#Expanded-Before-Required
| ../../lib/autoconf/c.m4:336: AC_LANG_PREPROC(C) is expanded from...
| ../../lib/autoconf/lang.m4:372: AC_LANG_PREPROC_REQUIRE is expanded from...
| ../../lib/autoconf/general.m4:2549: AC_EGREP_CPP is expanded from...
| ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
|