Subject: Circular dependency in gnu/services: mcron -> base -> admin -> mcron
From: Jack Hill <[email-masked]>
To: [email-masked]
Date: Fri, 14 Jun 2019 11:49:16 -0400 (EDT)
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi Guix,

As discussed on IRC with Ludo’ and Ricardo, 
4252dace19945f56192477e8cb07973c20a526ba introduced a circular dependency 
among gnu/services modules, by adding a dependency between from base -> 
admin, resulting in the full dependency chain:

  mcron -> base -> admin -> mcron

I ran into this when building a channel. The error reported by guix pull 
was:

```
(repl-version 0 0)
(exception misc-error (value #f) (value "Unbound variable: ~s") (value (mcron-service-type)) (value #f))
```

Ludo’ determined the full error was:

```
gnu/services/admin.scm:161:21: Unbound variable: mcron-service-type
```

by running the repl directly:

```
echo '(primitive-load "/gnu/store/vf892np8mnh2zx9dppcv9k25xk648n2d-inferior-script.scm")' \
| "/gnu/store/j7vxgnaqwimrzsnd8zhq9x1jdp7afl0s-guix-ca45da9fc/bin/guix" "repl"
```

Options for solving this problem include moving the guix-publish service 
into another module. However, this would break the API of (gnu service base),
so we should be careful when doing that.

It doesn't look like guix-publish is used elsewhere in the Guix code 
proper currently.

For now, we might want to revert 4252dace19945f56192477e8cb07973c20a526ba.

Best,
Jack