[PATCH 0/2] Elixir and Erlang improvements

  • Done
  • quality assurance status badge
Details
2 participants
  • 宋文武
  • Christopher Baines
Owner
unassigned
Submitted by
Christopher Baines
Severity
normal

Debbugs page

Christopher Baines wrote 7 years ago
(address . guix-patches@gnu.org)
87o9gumxgd.fsf@cbaines.net
Fix the erlang package to use sh from the store, and not hardcode
/bin/sh.

This means that the elixir package no longer nondeterministically fails
to build, and allows for getting all the tests to pass as well.

These are the related bug reports:


Christopher Baines (2):
gnu: erlang: Patch occurrences of /bin/sh in the source.
gnu: elixir: Enable more tests and remove patch.

gnu/local.mk | 1 -
gnu/packages/elixir.scm | 36 +--
gnu/packages/erlang.scm | 21 ++
.../elixir-disable-failing-tests.patch | 284 ------------------
4 files changed, 27 insertions(+), 315 deletions(-)
delete mode 100644 gnu/packages/patches/elixir-disable-failing-tests.patch
-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEEPonu50WOcg2XVOCyXiijOwuE9XcFAlsRTiJfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcACgkQXiijOwuE
9XcZHg//U69cTsLr1nKcqeSWB/AZsXCvRJ6XD1dtP+F9/qhrpYqXtoHKCkB7WPUI
T8mouPuU02Pt/Q1dTOn8rmNJltsXU5ucLCLjFTjJZ9/riTR5+QS+4BpO+JxA9Jno
UOtjq1/7e33n30WGC0ejYKiIzNzAKaWW55fY7n2pmHBvKc4HKvvBhhkdU2CLfPQc
dy8ev85dLThhAG5/ygj1MsX8T3ukhcih0bDhhRM9h0btE8Vl55AStvkDFtLBRHXX
AIN1wsQTYAaLIfHcWt9UDpuWrd1UpNPPk7reviXO5MlRp0padHoc75prAN+t+pNF
UuxdjkHuZ7PbWL2Pd5+R+KNPbTcy2BVR8gdLYoUUCh3FxYDUCioAEMDmCRI6J5av
NEVeyD5Rd7jpHhCAbi8UOes63+IPoMd4mtHSfN4W2VFHIdLYmKiWfE3I2ANys7Hu
a9GKwvEMBBGJDsLXGpoen0Lxtb5q34nCQaNuoAEgnzYRBMtEm9ajJt7I6sLDTxBn
pUoPbVcFZKF4eN2Uleit7yIbpKhQShldyvtUJQEdB1zIFr9i8IRps+NCJo3Lh95d
wPVKf1O6k5Br89hpVyqNuuP4omABRB/sv3NxeBy4ZAeWX8mGXgzJfPE17Dup7IC2
60Deo4QR3OIjfhuoUu+1Nxy5pBu/OsL9OYCfCyIZgEX1/dTrxjo=
=seSs
-----END PGP SIGNATURE-----

Christopher Baines wrote 7 years ago
[PATCH 1/2] gnu: erlang: Patch occurrences of /bin/sh in the source.
(address . 31678@debbugs.gnu.org)
20180601135106.32680-1-mail@cbaines.net
Previously, the elixir package would often fail to build, as running :os:cmd
would fail, as /bin/sh doesn't exist when building the elixir package. These
changes fix that issue.

