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.06k stars 330 forks source link

Build fails on Ubuntu 14.04.1 LTS #58

Closed dazzag24 closed 10 years ago

dazzag24 commented 10 years ago

$ autoconf configure.ac:31: error: possibly undefined macro: AC_CONFIG_MACRO_DIRS If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation. configure.ac:45: error: possibly undefined macro: AM_INIT_AUTOMAKE configure.ac:46: error: possibly undefined macro: AM_SILENT_RULES configure.ac:47: error: possibly undefined macro: AM_PROG_AR configure.ac:59: error: possibly undefined macro: AM_GNU_GETTEXT configure.ac:60: error: possibly undefined macro: AM_GNU_GETTEXT_VERSION configure.ac:71: error: possibly undefined macro: AM_CONDITIONAL

$ cat /etc/issue Ubuntu 14.04.1 LTS \n \l

$ autoconf -V autoconf (GNU Autoconf) 2.69 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+/Autoconf: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html, http://gnu.org/licenses/exceptions.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

Written by David J. MacKenzie and Akim Demaille.

emcrisostomo commented 10 years ago

Hi @dazzag24,

That's correct, in fact. autoconf is telling you that some macros are missing, and they are missing because, as their prefix also suggests, they have not been added yet by the corresponding program (in the case of AM_* macros, automake).

It's a bad idea to run autoconf unless you know exactly which other macros are needed by the package being configured and where they are.

Instead of using autoconf, use autoreconf instead, or better yet, the included autogen.sh script.

This procedure is described in the README and a specific document also exists (README.gnu-build-system).

To make a long story short, anyway, users should not use the sources from the source tree (unless they want to modify them, for example) but a release distribution of the sources. You can download the release distribution of the sources of any release of fswatch: just go to the corresponding release page (pick one here) and use the green button at the bottom of the page.

Cheers, -- Enrico

dazzag24 commented 10 years ago

Hi,

Both autogen.sh and autoreconf also produce errors.

I'm not expert, but I have installed plenty of programs on linux which follow the standard paradigm of "./configure && make && make test && make install". I'm wondering why this app cannot be setup in a similar way. It feels like you are pretty close.

As for downloading binaries from untrusted sources, I'm sure you can understand why many people would be wary of that. Using apt-get is one thing, but download an exe and using it is something that many Unix folk simply don't feel that comfortable with.

Alternatively have you considered getting this into the main ubuntu repos?

If you are interested the errors are:

$ ./autogen.sh autoreconf: Entering directory `.' autoreconf: running: autopoint --force autopoint: * The AM_GNU_GETTEXT_VERSION declaration in your configure.ac file requires the infrastructure from gettext-0.19.2 but this version is older. Please upgrade to gettext-0.19.2 or newer. autopoint: * Stop. autoreconf: autopoint failed with exit status: 1


$ autoconf configure.ac:31: error: possibly undefined macro: AC_CONFIG_MACRO_DIRS If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation. configure.ac:45: error: possibly undefined macro: AM_INIT_AUTOMAKE configure.ac:46: error: possibly undefined macro: AM_SILENT_RULES configure.ac:47: error: possibly undefined macro: AM_PROG_AR configure.ac:59: error: possibly undefined macro: AM_GNU_GETTEXT configure.ac:60: error: possibly undefined macro: AM_GNU_GETTEXT_VERSION configure.ac:71: error: possibly undefined macro: AM_CONDITIONAL darreng@dazza3:~/code/fswatch$ ^C darreng@dazza3:~/code/fswatch$ autoreconf configure.ac:35: error: required file 'config/ar-lib' not found configure.ac:35: 'automake --add-missing' can install 'ar-lib' configure.ac:35: error: required file 'config/compile' not found configure.ac:35: 'automake --add-missing' can install 'compile' configure.ac:39: error: required file 'config/config.guess' not found configure.ac:39: 'automake --add-missing' can install 'config.guess' configure.ac:52: error: required file 'config/config.rpath' not found configure.ac:39: error: required file 'config/config.sub' not found configure.ac:39: 'automake --add-missing' can install 'config.sub' configure.ac:33: error: required file 'config/install-sh' not found configure.ac:33: 'automake --add-missing' can install 'install-sh' configure.ac:39: error: required file 'config/ltmain.sh' not found configure.ac:33: error: required file 'config/missing' not found configure.ac:33: 'automake --add-missing' can install 'missing' configure.ac:52: error: required file './ABOUT-NLS' not found src/libfswatch/Makefile.am: error: required file 'config/depcomp' not found src/libfswatch/Makefile.am: 'automake --add-missing' can install 'depcomp' autoreconf: automake failed with exit status: 1

Its not a though I am on an old or rare version of linux.... ;-)

Any help appreciated.

Darren

emcrisostomo commented 10 years ago

Hi @dazzag24,

This is not the place for a crash course in Autools and gettext: I'll try to be concise and clear.

That error means your version of gettext is older than expected. Which is again correct behaviour.

Fswatch can be built and configured as any other package that uses the Autotools: just use a release tarball, as I already told you. The word "release" is important, because it means the package has all the things you need to build it (configure script, etc.) and needs nothing else (no Autotools, no gettext binaries, etc).

If you insist using maintainer sources (as you are doing) either you read the Autotools documentation and then gettext's, or I just can't help you with any error you may find in your environment.

If you want to modify the sources of fswatch, I suggest you make some practice with Autotools, otherwise there's no reason to use the maintainer's tree.

In this case, as I said at the beginning of the mail, the solution is upgrading your gettext installation. If the ubuntu version you're using does not ship it, then you have to install it from scratch (and probably the other Autotools as well if you don't want to get other path-related problems).

Please, build from a release tarball if what you want to do is just building fswatch.

Cheers,

-- Enrico

Enrico M. Crisostomo

On Tue, Sep 23, 2014 at 5:09 PM, dazzag24 notifications@github.com wrote:

Hi, Both autogen.sh and autoreconf also produce errors.
I'm not expert, but I have installed plenty of programs on linux which follow the standard paradigm of "./configure && make && make test && make install". I'm wondering why this app cannot be setup in a similar way. It feels like you are pretty close. As for downloading binaries from untrusted sources, I'm sure you can understand why many people would be wary of that. Using apt-get is one thing, but download an exe and using it is something that many Unix folk simply don't feel that comfortable with. Alternatively have you considered getting this into the main ubuntu repos? If you are interested the errors are: $ ./autogen.sh autoreconf: Entering directory `.' autoreconf: running: autopoint --force autopoint: * The AM_GNU_GETTEXT_VERSION declaration in your configure.ac file requires the infrastructure from gettext-0.19.2 but this version is older. Please upgrade to gettext-0.19.2 or newer. autopoint: * Stop.

