unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset
@ 2019-02-11  1:21 hx
  2019-02-11 16:39 ` Eli Zaretskii
  2019-02-11 23:39 ` Paul Eggert
  0 siblings, 2 replies; 14+ messages in thread
From: hx @ 2019-02-11  1:21 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 452 bytes --]

Hi list,

can't compile emacs26 today after git pull,
CentOS7 X64:

make[2]: Entering directory `/emacs-26-src/lisp'
  ELC      ../lisp/international/ucs-normalize.elc

In toplevel form:
international/ucs-normalize.el:266:56:Error: Symbol’s function definition
is void: regexp-opt-charset
make[2]: *** [../lisp/international/ucs-normalize.elc] Error 1



$ git status
# On branch emacs-26
nothing to commit, working directory clean

[-- Attachment #2: Type: text/html, Size: 731 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset
  2019-02-11  1:21 emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset hx
@ 2019-02-11 16:39 ` Eli Zaretskii
  2019-02-12  0:16   ` hx
  2019-02-11 23:39 ` Paul Eggert
  1 sibling, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2019-02-11 16:39 UTC (permalink / raw)
  To: hx; +Cc: emacs-devel

> From: hx <silent2600@gmail.com>
> Date: Mon, 11 Feb 2019 09:21:20 +0800
> 
> can't compile emacs26 today after git pull,
> CentOS7 X64:
> 
> make[2]: Entering directory `/emacs-26-src/lisp'
>   ELC      ../lisp/international/ucs-normalize.elc
> 
> In toplevel form:
> international/ucs-normalize.el:266:56:Error: Symbol’s function definition is void: regexp-opt-charset
> make[2]: *** [../lisp/international/ucs-normalize.elc] Error 1

I think I understand why, but just so I'm sure: can you tell how you
configured this build?  What was the command line with which you
invoked the 'configure' script?




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset
  2019-02-11  1:21 emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset hx
  2019-02-11 16:39 ` Eli Zaretskii
@ 2019-02-11 23:39 ` Paul Eggert
  2019-02-12  3:35   ` Eli Zaretskii
  1 sibling, 1 reply; 14+ messages in thread
From: Paul Eggert @ 2019-02-11 23:39 UTC (permalink / raw)
  To: hx; +Cc: emacs-devel

On 2/10/19 5:21 PM, hx wrote:
>
> can't compile emacs26 today after git pull,
> CentOS7 X64:

I am not seeing any problem on Fedora 29 x86-64 with a fresh checkout 
after I run:

./autogen.sh && ./configure && make

I'm using the emacs-26 commit 3aaa2d2058125a755bd6226cb4009811089812f8.




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset
  2019-02-11 16:39 ` Eli Zaretskii
@ 2019-02-12  0:16   ` hx
  0 siblings, 0 replies; 14+ messages in thread
From: hx @ 2019-02-12  0:16 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1520 bytes --]

CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer" \
./configure --prefix=/home/xyz/emacs26 --disable-largefile --without-pop
--without-sound \
--with-x-toolkit=no --without-xpm --without-jpeg --without-tiff
--without-gif --without-png --without-rsvg --without-xft \
--without-libotf --without-m17n-flt --without-toolkit-scroll-bars
--without-xaw3d --without-xim --without-gpm \
--without-dbus --without-gconf -without-x \
--without-selinux --disable-acl --with-modules --without-makeinfo \
--without-gnutls

yesterday, I manually open emacs and make byte-compile on the
ucs-normalize.el, then run make again, it worked.

today, I just do make clean && make distclean, delete all .elc files, sh
autogen.sh, configure with above options,
make success without error.


On Tue, Feb 12, 2019 at 12:39 AM Eli Zaretskii <eliz@gnu.org> wrote:

> > From: hx <silent2600@gmail.com>
> > Date: Mon, 11 Feb 2019 09:21:20 +0800
> >
> > can't compile emacs26 today after git pull,
> > CentOS7 X64:
> >
> > make[2]: Entering directory `/emacs-26-src/lisp'
> >   ELC      ../lisp/international/ucs-normalize.elc
> >
> > In toplevel form:
> > international/ucs-normalize.el:266:56:Error: Symbol’s function
> definition is void: regexp-opt-charset
> > make[2]: *** [../lisp/international/ucs-normalize.elc] Error 1
>
> I think I understand why, but just so I'm sure: can you tell how you
> configured this build?  What was the command line with which you
> invoked the 'configure' script?
>
>

[-- Attachment #2: Type: text/html, Size: 2112 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset
  2019-02-11 23:39 ` Paul Eggert