* gnu/packages/erlang.scm (erlang)[arguments]: Add new patch-/bin/sh phase to
replace hardcoded references to /bin/sh with a file in the store.
---
gnu/packages/erlang.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index 0e2b7b5bc..1fce57388 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -127,6 +127,27 @@
(date->string source-date-epoch
"{H,Mi,S} = {~H,~M,~S},")))
#t)))
+ (add-after 'unpack 'patch-/bin/sh
+ (lambda _
+ (substitute* "erts/etc/unix/run_erl.c"
+ (("sh = \"/bin/sh\";")
+ (string-append "sh = \""
+ (which "sh")
+ "\";")))
+
+ (substitute* "erts/emulator/sys/unix/sys_drivers.c"
+ (("SHELL \"/bin/sh\"")
+ (string-append "SHELL \""
+ (which "sh")
+ "\"")))
+ (substitute* "erts/emulator/sys/unix/erl_child_setup.c"
+ (("SHELL \"/bin/sh\"")
+ (string-append "SHELL \""
+ (which "sh")
+ "\"")))
+
+ (substitute* "lib/kernel/src/os.erl"
+ (("/bin/sh") (which "sh")))))
(add-after 'patch-source-shebangs 'patch-source-env
(lambda _
(let ((escripts
--
2.17.1
Christopher Baines wrote 7 years ago
[PATCH 2/2] gnu: elixir: Enable more tests and remove patch.
(address . 31678@debbugs.gnu.org)
20180601135106.32680-2-mail@cbaines.net
Previously, due to issues in the erlang package, many tests would fail, and
the package would also nondeterministically fail to build. This is now
fixed (by patching occurances of /bin/sh in the erlang package), so all the
tests can be run.

* gnu/packages/elixir.scm (elixir)[source]: Remove patches. The patch is no
longer necessary, as all the tests now pass.
[arguments]: Remove the fix-or-disable-tests phase, all the tests now
pass. Add a new set-home phase to set the HOME environment variable prior to
running the tests, as that was previously done at the start of the
fix-or-disable-tests phase.
* gnu/packages/patches/elixir-disable-failing-tests.patch: Delete this file,
as it is now unused.
* gnu/local.mk: Remove now deleted patch.
---
gnu/local.mk | 1 -
gnu/packages/elixir.scm | 36 +--
.../elixir-disable-failing-tests.patch | 284 ------------------
3 files changed, 6 insertions(+), 315 deletions(-)
delete mode 100644 gnu/packages/patches/elixir-disable-failing-tests.patch

Toggle diff (174 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index db04ee0cd..1a6ffecc0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -637,7 +637,6 @@ dist_patch_DATA = \
%D%/packages/patches/dvd+rw-tools-add-include.patch \
%D%/packages/patches/eigen-arm-neon-fixes.patch \
%D%/packages/patches/elfutils-tests-ptrace.patch \
- %D%/packages/patches/elixir-disable-failing-tests.patch \
%D%/packages/patches/einstein-build.patch \
%D%/packages/patches/emacs-browse-at-remote-cgit-gnu.patch \
%D%/packages/patches/emacs-exec-path.patch \
diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm
index ceabc2a6c..ed6bd0023 100644
--- a/gnu/packages/elixir.scm
+++ b/gnu/packages/elixir.scm
@@ -40,15 +40,7 @@
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0acnxfwvkx1m1d0h5z051mz95n35zm468hcvc3wpmn17c15h5ihg"))
- ;; FIXME: 27 tests (out of 4K) had to be disabled as
- ;; they fail in the build environment. Common failures
- ;; are:
- ;; - Mix.Shell.cmd() fails with error 130
- ;; - The git_repo fixture cannot be found
- ;; - Communication with spawned processes fails with EPIPE
- ;; - Failure to copy files
- (patches (search-patches "elixir-disable-failing-tests.patch"))))
+ "0acnxfwvkx1m1d0h5z051mz95n35zm468hcvc3wpmn17c15h5ihg"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
@@ -70,27 +62,6 @@
(("#!/usr/bin/env elixir")
(string-append "#!" out "/bin/elixir"))))
#t))
- (add-after 'unpack 'fix-or-disable-tests
- (lambda* (#:key inputs #:allow-other-keys)
- ;; Some tests require access to a home directory.
- (setenv "HOME" "/tmp")
-
- ;; FIXME: These tests fail because the "git_repo" fixture does
- ;; not exist or cannot be found.
- (delete-file "lib/mix/test/mix/tasks/deps.git_test.exs")
-
- ;; FIXME: Mix.Shell.cmd() always fails with error code 130.
- (delete-file "lib/mix/test/mix/shell_test.exs")
-
- ;; FIXME:
- ;; disabled failing impure tests to make it build again.
- ;; related discussion: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=28034#14
- (delete-file "lib/elixir/test/elixir/kernel/cli_test.exs")
- (delete-file "lib/elixir/test/elixir/kernel/dialyzer_test.exs")
- (delete-file "lib/iex/test/iex/helpers_test.exs")
- (delete-file "lib/ex_unit/test/ex_unit/capture_io_test.exs")
-
- #t))
(add-before 'build 'make-current
;; The Elixir compiler checks whether or not to compile files by
;; inspecting their timestamps. When the timestamp is equal to the
@@ -102,6 +73,11 @@
(utime file recent recent 0 0)))
(find-files "." ".*"))
#t))
+ (add-before 'check 'set-home
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Some tests require access to a home directory.
+ (setenv "HOME" "/tmp")
+ #t))
(delete 'configure))))
(inputs
`(("erlang" ,erlang)
diff --git a/gnu/packages/patches/elixir-disable-failing-tests.patch b/gnu/packages/patches/elixir-disable-failing-tests.patch
deleted file mode 100644
index 547598b29..000000000
--- a/gnu/packages/patches/elixir-disable-failing-tests.patch
+++ /dev/null
@@ -1,284 +0,0 @@
-Most of these tests fail for unknown reasons when run in the chroot
-environment of a Guix build process.
-
-Common failures are:
-
- * Mix.Shell.cmd() fails with error 130
- * The git_repo fixture cannot be found
- * Communication with spawned processes fails with EPIPE
- * Failure to copy files
-
-
-diff --git a/lib/elixir/test/elixir/kernel/cli_test.exs b/lib/elixir/test/elixir/kernel/cli_test.exs
-index 3ffd56c..1232d19 100644
---- a/lib/elixir/test/elixir/kernel/cli_test.exs
-+++ b/lib/elixir/test/elixir/kernel/cli_test.exs
-@@ -39,6 +39,7 @@ end
- defmodule Kernel.CLI.OptionParsingTest do
- use ExUnit.Case, async: true
-
-+ @tag :skip
- test "properly parses paths" do
- root = fixture_path("../../..") |> to_charlist
- list = elixir('-pa "#{root}/*" -pz "#{root}/lib/*" -e "IO.inspect(:code.get_path, limit: :infinity)"')
-@@ -57,6 +58,7 @@ end
- defmodule Kernel.CLI.AtExitTest do
- use ExUnit.Case, async: true
-
-+ @tag :skip
- test "invokes at_exit callbacks" do
- assert elixir(fixture_path("at_exit.exs") |> to_charlist) ==
- 'goodbye cruel world with status 1\n'
-@@ -66,6 +68,7 @@ end
- defmodule Kernel.CLI.ErrorTest do
- use ExUnit.Case, async: true
-
-+ @tag :skip
- test "properly format errors" do
- assert :string.str('** (throw) 1', elixir('-e "throw 1"')) == 0
- assert :string.str('** (ErlangError) erlang error: 1', elixir('-e "error 1"')) == 0
-@@ -86,6 +89,7 @@ defmodule Kernel.CLI.CompileTest do
- {:ok, [tmp_dir_path: tmp_dir_path, beam_file_path: beam_file_path, fixture: fixture]}
- end
-
-+ @tag :skip
- test "compiles code", context do
- assert elixirc('#{context[:fixture]} -o #{context[:tmp_dir_path]}') == ''
- assert File.regular?(context[:beam_file_path])
-@@ -96,6 +100,7 @@ defmodule Kernel.CLI.CompileTest do
- Code.delete_path context[:tmp_dir_path]
- end
-
-+ @tag :skip
- test "fails on missing patterns", context do
- output = elixirc('#{context[:fixture]} non_existing.ex -o #{context[:tmp_dir_path]}')
- assert :string.str(output, 'non_existing.ex') > 0, "expected non_existing.ex to be mentioned"
-@@ -103,6 +108,7 @@ defmodule Kernel.CLI.CompileTest do
- refute File.exists?(context[:beam_file_path]), "expected the sample to not be compiled"
- end
-
-+ @tag :skip
- test "fails on missing write access to .beam file", context do
- compilation_args = '#{context[:fixture]} -o #{context[:tmp_dir_path]}'
-
-diff --git a/lib/elixir/test/elixir/kernel/dialyzer_test.exs b/lib/elixir/test/elixir/kernel/dialyzer_test.exs
-index 801d852..40fc5bc 100644
---- a/lib/elixir/test/elixir/kernel/dialyzer_test.exs
-+++ b/lib/elixir/test/elixir/kernel/dialyzer_test.exs
-@@ -60,16 +60,19 @@ defmodule Kernel.DialyzerTest do
- assert_dialyze_no_warnings! context
- end
-
-+ @tag :skip
- test "no warnings on rewrites", context do
- copy_beam! context, Dialyzer.Rewrite
- assert_dialyze_no_warnings! context
- end
-
-+ @tag :skip
- test "no warnings on raise", context do
- copy_beam! context, Dialyzer.Raise
- assert_dialyze_no_warnings! context
- end
-
-+ @tag :skip
- test "no warnings on macrocallback", context do
- copy_beam! context, Dialyzer.Macrocallback
- copy_beam! context, Dialyzer.Macrocallback.Impl
-diff --git a/lib/elixir/test/elixir/system_test.exs b/lib/elixir/test/elixir/system_test.exs
-index aafa559..0f9c178 100644
---- a/lib/elixir/test/elixir/system_test.exs
-+++ b/lib/elixir/test/elixir/system_test.exs
-@@ -53,7 +53,8 @@ defmodule SystemTest do
- assert System.endianness in [:little, :big]
- assert System.endianness == System.compiled_endianness
- end
--
-+
-+ @tag :skip
- test "argv/0" do
- list = elixir('-e "IO.inspect System.argv" -- -o opt arg1 arg2 --long-opt 10')
- {args, _} = Code.eval_string list, []
-diff --git a/lib/mix/test/mix/dep_test.exs b/lib/mix/test/mix/dep_test.exs
-index fff3351..d6ed1b3 100644
---- a/lib/mix/test/mix/dep_test.exs
-+++ b/lib/mix/test/mix/dep_test.exs
-@@ -244,6 +244,7 @@ defmodule Mix.DepTest do
- end
- end
-
-+ @tag :skip
- test "remote converger" do
- deps = [{:deps_repo, "0.1.0", path: "custom/deps_repo"},
- {:git_repo, "0.2.0", git: MixTest.Case.fixture_path("git_repo")}]
-@@ -301,6 +302,7 @@ defmodule Mix.DepTest do
- end
- end
-
-+ @tag :skip
- test "remote converger is not invoked if deps diverge" do
- deps = [{:deps_repo, "0.1.0", path: "custom/deps_repo"},
- {:git_repo, "0.2.0", git: MixTest.Case.fixture_path("git_repo"), only: :test}]
-
-diff --git a/lib/mix/test/mix/shell/io_test.exs b/lib/mix/test/mix/shell/io_test.exs
-index 9bfb6b4..d982ef3 100644
---- a/lib/mix/test/mix/shell/io_test.exs
-+++ b/lib/mix/test/mix/shell/io_test.exs
-@@ -29,6 +29,7 @@ defmodule Mix.Shell.IOTest do
- assert capture_io("", fn -> refute yes?("Ok?") end)
- end
-
-+ @tag :skip
- test "runs a given command" do
- assert capture_io("", fn -> assert cmd("echo hello") == 0 end) == "hello\n"
-
-diff --git a/lib/mix/test/mix/shell/quiet_test.exs b/lib/mix/test/mix/shell/quiet_test.exs
-index 626429b..99fab35 100644
---- a/lib/mix/test/mix/shell/quiet_test.exs
-+++ b/lib/mix/test/mix/shell/quiet_test.exs
-@@ -29,6 +29,7 @@ defmodule Mix.Shell.QuietTest do
- assert capture_io("", fn -> refute yes?("Ok?") end)
- end
-
-+ @tag :skip
- test "runs a given command" do
- assert capture_io("", fn -> assert cmd("echo hello") == 0 end) == ""
-
-diff --git a/lib/mix/test/mix/tasks/cmd_test.exs b/lib/mix/test/mix/tasks/cmd_test.exs
-index db4bf06..4d441f7 100644
---- a/lib/mix/test/mix/tasks/cmd_test.exs
-+++ b/lib/mix/test/mix/tasks/cmd_test.exs
-@@ -3,6 +3,7 @@ Code.require_file "../../test_helper.exs", __DIR__
- defmodule Mix.Tasks.CmdTest do
- use MixTest.Case
-
-+ @tag :skip
- test "runs the command for each app" do
- in_fixture "umbrella_dep/deps/umbrella", fn ->
- Mix.Project.in_project(:umbrella, ".", fn _ ->
-diff --git a/lib/mix/test/mix/tasks/deps.tree_test.exs b/lib/mix/test/mix/tasks/deps.tree_test.exs
-index 4f09ff3..c371997 100644
---- a/lib/mix/test/mix/tasks/deps.tree_test.exs
-+++ b/lib/mix/test/mix/tasks/deps.tree_test.exs
-@@ -29,6 +29,7 @@ defmodule Mix.Tasks.Deps.TreeTest do
- end
- end
-
-+ @tag :skip
- test "shows the dependency tree", context do
- Mix.Project.push ConvergedDepsApp
-
-@@ -109,6 +110,7 @@ defmodule Mix.Tasks.Deps.TreeTest do
- end
- end
-
-+ @tag :skip
- test "shows the dependency tree in DOT graph format", context do
- Mix.Project.push ConvergedDepsApp
-
-diff --git a/lib/mix/test/mix/tasks/deps_test.exs b/lib/mix/test/mix/tasks/deps_test.exs
-index b061777..cc45cf8 100644
---- a/lib/mix/test/mix/tasks/deps_test.exs
-+++ b/lib/mix/test/mix/tasks/deps_test.exs
-@@ -96,6 +96,7 @@
- end
- end
-
-+ @tag :skip
- test "prints list of dependencies and their lock status" do
- Mix.Project.push DepsApp
-
-@@ -409,6 +409,7 @@ defmodule Mix.Tasks.DepsTest do
- end
- end
-
-+ @tag :skip
- test "fails on diverged dependencies by requirement" do
- Mix.Project.push ConvergedDepsApp
-
-@@ -440,6 +441,7 @@ defmodule Mix.Tasks.DepsTest do
- end
- end
-
-+ @tag :skip
- test "fails on diverged dependencies even when optional" do
- Mix.Project.push ConvergedDepsApp
-
-@@ -469,6 +471,7 @@ defmodule Mix.Tasks.DepsTest do
- end
- end
-
-+ @tag :skip
- test "works with converged dependencies" do
- Mix.Project.push ConvergedDepsApp
-
-@@ -491,6 +494,7 @@ defmodule Mix.Tasks.DepsTest do
- purge [GitRepo, GitRepo.Mixfile]
- end
-
-+ @tag :skip
- test "works with overridden dependencies" do
- Mix.Project.push OverriddenDepsApp
-
-diff --git a/lib/mix/test/mix/umbrella_test.exs b/lib/mix/test/mix/umbrella_test.exs
-index 69f9428..406668a 100644
---- a/lib/mix/test/mix/umbrella_test.exs
-+++ b/lib/mix/test/mix/umbrella_test.exs
-@@ -98,6 +98,7 @@ defmodule Mix.UmbrellaTest do
- end
- end
-
-+ @tag :skip
- test "loads umbrella child dependencies in all environments" do
- in_fixture "umbrella_dep/deps/umbrella", fn ->
- Mix.Project.in_project :umbrella, ".", fn _ ->
-
-diff --git a/lib/elixir/test/elixir/kernel/dialyzer_test.exs b/lib/elixir/test/elixir/kernel/dialyzer_test.exs
-index 792222c..e90beb9 100644
---- a/lib/elixir/test/elixir/kernel/dialyzer_test.exs
-+++ b/lib/elixir/test/elixir/kernel/dialyzer_test.exs
-@@ -54,6 +54,7 @@ defmodule Kernel.DialyzerTest do
- {:ok, [outdir: dir, dialyzer: dialyzer]}
- end
-
-+ @tag :skip
- test "no warnings on valid remote calls", context do
- copy_beam! context, Dialyzer.RemoteCall
- assert_dialyze_no_warnings! context
-@@ -78,11 +79,13 @@ defmodule Kernel.DialyzerTest do
- assert_dialyze_no_warnings! context
- end
-
-+ @tag :skip
- test "no warnings on struct update", context do
- copy_beam! context, Dialyzer.StructUpdate
- assert_dialyze_no_warnings! context
- end
-
-+ @tag :skip
- test "no warnings on protocol calls with opaque types", context do
- copy_beam! context, Dialyzer.ProtocolOpaque
- copy_beam! context, Dialyzer.ProtocolOpaque.Entity
-@@ -90,6 +93,7 @@ defmodule Kernel.DialyzerTest do
- assert_dialyze_no_warnings! context
- end
-
-+ @tag :skip
- test "no warnings on and/2 and or/2", context do
- copy_beam! context, Dialyzer.BooleanCheck
- assert_dialyze_no_warnings! context
-
-diff --git a/Makefile b/Makefile
-index 2fc4f9a..aef8366 100644
---- a/Makefile
-+++ b/Makefile
-@@ -201,7 +201,7 @@ $(TEST_EBIN)/%.beam: $(TEST_ERL)/%.erl
- $(Q) mkdir -p $(TEST_EBIN)
- $(Q) $(ERLC) -o $(TEST_EBIN) $<
-
--test_elixir: test_stdlib test_ex_unit test_logger test_mix test_eex test_iex
-+test_elixir: test_stdlib test_ex_unit test_logger test_eex test_iex
-
- test_stdlib: compile
- @ echo "==> elixir (exunit)"
-
--
2.17.1
宋文武 wrote 7 years ago
Re: [bug#31678] [PATCH 1/2] gnu: erlang: Patch occurrences of /bin/sh in the source.
(name . Christopher Baines)(address . mail@cbaines.net)(address . 31678@debbugs.gnu.org)
87wov7gsnj.fsf@member.fsf.org
Christopher Baines <mail@cbaines.net> writes:

Toggle quote (40 lines)
> Previously, the elixir package would often fail to build, as running :os:cmd
> would fail, as /bin/sh doesn't exist when building the elixir package. These
> changes fix that issue.
>
> * gnu/packages/erlang.scm (erlang)[arguments]: Add new patch-/bin/sh phase to
> replace hardcoded references to /bin/sh with a file in the store.
> ---
> gnu/packages/erlang.scm | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
> index 0e2b7b5bc..1fce57388 100644
> --- a/gnu/packages/erlang.scm
> +++ b/gnu/packages/erlang.scm
> @@ -127,6 +127,27 @@
> (date->string source-date-epoch
> "{H,Mi,S} = {~H,~M,~S},")))
> #t)))
> + (add-after 'unpack 'patch-/bin/sh
> + (lambda _
> + (substitute* "erts/etc/unix/run_erl.c"
> + (("sh = \"/bin/sh\";")
> + (string-append "sh = \""
> + (which "sh")
> + "\";")))
> +
> + (substitute* "erts/emulator/sys/unix/sys_drivers.c"
> + (("SHELL \"/bin/sh\"")
> + (string-append "SHELL \""
> + (which "sh")
> + "\"")))
> + (substitute* "erts/emulator/sys/unix/erl_child_setup.c"
> + (("SHELL \"/bin/sh\"")
> + (string-append "SHELL \""
> + (which "sh")
> + "\"")))
> +
> + (substitute* "lib/kernel/src/os.erl"
> + (("/bin/sh") (which "sh")))))

It should return ‘#t’, otherwise look good to me!
宋文武 wrote 7 years ago
Re: [bug#31678] [PATCH 2/2] gnu: elixir: Enable more tests and remove patch.
(name . Christopher Baines)(address . mail@cbaines.net)(address . 31678@debbugs.gnu.org)
87tvqbgs6t.fsf@member.fsf.org
Christopher Baines <mail@cbaines.net> writes:

Toggle quote (14 lines)
> Previously, due to issues in the erlang package, many tests would fail, and
> the package would also nondeterministically fail to build. This is now
> fixed (by patching occurances of /bin/sh in the erlang package), so all the
> tests can be run.
>
> * gnu/packages/elixir.scm (elixir)[source]: Remove patches. The patch is no
> longer necessary, as all the tests now pass.
> [arguments]: Remove the fix-or-disable-tests phase, all the tests now
> pass. Add a new set-home phase to set the HOME environment variable prior to
> running the tests, as that was previously done at the start of the
> fix-or-disable-tests phase.
> * gnu/packages/patches/elixir-disable-failing-tests.patch: Delete this file,
> as it is now unused.

I think generally we only need to mention the ‘what’ parts, not the
‘why’ parts (“as …”) in the per-file details, but I guess it’s nothing
wrong to do it :-)

Toggle quote (1 lines)
> * gnu/local.mk: Remove now deleted patch.
* gnu/local.mk (GNU_SYSTEM_MODULES): ...

Toggle quote (6 lines)
> ---
> gnu/local.mk | 1 -
> gnu/packages/elixir.scm | 36 +--
> .../elixir-disable-failing-tests.patch | 284 ------------------
> 3 files changed, 6 insertions(+), 315 deletions(-)

Cool, thank you!
宋文武 wrote 7 years ago
Re: [bug#31678] [PATCH 1/2] gnu: erlang: Patch occurrences of /bin/sh in the source.
(name . Christopher Baines)(address . mail@cbaines.net)(address . 31678@debbugs.gnu.org)
87in6rgp08.fsf@member.fsf.org
iyzsong@member.fsf.org (宋文武) writes:

Toggle quote (44 lines)
> Christopher Baines <mail@cbaines.net> writes:
>
>> Previously, the elixir package would often fail to build, as running :os:cmd
>> would fail, as /bin/sh doesn't exist when building the elixir package. These
>> changes fix that issue.
>>
>> * gnu/packages/erlang.scm (erlang)[arguments]: Add new patch-/bin/sh phase to
>> replace hardcoded references to /bin/sh with a file in the store.
>> ---
>> gnu/packages/erlang.scm | 21 +++++++++++++++++++++
>> 1 file changed, 21 insertions(+)
>>
>> diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
>> index 0e2b7b5bc..1fce57388 100644
>> --- a/gnu/packages/erlang.scm
>> +++ b/gnu/packages/erlang.scm
>> @@ -127,6 +127,27 @@
>> (date->string source-date-epoch
>> "{H,Mi,S} = {~H,~M,~S},")))
>> #t)))
>> + (add-after 'unpack 'patch-/bin/sh
>> + (lambda _
>> + (substitute* "erts/etc/unix/run_erl.c"
>> + (("sh = \"/bin/sh\";")
>> + (string-append "sh = \""
>> + (which "sh")
>> + "\";")))
>> +
>> + (substitute* "erts/emulator/sys/unix/sys_drivers.c"
>> + (("SHELL \"/bin/sh\"")
>> + (string-append "SHELL \""
>> + (which "sh")
>> + "\"")))
>> + (substitute* "erts/emulator/sys/unix/erl_child_setup.c"
>> + (("SHELL \"/bin/sh\"")
>> + (string-append "SHELL \""
>> + (which "sh")
>> + "\"")))
>> +
>> + (substitute* "lib/kernel/src/os.erl"
>> + (("/bin/sh") (which "sh")))))
>
> It should return ‘#t’, otherwise look good to me!

Oh, ‘substitute*’ does return ‘#t’ itself, never mind :-)
Christopher Baines wrote 7 years ago
Re: [bug#31678] [PATCH 2/2] gnu: elixir: Enable more tests and remove patch.
(name . 宋文武)(address . iyzsong@member.fsf.org)(address . 31678-done@debbugs.gnu.org)
87y3fk334y.fsf@cbaines.net
宋文武 <iyzsong@member.fsf.org> writes:

Toggle quote (20 lines)
> Christopher Baines <mail@cbaines.net> writes:
>
>> Previously, due to issues in the erlang package, many tests would fail, and
>> the package would also nondeterministically fail to build. This is now
>> fixed (by patching occurances of /bin/sh in the erlang package), so all the
>> tests can be run.
>>
>> * gnu/packages/elixir.scm (elixir)[source]: Remove patches. The patch is no
>> longer necessary, as all the tests now pass.
>> [arguments]: Remove the fix-or-disable-tests phase, all the tests now
>> pass. Add a new set-home phase to set the HOME environment variable prior to
>> running the tests, as that was previously done at the start of the
>> fix-or-disable-tests phase.
>> * gnu/packages/patches/elixir-disable-failing-tests.patch: Delete this file,
>> as it is now unused.
>
> I think generally we only need to mention the ‘what’ parts, not the
> ‘why’ parts (“as …”) in the per-file details, but I guess it’s nothing
> wrong to do it :-)

I've pushed this now, thanks for taking a look :) I tweaked the
changelog to not repeat the why parts.

Toggle quote (3 lines)
>> * gnu/local.mk: Remove now deleted patch.
> * gnu/local.mk (GNU_SYSTEM_MODULES): ...

Missed this bit, only just spotted what you were suggesting, sorry about
that.

Toggle quote (7 lines)
>> ---
>> gnu/local.mk | 1 -
>> gnu/packages/elixir.scm | 36 +--
>> .../elixir-disable-failing-tests.patch | 284 ------------------
>> 3 files changed, 6 insertions(+), 315 deletions(-)
>
> Cool, thank you!
-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEEPonu50WOcg2XVOCyXiijOwuE9XcFAlsfbl1fFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcACgkQXiijOwuE
9Xeqzw/9HOLZY7FAnvRIcNZiUovzKAFonpwWwdk0dohA4A1blIe+MtLZtWxfm8rK
WNDhEZS9fKNVKyr+opMbzwK8fJRc0Xvyd9/2UvS8bm2Vg2zF7f3IrND4riS+82b9
h3CXSqsixtLLv9wO3e27Mfc1lHFVIlR13/aL2Mvx69h3bcUHGxJdWNRgmXvlqlH0
lKvMklYlTTjpBk04fGLV7b8tCLC9W22kf1l5SAvkIyxbpJ8PpPxxOmy4ESq9XFmi
ZZKKPHxMIwUyp+O/fSL4PizY67V5JpeoEJcPbOntEFXiEsRs0ucavtozYx6vdVMc
P6gcAYSObmcGaKaeO78lsDQATvYP3kfes3t31A3kIcffkinOKjylWCAbnyOzW75f
lKp2I5W9vJUS7AgxFXYHCD9WCDoZxLbJgFsUs2drXY0zBQb8iyzCE9bPJ5J+YsEp
f2FedmxNKUAbRtbBFKOKXSGxmebr7rxM1j+fVAyV74xLvTMi9UWAf3ouGxzZjP5e
SVmfpUAPTKatCSK3kY1dopMcmbfG96npZ95WPLlrvRAPt9JQpZ/TZDzNFBd1LnCL
V4S07S8mWXuWg2DPYNuec84pCEJ7ADiepC2OF7JuJwNw2LC0gqQcuXl8ghtk+5OB
1qZMt6FZzsFyCjdL3h2LwKCNK7F3DL6tUzkbT+h6avnXKxTZu08=
=l2Ft
-----END PGP SIGNATURE-----

Closed
Christopher Baines wrote 7 years ago
Re: [bug#31678] [PATCH 1/2] gnu: erlang: Patch occurrences of /bin/sh in the source.
(name . 宋文武)(address . iyzsong@member.fsf.org)(address . 31678@debbugs.gnu.org)
87wov4332s.fsf@cbaines.net
宋文武 <iyzsong@member.fsf.org> writes:

Toggle quote (48 lines)
> iyzsong@member.fsf.org (宋文武) writes:
>
>> Christopher Baines <mail@cbaines.net> writes:
>>
>>> Previously, the elixir package would often fail to build, as running :os:cmd
>>> would fail, as /bin/sh doesn't exist when building the elixir package. These
>>> changes fix that issue.
>>>
>>> * gnu/packages/erlang.scm (erlang)[arguments]: Add new patch-/bin/sh phase to
>>> replace hardcoded references to /bin/sh with a file in the store.
>>> ---
>>> gnu/packages/erlang.scm | 21 +++++++++++++++++++++
>>> 1 file changed, 21 insertions(+)
>>>
>>> diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
>>> index 0e2b7b5bc..1fce57388 100644
>>> --- a/gnu/packages/erlang.scm
>>> +++ b/gnu/packages/erlang.scm
>>> @@ -127,6 +127,27 @@
>>> (date->string source-date-epoch
>>> "{H,Mi,S} = {~H,~M,~S},")))
>>> #t)))
>>> + (add-after 'unpack 'patch-/bin/sh
>>> + (lambda _
>>> + (substitute* "erts/etc/unix/run_erl.c"
>>> + (("sh = \"/bin/sh\";")
>>> + (string-append "sh = \""
>>> + (which "sh")
>>> + "\";")))
>>> +
>>> + (substitute* "erts/emulator/sys/unix/sys_drivers.c"
>>> + (("SHELL \"/bin/sh\"")
>>> + (string-append "SHELL \""
>>> + (which "sh")
>>> + "\"")))
>>> + (substitute* "erts/emulator/sys/unix/erl_child_setup.c"
>>> + (("SHELL \"/bin/sh\"")
>>> + (string-append "SHELL \""
>>> + (which "sh")
>>> + "\"")))
>>> +
>>> + (substitute* "lib/kernel/src/os.erl"
>>> + (("/bin/sh") (which "sh")))))
>>
>> It should return ‘#t’, otherwise look good to me!
>
> Oh, ‘substitute*’ does return ‘#t’ itself, never mind :-)

I've added an explicit #t in there anyway, as I couldn't quite work out
under what circumstances substitute* returned #t. The other phase in the
erlang package using substitute* also explicitly returns #t.
-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEEPonu50WOcg2XVOCyXiijOwuE9XcFAlsfbqtfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcACgkQXiijOwuE
9XdDCA/6A+F/VU539BAfoncodK6CgrVuZLwk5y1LvfRF2qtrX4oX8qxcyBo/U1MF
dAPDJnhOseRW6sI1haVv1RdMogwDGpFMmFoVHN8XVw7iGk1sGRRcESQ/beaC+xh1
9ZfWD0kC5iPwAA3kGKVu0wt5C18MvfshFG5ZrrWER0UjD+EPFFPP6zCcO37iS//o
YoNm8h7GtK+uDJmAt/1rj64QGIxI23L81xzhiukDy7DD6YpyNh6rwzp5Gu5Vx6PZ
5wbtxYwTn7L2dRXGF9h54a47q+3dGNjUzSQhvP/ELty27UCAaY3v18wWyiMKbAUH
6T8Vyzx+XA4XOdnOmYxQML7S8s3f9rUPZhGch261F3wUViYmNKwmPgrrYznJdDAG
dHFfQ9BvHi+d2gKxlVJpFeMA3YnvNHuVqJFxFOL+w5cORdQlmvWW5zulLh/kfRxT
tYGUALkI0OccvVq1ErAiMj0zvirkL9wLYdp99r65XJdgjwMwKFj2PxecjOkhHAm/
RUMDHFawjwFlehC+47tdnYKGqg9HB4RGwwTe8hDu/UMgvTy6gBgvx0+wiwT7FdDq
hGLdNBdi2xi4MOYccC5gKOz+y4yIucD2stLBD3qVWJfpFqSKZ+xYZOm/8rhukWQd
ok1/O6bZVZcKPqtbB++R1KeDni3gT5RY/GtLXBxian+pjjMkCJY=
=3Kc3
-----END PGP SIGNATURE-----

?
Your comment

This issue is archived.

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

To respond to this issue using the mumi CLI, first switch to it
mumi current 31678
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