#!/usr/bin/env racket
;; This file is part of gentoo-racket-overlay.
;; gentoo-racket-overlay is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 2 of the License, or
;; (at your option) any later version.
;; gentoo-racket-overlay is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with gentoo-racket-overlay. If not, see .
;; Original author: Maciej Barć
;; Copyright (c) 2021-2023, Maciej Barć
;; Licensed under the GNU GPL v2 License
#lang scribble/manual
@title[#:tag "gentoo-racket-overlay-install"]{Racket Package Install Process}
@section{Helpers}
We used to use 2 helper packages:
@link["https://gitlab.com/gentoo-racket/racket-compiler"
"racket-compiler"] and
@link["https://gitlab.com/gentoo-racket/racket-where"
"racket-where"].
But now we only use racket-where.
@link["https://gitlab.com/gentoo-racket/racket-where"
"Racket-Where"]
is used to in "racket_pkg_prerm" racket.eclass function to check
if a package is registered in the Racket package database files.
This is primarily helpful if we update Racket - we get a new package database,
but the package pulled for rebuild is still installed and will try to execute
it's "pkg_prerm". If it is not in the pkg database the removal will
of course fail. Thus we use "racket-where" to prevent that failure by
not removing that package when we don't need to.
@section{First merge}
Upon 1st merge of a "dev-racket" packages new version of "racket"
and "racket-where" will be pulled.
Packages will be built in this order:
"dev-scheme/racket",
"sys-apps/racket-where"
and lastly your wanted "dev-racket" package.
This is because "racket-where" depedns on "racket",
and "dev-racket" packages all depend
on "racket-where" (@envvar{BDEPEND}).
@section{Just in case}
Just in case a package is somehow broken you can re-run it's setup
(from the root account) with:
@commandline{raco setup --all-users --pkgs PKG}