update to JS91 (#15368)

* js-78 -> js-91.6.0
* gjs-1.70.1 -> gjs-1.71.90: it's a development release, but works fine
                             with GNOME 41
* add polkit-0.120-js91-1.patch
This commit is contained in:
Xi Ruoyao 2022-03-06 16:22:05 +08:00
parent 364c21ec6f
commit b5b1af683a
No known key found for this signature in database
GPG Key ID: D95E4716CCBB34DC
7 changed files with 123 additions and 93 deletions

View File

@ -75,11 +75,7 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="icu.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="inih.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="jansson.xml"/>
<!-- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="js38.xml"/> -->
<!-- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="js52.xml"/> -->
<!-- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="js60.xml"/> -->
<!-- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="js68.xml"/> -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="js78.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="js91.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="json-c.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="json-glib.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="keyutils.xml"/>

View File

@ -4,32 +4,32 @@
<!ENTITY % general-entities SYSTEM "../../general.ent">
%general-entities;
<!-- for when firefox and js78 use same version
<!ENTITY ff78-version "&firefox-version;">
<!-- for when firefox and js91 use same version
<!ENTITY ff91-version "&firefox-version;">
and when they are on different versions - keep this for when
we have moved to next firefox-esr (ff-91) and JS has not moved
<!ENTITY ff78-version "&JS78-version;"> -->
<!ENTITY ff91-version "&JS91-version;"> -->
<!-- <!ENTITY ff78-version "&firefox-version;">-->
<!ENTITY js78-download-http "&mozilla-http;/firefox/releases/&JS78-version;esr/source/firefox-&JS78-version;esr.source.tar.xz">
<!ENTITY js78-download-ftp " ">
<!ENTITY js78-md5sum "453c90444bad8702fd08b71213ab2cbc">
<!ENTITY js78-size "316 MB">
<!ENTITY js78-buildsize "3.0 GB (36 MB installed after removing 34MB static lib)">
<!ENTITY js78-time "2.5 SBU (with parallelism=4)">
<!-- <!ENTITY ff91-version "&firefox-version;">-->
<!ENTITY js91-download-http "&mozilla-http;/firefox/releases/&JS91-version;esr/source/firefox-&JS91-version;esr.source.tar.xz">
<!ENTITY js91-download-ftp " ">
<!ENTITY js91-md5sum "038c417db527350d4fdd039870af819b">
<!ENTITY js91-size "369 MB">
<!ENTITY js91-buildsize "3.1 GB (37 MB installed after removing 34MB static lib)">
<!ENTITY js91-time "7.0 SBU (with parallelism=4)">
]>
<sect1 id="js78" xreflabel="js78-&JS78-version;">
<?dbhtml filename="js78.html"?>
<sect1 id="js91" xreflabel="JS-&JS91-version;">
<?dbhtml filename="js91.html"?>
<sect1info>
<date>$Date$</date>
</sect1info>
<title>JS-&JS78-version;</title>
<title>JS-&JS91-version;</title>
<indexterm zone="js78">
<primary sortas="a-js78">js78</primary>
<indexterm zone="js91">
<primary sortas="a-js91">js91</primary>
</indexterm>
<sect2 role="package">
@ -37,7 +37,7 @@
<para>
<application>JS</application> is Mozilla's JavaScript engine
written in C. JS78 is taken from Firefox.
written in C. JS91 is taken from Firefox.
</para>
&lfs111_checked;
@ -46,51 +46,50 @@
<itemizedlist spacing="compact">
<listitem>
<para>
Download (HTTP): <ulink url="&js78-download-http;"/>
Download (HTTP): <ulink url="&js91-download-http;"/>
</para>
</listitem>
<listitem>
<para>
Download (FTP): <ulink url="&js78-download-ftp;"/>
Download (FTP): <ulink url="&js91-download-ftp;"/>
</para>
</listitem>
<listitem>
<para>
Download MD5 sum: &js78-md5sum;
Download MD5 sum: &js91-md5sum;
</para>
</listitem>
<listitem>
<para>
Download size: &js78-size;
Download size: &js91-size;
</para>
</listitem>
<listitem>
<para>
Estimated disk space required: &js78-buildsize;
Estimated disk space required: &js91-buildsize;
</para>
</listitem>
<listitem>
<para>
Estimated build time: &js78-time;
Estimated build time: &js91-time;
</para>
</listitem>
</itemizedlist>
<!--
<bridgehead renderas="sect3">Additional Downloads</bridgehead>
<itemizedlist spacing="compact">
<listitem>
<para>
Required patch:
<ulink url="&patch-root;/js-&JS78-version;-python_3_10-1.patch"/>
<ulink url="&patch-root;/js-&JS91-version;-python_3_10-1.patch"/>
</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">JS78 Dependencies</bridgehead>
-->
<bridgehead renderas="sect3">JS91 Dependencies</bridgehead>
<bridgehead renderas="sect4">Required</bridgehead>
<para role="required">
<xref linkend="autoconf213"/>,
<xref linkend="icu"/>,
<xref linkend="rust"/>, and
<xref linkend="which"/>
@ -104,7 +103,7 @@
</para-->
<para condition="html" role="usernotes">
User Notes: <ulink url="&blfs-wiki;/js78"/>
User Notes: <ulink url="&blfs-wiki;/js91"/>
</para>
</sect2>
@ -114,8 +113,8 @@
<note>
<para>
Unlike most other packages in BLFS, the instructions below require you
to untar <filename>firefox-&JS78-version;esr.tar.xz</filename> and
change into the <filename>firefox-&JS78-version;</filename> folder.
to untar <filename>firefox-&JS91-version;esr.tar.xz</filename> and
change into the <filename>firefox-&JS91-version;</filename> folder.
</para>
<para>
@ -140,14 +139,14 @@ tar: Exiting with failure status due to previous errors
</para>
</note>
<!--
<para>
Apply a patch to allow building this package with Python-3.10 or
later:
</para>
<screen><userinput>patch -Np1 -i ../js-&JS78-version;-python_3_10-1.patch</userinput></screen>
<screen><userinput>patch -Np1 -i ../js-&JS91-version;-python_3_10-1.patch</userinput></screen>
-->
<para>
Install <application>JS</application> by running the following
commands:
@ -171,7 +170,7 @@ tar: Exiting with failure status due to previous errors
cd obj &amp;&amp;
CC=gcc CXX=g++ \
../js/src/configure --prefix=/usr \
sh ../js/src/configure.in --prefix=/usr \
--with-intl-api \
--with-system-zlib \
--with-system-icu \
@ -186,34 +185,24 @@ make</userinput></screen>
JSTESTS_EXTRA_ARGS="--timeout 300 --wpt=disabled"</command>.
It's recommended to redirect the output into a log.
<!-- recheck when ICU gets upgraded -->
<!-- ken: removed "are known to fail' because there are
4096 known failures, these icu items are unexpected failures
and I found the wording confusing -->
<!-- ken : For 78.4 this was 14 failures, I changed it to 10 for 78.5.
On that machine with 78.6 still 10, but on another 14, both with similar
setup and locale.
Depending on the machine, either
ten or fourteen JS tests related to locale and timezone fail,
because of an issue with recent versions of <xref linkend="icu"/>.
pierre: Now, with icu-70.1, there are many more failures.-->
More than a hundred tests fail after upgrading to icu-70.1 or above,
out of a total of more than 40,000.
Because we are building with system ICU, more than one hundred tests
(out of a total of more than 40,000) are known to fail.
</para>
<para>
To run the JIT test suite, issue:
<command>make -C js/src check-jit-test
JITTEST_EXTRA_ARGS="--timeout 300"</command>. One test may fail.
JITTEST_EXTRA_ARGS="--timeout 300"</command>.
</para>
<caution>
<para>
An issue in the installation process causes any running program which
links to JS78 shared library (for example, GNOME Shell) to crash if
JS78 is upgraded or reinstalled. To work around this issue, remove
the old version of the JS78 shared library before installation:
links to JS91 shared library (for example, GNOME Shell) to crash if
JS91 is upgraded or reinstalled. To work around this issue, remove
the old version of the JS91 shared library before installation:
</para>
<screen role="root"><userinput>rm -fv /usr/lib/libmozjs-78.so</userinput></screen>
<screen role="root"><userinput>rm -fv /usr/lib/libmozjs-91.so</userinput></screen>
</caution>
<para>
@ -222,11 +211,11 @@ make</userinput></screen>
<screen role="root"><userinput>make install &amp;&amp;
rm -v /usr/lib/libjs_static.ajs &amp;&amp;
sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js78-config</userinput></screen>
sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js91-config</userinput></screen>
</sect2>
<!-- Several gjs-1.65.90 tests fail with js78. Not sure why.
<!-- Several gjs-1.65.90 tests fail with js91. Not sure why.
OTOH an "otherwise" GNOME-3.36 environment works fine. -->
<sect2 role="commands">
@ -239,7 +228,20 @@ sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js78-config</userinput></screen>
</para>
<para>
<parameter>--with-*</parameter>: These parameters allow the build system
<command>sh ../js/src/configure.in</command>:
<filename>configure.in</filename> is actually a shell script, but
the executable bit is not set in its permission mode so it's needed
to explicitly run it with <command>sh</command>.
</para>
<para>
<parameter>--with-intl-api</parameter>: This enables the
internationalization functions required by
<application>Gjs</application>.
</para>
<para>
<parameter>--with-system-*</parameter>: These parameters allow the build system
to use system versions of the above libraries. These are required for
stability.
</para>
@ -251,16 +253,16 @@ sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js78-config</userinput></screen>
<para>
<parameter>--disable-jemalloc</parameter>: This switch disables the
internal memory allocator used in JS78. jemalloc is only intended for
the Firefox browser environment. For other applications using JS78,
if JS78 uses jemalloc, the application may crash as items allocated
internal memory allocator used in JS91. jemalloc is only intended for
the Firefox browser environment. For other applications using JS91,
if JS91 uses jemalloc, the application may crash as items allocated
in jemalloc allocator are freed on system (glibc) allocator.
</para>
<para>
<parameter>--disable-debug-symbols</parameter>: Don't generate debug
symbols since they are very large and most users won't need it. Remove
it if you want to debug JS78.
it if you want to debug JS91.
</para>
<para>
@ -269,8 +271,8 @@ sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js78-config</userinput></screen>
</para>
<para>
<command>sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js78-config</command>:
Prevent <command>js78-config</command> from using buggy CFLAGS.
<command>sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js91-config</command>:
Prevent <command>js91-config</command> from using buggy CFLAGS.
</para>
</sect2>
@ -285,13 +287,13 @@ sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js78-config</userinput></screen>
<seglistitem>
<seg>
js78 and js78-config
js91 and js91-config
</seg>
<seg>
libmozjs-78.so
libmozjs-91.so
</seg>
<seg>
/usr/include/mozjs-78
/usr/include/mozjs-91
</seg>
</seglistitem>
</segmentedlist>
@ -301,39 +303,39 @@ sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js78-config</userinput></screen>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="js6-js78">
<term><command>js78</command></term>
<varlistentry id="js91-js91">
<term><command>js91</command></term>
<listitem>
<para>
provides a command line interface to the
<application>JavaScript</application> engine
</para>
<indexterm zone="js78 js78">
<primary sortas="b-js78">js78</primary>
<indexterm zone="js91 js91">
<primary sortas="b-js91">js91</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="js78-config">
<term><command>js78-config</command></term>
<varlistentry id="js91-config">
<term><command>js91-config</command></term>
<listitem>
<para>
is used to find the JS compiler and linker flags
</para>
<indexterm zone="js78 js78-config">
<primary sortas="b-js78-config">js78-config</primary>
<indexterm zone="js91 js91-config">
<primary sortas="b-js91-config">js91-config</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libmozjs-78">
<term><filename class="libraryfile">libmozjs-78.so</filename></term>
<varlistentry id="libmozjs-91">
<term><filename class="libraryfile">libmozjs-91.so</filename></term>
<listitem>
<para>
contains the Mozilla JavaScript API functions
</para>
<indexterm zone="js78 libmozjs-78">
<primary sortas="c-libmozjs78">libmozjs-78.so</primary>
<indexterm zone="js91 libmozjs-91">
<primary sortas="c-libmozjs91">libmozjs-91.so</primary>
</indexterm>
</listitem>
</varlistentry>

