emcrisostomo / fswatch

A cross-platform file change monitor with multiple backends: Apple OS X File System Events, *BSD kqueue, Solaris/Illumos File Events Notification, Linux inotify, Microsoft Windows and a stat()-based backend.
https://emcrisostomo.github.io/fswatch/
GNU General Public License v3.0
5.02k stars 326 forks source link

Please recreate the release tarball from a clean clone #172

Closed agaida closed 7 years ago

agaida commented 7 years ago

It seems that https://github.com/emcrisostomo/fswatch/releases/download/1.10.0/fswatch-1.10.0.tar.gz is polluted from a previous build - the usable tar ball is the one that github has created: https://github.com/emcrisostomo/fswatch/archive/1.10.0.tar.gz -- Sourcecode (tar.gz)

emcrisostomo commented 7 years ago

Uhm, I will check when at home. That tar ball is created by make distcheck on a clean environment, while the one that GitHub uses shouldn't be used for the reasons explained in README.gnu-build-system (IIRC).

On Mon, 14 Aug 2017 at 20:22, Alf Gaida notifications@github.com wrote:

It seems that https://github.com/emcrisostomo/fswatch/releases/download/1.10.0/fswatch-1.10.0.tar.gz is polluted from a previous build - the usable tar ball is the one that github has created: https://github.com/emcrisostomo/fswatch/archive/1.10.0.tar.gz -- Sourcecode (tar.gz)

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/emcrisostomo/fswatch/issues/172, or mute the thread https://github.com/notifications/unsubscribe-auth/AGVnanYuw3i_KS9vEDF81FKs4X53sZhVks5sYJBcgaJpZM4O2uFD .

emcrisostomo commented 7 years ago

I forgot to ask: what was the problem by the way?

On Mon, 14 Aug 2017 at 22:01, Enrico Maria Crisostomo < enrico.m.crisostomo@gmail.com> wrote:

Uhm, I will check when at home. That tar ball is created by make distcheck on a clean environment, while the one that GitHub uses shouldn't be used for the reasons explained in README.gnu-build-system (IIRC).

On Mon, 14 Aug 2017 at 20:22, Alf Gaida notifications@github.com wrote:

It seems that https://github.com/emcrisostomo/fswatch/releases/download/1.10.0/fswatch-1.10.0.tar.gz is polluted from a previous build - the usable tar ball is the one that github has created: https://github.com/emcrisostomo/fswatch/archive/1.10.0.tar.gz -- Sourcecode (tar.gz)

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/emcrisostomo/fswatch/issues/172, or mute the thread https://github.com/notifications/unsubscribe-auth/AGVnanYuw3i_KS9vEDF81FKs4X53sZhVks5sYJBcgaJpZM4O2uFD .

-- Enrico M. Crisostomo

-- Enrico M. Crisostomo

agaida commented 7 years ago

only one answer - please download both balls and directly compare their content - there was some kind of build and leave ._* files in. I confess that i don't read the readme in that depth that i remember anything about the gnu build system, Will read it again.

agaida commented 7 years ago

Ok, without the ._ files the tarball is usable, i still prefer a pure export by git archive, but thats a matter of personal taste. So a repack should fix this hopefully for me.

emcrisostomo commented 7 years ago

Hi @agaida,

The problem is not that it is or is not a pure export. fswatch uses the build system and the source repository is in "maintainer clean mode". That is: no configure script, etc. The build system must be bootstrapped, configure created, and a lot of other bookkeeping.

make dist and make distcheck just do that: they create a tarball for the final user. The tarball does not require the GNU build system to be installed. It's the typical ./configure && make build.

