unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Sharing native-lisp system load-path between builds
@ 2023-06-26  0:14 Björn Bidar
  2023-06-26  2:31 ` Eli Zaretskii
  0 siblings, 1 reply; 15+ messages in thread
From: Björn Bidar @ 2023-06-26  0:14 UTC (permalink / raw)
  To: emacs-devel


Hey,

I'm building Emacs master for OpenSUSE to provide testing.
OpenSUSE packaging packages Emacs so that they have three builds with
different feature sets: X11 without GTK, GTK and one build just without
X11 or GTK.

This helps different users to chose their preferred builds and keeps
build workers small for Emacs packages build.

The packages share the elisp, native-lisp ahead of time compilations and
docs.

Recently the native-lisp load path changed to change per Emacs
executable. I don't know the exact commit when this changed but it was
between ref 3c8167ec0f9647e6fc33e65b0a0324f96cb795ee and
d46a2fa319808963bbe8d3a90e7dbb13fcd844f5.

Now my questions: Is this a bug or can a different hash be used to
determine the system load-path? It is very useful to precompile the
lisp code once per emacs builds that share the same code.

I tried to bisect when exactly this changed but didn't found the exact
commit.

My package can be found here:
https://build.opensuse.org/package/show/home:Thaodan:emacs/emacs

Thanks, 

Björn Bidar



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

* Re: Sharing native-lisp system load-path between builds
  2023-06-26  0:14 Sharing native-lisp system load-path between builds Björn Bidar
@ 2023-06-26  2:31 ` Eli Zaretskii
  2023-06-26  4:26   ` Björn Bidar
  0 siblings, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2023-06-26  2:31 UTC (permalink / raw)
  To: Björn Bidar; +Cc: emacs-devel

> From: Björn Bidar <bjorn.bidar@thaodan.de>
> Date: Mon, 26 Jun 2023 03:14:17 +0300
> 
> I'm building Emacs master for OpenSUSE to provide testing.
> OpenSUSE packaging packages Emacs so that they have three builds with
> different feature sets: X11 without GTK, GTK and one build just without
> X11 or GTK.
> 
> This helps different users to chose their preferred builds and keeps
> build workers small for Emacs packages build.
> 
> The packages share the elisp, native-lisp ahead of time compilations and
> docs.
> 
> Recently the native-lisp load path changed to change per Emacs
> executable.

It isn't a recent change, at least not in principle.

> I don't know the exact commit when this changed but it was
> between ref 3c8167ec0f9647e6fc33e65b0a0324f96cb795ee and
> d46a2fa319808963bbe8d3a90e7dbb13fcd844f5.
> 
> Now my questions: Is this a bug or can a different hash be used to
> determine the system load-path? It is very useful to precompile the
> lisp code once per emacs builds that share the same code.

It's impossible to share native-compiled *.eln files between different
builds, because they depend on the primitives compiled into the build
and on the architecture of the host CPU.

So you must have a separate directory for each build configuration,
and any significant change in the Emacs C code will require
recompilation of all the *.eln files.



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

* Re: Sharing native-lisp system load-path between builds
  2023-06-26  2:31 ` Eli Zaretskii