@ 2019-02-12  3:35   ` Eli Zaretskii
  2019-02-13 18:49     ` Paul Eggert
  0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2019-02-12  3:35 UTC (permalink / raw)
  To: Paul Eggert; +Cc: silent2600, emacs-devel

> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Mon, 11 Feb 2019 15:39:14 -0800
> Cc: emacs-devel <emacs-devel@gnu.org>
> 
> On 2/10/19 5:21 PM, hx wrote:
> >
> > can't compile emacs26 today after git pull,
> > CentOS7 X64:
> 
> I am not seeing any problem on Fedora 29 x86-64 with a fresh checkout 
> after I run:
> 
> ./autogen.sh && ./configure && make

Even if you configure --without-x?  regexp-opt is preloaded only if
x-create-frame is fboundp.  So I thought we'd need an autoload form in
ucs-normalize.el for when regexp-opt is not preloaded.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset
  2019-02-12  3:35   ` Eli Zaretskii
@ 2019-02-13 18:49     ` Paul Eggert
  2019-02-13 19:18       ` Eli Zaretskii
  2019-02-13 20:04       ` Glenn Morris
  0 siblings, 2 replies; 14+ messages in thread
From: Paul Eggert @ 2019-02-13 18:49 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: silent2600, emacs-devel

On 2/11/19 7:35 PM, Eli Zaretskii wrote:
>> I am not seeing any problem on Fedora 29 x86-64 with a fresh checkout
>> after I run:
>>
>> ./autogen.sh && ./configure && make
> Even if you configure --without-x?  regexp-opt is preloaded only if
> x-create-frame is fboundp.  So I thought we'd need an autoload form in
> ucs-normalize.el for when regexp-opt is not preloaded.

On my platform (Fedora 29 x86-64) I don't see a problem in the emacs-26 
branch even if I configure --without-x. The relevant output lines are:

make[2]: Entering directory '/home/eggert/src/gnu/emacs/emacs-26-tmp1/lisp'
   ELC      ../lisp/international/ucs-normalize.elc
make[2]: Leaving directory '/home/eggert/src/gnu/emacs/emacs-26-tmp1/lisp'

This is with commit 2019-02-13T15:39:31Z!eliz@gnu.org 
(6d89120b156576ca24e03472563f5ea0f01313f8).

I also could not reproduce the problem with commands very close to hx's 
in a fresh checkout of the same commit. I used:

./autogen.sh && ./configure --prefix=/home/xyz/emacs26 
--disable-largefile --without-pop --without-sound --with-x-toolkit=no 
--without-xpm --without-jpeg --without-tiff --without-gif --without-png 
--without-rsvg --without-xft --without-libotf --without-m17n-flt 
--without-toolkit-scroll-bars --without-xaw3d --without-xim 
--without-gpm --without-dbus --without-gconf -without-x 
--without-selinux --disable-acl --with-modules --without-makeinfo 
--without-gnutls CFLAGS='-march=native -O2 -pipe -fomit-frame-pointer' 
&& make




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset
  2019-02-13 18:49     ` Paul Eggert
@ 2019-02-13 19:18       ` Eli Zaretskii
  2019-02-13 20:04       ` Glenn Morris
  1 sibling, 0 replies; 14+ messages in thread
From: Eli Zaretskii @ 2019-02-13 19:18 UTC (permalink / raw)
  To: Paul Eggert; +Cc: silent2600, emacs-devel

> Cc: silent2600@gmail.com, emacs-devel@gnu.org
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Wed, 13 Feb 2019 10:49:43 -0800
> 
> On 2/11/19 7:35 PM, Eli Zaretskii wrote:
> >> I am not seeing any problem on Fedora 29 x86-64 with a fresh checkout
> >> after I run:
> >>
> >> ./autogen.sh && ./configure && make
> > Even if you configure --without-x?  regexp-opt is preloaded only if
> > x-create-frame is fboundp.  So I thought we'd need an autoload form in
> > ucs-normalize.el for when regexp-opt is not preloaded.
> 
> On my platform (Fedora 29 x86-64) I don't see a problem in the emacs-26 
> branch even if I configure --without-x.

OK, thanks for testing.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset
  2019-02-13 18:49     ` Paul Eggert
  2019-02-13 19:18       ` Eli Zaretskii
@ 2019-02-13 20:04       ` Glenn Morris
  2019-02-13 20:15         ` Stefan Monnier
  2019-02-13 23:04         ` Paul Eggert
  1 sibling, 2 replies; 14+ messages in thread
