unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Ricardo Wurmus <rekado@elephly.net>
To: Pierre Neidhardt <mail@ambrevar.xyz>
Cc: guix-devel <guix-devel@gnu.org>, guix-blog@gnu.org
Subject: Re: Blog: Guix packaging tutorial
Date: Thu, 13 Sep 2018 13:53:16 +0200	[thread overview]
Message-ID: <8736udk40j.fsf@elephly.net> (raw)
In-Reply-To: <87in397jsd.fsf@ambrevar.xyz>


Hi Pierre,

> I'd like to post a blog article which would serve as a packaging
> tutorial.

This is an excellent idea!

> --8<---------------cut here---------------start------------->8---
> 0. Introduction
> The perks of Guix, what it means to have a full-fledged programming
> language at hand for package management (e.g. inheritance, en-masse
> modifications).
>
> 1. General
> Go through the various fields of the `package` record.
> GUIX_PACKAGE_PATH, `guix build` and `guix package`.

I have mixed feelings about recommending GUIX_PACKAGE_PATH to new
contributors.  I think that generally it is better to guide them to
working on a git checkout directly, because moving packages from a
separate GUIX_PACKAGE_PATH module to Guix proper isn’t frictionless.

> Where to read about the build systems: Guix source code.

The manual is probably a better place to read about the build systems
(section 4.2 Build systems).

> 2. Trivial build system
> Provide a complete example.

I would skip the trivial build system because it is rather complicated
and may scare readers off.

> 3. GNU build system
> - Provide a complete, argument-free example.
> - Provide a complete example with arguments such as extra configure/make
> flags, some substitution, a snippet, etc.

Sounds good!

> 4. Conclusion
> Further reading, more build systems, tips & tricks.
> Maybe mention a few complex package declarations

Maybe also mention the recursive importers to automate a large part of
the work for packages from Pypi, CRAN, Bioconductor, etc.

> I'm mostly wondering whether the GNU build system should be introduced
> before the trivial build system: it's simpler and would let the user
> have a first package ready within minutes with fewer lines of code to
> understand; conversely, it also means that we would first take some
> black-box systems for granted ("What the hell happens under the hood?",
> might some readers wonder) which would only be explained later.

In my opinion, the power of abstraction over conventional build systems
is very impressive.  Instead of having to write a shell snippet that
does “./configure --prefix=/foo && make && make install” you can lean
back and use “gnu-build-system” instead.

From there it’s easy to talk about packages that *don’t* use
conventional build systems or that otherwise deviate from conventions,
which is one reason for using modify-phases.

Thanks for your initiative!

--
Ricardo

  parent reply	other threads:[~2018-09-13 11:53 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-13 10:50 Blog: Guix packaging tutorial Pierre Neidhardt
2018-09-13 11:16 ` Pjotr Prins
2018-09-13 11:53 ` Ricardo Wurmus [this message]
2018-09-13 12:04   ` Pjotr Prins
2018-09-13 19:11 ` Andreas Enge
2018-09-14 11:07   ` Pierre Neidhardt
2018-09-14 11:33     ` Pjotr Prins
2018-09-24 17:00       ` Pierre Neidhardt
2018-09-24 17:37         ` Pierre Neidhardt
2018-09-27 13:43           ` Ludovic Courtès
2018-09-27 17:34             ` Pierre Neidhardt
2018-09-29 16:28               ` Ludovic Courtès
2018-09-29 21:18           ` Ricardo Wurmus
2018-09-30 19:01             ` Pierre Neidhardt
2018-09-30 19:44               ` Ludovic Courtès
2018-09-30 21:14                 ` Pierre Neidhardt
2018-10-02 12:12                   ` Ludovic Courtès
2018-10-02 16:02                     ` Pierre Neidhardt
2018-10-02 19:46                       ` Ricardo Wurmus
2018-10-03  8:10                         ` Pierre Neidhardt
2018-10-03 18:16                           ` Pierre Neidhardt
2018-10-08 12:20                             ` Ludovic Courtès
2018-10-08 15:18                             ` Ricardo Wurmus
2018-10-08 18:41                               ` Pierre Neidhardt
2018-10-08 19:06                                 ` Pierre Neidhardt
2018-10-08 19:59                                 ` Ricardo Wurmus
2018-10-08 22:09                                   ` Pierre Neidhardt
2018-10-08 22:33                                     ` Pierre Neidhardt
2018-10-08 23:45                                       ` Pierre Neidhardt
2018-10-10 11:56                                         ` Ludovic Courtès
2018-10-10 13:20                                           ` George Clemmer
2018-10-10 13:31                                             ` Pierre Neidhardt
2018-10-10 14:13                                               ` Ricardo Wurmus
2018-10-10 14:00                                         ` Guix packaging tutorial is on-line! Ludovic Courtès
2018-10-10 14:12                                           ` Pierre Neidhardt
2018-10-10 15:07                                             ` Ricardo Wurmus
2018-10-10 16:09                                               ` Pierre Neidhardt
2018-10-11 13:41                                             ` Ludovic Courtès
2018-10-11 16:34                                               ` Pierre Neidhardt
2018-10-11 16:51                                                 ` Pierre Neidhardt
2018-10-15 12:02                                                   ` Ludovic Courtès
2018-10-15 12:39                                                     ` Pierre Neidhardt
2018-10-20 19:58                                         ` Blog: Guix packaging tutorial Divan
2018-10-21 10:30                                           ` Pierre Neidhardt
2018-10-21 11:21                                             ` Pierre Neidhardt
2018-10-22 20:40                                               ` Divan Santana
2018-10-22 21:11                                                 ` Pierre Neidhardt
2018-09-26 10:20         ` Ludovic Courtès
2018-09-26 10:28           ` Pierre Neidhardt
2018-09-27 11:56             ` Ludovic Courtès
  -- strict thread matches above, loose matches on Subject: below --
2018-10-08 22:54 Benjamin Slade
2018-10-08 23:05 ` Pierre Neidhardt
2018-10-09  0:04   ` Benjamin Slade
2018-10-10  9:02     ` Ludovic Courtès
2018-10-11  1:38       ` Benjamin Slade
2018-10-11  9:37         ` Gábor Boskovits
2018-10-11 13:39         ` Ludovic Courtès
2018-10-12  1:05           ` Benjamin Slade

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8736udk40j.fsf@elephly.net \
    --to=rekado@elephly.net \
    --cc=guix-blog@gnu.org \
    --cc=guix-devel@gnu.org \
    --cc=mail@ambrevar.xyz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).