autoreconf: autopoint failed with exit status: 1

$ autoconf configure.ac:31: error: possibly undefined macro: AC_CONFIG_MACRO_DIRS If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation. configure.ac:45: error: possibly undefined macro: AM_INIT_AUTOMAKE configure.ac:46: error: possibly undefined macro: AM_SILENT_RULES configure.ac:47: error: possibly undefined macro: AM_PROG_AR configure.ac:59: error: possibly undefined macro: AM_GNU_GETTEXT configure.ac:60: error: possibly undefined macro: AM_GNU_GETTEXT_VERSION configure.ac:71: error: possibly undefined macro: AM_CONDITIONAL darreng@dazza3:~/code/fswatch$ ^C darreng@dazza3:~/code/fswatch$ autoreconf configure.ac:35: error: required file 'config/ar-lib' not found configure.ac:35: 'automake --add-missing' can install 'ar-lib' configure.ac:35: error: required file 'config/compile' not found configure.ac:35: 'automake --add-missing' can install 'compile' configure.ac:39: error: required file 'config/config.guess' not found configure.ac:39: 'automake --add-missing' can install 'config.guess' configure.ac:52: error: required file 'config/config.rpath' not found configure.ac:39: error: required file 'config/config.sub' not found configure.ac:39: 'automake --add-missing' can install 'config.sub' configure.ac:33: error: required file 'config/install-sh' not found configure.ac:33: 'automake --add-missing' can install 'install-sh' configure.ac:39: error: required file 'config/ltmain.sh' not found configure.ac:33: error: required file 'config/missing' not found configure.ac:33: 'automake --add-missing' can install 'missing' configure.ac:52: error: required file './ABOUT-NLS' not found src/libfswatch/Makefile.am: error: required file 'config/depcomp' not found src/libfswatch/Makefile.am: 'automake --add-missing' can install 'depcomp' autoreconf: automake failed with exit status: 1 Its not a though I am on an old or rare version of linux.... ;-) Any help appreciated.

Darren

Reply to this email directly or view it on GitHub: https://github.com/emcrisostomo/fswatch/issues/58#issuecomment-56534857

emcrisostomo commented 10 years ago

Hi @dazzag24,

Did you manage to compile fswatch from a release source distribution?

sfinktah commented 9 years ago

I think you could afford to place the text that says:

A user who whishes to build fswatch should get a release tarball. A release tarball contains everything a user needs to build fswatch on his system

in the README (in the git root). I actually read with interest the history of fsw and fswatch, and thought I had read everything else, but alas half an hour of googling on AC_CONFIG_MACRO_DIRS bought me here, and I had to re-evaluate.

Excellent works on the program BTW. I guess I just tend to pay more attention to README/INSTALL files I read in vim, rather than on the web.

Oh, and I had to upgrade my gettext as well. I don't mind, but would it kill GNU to have a symlink to the latest release so we could all just wget gnu/gettext-lastest && tar jxvf gettext-last && configure make build blah ... Yes, I'm very lazy. :)

(The gettext was needed for the failed install from the git clone, BTW).