Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

change autoconf version to 2.62 and automake version to 1.11.2 #858

Merged
merged 1 commit into from
Jul 30, 2019

Conversation

ygj6
Copy link
Member

@ygj6 ygj6 commented Jul 27, 2019

On my computer, the version of autoconf is 2.59 and automake is 1.9
I build with autogen.sh & configure & make and failed.

I find In Makefile.am line 227~230:

include/event2/event-config.h: config.h make-event-config.sed
	$(AM_V_GEN)test -d include/event2 || $(MKDIR_P) include/event2
	$(AM_V_at)$(SED) -f $(srcdir)/make-event-config.sed < config.h > $@T
	$(AM_V_at)mv -f $@T $@

there are three undefined variables: MKDIR_P, AM_V_GEN and AM_V_at.
Then I tried autoconf-2.60 & automake-1.10, autoconf-2.61 & automake-1.11, autoconf-2.62 & automake-1.11.2 and only autoconf-2.62 & automake-1.11.2 is ok.

Therefore, I recommend changing the autoconf version from 2.59 to 2.62 and automake version from 1.9 to 1.11.2, thanks.

@coveralls
Copy link

Coverage Status

Coverage increased (+0.06%) to 81.556% when pulling 66ce2ff on ygj6:autoconf into 55d1e20 on libevent:master.

On my computer, the version of autoconf is 2.59 and automake is 1.9
I build with autogen.sh & configure & make and failed.

I find In Makefile.am:
    include/event2/event-config.h: config.h make-event-config.sed
        $(AM_V_GEN)test -d include/event2 || $(MKDIR_P) include/event2
        $(AM_V_at)$(SED) -f $(srcdir)/make-event-config.sed < config.h > $@t
        $(AM_V_at)mv -f $@t $@

There are three undefined variables: MKDIR_P, AM_V_GEN and AM_V_at.
Then I tried:
- autoconf-2.60 / automake-1.10
- autoconf-2.61 / automake-1.11
- autoconf-2.62 / automake-1.11.2

And only autoconf-2.62 & automake-1.11.2 is ok.

Therefore, I recommend changing the autoconf version from 2.59 to 2.62
and automake version from 1.9 to 1.11.2.

Plus autoconf 2.59 is too old - 2003.12.16 [1], so as automake 1.9 -
2004.08.11 [2], while $(AM_V_GEN)/$(AM_V_at) had been introduced in
371a123 back in 2012.

  [1]: http://ftp.gnu.org/gnu/autoconf/
  [1]: http://ftp.gnu.org/gnu/automake/

Fixes: 371a123 ("Make quiet build even quieter")
@azat azat merged commit 1947dd0 into libevent:master Jul 30, 2019
@azat
Copy link
Member

azat commented Jul 30, 2019

I'd rebased your patch (to include all the details from the pull request description, and some of mines) and applied, thanks a lot for the patch and the details!

@ygj6 ygj6 deleted the autoconf branch July 30, 2019 10:33
@ygj6
Copy link
Member Author

ygj6 commented Aug 7, 2019

Only upgrading automake to 1.11.2 is not enough, when I run make check via automake with a version of 1.12.6 or lower, I got this error:

make  check-am
make[1]: Entering directory `/opt/github/libevent'
make  check-TESTS
make[2]: Entering directory `/opt/github/libevent'
./test/test.sh -b EPOLL
Running tests:
EPOLL
 test-eof: OKAY
 test-closed: OKAY
 test-weof: OKAY
 test-time: OKAY
 test-changelist: OKAY
 test-fdleak: OKAY
 test-dumpevents: OKAY
 regress: OKAY
 regress_debug: OKAY
./test/test.sh -b SELECT
Running tests:
SELECT
 test-eof: OKAY
 test-closed: [warn] event_base_new_with_config: no event mechanism available
OKAY
 test-weof: OKAY
 test-time: OKAY
 test-changelist: OKAY
 test-fdleak: OKAY
 test-dumpevents: OKAY
 regress: OKAY
 regress_debug: OKAY
./test/test.sh -b KQUEUE
Running tests:
KQUEUE
Skipping test
./test/test.sh -b EVPORT
Running tests:
EVPORT
Skipping test
./test/test.sh -b DEVPOLL
Running tests:
DEVPOLL
Skipping test
./test/test.sh -b POLL
Running tests:
POLL
 test-eof: OKAY
 test-closed: [warn] event_base_new_with_config: no event mechanism available