@ 2023-06-26  4:26   ` Björn Bidar
  2023-06-26  7:12     ` Andrea Corallo
  2023-06-26 11:18     ` Sharing native-lisp system load-path between builds Eli Zaretskii
  0 siblings, 2 replies; 15+ messages in thread
From: Björn Bidar @ 2023-06-26  4:26 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Björn Bidar <bjorn.bidar@thaodan.de>
>> Date: Mon, 26 Jun 2023 03:14:17 +0300
>> 
>> I'm building Emacs master for OpenSUSE to provide testing.
>> OpenSUSE packaging packages Emacs so that they have three builds with
>> different feature sets: X11 without GTK, GTK and one build just without
>> X11 or GTK.
>> 
>> This helps different users to chose their preferred builds and keeps
>> build workers small for Emacs packages build.
>> 
>> The packages share the elisp, native-lisp ahead of time compilations and
>> docs.
>> 
>> Recently the native-lisp load path changed to change per Emacs
>> executable.
>
> It isn't a recent change, at least not in principle.

What could have change this?

>> I don't know the exact commit when this changed but it was
>> between ref 3c8167ec0f9647e6fc33e65b0a0324f96cb795ee and
>> d46a2fa319808963bbe8d3a90e7dbb13fcd844f5.
>> 
>> Now my questions: Is this a bug or can a different hash be used to
>> determine the system load-path? It is very useful to precompile the
>> lisp code once per emacs builds that share the same code.
>
> It's impossible to share native-compiled *.eln files between different
> builds, because they depend on the primitives compiled into the build
> and on the architecture of the host CPU.

> So you must have a separate directory for each build configuration,
> and any significant change in the Emacs C code will require
> recompilation of all the *.eln files.

Each build configuration is 100% the same except the optional
dependencies they are build with.

There's no change to any source they are build one after the other.

See the spec file here:
https://build.opensuse.org/package/view_file/home:Thaodan:emacs/emacs/emacs.spec?expand=1



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

* Re: Sharing native-lisp system load-path between builds
  2023-06-26  4:26   ` Björn Bidar
@ 2023-06-26  7:12     ` Andrea Corallo
  2023-08-13 23:47       ` Björn Bidar
  2023-06-26 11:18     ` Sharing native-lisp system load-path between builds Eli Zaretskii
  1 sibling, 1 reply; 15+ messages in thread
From: Andrea Corallo @ 2023-06-26  7:12 UTC (permalink / raw)
  To: Björn Bidar; +Cc: Eli Zaretskii, emacs-devel

Björn Bidar <bjorn.bidar@thaodan.de> writes:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>>> From: Björn Bidar <bjorn.bidar@thaodan.de>
>>> Date: Mon, 26 Jun 2023 03:14:17 +0300
>>> 
>>> I'm building Emacs master for OpenSUSE to provide testing.
>>> OpenSUSE packaging packages Emacs so that they have three builds with
>>> different feature sets: X11 without GTK, GTK and one build just without
>>> X11 or GTK.
>>> 
>>> This helps different users to chose their preferred builds and keeps
>>> build workers small for Emacs packages build.
>>> 
>>> The packages share the elisp, native-lisp ahead of time compilations and
>>> docs.
>>> 
>>> Recently the native-lisp load path changed to change per Emacs
>>> executable.
>>
>> It isn't a recent change, at least not in principle.
>
> What could have change this?
>
>>> I don't know the exact commit when this changed but it was
>>> between ref 3c8167ec0f9647e6fc33e65b0a0324f96cb795ee and
>>> d46a2fa319808963bbe8d3a90e7dbb13fcd844f5.
>>> 
>>> Now my questions: Is this a bug or can a different hash be used to
>>> determine the system load-path? It is very useful to precompile the
>>> lisp code once per emacs builds that share the same code.
>>
>> It's impossible to share native-compiled *.eln files between different
>> builds, because they depend on the primitives compiled into the build
>> and on the architecture of the host CPU.
>
>> So you must have a separate directory for each build configuration,
>> and any significant change in the Emacs C code will require
>> recompilation of all the *.eln files.
>
> Each build configuration is 100% the same except the optional
> dependencies they are build with.
>
> There's no change to any source they are build one after the other.
>
> See the spec file here:
> https://build.opensuse.org/package/view_file/home:Thaodan:emacs/emacs/emacs.spec?expand=1

The hash depends on the set of C primitives present in Emacs.  If the
hash differs it means your configurations are producing Emacsen with
different sets of primitives, and this makes eln files incompatible.

Best Regards

  Andrea



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

* Re: Sharing native-lisp system load-path between builds
  2023-06-26  4:26   ` Björn Bidar
  2023-06-26  7:12     ` Andrea Corallo
@ 2023-06-26 11:18     ` Eli Zaretskii
  1 sibling, 0 replies; 15+ messages in thread
From: Eli Zaretskii @ 2023-06-26 11:18 UTC (permalink / raw)
  To: Björn Bidar; +Cc: emacs-devel