View File

@ -27,7 +27,7 @@
<!ENTITY yelp-xsl-version "41.1">
<!ENTITY GConf-version "3.2.6">
<!ENTITY geocode-glib-version "3.26.2">
<!ENTITY gjs-version "1.70.1">
<!ENTITY gjs-version "1.71.90">
<!ENTITY gnome-autoar-version "0.4.3">
<!ENTITY gnome-desktop-version "41.3">
<!ENTITY gnome-menus-version "3.36.0">

View File

@ -4,10 +4,10 @@
<!ENTITY % general-entities SYSTEM "../../general.ent">
%general-entities;
<!ENTITY gjs-download-http "&gnome-download-http;/gjs/1.70/gjs-&gjs-version;.tar.xz">
<!ENTITY gjs-download-ftp "&gnome-download-ftp;/gjs/1.70/gjs-&gjs-version;.tar.xz">
<!ENTITY gjs-md5sum "5762ceb7cc5ed79acb0b9614511a7024">
<!ENTITY gjs-size "588 KB">
<!ENTITY gjs-download-http "&gnome-download-http;/gjs/1.71/gjs-&gjs-version;.tar.xz">
<!ENTITY gjs-download-ftp "&gnome-download-ftp;/gjs/1.71/gjs-&gjs-version;.tar.xz">
<!ENTITY gjs-md5sum "4c771a2d75c23ffa48a9e253152751f0">
<!ENTITY gjs-size "608 KB">
<!ENTITY gjs-buildsize "226 MB (with tests)">
<!ENTITY gjs-time "0.6 SBU (with tests)">
]>
@ -76,7 +76,7 @@
<xref linkend="cairo"/>,
<xref linkend="dbus"/>,
<xref linkend="gobject-introspection"/>, and
<xref linkend="js78"/>
<xref linkend="js91"/>
</para>
<bridgehead renderas="sect4">Recommended (required for GNOME)</bridgehead>

