Subject: Re: [bug#47435] gnu: mail: Make the sendmail package actually output its binary

From: Léo Le Bouter <[email-masked]>
Date: Sat, 27 Mar 2021 19:07:52 +0100

On Sat, 2021-03-27 at 18:34 +0100, Rovanion Luckey wrote:
> This is an attempt at getting the sendmail package working. Currently
> installing the package does not make the `sendmail` executable appear
> in `$PATH`:
> 
> 
> > └$ guix environment --ad-hoc sendmail
> > └$ sendmail
> > bash: sendmail: command not found
> 
> This patch fixes that.
> 

Thanks a lot for working on this!

It seems the commit message does not follow the ChangeLog guidelines as
used by GNU Guix, I suggest using this:

> gnu: sendmail: Fix output's directory structure.
>     
> * gnu/packages/mail.scm (sendmail)[arguments]<#:phases>: Properly
> specify output directories in replacement 'configure and 'pre-
> install.

Look at the commit history of GNU Guix for more examples and
inspiration.

> Though there are questions that still need to be resolved. While this
> patch does fix what it sets out to fix, the solutions aren't
> neccicerily correct. It configures a "helpfile" to be put in
> "$out/usr/share" and the same goes for its "statistics" file. I have
> no idea what these does and where they should go in reality. If
> someone happens to know, please do tell.

If we look at the output of these commands:

With your patch applied:

$ tree $(./pre-inst-env guix build sendmail)
/gnu/store/ygz55p6g8z4kjbp6418w385jzy53324h-sendmail-8.15.2
├── bin
│   ├── hoststat -> /gnu/store/ygz55p6g8z4kjbp6418w385jzy53324h-
sendmail-8.15.2/bin/sendmail
│   ├── mailq -> /gnu/store/ygz55p6g8z4kjbp6418w385jzy53324h-sendmail-
8.15.2/bin/sendmail
│   ├── newaliases -> /gnu/store/ygz55p6g8z4kjbp6418w385jzy53324h-
sendmail-8.15.2/bin/sendmail
│   ├── purgestat -> /gnu/store/ygz55p6g8z4kjbp6418w385jzy53324h-
sendmail-8.15.2/bin/sendmail
│   ├── sendmail
│   └── vacation
├── etc
│   └── mail
│       ├── sendmail.cf
│       └── submit.cf
├── libexec
├── sbin
│   ├── editmap
│   ├── mailstats
│   ├── makemap
│   └── praliases
└── share
    ├── doc
    │   └── sendmail-8.15.2
    │       └── LICENSE
    ├── helpfile
    └── statistics

7 directories, 16 files

Without your patch applied:

$ tree $(./pre-inst-env guix build sendmail)
/gnu/store/yn6dlixw6cnbmgjggk640vbv8hidfhi7-sendmail-8.15.2
├── etc
│   └── mail
│       ├── helpfile
│       ├── sendmail.cf
│       ├── statistics
│       └── submit.cf
├── share
│   └── doc
│       └── sendmail-8.15.2
│           └── LICENSE
└── usr
    ├── bin
    │   ├── hoststat -> /usr/sbin/sendmail
    │   ├── mailq -> /usr/sbin/sendmail
    │   ├── newaliases -> /usr/sbin/sendmail
    │   ├── purgestat -> /usr/sbin/sendmail
    │   └── vacation
    └── sbin
        ├── editmap
        ├── mailstats
        ├── makemap
        ├── praliases
        ├── sendmail
        └── smrsh

8 directories, 16 files

We can see helpfile and statistics file go into etc/mail, then sendmail
goes into sbin, smrsh is missing in sbin.

Léo