1> From: Björn Bidar <bjorn.bidar@thaodan.de>
> Cc: emacs-devel@gnu.org
> Date: Mon, 26 Jun 2023 07:26:03 +0300
> 
> > It isn't a recent change, at least not in principle.
> 
> What could have change this?

Something either in your build environments or in Emacs itself that
made the different builds incompatible, as far as the *.eln files are
concerned.

> Each build configuration is 100% the same except the optional
> dependencies they are build with.
> 
> There's no change to any source they are build one after the other.

If Emacs decided that they are not compatible, then they aren't.
Using the same source is not enough, since the same sources are used
to produce very different builds: with and without X, with and without
Lucid/GTK, to say nothing of builds for Windows and macOS.  The cause
of these differences in the binaries are the preprocessor directives
and conditions that change the outcome of the build under the control
of the configure script which decides what parts of the sources to
compile into the binary and what parts not to compile.



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

* Re: Sharing native-lisp system load-path between builds
  2023-06-26  7:12     ` Andrea Corallo
@ 2023-08-13 23:47       ` Björn Bidar
  2023-08-14  2:29         ` Eli Zaretskii
  0 siblings, 1 reply; 15+ messages in thread
From: Björn Bidar @ 2023-08-13 23:47 UTC (permalink / raw)
  To: Andrea Corallo; +Cc: Eli Zaretskii, emacs-devel

Andrea Corallo <acorallo@gnu.org> writes:

> Björn Bidar <bjorn.bidar@thaodan.de> writes:
>
>> Eli Zaretskii <eliz@gnu.org> writes:
>>
>>>> From: Björn Bidar <bjorn.bidar@thaodan.de>
>>>> Date: Mon, 26 Jun 2023 03:14:17 +0300
>>>> 
>>>> I'm building Emacs master for OpenSUSE to provide testing.
>>>> OpenSUSE packaging packages Emacs so that they have three builds with
>>>> different feature sets: X11 without GTK, GTK and one build just without
>>>> X11 or GTK.
>>>> 
>>>> This helps different users to chose their preferred builds and keeps
>>>> build workers small for Emacs packages build.
>>>> 
>>>> The packages share the elisp, native-lisp ahead of time compilations and
>>>> docs.
>>>> 
>>>> Recently the native-lisp load path changed to change per Emacs
>>>> executable.
>>>
>>> It isn't a recent change, at least not in principle.
>>
>> What could have change this?
>>
>>>> I don't know the exact commit when this changed but it was
>>>> between ref 3c8167ec0f9647e6fc33e65b0a0324f96cb795ee and
>>>> d46a2fa319808963bbe8d3a90e7dbb13fcd844f5.
>>>> 
>>>> Now my questions: Is this a bug or can a different hash be used to
>>>> determine the system load-path? It is very useful to precompile the
>>>> lisp code once per emacs builds that share the same code.
>>>
>>> It's impossible to share native-compiled *.eln files between different
>>> builds, because they depend on the primitives compiled into the build
>>> and on the architecture of the host CPU.
>>
>>> So you must have a separate directory for each build configuration,
>>> and any significant change in the Emacs C code will require
>>> recompilation of all the *.eln files.
>>
>> Each build configuration is 100% the same except the optional
>> dependencies they are build with.
>>
>> There's no change to any source they are build one after the other.
>>
>> See the spec file here:
>> https://build.opensuse.org/package/view_file/home:Thaodan:emacs/emacs/emacs.spec?expand=1
>
> The hash depends on the set of C primitives present in Emacs.  If the
> hash differs it means your configurations are producing Emacsen with
> different sets of primitives, and this makes eln files incompatible.

OK but so why did work with the commit
3c8167ec0f9647e6fc33e65b0a0324f96cb795ee and before?

Nothing has changed in the build environment except the commits between
good commit and d46a2fa319808963bbe8d3a90e7dbb13fcd844f5 or later.



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

* Re: Sharing native-lisp system load-path between builds
  2023-08-13 23:47       ` Björn Bidar
@ 2023-08-14  2:29         ` Eli Zaretskii
  2023-08-14 10:04           ` Björn Bidar
  0 siblings, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2023-08-14  2:29 UTC (permalink / raw)
  To: Björn Bidar; +Cc: acorallo, emacs-devel

