Reflex Tutorial Upgrade (Part 2)
I have tried to update the Reflex
FRP calculator tutorial to use the latest
release of Obelisk
twice. Both attempts failed, and I have not been able to see the actual
error due to the ob --verbose
issue. See the Reflex Package
Versions and Reflex Tutorial
Upgrade blog entries for details. I am not sure if the Nix cache is being used, however, and the
build may succeed if cache is used. Now that I have a working
Multi-User Nix
Installation, I will try again!
I configured /etc/nix/nix.conf as described in Installing
Obelisk. With multi-user Nix, this file already exists, so I am more
confident that it is actually used. I then ran the following command, as
before.
$ nix-env -f https://github.com/obsidiansystems/obelisk/archive/master.tar.gz -iA commandThis time it was building GHC!?!?
...
Configure completed successfully.
   Building GHC version  : 8.6.5
          Git commit id  : 92b6a0237e0195cee4773de4b237951addd659d9
...It did not build GHC when using single-user mode, and I confirmed
that there have not been any new commits to the master
branch of the obelisk
repository. Letting GHC build, I tried to think of what I could
possibly do to resolve the issue. I eventually had an idea, aborted the
build, and ran nix-collect-garbage -d to clean the Nix
store.
In the Installing
Obelisk instructions, it instructs macOS users to restart the Nix
daemon using launchctl. There are no corresponding
instructions for Linux users, but perhaps the daemon needs to be
restarted on Linux as well…
$ sudo systemctl restart nix-daemon.service
$ sudo systemctl status nix-daemon.service
● nix-daemon.service - Nix Daemon
     Loaded: loaded (/etc/systemd/system/nix-daemon.service; linked; vendor preset: disabled)
     Active: active (running) since Wed 2022-04-06 10:13:09 JST; 33s ago
TriggeredBy: ● nix-daemon.socket
   Main PID: 375375 (nix-daemon)
      Tasks: 17 (limit: 14113)
     Memory: 4.3M
        CPU: 14ms
     CGroup: /system.slice/nix-daemon.service
             └─375375 nix-daemon --daemon
 4月 06 10:13:09 exponential systemd[1]: Started Nix Daemon.I ran the command again, and it installs without building GHC. The restart of the Nix daemon is required to take into account the new cache settings.
$ nix-env -f https://github.com/obsidiansystems/obelisk/archive/master.tar.gz -iA commandDuring installation, I noticed that many paths are copied from https://nixcache.reflex-frp.org. Checking my single-user
install, I confirmed that it also copies paths from this source,
indicating that /etc/nix/nix.conf is being used in that
case as well. (I did not think of checking this before because
ob run shows no output. I checked now by removing Obelisk
and reinstalling it.)
I created a fresh clone of the tutorial
repository, used ob thunk update to update
.obelisk/impl, and then ran ob run.
$ cd /tmp
$ git clone https://github.com/obsidiansystems/calculator-tutorial.git
$ cd calculator-tutorial
$ ob --no-handoff thunk update .obelisk/impl --branch master
$ ob runThe build failed with the same error message after just over forty
minutes. (The system I ran the test on is faster than my daily driver.)
I confirmed that the ob --verbose
issue is present on this system, so I am still unable to see the
actual error. Whatever it is, it is not resolved by using cache.