See it another way: it's the maintainer who builds release tarballs, and its contents depend on the technology that the package use. In this case, you'd need autoconf, automake, gettext and libtool to boostrap the fswatch source tarball. On the other hand, the release tarball needs none of the above (that's the whole point) and has all the code necessary to detect required and optional components on the build host.

Look at the differences between the release and the source tarball:

Files src/fswatch-1.10.0/ChangeLog and release/fswatch-1.10.0/ChangeLog differ
Only in release/fswatch-1.10.0/fswatch/doc: Makefile.in
Only in release/fswatch-1.10.0/fswatch/doc: fswatch.info
Only in release/fswatch-1.10.0/fswatch/doc: stamp-vti
Only in release/fswatch-1.10.0/fswatch/doc: version.texi
Only in release/fswatch-1.10.0/fswatch/po: Makefile.in.in
Only in release/fswatch-1.10.0/fswatch/po: Rules-quot
Only in release/fswatch-1.10.0/fswatch/po: boldquot.sed
Only in release/fswatch-1.10.0/fswatch/po: en@boldquot.gmo
Only in release/fswatch-1.10.0/fswatch/po: en@boldquot.header
Only in release/fswatch-1.10.0/fswatch/po: en@boldquot.po
Only in release/fswatch-1.10.0/fswatch/po: en@quot.gmo
Only in release/fswatch-1.10.0/fswatch/po: en@quot.header
Only in release/fswatch-1.10.0/fswatch/po: en@quot.po
Only in release/fswatch-1.10.0/fswatch/po: es.gmo
Only in release/fswatch-1.10.0/fswatch/po: insert-header.sin
Only in release/fswatch-1.10.0/fswatch/po: it.gmo
Only in release/fswatch-1.10.0/fswatch/po: quot.sed
Only in release/fswatch-1.10.0/fswatch/po: remove-potcdate.sin
Only in release/fswatch-1.10.0/fswatch/po: stamp-po
Only in release/fswatch-1.10.0/fswatch/src: Makefile.in
Only in release/fswatch-1.10.0/fswatch: Makefile.in
Only in release/fswatch-1.10.0/libfswatch/doc/doxygen: Makefile.in
Only in release/fswatch-1.10.0/libfswatch/doc: Makefile.in
Only in release/fswatch-1.10.0/libfswatch/po: Makefile.in.in
Only in release/fswatch-1.10.0/libfswatch/po: Rules-quot
Only in release/fswatch-1.10.0/libfswatch/po: boldquot.sed
Only in release/fswatch-1.10.0/libfswatch/po: en@boldquot.gmo
Only in release/fswatch-1.10.0/libfswatch/po: en@boldquot.header
Only in release/fswatch-1.10.0/libfswatch/po: en@boldquot.po
Only in release/fswatch-1.10.0/libfswatch/po: en@quot.gmo
Only in release/fswatch-1.10.0/libfswatch/po: en@quot.header
Only in release/fswatch-1.10.0/libfswatch/po: en@quot.po
Only in release/fswatch-1.10.0/libfswatch/po: es.gmo
Only in release/fswatch-1.10.0/libfswatch/po: insert-header.sin
Only in release/fswatch-1.10.0/libfswatch/po: it.gmo
Only in release/fswatch-1.10.0/libfswatch/po: quot.sed
Only in release/fswatch-1.10.0/libfswatch/po: remove-potcdate.sin
Only in release/fswatch-1.10.0/libfswatch/po: stamp-po
Only in release/fswatch-1.10.0/libfswatch/src/libfswatch: Makefile.in
Only in release/fswatch-1.10.0/libfswatch/src: Makefile.in
Only in release/fswatch-1.10.0/libfswatch: Makefile.in
Only in release/fswatch-1.10.0/m4: gettext.m4
Only in release/fswatch-1.10.0/m4: iconv.m4
Only in release/fswatch-1.10.0/m4: intlmacosx.m4
Only in release/fswatch-1.10.0/m4: lib-ld.m4
Only in release/fswatch-1.10.0/m4: lib-link.m4
Only in release/fswatch-1.10.0/m4: lib-prefix.m4
Only in release/fswatch-1.10.0/m4: libtool.m4
Only in release/fswatch-1.10.0/m4: ltoptions.m4
Only in release/fswatch-1.10.0/m4: ltsugar.m4
Only in release/fswatch-1.10.0/m4: ltversion.m4
Only in release/fswatch-1.10.0/m4: lt~obsolete.m4
Only in release/fswatch-1.10.0/m4: nls.m4
Only in release/fswatch-1.10.0/m4: po.m4
Only in release/fswatch-1.10.0/m4: progtest.m4
Only in release/fswatch-1.10.0/man: fswatch.7
Only in release/fswatch-1.10.0: ABOUT-NLS
Only in release/fswatch-1.10.0: Makefile.in
Only in release/fswatch-1.10.0: aclocal.m4
Only in release/fswatch-1.10.0: config
Only in release/fswatch-1.10.0: configure
Only in release/fswatch-1.10.0: libfswatch_config.h.in
Only in src/fswatch-1.10.0/docker: build-images.sh
Only in src/fswatch-1.10.0/fswatch/src: CMakeLists.txt
Only in src/fswatch-1.10.0/libfswatch: CMakeLists.txt
Only in src/fswatch-1.10.0/m4: ax_cxx_compile_stdcxx_0x.m4
Only in src/fswatch-1.10.0/m4: ax_cxx_compile_stdcxx_14.m4
Only in src/fswatch-1.10.0/m4: ax_cxx_have_thread.m4
Only in src/fswatch-1.10.0/m4: ax_cxx_namespaces.m4
Only in src/fswatch-1.10.0: CMakeLists.txt
Only in src/fswatch-1.10.0: README.cmake
Only in src/fswatch-1.10.0: autogen.sh
Only in src/fswatch-1.10.0: build-aux
Only in src/fswatch-1.10.0: test

That's why I think you should really build from the release tarball.

emcrisostomo commented 7 years ago

@agaida, it seems the ._ files are an OS X-specific artefact (see for example https://superuser.com/questions/61185/why-do-i-get-files-like-foo-in-my-tarball-on-os-x).

However, I use the release distribution on my own systems and other packaging systems (FreeBSD, MacPorts) and those file do not interfere with the build process. Out of curiosity, are you making something other than ./configure && make && make install?

agaida commented 7 years ago

dh (quilt) makes automatic patches against the the original tar ball - not that good in that regard :D. So i wrote a little repack script for uscan. We are lazy people some times at debian. The workflow is nice, once the app is packaged:

# we know that $foo has a new release
cd $foo # the dir with the packaging
uscan --verbose # uscan look for new tar balls or git tags, according to the watch file
# import the new orig.tar.* and be done with 

The downside in this tar- and quilt centric approach is that not to much should change in difference to the original tar ball. In a perfect world the build process is out of the tree. And this behaviour hurts much if there are things that will be changed wihin the build process and can't be cleaned up or ignored in a simple way. However - get it working yesterday, looks good.

emcrisostomo commented 7 years ago

Interesting, thanks for the explanation. I'm glad you made it work.

Anyway, if there's some way to point that script at the release tarballs, diffs should be more or less what you expect them to be.