OKAY
 test-weof: OKAY
 test-time: OKAY
 test-changelist: OKAY
 test-fdleak: OKAY
 test-dumpevents: OKAY
 regress: OKAY
 regress_debug: OKAY
./test/test.sh -b WIN32
Running tests:
WIN32
Skipping test
./test/test.sh -b "" -t
Running tests:
EPOLL (timerfd)
 test-eof: OKAY
 test-closed: OKAY
 test-weof: OKAY
 test-time: OKAY
 test-changelist: OKAY
 test-fdleak: OKAY
 test-dumpevents: OKAY
 regress: OKAY
 regress_debug: OKAY
./test/test.sh -b "" -c
Running tests:
EPOLL (changelist)
 test-eof: OKAY
 test-closed: OKAY
 test-weof: OKAY
 test-time: OKAY
 test-changelist: OKAY
 test-fdleak: OKAY
 test-dumpevents: OKAY
 regress: OKAY
 regress_debug: OKAY
./test/test.sh -b "" -T
Running tests:
EPOLL (timerfd+changelist)
 test-eof: OKAY
 test-closed: OKAY
 test-weof: OKAY
 test-time: OKAY
 test-changelist: OKAY
 test-fdleak: OKAY
 test-dumpevents: OKAY
 regress: OKAY
 regress_debug: OKAY
/bin/sh: line 9: ./test_runner_epoll: No such file or directory
FAIL: test_runner_epoll
/bin/sh: line 9: ./test_runner_select: No such file or directory
FAIL: test_runner_select
/bin/sh: line 9: ./test_runner_kqueue: No such file or directory
FAIL: test_runner_kqueue
/bin/sh: line 9: ./test_runner_evport: No such file or directory
FAIL: test_runner_evport
/bin/sh: line 9: ./test_runner_devpoll: No such file or directory
FAIL: test_runner_devpoll
/bin/sh: line 9: ./test_runner_poll: No such file or directory
FAIL: test_runner_poll
/bin/sh: line 9: ./test_runner_win32: No such file or directory
FAIL: test_runner_win32
/bin/sh: line 9: ./test_runner_timerfd: No such file or directory
FAIL: test_runner_timerfd
/bin/sh: line 9: ./test_runner_changelist: No such file or directory
FAIL: test_runner_changelist
/bin/sh: line 9: ./test_runner_timerfd_changelist: No such file or directory
FAIL: test_runner_timerfd_changelist
=====================
10 of 10 tests failed
=====================
make[2]: *** [check-TESTS] Error 1
make[2]: Leaving directory `/opt/github/libevent'
make[1]: *** [check-am] Error 2
make[1]: Leaving directory `/opt/github/libevent'
make: *** [check] Error 2

Open the Makefile generated by command ./autogen.sh && ./configure and locate at the following codes:

check-TESTS: $(TESTS)
	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
	srcdir=$(srcdir); export srcdir; \
	list=' $(TESTS) '; \
	$(am__tty_colors); \
	if test -n "$$list"; then \
	  for tst in $$list; do \
	    if test -f ./$$tst; then dir=./; \
	    elif test -f $$tst; then dir=; \
	    else dir="$(srcdir)/"; fi; \
	    if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \
	      all=`expr $$all + 1`; \
	      case " $(XFAIL_TESTS) " in \
	      *[\ \	]$$tst[\ \	]*) \

I can see the errors I mentioned earlier are caused by this line:

if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \

$${dir}$$tst will expand to ./test_runner_epoll, but test_runner_epoll is only a target in test/include.am, not a file, so it print /bin/sh: line 9: ./test_runner_epoll: No such file or directory.
It seems like a bug in automake 1.12.6.
The errors will disappear if I simply upgrade automake to 1.13, and upgrade autoconf to 2.65 (2.65 is the lowest version dependent by automake-1.13).

Things are not over yet, when I build with automake-1.13 and autoconf-2.66, I got another error:

configure.ac:667: error: AC_CHECK_SIZEOF: requires literal arguments

The code in configure.ac line 667 is :

AC_CHECK_SIZEOF(void *)

I googled it and got this page: http://gnu-autoconf.7623.n7.nabble.com/AC-CHECK-SIZEOF-int-is-error-in-autoconf-2-66-td13537.html
It is a bug in autoconf-2.66.

Finally, everything works fine when using automake-1.13 and autoconf-2.67.
I test this issue on CentOS 7.2, Ubuntu 16.04 and macOS 10.13.5.