> From: Björn Bidar <bjorn.bidar@thaodan.de>
> Cc: Eli Zaretskii <eliz@gnu.org>,  emacs-devel@gnu.org
> Date: Mon, 14 Aug 2023 02:47:23 +0300
> 
> Andrea Corallo <acorallo@gnu.org> writes:
> 
> > The hash depends on the set of C primitives present in Emacs.  If the
> > hash differs it means your configurations are producing Emacsen with
> > different sets of primitives, and this makes eln files incompatible.
> 
> OK but so why did work with the commit
> 3c8167ec0f9647e6fc33e65b0a0324f96cb795ee and before?
> 
> Nothing has changed in the build environment except the commits between
> good commit and d46a2fa319808963bbe8d3a90e7dbb13fcd844f5 or later.

What exactly did work back then?  Please describe in detail what you
did that worked before 3c8167ec0f9647e6fc33e65b0a0324f96cb795ee and
doesn't work now.



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

* Re: Sharing native-lisp system load-path between builds
  2023-08-14  2:29         ` Eli Zaretskii
@ 2023-08-14 10:04           ` Björn Bidar
  2023-08-14 12:24             ` Eli Zaretskii
  0 siblings, 1 reply; 15+ messages in thread
From: Björn Bidar @ 2023-08-14 10:04 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: acorallo, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Björn Bidar <bjorn.bidar@thaodan.de>
>> Cc: Eli Zaretskii <eliz@gnu.org>,  emacs-devel@gnu.org
>> Date: Mon, 14 Aug 2023 02:47:23 +0300
>> 
>> Andrea Corallo <acorallo@gnu.org> writes:
>> 
>> > The hash depends on the set of C primitives present in Emacs.  If the
>> > hash differs it means your configurations are producing Emacsen with
>> > different sets of primitives, and this makes eln files incompatible.
>> 
>> OK but so why did work with the commit
>> 3c8167ec0f9647e6fc33e65b0a0324f96cb795ee and before?
>> 
>> Nothing has changed in the build environment except the commits between
>> good commit and d46a2fa319808963bbe8d3a90e7dbb13fcd844f5 or later.
>
> What exactly did work back then?  Please describe in detail what you
> did that worked before 3c8167ec0f9647e6fc33e65b0a0324f96cb795ee and
> doesn't work now.

Building Emacs once without X11, then X11 Without GTK and PGTK all with
native-compilation=aot.

When packaging Emacs using the precompiled eln from the last build Emacs
for all the build variants.

The spec file can be found here:
https://build.opensuse.org/package/view_file/home:Thaodan:emacs/emacs/emacs.spec?expand=1

The build process starts at line 319.



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

* Re: Sharing native-lisp system load-path between builds
  2023-08-14 10:04           ` Björn Bidar
@ 2023-08-14 12:24             ` Eli Zaretskii
       [not found]               ` <87bkf932b5.fsf@thaodan.de>
  0 siblings, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2023-08-14 12:24 UTC (permalink / raw)
  To: Björn Bidar; +Cc: acorallo, emacs-devel

> From: Björn Bidar <bjorn.bidar@thaodan.de>
> Cc: acorallo@gnu.org,  emacs-devel@gnu.org
> Date: Mon, 14 Aug 2023 13:04:06 +0300
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> From: Björn Bidar <bjorn.bidar@thaodan.de>
> >> Cc: Eli Zaretskii <eliz@gnu.org>,  emacs-devel@gnu.org
> >> Date: Mon, 14 Aug 2023 02:47:23 +0300
> >> 
> >> Andrea Corallo <acorallo@gnu.org> writes:
> >> 
> >> > The hash depends on the set of C primitives present in Emacs.  If the
> >> > hash differs it means your configurations are producing Emacsen with
> >> > different sets of primitives, and this makes eln files incompatible.
> >> 
> >> OK but so why did work with the commit
> >> 3c8167ec0f9647e6fc33e65b0a0324f96cb795ee and before?
> >> 
> >> Nothing has changed in the build environment except the commits between
> >> good commit and d46a2fa319808963bbe8d3a90e7dbb13fcd844f5 or later.
> >
> > What exactly did work back then?  Please describe in detail what you
> > did that worked before 3c8167ec0f9647e6fc33e65b0a0324f96cb795ee and
> > doesn't work now.
> 
> Building Emacs once without X11, then X11 Without GTK and PGTK all with
> native-compilation=aot.
> 
> When packaging Emacs using the precompiled eln from the last build Emacs
> for all the build variants.
> 
> The spec file can be found here:
> https://build.opensuse.org/package/view_file/home:Thaodan:emacs/emacs/emacs.spec?expand=1
> 
> The build process starts at line 319.

