This fixes pyicu (and any other package that uses `icu-config` instead
of the CMake or some other module to get the build flags).
What happened here is the bootstrap disables `patchShebangs` to avoid
propagating the bootstrap tools to the final stdenv (due to `sh` and
`bash` being on the `PATH` from the bootstrap tools). Because of that,
the `#!/bin/sh` line in `icu-config` was not updated, causing it to
invoke the system bash on Darwin. While that is undesirable in its own
right, when the system bash is invoked as `sh`, `echo -n` will print
`-n`, resulting in the breakage see in https://github.com/NixOS/nixpkgs/pull/241951#issuecomment-1627604354.
The fix is to build bash earlier in the bootstrap while making sure it
is picked up over the one in the bootstrap tools. That allows
`patchShebangs` to be enabled during the bootstrap. Any package with
scripts that is included in the final stdenv should now have its
scripts’ shebang lines properly patched.
On high core machines those easily can fail similar to:
matrix-synapse> tests.storage.test_room_search.MessageSearchTest.test_postgres_web_search_for_phrase
matrix-synapse> ===============================================================================
matrix-synapse> [ERROR]
matrix-synapse> Traceback (most recent call last):
matrix-synapse> File "/build/source/tests/unittest.py", line 122, in new
matrix-synapse> return code(orig, *args, **kwargs)
matrix-synapse> File "/build/source/tests/unittest.py", line 216, in setUp
matrix-synapse> return orig()
matrix-synapse> File "/build/source/tests/unittest.py", line 338, in setUp
matrix-synapse> self.hs = self.make_homeserver(self.reactor, self.clock)
matrix-synapse> File "/build/source/tests/app/test_openid_listener.py", line 34, in make_homeserver
matrix-synapse> hs = self.setup_test_homeserver(
matrix-synapse> File "/build/source/tests/unittest.py", line 606, in setup_test_homeserver
matrix-synapse> hs = setup_test_homeserver(self.addCleanup, **kwargs)
matrix-synapse> File "/build/source/tests/server.py", line 921, in setup_test_homeserver
matrix-synapse> prepare_database(
matrix-synapse> File "/nix/store/2cc0p5apn2yg2fr5ii9mvb7fcwd74y26-matrix-synapse-1.86.0/lib/python3.10/site-packages/synapse/storage/prepare_database.py", line 155, in prepare_database
matrix-synapse> raise UpgradeDatabaseException(EMPTY_DATABASE_ON_WORKER_ERROR)
matrix-synapse> synapse.storage.prepare_database.UpgradeDatabaseException: Uninitialised database: run the main synapse process to prepare the database schema before starting worker processes.
matrix-synapse>