@azat
Copy link
Member

azat commented Aug 8, 2019

Thank you for all details and digging!

everything works fine when using automake-1.13 and autoconf-2.67.

Can you please send another patch with all the details above?

@azat
Copy link
Member

azat commented Aug 8, 2019

autoconf-2.67 had been released in 2010, automake-1.13 in 2013, so I believe that almost none sane environment would have this ancient stuff.

@ygj6
Copy link
Member Author

ygj6 commented Aug 8, 2019

ikr, that's why they're the minimum requirements 😄

Can you please send another patch with all the details above?

Yeah, sure, I will create another pull request for this later :)

By the way, I noticed that there's another dependency 'libtool' needed for compilation, which is not included in configure.ac. Do you want me to add the information about it as well? If so, which version would you recommend? I've done some tests though, and I found that any version above v2.4(included) is okay in this case.

@azat
Copy link
Member

azat commented Aug 8, 2019

Do you want me to add the information about it as well?

Sure, go ahead!

If so, which version would you recommend?

I have no idea, 2.4.6 had been released in 2015, I would say that this is ancient enough, let's see if somebody will complain

Hm, debian oldoldstable has 2.4.2, can you test 2.4.2 in this case?

@ygj6
Copy link
Member Author

ygj6 commented Aug 8, 2019

I have tested all versions after 2.4 and they are all okay, therefore 2.4.2 is fine in this case :)
(2.4 was released in 2010-09 and 2.4.2 was released in 2011-10.)
As far as I know, 2.4.2 was chosen by lots of linux platforms such as CentOS 7.2 and Ubuntu 16.04. So I prefer 2.4.2. What do you think?

@azat
Copy link
Member

azat commented Aug 8, 2019

So I prefer 2.4.2. What do you think?

Fully agree

ygj6 pushed a commit to ygj6/libevent that referenced this pull request Aug 8, 2019
… I got this error:

    /bin/sh: line 9: ./test_runner_epoll: No such file or directory
    FAIL: test_runner_epoll
    /bin/sh: line 9: ./test_runner_select: No such file or directory
    FAIL: test_runner_select
    /bin/sh: line 9: ./test_runner_kqueue: No such file or directory
    FAIL: test_runner_kqueue
    /bin/sh: line 9: ./test_runner_evport: No such file or directory
    FAIL: test_runner_evport
    /bin/sh: line 9: ./test_runner_devpoll: No such file or directory
    FAIL: test_runner_devpoll
    /bin/sh: line 9: ./test_runner_poll: No such file or directory
    FAIL: test_runner_poll
    /bin/sh: line 9: ./test_runner_win32: No such file or directory
    FAIL: test_runner_win32
    /bin/sh: line 9: ./test_runner_timerfd: No such file or directory
    FAIL: test_runner_timerfd
    /bin/sh: line 9: ./test_runner_changelist: No such file or directory
    FAIL: test_runner_changelist
    /bin/sh: line 9: ./test_runner_timerfd_changelist: No such file or directory
    FAIL: test_runner_timerfd_changelist

Open the Makefile generated by command ./autogen.sh && ./configure
I can see the errors are caused by this line:

    if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then

$${dir}$$tst will expand to ./test_runner_epoll, but test_runner_epoll is only a target in test/include.am,
not a file, so it print:

    /bin/sh: line 9: ./test_runner_epoll: No such file or directory.

It seems like a bug in automake 1.12.6.
The errors will disappear if I simply upgrade automake to 1.13, and upgrade autoconf to 2.65
(2.65 is the lowest version dependent by automake-1.13).

When I build with automake-1.13 and autoconf-2.66, I got another error:

    configure.ac:667: error: AC_CHECK_SIZEOF: requires literal arguments

The code in configure.ac line 667 is :

    AC_CHECK_SIZEOF(void *)

It is a bug in autoconf-2.66 :
http://gnu-autoconf.7623.n7.nabble.com/AC-CHECK-SIZEOF-int-is-error-in-autoconf-2-66-td13537.html