Thanks.  So what does "work" and "does not work" mean in this context?



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

* Re: Sharing native-lisp system load-path between builds
       [not found]               ` <87bkf932b5.fsf@thaodan.de>
@ 2023-08-14 18:41                 ` Eli Zaretskii
  2023-08-16  7:44                   ` Björn Bidar
  0 siblings, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2023-08-14 18:41 UTC (permalink / raw)
  To: Björn Bidar; +Cc: acorallo, emacs-devel

[Why private email?]

> From: Björn Bidar <bjorn.bidar@thaodan.de>
> Date: Mon, 14 Aug 2023 21:29:34 +0300
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > Thanks.  So what does "work" and "does not work" mean in this context?
> 
> Work means the eln files could be shared, doesn't mean the files can't
> be shared the hash in the native lisp path is different and the files
> are no longer compatible.

How did you share them? did you manually copy them into the same
directory or forced Emacs to write them there?  Or did Emacs create
*.eln files with the same hashes and in the same 29.0.50-NNNNN
subdirectory?  Also, which *.el files were compiled into *.eln files
you could share -- were those the preloaded *.el files, non-preloaded
*.el files from the Emacs tree, or third-party *.el files from
packages that are not bundled with Emacs?

In general, such different configurations could only be able to share
*.eln files by sheer luck.  It is enough to have one more or one less
primitive in one of the builds to require a separate set of *.eln
files, because the hash of the versioned subdirectory of native-lisp/
and of eln-cache changes when primitives are added or deleted.  That
has been so for a very long time, definitely long before commit
3c8167ec0f964.



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

* Re: Sharing native-lisp system load-path between builds
  2023-08-14 18:41                 ` Eli Zaretskii
@ 2023-08-16  7:44                   ` Björn Bidar
  2023-08-16  8:49                     ` Andrea Corallo
  0 siblings, 1 reply; 15+ messages in thread
From: Björn Bidar @ 2023-08-16  7:44 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: acorallo, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Björn Bidar <bjorn.bidar@thaodan.de>
>> Date: Mon, 14 Aug 2023 21:29:34 +0300
>> 
>> Eli Zaretskii <eliz@gnu.org> writes:
>> 
>> > Thanks.  So what does "work" and "does not work" mean in this context?
>> 
>> Work means the eln files could be shared, doesn't mean the files can't
>> be shared the hash in the native lisp path is different and the files
>> are no longer compatible.
>
> How did you share them? did you manually copy them into the same
> directory or forced Emacs to write them there?  Or did Emacs create
> *.eln files with the same hashes and in the same 29.0.50-NNNNN
> subdirectory?
Yes exactly. The <version>-<hash> directory was the same.

> Also, which *.el files were compiled into *.eln files
> you could share -- were those the preloaded *.el files, non-preloaded
> *.el files from the Emacs tree, or third-party *.el files from
> packages that are not bundled with Emacs?
Only the builtin el files as can be seen in the spec file.

>In general, such different configurations could only be able to share
>*.eln files by sheer luck.  It is enough to have one more or one less
>primitive in one of the builds to require a separate set of *.eln
>files, because the hash of the versioned subdirectory of native-lisp/
>and of eln-cache changes when primitives are added or deleted.  That
>has been so for a very long time, definitely long before commit
>3c8167ec0f964.

Does enabling or disabling lets say png change any of those primitives?
The package has different subpackages build from 100% the same source.
The configuration is only different when it comes to ui support.



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