View File

@ -41,6 +41,24 @@
</itemizedlist>
</listitem>
-->
<listitem>
<para>March 6th, 2022</para>
<itemizedlist>
<listitem>
<para>[xry111] - Update to JS-91.6.0. Fixes
<ulink url="&blfs-ticket-root;15368">#15368</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Add polkit-0.120 patch for JS-91. Addresses
<ulink url="&blfs-ticket-root;15368">#15368</ulink>.</para>
</listitem>
<listitem>
<para>[xry111] - Update to Gjs-1.71.90. Addresses
<ulink url="&blfs-ticket-root;15368">#15368</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>March 5th, 2022</para>
<itemizedlist>

View File

@ -123,6 +123,8 @@
<!--<!ENTITY JS68-version "68.12.0">-->
<!-- temporary, until JS91 is approved for gnome -->
<!ENTITY JS78-version "78.15.0">
<!-- will "detach" it when Firefox ESR 102 is releasing (in Jun 2022) -->
<!ENTITY JS91-version "&firefox-version;">
<!ENTITY json-c-version "0.15">
<!ENTITY json-glib-version "1.6.6">
<!ENTITY keyutils-version "1.6.1">

View File

@ -78,6 +78,12 @@
<ulink url="&patch-root;/polkit-&polkit-version;-security_fixes-1.patch"/>
</para>
</listitem>
<listitem>
<para>
Required patch:
<ulink url="&patch-root;/polkit-&polkit-version;-js91-1.patch"/>
</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">Polkit Dependencies</bridgehead>
@ -85,7 +91,7 @@
<bridgehead renderas="sect4">Required</bridgehead>
<para role="required">
<xref linkend="glib2"/> and
<xref linkend="js78"/>
<xref linkend="js91"/>
</para>
<bridgehead renderas="sect4">Recommended</bridgehead>
@ -196,6 +202,12 @@ sed '/policy,/d' -i actions/meson.build \
<screen><userinput remap="pre">patch -Np1 -i ../polkit-&polkit-version;-security_fixes-1.patch</userinput></screen>
<para>
Port this package to use JS-91:
</para>
<screen><userinput remap="pre">patch -Np1 -i ../polkit-&polkit-version;-js91-1.patch</userinput></screen>
<para>
Install <application>Polkit</application> by running the following
commands: