[PATCH 0/5] Erlang update to 27.0.1.

  • Done
  • quality assurance status badge
Details
2 participants
  • Andrew Tropin
  • Igor Goryachev
Owner
unassigned
Submitted by
Igor Goryachev
Severity
normal

Debbugs page

Igor Goryachev wrote 7 months ago
(address . guix-patches@gnu.org)(name . Igor Goryachev)(address . igor@goryachev.org)
cover.1723018213.git.igor@goryachev.org
Erlang package was cleaned up, updated to version 27.0.1 and several fixes/hacks were performed to make it deterministic by modifying its bootstrap.

Igor Goryachev (5):
gnu: erlang-jsx: Fix tests under Erlang 27+.
gnu: erlang-yamerl: Update to 0.10.0.a24f448.
gnu: erlang-jose: Relax build options.
gnu: ejabberd: Include jiffy dependence under Erlang 27.
gnu: erlang: Update to 27.0.1.

gnu/packages/erlang-xyz.scm | 12 +++++
gnu/packages/erlang.scm | 91 +++++++++++++++++++++----------------
gnu/packages/messaging.scm | 3 ++
3 files changed, 68 insertions(+), 38 deletions(-)


base-commit: 5e567587dd4abf51f9a6fa44f5a852dde1115ce9
--
2.45.2
Igor Goryachev wrote 7 months ago
[PATCH 1/5] gnu: erlang-jsx: Fix tests under Erlang 27+.
(address . 72508@debbugs.gnu.org)
1234c6aa24e573044ed2075cd712e22431b60897.1723018213.git.igor@goryachev.org
* gnu/packages/erlang.scm (erlang-jsx): Fix tests under Erlang 27+.

Change-Id: Iaade94de64b5e5837a6a54376ba946c20d7107b9
---
gnu/packages/erlang.scm | 10 ++++++++++
1 file changed, 10 insertions(+)

Toggle diff (23 lines)
diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index b6a31f26e9..60d644ab8d 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -541,6 +541,16 @@ (define-public erlang-jsx
(base32
"1wr7jkxm6nlgvd52xhniav64xr9rml2ngb35rwjwqlqvq7ywhp0c"))))
(build-system rebar-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; Fix tests for running under Erlang 27+.
+ (add-after 'unpack 'fix-tests-for-erlang-27
+ (lambda _
+ (substitute* "src/jsx_decoder.erl"
+ (("\\{\"-0\\.0\", \\[\\{float, 0\\.0\\}, end_json\\], <<\"-0\\.0\">>\\},")
+ "{\"0.0\", [{float, 0.0}, end_json], <<\"0.0\">>},
+{\"-0.0\", [{float, -0.0}, end_json], <<\"-0.0\">>},")))))))
(synopsis "Streaming, evented JSON parsing toolkit")
(description
"An Erlang application for consuming, producing and manipulating json.")
--
2.45.2
Igor Goryachev wrote 7 months ago
[PATCH 2/5] gnu: erlang-yamerl: Update to 0.10.0.a24f448.
(address . 72508@debbugs.gnu.org)
8822eed8d9c94d833dc067e5aabf1271aaa7a8e5.1723018213.git.igor@goryachev.org
* gnu/packages/erlang.scm (erlang-yamerl): Update to 0.10.0.a24f448.

Change-Id: Ib279881ff14e6e46ef639c1bcbc53706fa55aef6
---
gnu/packages/erlang.scm | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)

Toggle diff (28 lines)
diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index 60d644ab8d..2452fd88ab 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -292,17 +292,18 @@ (define-public erlang-cf
(define-public erlang-yamerl
(package
(name "erlang-yamerl")
- (version "0.10.0")
+ (version "0.10.0.a24f448")
(source
(origin
(method git-fetch)
(uri (git-reference
;; There are no tests included on Hex.
(url "https://github.com/yakaz/yamerl")
- (commit (string-append "v" version))))
+ ;; Fetching commit which includes Erlang 27+ related fixes.
+ (commit "a24f448c0a8084f70b751dc38621047e56fb53cc")))
(file-name (git-file-name name version))
(sha256
- (base32 "0if8abgmispcfk7zhd0a5dndzwzbsmqrbyrm5shk375r2dbbwak6"))))
+ (base32 "1csq0z4igyybjgmrynz4d49ysv437iyd2xzkhifb5x47lpdpfpkq"))))
(build-system rebar-build-system)
(synopsis "YAML and JSON parser in pure Erlang")
(description
--
2.45.2
Igor Goryachev wrote 7 months ago
[PATCH 3/5] gnu: erlang-jose: Relax build options.
(address . 72508@debbugs.gnu.org)
fa7878b1d3ea46d24715a31b0cb25dcc7869636e.1723018213.git.igor@goryachev.org
* gnu/packages/erlang-xyz.scm (erlang-jose): Relax build options.

Change-Id: I0e90cb54558260aea07bc33a11a2ab56261a20bf
---
gnu/packages/erlang-xyz.scm | 12 ++++++++++++
1 file changed, 12 insertions(+)

Toggle diff (25 lines)
diff --git a/gnu/packages/erlang-xyz.scm b/gnu/packages/erlang-xyz.scm
index 5661bf52dd..6f1c033aec 100644
--- a/gnu/packages/erlang-xyz.scm
+++ b/gnu/packages/erlang-xyz.scm
@@ -59,6 +59,18 @@ (define-public erlang-jose
(sha256
(base32 "0576jdjygby37qmzrs8cm5l6n622b0mi3z28j6r4s5xsz1px6v0d"))))
(build-system rebar-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; Do not treat warnings as errors, for more info see:
+ ;; https://github.com/potatosalad/erlang-jose/issues/168
+ (add-after 'unpack 'relax-build-options
+ (lambda _
+ (substitute* "rebar.config"
+ (("debug_info,") "debug_info"))
+ (substitute* "rebar.config"
+ (("warnings_as_errors") "")))))))
(synopsis
"JSON Object Signing and Encryption for Erlang and Elixir")
(description
--
2.45.2
Igor Goryachev wrote 7 months ago
[PATCH 4/5] gnu: ejabberd: Include jiffy dependence under Erlang 27.
(address . 72508@debbugs.gnu.org)
193796d3558870733faaa4e97806f4f0dc3eed3f.1723018213.git.igor@goryachev.org
* gnu/packages/messaging.scm (ejabberd): Include jiffy dependence under Erlang 27.

Change-Id: Id0b0e7acb8100b406a6c686227dd497e0d7434fd
---
gnu/packages/messaging.scm | 3 +++
1 file changed, 3 insertions(+)

Toggle diff (16 lines)
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index fb80866791..da04c34636 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -3706,6 +3706,9 @@ (define-public ejabberd
(substitute* "rebar.config"
(("\\{copy, \"rel/files/erl\",")
"%{copy, \"rel/files/erl\","))
+ ;; It seems ejabberd still needs jiffy due to p1_acme.
+ (substitute* "rebar.config"
+ (("\\{if_version_below, \"27\",") "{if_version_below, \"30\","))
;; Unpin pinned dependences.
(substitute* "rebar.lock"
((",1\\}") ",0}"))
--
2.45.2
Igor Goryachev wrote 7 months ago
[PATCH 5/5] gnu: erlang: Update to 27.0.1.
(address . 72508@debbugs.gnu.org)
5831ab6e1e6490ce4eb0baec92af915847813232.1723018213.git.igor@goryachev.org
* gnu/packages/erlang.scm (erlang): Update to 27.0.1.

Change-Id: Ic603c441cc304ef460e2559c57d765d7e499aad5
---
gnu/packages/erlang.scm | 74 ++++++++++++++++++++++-------------------
1 file changed, 39 insertions(+), 35 deletions(-)

Toggle diff (128 lines)
diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index 2452fd88ab..793f311376 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -49,7 +49,7 @@ (define-module (gnu packages erlang)
(define-public erlang
(package
(name "erlang")
- (version "26.2.5")
+ (version "27.0.1")
(source (origin
(method git-fetch)
;; The tarball from http://erlang.org/download contains many
@@ -61,7 +61,7 @@ (define-public erlang
(file-name (git-file-name name version))
(sha256
(base32
- "0hd4flm9x8254rcv8hj0hra5lh5n51vcpharxy2d1ph8059vfsmx"))
+ "1gzlvbbc1zm87910pnhi94mcpag1zxylhy7m2g4vhlmclyir7gd1"))
(patches (search-patches "erlang-man-path.patch"))))
(build-system gnu-build-system)
(native-inputs
@@ -69,13 +69,17 @@ (define-public erlang
;; Erlang's documentation is distributed in a separate tarball.
("erlang-manpages"
- ,(origin
- (method url-fetch)
- (uri (string-append "https://github.com/erlang/otp/releases/download"
- "/OTP-" version "/otp_doc_man_" version ".tar.gz"))
- (sha256
- (base32
- "08ngil8578asjzmqa657l4zdy0cr0h9spkg88wp9kxl95bfyli8p"))))))
+ ;; Manpages tarball is not released for 27.0.1, so we take it from the
+ ;; previous version. Details:
+ ;; https://erlangforums.com/t/patch-package-otp-27-0-1-released/3824/4
+ ,(let ((version "27.0"))
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/erlang/otp/releases/download"
+ "/OTP-" version "/otp_doc_man_" version ".tar.gz"))
+ (sha256
+ (base32
+ "0f3w2152090860aci4a38d1bd19c5sslbwadwxc7sjza487fm8lm")))))))
(inputs
(list ncurses openssl wxwidgets))
(propagated-inputs
@@ -84,6 +88,7 @@ (define-public erlang
`(#:test-target "release_tests"
#:configure-flags
(list "--disable-saved-compile-time"
+ "--enable-deterministic-build"
"--enable-dynamic-ssl-lib"
"--enable-native-libs"
"--enable-shared-zlib"
@@ -106,34 +111,22 @@ (define-public erlang
(time-utc->date
(make-time time-utc 0 (string->number
(getenv "SOURCE_DATE_EPOCH"))))))
- (substitute* "lib/reltool/src/reltool_target.erl"
- (("Date = date\\(\\),")
- (string-append "Date = "
- (date->string source-date-epoch
- "'{~Y,~m,~d}',"))))
- (substitute* "lib/reltool/src/reltool_target.erl"
- (("Time = time\\(\\),")
- (string-append "Time = "
- (date->string source-date-epoch
- "'{~H,~M,~S}',"))))
- (substitute* '("lib/reltool/src/reltool_target.erl"
- "lib/sasl/src/systools_make.erl")
- (("date\\(\\), time\\(\\),")
- (date->string source-date-epoch
- "{~Y,~m,~d}, {~H,~M,~S},")))
(substitute* "lib/dialyzer/test/small_SUITE_data/src/gs_make.erl"
(("tuple_to_list\\(date\\(\\)\\),tuple_to_list\\(time\\(\\)\\)")
(date->string
source-date-epoch
- "tuple_to_list({~Y,~m,~d}), tuple_to_list({~H,~M,~S})")))
- (substitute* "lib/snmp/src/compile/snmpc_mib_to_hrl.erl"
- (("\\{Y,Mo,D\\} = date\\(\\),")
- (date->string source-date-epoch
- "{Y,Mo,D} = {~Y,~m,~d},")))
- (substitute* "lib/snmp/src/compile/snmpc_mib_to_hrl.erl"
- (("\\{H,Mi,S\\} = time\\(\\),")
- (date->string source-date-epoch
- "{H,Mi,S} = {~H,~M,~S},"))))))
+ "tuple_to_list({~Y,~m,~d}), tuple_to_list({~H,~M,~S})"))))))
+ ;; When compiling with 'deterministic' option the important meta
+ ;; information is still needed for some Erlang's dependants, such as
+ ;; Elixir. We make compiler to preserve it.
+ ;; For more info see: https://github.com/erlang/otp/issues/8602
+ (add-after 'unpack 'preserve-source-meta
+ (lambda _
+ (substitute* "lib/compiler/src/compile.erl"
+ (("\\[\\{source,Source\\} \\| Info0\\];")
+ "[{source,Source} | Info0];
+ [_|_] = Source when IsDeterministic ->
+ [{source,Source} | Info0];"))))
(add-after 'unpack 'patch-/bin/sh
(lambda* (#:key inputs #:allow-other-keys)
(let ((sh (search-input-file inputs "/bin/sh")))
@@ -160,10 +153,21 @@ (define-public erlang
"lib/reltool/examples/display_args"
"lib/reltool/examples/mnesia_core_dump_viewer"
"lib/snmp/src/compile/snmpc.src"
- "make/verify_runtime_dependencies"
- "make/emd2exml.in"))))
+ "make/verify_runtime_dependencies"))))
(substitute* escripts
(("/usr/bin/env") (which "env"))))))
+ ;; Copy modified compiler to bootstrap. It is deterministic, but
+ ;; preserves 'source' meta information to be used by dependants
+ ;; of Erlang.
+ (add-after 'build 'copy-modified-compiler
+ (lambda _
+ (copy-recursively "lib/compiler/ebin/compile.beam"
+ "bootstrap/lib/compiler/ebin/compile.beam")))
+ ;; ... clean everything and rebuild with modified bootstrap.
+ (add-after 'copy-modified-compiler 'clean-and-make-again
+ (lambda _
+ (invoke "make" "clean")
+ (invoke "make")))
(add-before 'configure 'set-erl-top
(lambda _
(setenv "ERL_TOP" (getcwd))))
--
2.45.2
Andrew Tropin wrote 7 months ago
Re: [bug#72508] [PATCH 2/5] gnu: erlang-yamerl: Update to 0.10.0.a24f448.
(name . Igor Goryachev)(address . igor@goryachev.org)
87zfpowcy9.fsf@trop.in
On 2024-08-07 11:23, Igor Goryachev via Guix-patches via wrote:

Toggle quote (18 lines)
> * gnu/packages/erlang.scm (erlang-yamerl): Update to 0.10.0.a24f448.
>
> Change-Id: Ib279881ff14e6e46ef639c1bcbc53706fa55aef6
> ---
> gnu/packages/erlang.scm | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
> index 60d644ab8d..2452fd88ab 100644
> --- a/gnu/packages/erlang.scm
> +++ b/gnu/packages/erlang.scm
> @@ -292,17 +292,18 @@ (define-public erlang-cf
> (define-public erlang-yamerl
> (package
> (name "erlang-yamerl")
> - (version "0.10.0")
> + (version "0.10.0.a24f448")

Take a look at package examples, with non-release version:

The revision starts at 0 and get increased every time commit value is
updated. It resets to 0, when the version changes.

Please, adjust to this style and send the whole series as v2.

Toggle quote (17 lines)
> (source
> (origin
> (method git-fetch)
> (uri (git-reference
> ;; There are no tests included on Hex.
> (url "https://github.com/yakaz/yamerl")
> - (commit (string-append "v" version))))
> + ;; Fetching commit which includes Erlang 27+ related fixes.
> + (commit "a24f448c0a8084f70b751dc38621047e56fb53cc")))
> (file-name (git-file-name name version))
> (sha256
> - (base32 "0if8abgmispcfk7zhd0a5dndzwzbsmqrbyrm5shk375r2dbbwak6"))))
> + (base32 "1csq0z4igyybjgmrynz4d49ysv437iyd2xzkhifb5x47lpdpfpkq"))))
> (build-system rebar-build-system)
> (synopsis "YAML and JSON parser in pure Erlang")
> (description

--
Best regards,
Andrew Tropin
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEKEGaxlA4dEDH6S/6IgjSCVjB3rAFAmazl24ACgkQIgjSCVjB
3rCvKQ/8D5jdw8jO8OCBv5/qa7vC/2U0xo29cn+yX0Sl4RVmyg9GKuHWTyVg7790
lsfIBtELI4lJWoET+oyc1nhO7TRxHdPaJlQBZiE7RCvGB6nN6Wqkrh5YpN8/cdak
0GCl/glBcCTeK7LOfYVLcNQLTzRvuXASNNRUXGcpz1ybgeogcM7fiD41jQsSIJwd
DrXUKJ7E1GdBN2a+2zbgdQ8+Ij3gtliMA0luAje13+35fAPYbibFe6bsbgHDiPk3
f9jzpm3UPiRzkra/Ex2FmJAI1Ci/Bz5mui2kpxeVmXt8GfTiu6+GZuRf6LSKopPY
DM91CQdeT5//lLaQuSGKK+pvC2UMlpuOLtuCzkOg5lu9HxM6S7VjEkPnkH0OaMYS
zaDNwF8gl0aPcoDd8UEfD8Hacyqqx95meugemllcKQ0roDCYMW9pAdJjLLeW36IC
MXm3YOtFqYBRoINbaTOQXQSBqCeWIQ/N82een/Cacrd5DbsAezaGy7iCmqfoj2oS
7+7sEvsKTdIMUE4K1wNljIU0uEjakqw1xRH/XCjrrhxR9yk2K+Tg5cKF1qbDCEYl
qxgdTRdi/b3ZEzlffbOYCJS38e0vwCUZ9keV3Kryc+++0RCQvD50U/u19yT3Hd2u
vxuH51m3pPImV9+e3B4rdCNReScfuoRdpRh+qlhJFTYSx0wuCBg=
=ggpI
-----END PGP SIGNATURE-----

Igor Goryachev wrote 7 months ago
[PATCH v2 1/5] gnu: erlang-jsx: Fix tests under Erlang 27+.
(address . 72508@debbugs.gnu.org)
1234c6aa24e573044ed2075cd712e22431b60897.1723048333.git.igor@goryachev.org
* gnu/packages/erlang.scm (erlang-jsx): Fix tests under Erlang 27+.

Change-Id: Iaade94de64b5e5837a6a54376ba946c20d7107b9
---
gnu/packages/erlang.scm | 10 ++++++++++
1 file changed, 10 insertions(+)

Toggle diff (25 lines)
diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index b6a31f26e9..60d644ab8d 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -541,6 +541,16 @@ (define-public erlang-jsx
(base32
"1wr7jkxm6nlgvd52xhniav64xr9rml2ngb35rwjwqlqvq7ywhp0c"))))
(build-system rebar-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; Fix tests for running under Erlang 27+.
+ (add-after 'unpack 'fix-tests-for-erlang-27
+ (lambda _
+ (substitute* "src/jsx_decoder.erl"
+ (("\\{\"-0\\.0\", \\[\\{float, 0\\.0\\}, end_json\\], <<\"-0\\.0\">>\\},")
+ "{\"0.0\", [{float, 0.0}, end_json], <<\"0.0\">>},
+{\"-0.0\", [{float, -0.0}, end_json], <<\"-0.0\">>},")))))))
(synopsis "Streaming, evented JSON parsing toolkit")
(description
"An Erlang application for consuming, producing and manipulating json.")

base-commit: 5e567587dd4abf51f9a6fa44f5a852dde1115ce9
--
2.45.2
Igor Goryachev wrote 7 months ago
[PATCH v2 2/5] gnu: erlang-yamerl: Update to 0.10.0-0.a24f448.
(address . 72508@debbugs.gnu.org)
ccbfa1847241437c9bd1a27d39b8edbf6a1669ff.1723048333.git.igor@goryachev.org
* gnu/packages/erlang.scm (erlang-yamerl): Update to 0.10.0-0.a24f448.

Change-Id: Ib279881ff14e6e46ef639c1bcbc53706fa55aef6
---
gnu/packages/erlang.scm | 41 ++++++++++++++++++++++-------------------
1 file changed, 22 insertions(+), 19 deletions(-)

Toggle diff (55 lines)
diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index 60d644ab8d..80ec673a56 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -290,26 +290,29 @@ (define-public erlang-cf
(license license:expat)))
(define-public erlang-yamerl
- (package
- (name "erlang-yamerl")
- (version "0.10.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- ;; There are no tests included on Hex.
- (url "https://github.com/yakaz/yamerl")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0if8abgmispcfk7zhd0a5dndzwzbsmqrbyrm5shk375r2dbbwak6"))))
- (build-system rebar-build-system)
- (synopsis "YAML and JSON parser in pure Erlang")
- (description
- "Erlang application to parse YAML 1.1 and YAML 1.2 documents, as well as
+ (let ((commit "a24f448c0a8084f70b751dc38621047e56fb53cc")
+ (revision "0"))
+ (package
+ (name "erlang-yamerl")
+ (version (git-version "0.10.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ ;; There are no tests included on Hex.
+ (url "https://github.com/yakaz/yamerl")
+ ;; Fetching commit which includes Erlang 27+ related fixes.
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1csq0z4igyybjgmrynz4d49ysv437iyd2xzkhifb5x47lpdpfpkq"))))
+ (build-system rebar-build-system)
+ (synopsis "YAML and JSON parser in pure Erlang")
+ (description
+ "Erlang application to parse YAML 1.1 and YAML 1.2 documents, as well as
JSON documents.")
- (home-page "https://hexdocs.pm/yamerl/")
- (license license:bsd-2)))
+ (home-page "https://hexdocs.pm/yamerl/")
+ (license license:bsd-2))))
(define-public erlang-covertool
(package
--
2.45.2
Igor Goryachev wrote 7 months ago
[PATCH v2 3/5] gnu: erlang-jose: Relax build options.
(address . 72508@debbugs.gnu.org)
07e46990b05202875ffa7db4e3b269fea68df2c6.1723048333.git.igor@goryachev.org
* gnu/packages/erlang-xyz.scm (erlang-jose): Relax build options.

Change-Id: I0e90cb54558260aea07bc33a11a2ab56261a20bf
---
gnu/packages/erlang-xyz.scm | 12 ++++++++++++
1 file changed, 12 insertions(+)

Toggle diff (25 lines)
diff --git a/gnu/packages/erlang-xyz.scm b/gnu/packages/erlang-xyz.scm
index 5661bf52dd..6f1c033aec 100644
--- a/gnu/packages/erlang-xyz.scm
+++ b/gnu/packages/erlang-xyz.scm
@@ -59,6 +59,18 @@ (define-public erlang-jose
(sha256
(base32 "0576jdjygby37qmzrs8cm5l6n622b0mi3z28j6r4s5xsz1px6v0d"))))
(build-system rebar-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; Do not treat warnings as errors, for more info see:
+ ;; https://github.com/potatosalad/erlang-jose/issues/168
+ (add-after 'unpack 'relax-build-options
+ (lambda _
+ (substitute* "rebar.config"
+ (("debug_info,") "debug_info"))
+ (substitute* "rebar.config"
+ (("warnings_as_errors") "")))))))
(synopsis
"JSON Object Signing and Encryption for Erlang and Elixir")
(description
--
2.45.2
Igor Goryachev wrote 7 months ago
[PATCH v2 4/5] gnu: ejabberd: Include jiffy dependence under Erlang 27.
(address . 72508@debbugs.gnu.org)
d5d4a82a2972d21f1689d79ef0c32523720ef07f.1723048333.git.igor@goryachev.org
* gnu/packages/messaging.scm (ejabberd): Include jiffy dependence under Erlang 27.

Change-Id: Id0b0e7acb8100b406a6c686227dd497e0d7434fd
---
gnu/packages/messaging.scm | 3 +++
1 file changed, 3 insertions(+)

Toggle diff (16 lines)
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index fb80866791..da04c34636 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -3706,6 +3706,9 @@ (define-public ejabberd
(substitute* "rebar.config"
(("\\{copy, \"rel/files/erl\",")
"%{copy, \"rel/files/erl\","))
+ ;; It seems ejabberd still needs jiffy due to p1_acme.
+ (substitute* "rebar.config"
+ (("\\{if_version_below, \"27\",") "{if_version_below, \"30\","))
;; Unpin pinned dependences.
(substitute* "rebar.lock"
((",1\\}") ",0}"))
--
2.45.2
Igor Goryachev wrote 7 months ago
[PATCH v2 5/5] gnu: erlang: Update to 27.0.1.
(address . 72508@debbugs.gnu.org)
030c88d6eb7a1bc5e85252dcfc4fe53604d99de5.1723048333.git.igor@goryachev.org
* gnu/packages/erlang.scm (erlang): Update to 27.0.1.

Change-Id: Ic603c441cc304ef460e2559c57d765d7e499aad5
---
gnu/packages/erlang.scm | 74 ++++++++++++++++++++++-------------------
1 file changed, 39 insertions(+), 35 deletions(-)

Toggle diff (128 lines)
diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index 80ec673a56..175bbdf8a5 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -49,7 +49,7 @@ (define-module (gnu packages erlang)
(define-public erlang
(package
(name "erlang")
- (version "26.2.5")
+ (version "27.0.1")
(source (origin
(method git-fetch)
;; The tarball from http://erlang.org/download contains many
@@ -61,7 +61,7 @@ (define-public erlang
(file-name (git-file-name name version))
(sha256
(base32
- "0hd4flm9x8254rcv8hj0hra5lh5n51vcpharxy2d1ph8059vfsmx"))
+ "1gzlvbbc1zm87910pnhi94mcpag1zxylhy7m2g4vhlmclyir7gd1"))
(patches (search-patches "erlang-man-path.patch"))))
(build-system gnu-build-system)
(native-inputs
@@ -69,13 +69,17 @@ (define-public erlang
;; Erlang's documentation is distributed in a separate tarball.
("erlang-manpages"
- ,(origin
- (method url-fetch)
- (uri (string-append "https://github.com/erlang/otp/releases/download"
- "/OTP-" version "/otp_doc_man_" version ".tar.gz"))
- (sha256
- (base32
- "08ngil8578asjzmqa657l4zdy0cr0h9spkg88wp9kxl95bfyli8p"))))))
+ ;; Manpages tarball is not released for 27.0.1, so we take it from the
+ ;; previous version. Details:
+ ;; https://erlangforums.com/t/patch-package-otp-27-0-1-released/3824/4
+ ,(let ((version "27.0"))
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/erlang/otp/releases/download"
+ "/OTP-" version "/otp_doc_man_" version ".tar.gz"))
+ (sha256
+ (base32
+ "0f3w2152090860aci4a38d1bd19c5sslbwadwxc7sjza487fm8lm")))))))
(inputs
(list ncurses openssl wxwidgets))
(propagated-inputs
@@ -84,6 +88,7 @@ (define-public erlang
`(#:test-target "release_tests"
#:configure-flags
(list "--disable-saved-compile-time"
+ "--enable-deterministic-build"
"--enable-dynamic-ssl-lib"
"--enable-native-libs"
"--enable-shared-zlib"
@@ -106,34 +111,22 @@ (define-public erlang
(time-utc->date
(make-time time-utc 0 (string->number
(getenv "SOURCE_DATE_EPOCH"))))))
- (substitute* "lib/reltool/src/reltool_target.erl"
- (("Date = date\\(\\),")
- (string-append "Date = "
- (date->string source-date-epoch
- "'{~Y,~m,~d}',"))))
- (substitute* "lib/reltool/src/reltool_target.erl"
- (("Time = time\\(\\),")
- (string-append "Time = "
- (date->string source-date-epoch
- "'{~H,~M,~S}',"))))
- (substitute* '("lib/reltool/src/reltool_target.erl"
- "lib/sasl/src/systools_make.erl")
- (("date\\(\\), time\\(\\),")
- (date->string source-date-epoch
- "{~Y,~m,~d}, {~H,~M,~S},")))
(substitute* "lib/dialyzer/test/small_SUITE_data/src/gs_make.erl"
(("tuple_to_list\\(date\\(\\)\\),tuple_to_list\\(time\\(\\)\\)")
(date->string
source-date-epoch
- "tuple_to_list({~Y,~m,~d}), tuple_to_list({~H,~M,~S})")))
- (substitute* "lib/snmp/src/compile/snmpc_mib_to_hrl.erl"
- (("\\{Y,Mo,D\\} = date\\(\\),")
- (date->string source-date-epoch
- "{Y,Mo,D} = {~Y,~m,~d},")))
- (substitute* "lib/snmp/src/compile/snmpc_mib_to_hrl.erl"
- (("\\{H,Mi,S\\} = time\\(\\),")
- (date->string source-date-epoch
- "{H,Mi,S} = {~H,~M,~S},"))))))
+ "tuple_to_list({~Y,~m,~d}), tuple_to_list({~H,~M,~S})"))))))
+ ;; When compiling with 'deterministic' option the important meta
+ ;; information is still needed for some Erlang's dependants, such as
+ ;; Elixir. We make compiler to preserve it.
+ ;; For more info see: https://github.com/erlang/otp/issues/8602
+ (add-after 'unpack 'preserve-source-meta
+ (lambda _
+ (substitute* "lib/compiler/src/compile.erl"
+ (("\\[\\{source,Source\\} \\| Info0\\];")
+ "[{source,Source} | Info0];
+ [_|_] = Source when IsDeterministic ->
+ [{source,Source} | Info0];"))))
(add-after 'unpack 'patch-/bin/sh
(lambda* (#:key inputs #:allow-other-keys)
(let ((sh (search-input-file inputs "/bin/sh")))
@@ -160,10 +153,21 @@ (define-public erlang
"lib/reltool/examples/display_args"
"lib/reltool/examples/mnesia_core_dump_viewer"
"lib/snmp/src/compile/snmpc.src"
- "make/verify_runtime_dependencies"
- "make/emd2exml.in"))))
+ "make/verify_runtime_dependencies"))))
(substitute* escripts
(("/usr/bin/env") (which "env"))))))
+ ;; Copy modified compiler to bootstrap. It is deterministic, but
+ ;; preserves 'source' meta information to be used by dependants
+ ;; of Erlang.
+ (add-after 'build 'copy-modified-compiler
+ (lambda _
+ (copy-recursively "lib/compiler/ebin/compile.beam"
+ "bootstrap/lib/compiler/ebin/compile.beam")))
+ ;; ... clean everything and rebuild with modified bootstrap.
+ (add-after 'copy-modified-compiler 'clean-and-make-again
+ (lambda _
+ (invoke "make" "clean")
+ (invoke "make")))
(add-before 'configure 'set-erl-top
(lambda _
(setenv "ERL_TOP" (getcwd))))
--
2.45.2
Andrew Tropin wrote 7 months ago
Re: [bug#72508] [PATCH 0/5] Erlang update to 27.0.1.
(name . Igor Goryachev)(address . igor@goryachev.org)
87jzgq1pd6.fsf@trop.in
On 2024-08-07 11:10, Igor Goryachev via Guix-patches via wrote:

Toggle quote (17 lines)
> Erlang package was cleaned up, updated to version 27.0.1 and several fixes/hacks were performed to make it deterministic by modifying its bootstrap.
>
> Igor Goryachev (5):
> gnu: erlang-jsx: Fix tests under Erlang 27+.
> gnu: erlang-yamerl: Update to 0.10.0.a24f448.
> gnu: erlang-jose: Relax build options.
> gnu: ejabberd: Include jiffy dependence under Erlang 27.
> gnu: erlang: Update to 27.0.1.
>
> gnu/packages/erlang-xyz.scm | 12 +++++
> gnu/packages/erlang.scm | 91 +++++++++++++++++++++----------------
> gnu/packages/messaging.scm | 3 ++
> 3 files changed, 68 insertions(+), 38 deletions(-)
>
>
> base-commit: 5e567587dd4abf51f9a6fa44f5a852dde1115ce9

Applied, pushed as

Thank you for keeping erlang uptodate! :)