* Re: Sharing native-lisp system load-path between builds
  2023-08-16  7:44                   ` Björn Bidar
@ 2023-08-16  8:49                     ` Andrea Corallo
  2023-08-18 22:23                       ` Björn Bidar
  0 siblings, 1 reply; 15+ messages in thread
From: Andrea Corallo @ 2023-08-16  8:49 UTC (permalink / raw)
  To: Björn Bidar; +Cc: Eli Zaretskii, emacs-devel

Björn Bidar <bjorn.bidar@thaodan.de> writes:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>>> From: Björn Bidar <bjorn.bidar@thaodan.de>
>>> Date: Mon, 14 Aug 2023 21:29:34 +0300
>>> 
>>> Eli Zaretskii <eliz@gnu.org> writes:
>>> 
>>> > Thanks.  So what does "work" and "does not work" mean in this context?
>>> 
>>> Work means the eln files could be shared, doesn't mean the files can't
>>> be shared the hash in the native lisp path is different and the files
>>> are no longer compatible.
>>
>> How did you share them? did you manually copy them into the same
>> directory or forced Emacs to write them there?  Or did Emacs create
>> *.eln files with the same hashes and in the same 29.0.50-NNNNN
>> subdirectory?
> Yes exactly. The <version>-<hash> directory was the same.
>
>> Also, which *.el files were compiled into *.eln files
>> you could share -- were those the preloaded *.el files, non-preloaded
>> *.el files from the Emacs tree, or third-party *.el files from
>> packages that are not bundled with Emacs?
> Only the builtin el files as can be seen in the spec file.
>
>>In general, such different configurations could only be able to share
>>*.eln files by sheer luck.  It is enough to have one more or one less
>>primitive in one of the builds to require a separate set of *.eln
>>files, because the hash of the versioned subdirectory of native-lisp/
>>and of eln-cache changes when primitives are added or deleted.  That
>>has been so for a very long time, definitely long before commit
>>3c8167ec0f964.
>
> Does enabling or disabling lets say png change any of those
> primitives?

Yes

  Andrea



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

* Re: Sharing native-lisp system load-path between builds
  2023-08-16  8:49                     ` Andrea Corallo
@ 2023-08-18 22:23                       ` Björn Bidar
  2023-08-19  6:21                         ` Eli Zaretskii
  0 siblings, 1 reply; 15+ messages in thread
From: Björn Bidar @ 2023-08-18 22:23 UTC (permalink / raw)
  To: Andrea Corallo; +Cc: Eli Zaretskii, emacs-devel

Andrea Corallo <acorallo@gnu.org> writes:

> Björn Bidar <bjorn.bidar@thaodan.de> writes:
>
>> Eli Zaretskii <eliz@gnu.org> writes:
>>
>>>> From: Björn Bidar <bjorn.bidar@thaodan.de>
>>>> Date: Mon, 14 Aug 2023 21:29:34 +0300
>>>> 
>>>> Eli Zaretskii <eliz@gnu.org> writes:
>>>> 
>>>> > Thanks.  So what does "work" and "does not work" mean in this context?
>>>> 
>>>> Work means the eln files could be shared, doesn't mean the files can't
>>>> be shared the hash in the native lisp path is different and the files
>>>> are no longer compatible.
>>>
>>> How did you share them? did you manually copy them into the same
>>> directory or forced Emacs to write them there?  Or did Emacs create
>>> *.eln files with the same hashes and in the same 29.0.50-NNNNN
>>> subdirectory?
>> Yes exactly. The <version>-<hash> directory was the same.
>>
>>> Also, which *.el files were compiled into *.eln files
>>> you could share -- were those the preloaded *.el files, non-preloaded
>>> *.el files from the Emacs tree, or third-party *.el files from
>>> packages that are not bundled with Emacs?
>> Only the builtin el files as can be seen in the spec file.
>>
>>>In general, such different configurations could only be able to share
>>>*.eln files by sheer luck.  It is enough to have one more or one less
>>>primitive in one of the builds to require a separate set of *.eln
>>>files, because the hash of the versioned subdirectory of native-lisp/
>>>and of eln-cache changes when primitives are added or deleted.  That
>>>has been so for a very long time, definitely long before commit
>>>3c8167ec0f964.
>>
>> Does enabling or disabling lets say png change any of those
>> primitives?
>
> Yes

