Posts tagged ebuild
Patching
The file lit.site.cfg
has to be inspected for any incorrect calls to executables. For example see src_prepare
function form dev-lang/boogie.
Eclasses
Because we will need to specify how many threads should lit
run we need to inherit multiprocessing
to detect how many parallel jobs the portage config sets.
Dependencies
Ensure that dev-python/lit
is in BDEPEND
, but also additional packages may be needed, for example dev-python/OutputCheck
.
|
BDEPEND="
${RDEPEND}
test? (
dev-python/lit
dev-python/OutputCheck
)
"
|
Bad tests
To deal with bad test you can simply remove the files causing the failures.
|
local -a bad_tests=(
civl/inductive-sequentialization/BroadcastConsensus.bpl
civl/inductive-sequentialization/PingPong.bpl
livevars/bla1.bpl
)
local bad_test
for bad_test in ${bad_tests[@]} ; do
rm "${S}"/Test/${bad_test} || die
done
|
Test phase
--threads $(makeopts_jobs)
specifies how many parallel tests to run.
--verbose
option will show output of failed tests.
Last lit
argument specifies where lit
should look for lit.site.cfg
and tests.
|
src_test() {
lit --threads $(makeopts_jobs) --verbose "${S}"/Test || die
}
|
Portage
Configure the following for Portage.
Emerge
Emerge the following packages:
app-emacs/company-ebuild
dev-util/pkgcheck
Company-Ebuild should pull in app-emacs/ebuild-mode
, if that does not happen, then report a bug ;-D
Standard
Add the following to your user's Emacs initialization file. The initialization file is either ~/.emacs.d/init.el
or ~/.config/emacs/init.el
for newer versions of GNU Emacs.
|
(require 'ebuild-mode)
(require 'company-ebuild)
(require 'flycheck)
(require 'flycheck-pkgcheck)
(add-hook 'ebuild-mode-hook 'company-ebuild-setup)
(add-hook 'ebuild-mode-hook 'flycheck-mode)
(add-hook 'ebuild-mode-hook 'flycheck-pkgcheck-setup)
|
Use-Package
We can also configure our environment using a use-package
macro that simplifies the setup a little bit.
To use the below configuration the app-emacs/use-package
package will have to be installed.
|
(require 'use-package)
(use-package ebuild-mode
:defer t
:mode "\\.\\(ebuild\\|eclass\\)\\'"
:hook
((ebuild-mode . company-ebuild-setup)
(ebuild-mode . flycheck-mode)
(ebuild-mode . flycheck-pkgcheck-setup)))
|
The :defer t
and :mode "..."
enable deferred loading which theoretically speeds up GNU Emacs initialization time at the cost of running the whole use-package
block of ebuild-mode
configuration when the :mode
condition is met.
Prototype
Recently while browsing the Alpine git repo I noticed they have a function called snapshot
, see: https://git.alpinelinux.org/aports/tree/testing/dart/APKBUILD#n45 I am not 100% sure about how that works but a wild guess is that the developers can run that function to fetch the sources and maybe later upload them to the Alpine repo or some sort of (cloud?) storage.
In Portage there exists a pkg_config
function used to run miscellaneous configuration for packages. The only major difference between src_snapshot
and that would of course be that users would never run snapshot
.
Sandbox
Probably only the network sandbox
would have to be lifted out… to fetch the sources of course.
But also a few (at least one?) special directories and variables would be useful.
News
Repository
With this commit first GNU Emacs integration was merged into the pkgcheck repository.
History
Thanks
Huge thanks to Sam James and Arthur Zamarin for support and interest in getting this feature done.
Installation
Unmasking
The Flycheck integration is unreleased as of now, this will (hopefully) change in the future, but for now You need live versions of snakeoil
, pkgcore
and pkgcheck
.
File: /etc/portage/package.accept_keywords/pkgcore.conf
|
dev-python/snakeoil **
sys-apps/pkgcore **
dev-util/pkgcheck **
|
Also You will need to unmask app-emacs/flycheck
and its dependencies.
File: /etc/portage/package.accept_keywords/emacs.conf
|
app-emacs/epl
app-emacs/pkg-info
app-emacs/flycheck
|
Emerging
Install pkgcheck with the emacs
USE flag enabled.
File: /etc/portage/package.use/pkgcore.conf
Afterwards run:
|
emerge -1av dev-python/snakeoil sys-apps/pkgcore dev-util/pkgcheck
emerge -av --noreplace dev-util/pkgcheck
|
Configuration
Following is what I would suggest to put into your Emacs config file:
|
(require 'ebuild-mode)
(require 'flycheck)
(require 'flycheck-pkgcheck)
(setq flycheck-pkgcheck-enable t)
(add-hook 'ebuild-mode-hook 'flycheck-mode)
(add-hook 'ebuild-mode-hook 'flycheck-pkgcheck-setup)
|
If You are using use-package
:
|
(use-package flycheck
:ensure nil)
(use-package ebuild-mode
:ensure nil
:hook ((ebuild-mode . flycheck-mode)))
(use-package flycheck-pkgcheck
:ensure nil
:custom ((flycheck-pkgcheck-enable t))
:hook ((ebuild-mode . flycheck-pkgcheck-setup)))
|
The lines with :ensure nil
are there to prevent use-package
from trying to download the particular package from Elpa (because we use system packages for this configuration).