From: Glenn Morris @ 2019-02-13 20:04 UTC (permalink / raw)
  To: Paul Eggert; +Cc: Eli Zaretskii, silent2600, emacs-devel


Although a --without-x bootstrap does work (eg this is what the
hydra.nixos "tarball" job is), it's not clear to me why it works.
(Maybe something calls regexp-opt during bootstrap, which triggers an
autoload?) There is a problem, however, as shown by the fact that in a
--without-x build post-bootstrap, this fails:

./src/emacs -Q -batch -f batch-byte-compile lisp/international/ucs-normalize.el

Error: Symbol's function definition is void: regexp-opt-charset




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset
  2019-02-13 20:04       ` Glenn Morris
@ 2019-02-13 20:15         ` Stefan Monnier
  2019-02-14  3:32           ` Eli Zaretskii
  2019-02-13 23:04         ` Paul Eggert
  1 sibling, 1 reply; 14+ messages in thread
From: Stefan Monnier @ 2019-02-13 20:15 UTC (permalink / raw)
  To: emacs-devel

> Although a --without-x bootstrap does work (eg this is what the
> hydra.nixos "tarball" job is), it's not clear to me why it works.
> (Maybe something calls regexp-opt during bootstrap, which triggers an
> autoload?) There is a problem, however, as shown by the fact that in a
> --without-x build post-bootstrap, this fails:

Most likely regexp-opt gets loaded during the first run of "loadup", so
the compilation of ucs-normalize by the initial bootstrap-emacs
succeeds, even tough the compilation of that same file by the
`emacs` fails.

So a later "make" can succeed or fail depending on which files needs to
be recompiled.


        Stefan




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset
  2019-02-13 20:04       ` Glenn Morris
  2019-02-13 20:15         ` Stefan Monnier
@ 2019-02-13 23:04         ` Paul Eggert
  2019-02-14  3:37           ` Eli Zaretskii
  1 sibling, 1 reply; 14+ messages in thread
From: Paul Eggert @ 2019-02-13 23:04 UTC (permalink / raw)
  To: Glenn Morris; +Cc: Eli Zaretskii, silent2600, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 551 bytes --]

On 2/13/19 12:04 PM, Glenn Morris wrote:
> There is a problem, however, as shown by the fact that in a
> --without-x build post-bootstrap, this fails:
>
> ./src/emacs -Q -batch -f batch-byte-compile lisp/international/ucs-normalize.el
>
> Error: Symbol's function definition is void: regexp-opt-charset

Yes, I observe that problem too. I fixed it by installing the attached 
patch into the master branch. It's not clear to me whether it's worth 
backporting this into emacs-26, as the problem occurs only with unusual 
actions after unusual builds.