What changed that now these primitives change this way or is this simply
a side effect of another change?



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

* Re: Sharing native-lisp system load-path between builds
  2023-08-18 22:23                       ` Björn Bidar
@ 2023-08-19  6:21                         ` Eli Zaretskii
  2023-09-26 14:26                           ` Sharing native-lisp system load-path between builds, my own error Björn Bidar
  0 siblings, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2023-08-19  6:21 UTC (permalink / raw)
  To: Björn Bidar; +Cc: acorallo, emacs-devel

> From: Björn Bidar <bjorn.bidar@thaodan.de>
> Cc: Eli Zaretskii <eliz@gnu.org>,  emacs-devel@gnu.org
> Date: Sat, 19 Aug 2023 01:23:00 +0300
> 
> Andrea Corallo <acorallo@gnu.org> writes:
> 
> >> Does enabling or disabling lets say png change any of those
> >> primitives?
> >
> > Yes
> 
> What changed that now these primitives change this way or is this simply
> a side effect of another change?

Nothing fundamental changed recently, this was always the case, since
Emacs 28 was released.  So if it worked for you until now, it was only
by sheer luck: somehow the configurations you have been building had
the same primitives in them, and now they don't.

The assumption that you can share the *.eln files between different
configurations was never valid.



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

* Re: Sharing native-lisp system load-path between builds, my own error
  2023-08-19  6:21                         ` Eli Zaretskii
@ 2023-09-26 14:26                           ` Björn Bidar
  0 siblings, 0 replies; 15+ messages in thread
From: Björn Bidar @ 2023-09-26 14:26 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: acorallo, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Björn Bidar <bjorn.bidar@thaodan.de>
>> Cc: Eli Zaretskii <eliz@gnu.org>,  emacs-devel@gnu.org
>> Date: Sat, 19 Aug 2023 01:23:00 +0300
>> 
>> Andrea Corallo <acorallo@gnu.org> writes:
>> 
>> >> Does enabling or disabling lets say png change any of those
>> >> primitives?
>> >
>> > Yes
>> 
>> What changed that now these primitives change this way or is this simply
>> a side effect of another change?
>
> Nothing fundamental changed recently, this was always the case, since
> Emacs 28 was released.  So if it worked for you until now, it was only
> by sheer luck: somehow the configurations you have been building had
> the same primitives in them, and now they don't.
>
> The assumption that you can share the *.eln files between different
> configurations was never valid.

The error was on my side. I assumed that my package only tracked on set
of eln files since without further thinking it does sound like that
compiled lisp code should be the same between 3 variants of the same
build besides different libraries linked to Emacs.

But the package contained compiled elisp for all three which worked
before commit 0cf6e0998ba. I ran distclean after each build, which
before said commit didn't delete the native-lisp directory but after it
deleted them to keeping only the last build.

After keeping each native-lisp directory again for each variant everything
is fine.



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

end of thread, other threads:[~2023-09-26 14:26 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-26  0:14 Sharing native-lisp system load-path between builds Björn Bidar
2023-06-26  2:31 ` Eli Zaretskii
2023-06-26  4:26   ` Björn Bidar
2023-06-26  7:12     ` Andrea Corallo
2023-08-13 23:47       ` Björn Bidar
2023-08-14  2:29         ` Eli Zaretskii
2023-08-14 10:04           ` Björn Bidar
2023-08-14 12:24             ` Eli Zaretskii
     [not found]               ` <87bkf932b5.fsf@thaodan.de>
2023-08-14 18:41                 ` Eli Zaretskii
2023-08-16  7:44                   ` Björn Bidar
2023-08-16  8:49                     ` Andrea Corallo
2023-08-18 22:23                       ` Björn Bidar
2023-08-19  6:21                         ` Eli Zaretskii
2023-09-26 14:26                           ` Sharing native-lisp system load-path between builds, my own error Björn Bidar
2023-06-26 11:18     ` Sharing native-lisp system load-path between builds Eli Zaretskii

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).