--
Best regards,
Andrew Tropin
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEKEGaxlA4dEDH6S/6IgjSCVjB3rAFAma1alUACgkQIgjSCVjB
3rCm/Q//ewBxCXeVNhE6eH6pgIWyS/tdilyRMDoalEKtN61TinVuE9kmuZkTjtHh
mpy4fDBOUn0M40NeLBblq287iGfXx7ocgUuO0CgeE2Mo7/NP8Zf/vhalcWzOa7NO
E3FrJjGtinl46O+3SIBuz7eIQwz3WbxSTNVp49KCtQmmxPneGyWakBBboMJV/YV4
uYzmn9RrLlr4dG+svHHD1jyUFtRIhexWcmQlmlVc1Ap/+N4arddlEIkmWNb/k1V2
cJBUqa6ituyokYhioUequ+Sraf8p23865nCFCOBavApQ8HXbc+3lqwPi40T7y9iS
66OHCAZjN1p1j8xCtCVBTiAereOYGNQUpHAk6xQ77jf/1OJd3rdiF1FB1/+v+ksp
KRn+z0sQ5qYrC7IXcBBuu3ziaLYl1zO8iuD/jU4+l9rZUsG94NtyGz8aOP4O6FJs
DydzCrX4r+/zHgMjo6kInENhWu81aOCXyfPGI8HOQGLBKW+h00PdpgapfKkY1F4i
jYxzVId9LN2L0xuiIpKAJhJd/TKhkgU801gzv5bE9yfa1k/gNfOOcqDkTIewkW0c
7IsE1D4uStGHxlWeSVa+wBSoAsrwoGmkDJfjW/4NGLXThwGSX4HCjUJ+uY8VkoMS
i6oNOzL1g4A1mhPHoruSmdS4IFAwkSCnqmJeEC5FoI0dvSuhlaY=
=9yLJ
-----END PGP SIGNATURE-----

?
Your comment

This issue is archived.

To comment on this conversation send an email to 72508@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 72508
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help