* 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 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
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
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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.