[-- Attachment #2: 0001-Add-missing-dependency-to-ucs-normalize.el.patch --]
[-- Type: text/x-patch, Size: 908 bytes --]

From d1dc424721e5d13fc1ddf69ab4057517e4e77c64 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Wed, 13 Feb 2019 15:03:01 -0800
Subject: [PATCH] Add missing dependency to ucs-normalize.el

* lisp/international/ucs-normalize.el:
Require regexp-opt when compiling.  Problem reported by hx in:
https://lists.gnu.org/r/emacs-devel/2019-02/msg00334.html
---
 lisp/international/ucs-normalize.el | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lisp/international/ucs-normalize.el b/lisp/international/ucs-normalize.el
index 9d55470d94..6f1e770c09 100644
--- a/lisp/international/ucs-normalize.el
+++ b/lisp/international/ucs-normalize.el
@@ -109,7 +109,9 @@
 
 (defconst ucs-normalize-version "1.2")
 
-(eval-when-compile (require 'cl-lib))
+(eval-when-compile
+  (require 'cl-lib)
+  (require 'regexp-opt))
 
 (declare-function nfd "ucs-normalize" (char))
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset
  2019-02-13 20:15         ` Stefan Monnier
@ 2019-02-14  3:32           ` Eli Zaretskii
  2019-02-14  4:21             ` Stefan Monnier
  0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2019-02-14  3:32 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Wed, 13 Feb 2019 15:15:25 -0500
> 
> Most likely regexp-opt gets loaded during the first run of "loadup", so
> the compilation of ucs-normalize by the initial bootstrap-emacs
> succeeds, even tough the compilation of that same file by the
> `emacs` fails.

Why is the first run of loadup different from the rest?  The condition
to load regexp-opt depends only on what functions were compiled into
the binary, not on anything else.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset
  2019-02-13 23:04         ` Paul Eggert
@ 2019-02-14  3:37           ` Eli Zaretskii
  2019-02-14 18:48             ` Paul Eggert
  0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2019-02-14  3:37 UTC (permalink / raw)
  To: Paul Eggert; +Cc: rgm, silent2600, emacs-devel

> Cc: Eli Zaretskii <eliz@gnu.org>, silent2600@gmail.com, emacs-devel@gnu.org
> From: Paul Eggert <eggert@cs.ucla.edu>
> Date: Wed, 13 Feb 2019 15:04:18 -0800
> 
> diff --git a/lisp/international/ucs-normalize.el b/lisp/international/ucs-normalize.el
> index 9d55470d94..6f1e770c09 100644
> --- a/lisp/international/ucs-normalize.el
> +++ b/lisp/international/ucs-normalize.el
> @@ -109,7 +109,9 @@
>  
>  (defconst ucs-normalize-version "1.2")
>  
> -(eval-when-compile (require 'cl-lib))
> +(eval-when-compile
> +  (require 'cl-lib)
> +  (require 'regexp-opt))

I think it would be better to add the 'require' in the same
eval-when-compile form which calls regexp-opt-charset.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset
  2019-02-14  3:32           ` Eli Zaretskii
@ 2019-02-14  4:21             ` Stefan Monnier
  0 siblings, 0 replies; 14+ messages in thread
From: Stefan Monnier @ 2019-02-14  4:21 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

>> Most likely regexp-opt gets loaded during the first run of "loadup", so
>> the compilation of ucs-normalize by the initial bootstrap-emacs
>> succeeds, even tough the compilation of that same file by the
>> `emacs` fails.
> Why is the first run of loadup different from the rest?

Because the first run of loadup is done with not-yet-compiled Elisp
files, so it loads a crapload more packages (because of things like
(eval-when-compile (require <foo>)) and autoloaded macros) than the
second run (performed after the preloaded files have all been
byte-compiled).


        Stefan



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset
  2019-02-14  3:37           ` Eli Zaretskii
@ 2019-02-14 18:48             ` Paul Eggert
  0 siblings, 0 replies; 14+ messages in thread
From: Paul Eggert @ 2019-02-14 18:48 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: rgm, silent2600, emacs-devel

On 2/13/19 7:37 PM, Eli Zaretskii wrote:
>> -(eval-when-compile (require 'cl-lib))
>> +(eval-when-compile
>> +  (require 'cl-lib)
>> +  (require 'regexp-opt))
> I think it would be better to add the 'require' in the same
> eval-when-compile form which calls regexp-opt-charset.

There's more than one such form. At some point it's easier to treat 
regexp-opt functions like cl-lib functions, i.e., available to any code 
within an eval-when-compile in that module.




^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2019-02-14 18:48 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-02-11  1:21 emacs26, ucs-normalize.el, Symbol’s function definition is void: regexp-opt-charset hx
2019-02-11 16:39 ` Eli Zaretskii
2019-02-12  0:16   ` hx
2019-02-11 23:39 ` Paul Eggert
2019-02-12  3:35   ` Eli Zaretskii
2019-02-13 18:49     ` Paul Eggert
2019-02-13 19:18       ` Eli Zaretskii
2019-02-13 20:04       ` Glenn Morris
2019-02-13 20:15         ` Stefan Monnier
2019-02-14  3:32           ` Eli Zaretskii
2019-02-14  4:21             ` Stefan Monnier
2019-02-13 23:04         ` Paul Eggert
2019-02-14  3:37           ` Eli Zaretskii
2019-02-14 18:48             ` Paul Eggert

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).