On Tue, Jun 12, 2012 at 10:28 PM, Guy Harris <[email protected]> wrote:
>
> On Jun 12, 2012, at 7:11 PM, Evan Huus wrote:
>
>> On Tue, Jun 12, 2012 at 9:57 PM, Guy Harris <[email protected]> wrote:
>>>
>>> On Jun 12, 2012, at 6:05 PM, Evan Huus wrote:
>>>
>>>> I've just started getting a build failure (on linking) in the last
>>>> couple of days, even after a make distclean on the whole tree:
>>>
>>> When all else fails, "make maintainer-clean"/"./autogen.sh"/"./configure" 
>>> is your friend.  I haven't seen that problem, but I haven't done an update 
>>> since before Jakub checked in the new protocol tree model code; perhaps 
>>> this is a consequence of that.
>>
>> That worked, thanks.
>>
>> For future reference, what does maintainer-clean do that dist-clean doesn't?
>
> A short and probably not 100% accurate summary, but probably good enough for 
> most purposes:
>
>        "make clean" deletes stuff created by the build process.
>
>        "make distclean" deletes stuff created by the build process *and* the 
> ./configure process, leaving behind only the stuff that would be in the 
> distribution tarball.
>
>        "make maintainer-clean" deletes everything that's not "part of the 
> source", including stuff generated by "make dist".
>
> What the automake manual:
>
>        http://www.gnu.org/software/automake/manual/automake.html
>
> says is:
>
>        As the GNU Standards aren't always explicit as to which files should 
> be removed by which rule, we've adopted a heuristic that we believe was first 
> formulated by François Pinard:
>
>                * If make built it, and it is commonly something that one 
> would want to rebuild (for instance, a .o file), then mostlyclean should 
> delete it.
>                * Otherwise, if make built it, then clean should delete it.
>                * If configure built it, then distclean should delete it.
>                * If the maintainer built it (for instance, a .info file), 
> then maintainer-clean should delete it. However maintainer-clean should not 
> delete anything that needs to exist in order to run ‘./configure && make’.
>
>        We recommend that you follow this same set of heuristics in your 
> Makefile.am.
>
> The GNU standards in the automake manual say:
>
>        ‘clean’
>                Delete all files in the current directory that are normally 
> created by building the program. Also delete files in other directories if 
> they are created by this makefile. However, don’t delete the files that 
> record the configuration. Also preserve files that could be made by building, 
> but normally aren’t because the distribution comes with them. There is no 
> need to delete parent directories that were created with ‘mkdir -p’, since 
> they could have existed anyway.
>
>                Delete ‘.dvi’ files here if they are not part of the 
> distribution.
>
>        ‘distclean’
>                Delete all files in the current directory (or created by this 
> makefile) that are created by configuring or building the program. If you 
> have unpacked the source and built the program without creating any other 
> files, ‘make distclean’ should leave only the files that were in the 
> distribution. However, there is no need to delete parent directories that 
> were created with ‘mkdir -p’, since they could have existed anyway.
>
>        ‘mostlyclean’
>                Like ‘clean’, but may refrain from deleting a few files that 
> people normally don’t want to recompile. For example, the ‘mostlyclean’ 
> target for GCC does not delete ‘libgcc.a’, because recompiling it is rarely 
> necessary and takes a lot of time.
>
>        ‘maintainer-clean’
>                Delete almost everything that can be reconstructed with this 
> Makefile. This typically includes everything deleted by distclean, plus more: 
> C source files produced by Bison, tags tables, Info files, and so on.
>
>                The reason we say “almost everything” is that running the 
> command ‘make maintainer-clean’ should not delete ‘configure’ even if 
> ‘configure’ can be remade using a rule in the Makefile. More generally, ‘make 
> maintainer-clean’ should not delete anything that needs to exist in order to 
> run ‘configure’ and then begin to build the program. Also, there is no need 
> to delete parent directories that were created with ‘mkdir -p’, since they 
> could have existed anyway. These are the only exceptions; maintainer-clean 
> should delete everything else that can be rebuilt.
>
>                The ‘maintainer-clean’ target is intended to be used by a 
> maintainer of the package, not by ordinary users. You may need special tools 
> to reconstruct some of the files that ‘make maintainer-clean’ deletes. Since 
> these files are normally included in the distribution, we don’t take care to 
> make them easy to reconstruct. If you find you need to unpack the full 
> distribution again, don’t blame us.
>
>                To help make users aware of this, the commands for the special 
> maintainer-clean target should start with these two:
>
>                @echo 'This command is intended for maintainers to use; it'
>                @echo 'deletes files that may need special tools to rebuild.'
>
> In this context, I'd say anybody doing builds from SVN or git counts as a 
> "maintainer", as to do a built from a vanilla SVN or git tree needs all the 
> special tools in question.

Very informative, thank you.

I'm curious now what was causing issues that dist-clean wasn't
removing, since most of the time I would expect that type of error to
be caused by an old .a or .o file, which dist-clean does remove. I
guess it's moot now.

Thanks again,
Evan
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <[email protected]>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:[email protected]?subject=unsubscribe

Reply via email to