Finally, everything works fine when using automake-1.13 and autoconf-2.67.
Refs: libevent#858
azat pushed a commit to ygj6/libevent that referenced this pull request Aug 9, 2019
When I run make check via automake with a version of 1.12.6 or lower, I got this error:

    /bin/sh: line 9: ./test_runner_epoll: No such file or directory
    FAIL: test_runner_epoll
    /bin/sh: line 9: ./test_runner_select: No such file or directory
    FAIL: test_runner_select
    /bin/sh: line 9: ./test_runner_kqueue: No such file or directory
    FAIL: test_runner_kqueue
    /bin/sh: line 9: ./test_runner_evport: No such file or directory
    FAIL: test_runner_evport
    /bin/sh: line 9: ./test_runner_devpoll: No such file or directory
    FAIL: test_runner_devpoll
    /bin/sh: line 9: ./test_runner_poll: No such file or directory
    FAIL: test_runner_poll
    /bin/sh: line 9: ./test_runner_win32: No such file or directory
    FAIL: test_runner_win32
    /bin/sh: line 9: ./test_runner_timerfd: No such file or directory
    FAIL: test_runner_timerfd
    /bin/sh: line 9: ./test_runner_changelist: No such file or directory
    FAIL: test_runner_changelist
    /bin/sh: line 9: ./test_runner_timerfd_changelist: No such file or directory
    FAIL: test_runner_timerfd_changelist

Open the Makefile generated by command ./autogen.sh && ./configure
I can see the errors are caused by this line:

    if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then

$${dir}$$tst will expand to ./test_runner_epoll, but test_runner_epoll is only a target in test/include.am,
not a file, so it print:

    /bin/sh: line 9: ./test_runner_epoll: No such file or directory.

It seems like a bug in automake 1.12.6.
The errors will disappear if I simply upgrade automake to 1.13, and upgrade autoconf to 2.65
(2.65 is the lowest version dependent by automake-1.13).

When I build with automake-1.13 and autoconf-2.66, I got another error:

    configure.ac:667: error: AC_CHECK_SIZEOF: requires literal arguments

The code in configure.ac line 667 is :

    AC_CHECK_SIZEOF(void *)

It is a bug in autoconf-2.66 :
http://gnu-autoconf.7623.n7.nabble.com/AC-CHECK-SIZEOF-int-is-error-in-autoconf-2-66-td13537.html

Finally, everything works fine when using automake-1.13 and autoconf-2.67.
Refs: libevent#858
azat pushed a commit to azat/libevent that referenced this pull request Jun 28, 2020
When I run make check via automake with a version of 1.12.6 or lower, I got this error:

    /bin/sh: line 9: ./test_runner_epoll: No such file or directory
    FAIL: test_runner_epoll
    /bin/sh: line 9: ./test_runner_select: No such file or directory
    FAIL: test_runner_select
    /bin/sh: line 9: ./test_runner_kqueue: No such file or directory
    FAIL: test_runner_kqueue
    /bin/sh: line 9: ./test_runner_evport: No such file or directory
    FAIL: test_runner_evport
    /bin/sh: line 9: ./test_runner_devpoll: No such file or directory
    FAIL: test_runner_devpoll
    /bin/sh: line 9: ./test_runner_poll: No such file or directory
    FAIL: test_runner_poll
    /bin/sh: line 9: ./test_runner_win32: No such file or directory
    FAIL: test_runner_win32
    /bin/sh: line 9: ./test_runner_timerfd: No such file or directory
    FAIL: test_runner_timerfd
    /bin/sh: line 9: ./test_runner_changelist: No such file or directory
    FAIL: test_runner_changelist
    /bin/sh: line 9: ./test_runner_timerfd_changelist: No such file or directory
    FAIL: test_runner_timerfd_changelist

Open the Makefile generated by command ./autogen.sh && ./configure
I can see the errors are caused by this line:

    if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then

$${dir}$$tst will expand to ./test_runner_epoll, but test_runner_epoll is only a target in test/include.am,
not a file, so it print:

    /bin/sh: line 9: ./test_runner_epoll: No such file or directory.

It seems like a bug in automake 1.12.6.
The errors will disappear if I simply upgrade automake to 1.13, and upgrade autoconf to 2.65
(2.65 is the lowest version dependent by automake-1.13).

When I build with automake-1.13 and autoconf-2.66, I got another error:

    configure.ac:667: error: AC_CHECK_SIZEOF: requires literal arguments

The code in configure.ac line 667 is :

    AC_CHECK_SIZEOF(void *)

It is a bug in autoconf-2.66 :
http://gnu-autoconf.7623.n7.nabble.com/AC-CHECK-SIZEOF-int-is-error-in-autoconf-2-66-td13537.html

Finally, everything works fine when using automake-1.13 and autoconf-2.67.
Refs: libevent#858

(cherry picked from commit 3f09e92)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

None yet

3 participants