Note

The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.

Difference between revisions of "Metatools"

From Funtoo
Jump to navigation Jump to search
(redirecting to project page)
Tag: New redirect
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
Metatools ([https://code.funtoo.org/bitbucket/users/drobbins/repos/funtoo-metatools/browse git]) ([https://pypi.org/project/funtoo-metatools/ pypi]) is the framework used by Funtoo Linux
#REDIRECT [[Funtoo:Metatools]]
to create meta-repo and autogenerate ebuilds. It is a foundational tool for Funtoo Linux development.
 
The current version of metatools is '''1.0.0''', released on Jan 30, 2022.
 
== What is an "Autogen"? ==
 
Quite simply, an "autogen" is kind of like an ebuild generator, using the metatools Python framework to dynamically generate ebuilds. A key functionality of an autogen is to allow ebuilds to be generated
to reflect the current version of source code that is available from upstream.
 
== Where can I Find Autogens? ==
 
You can find autogens by looking in the kit-fixups repository ([https://code.funtoo.org/bitbucket/projects/CORE/repos/kit-fixups/browse git]) for any files named:
 
# {{f|autogen.py}}
# {{f|autogen.yaml}}
 
Both YAML and Python autogens use our metatools framework -- the YAML variants are higher-level autogens that feed metatools "generators", kind of like a pipeline.
As of Jan 29, 2022, all Funtoo Linux source overlays -- kit-fixups as well as others -- support the creation of autogens. What this means that if you see something in Funtoo, it's possible to write an autogen for it to ensure that it is always kept up-to-date.
 
== Installation ==
 
To install metatools, emerge it:
 
{{console|body=
# ##i##emerge metatools
}}
 
Once of the dependencies of metatools is [[MongoDB]]. Before using metatools, ensure {{c|mongodb}} is started and running:
 
{{console|body=
# ##i##rc-update add mongodb default
# ##i##rc
}}
 
== Autogen Setup ==
 
The command in metatools that performs autogeneration locally is called {{c|doit}}. Prior to using this command locally, it's recommended to create an {{f|~/.autogen}} file under your user account that
contains a GitHub personal access token. This will allow {{c|doit}} to use it when querying GitHub and will prevent {{c|doit}} from hitting API limits:
 
{{file|name=~/.autogen|body=
authentication:
  api.github.com:
    username: danielrobbins
    password: <insert access token string here>
}}
 
For more information on setting up GitHub personal access tokens, see: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
 
== Autogen Usage ==
 
Funtoo's meta-repo is defined in the kit-fixups repository ([https://code.funtoo.org/bitbucket/projects/CORE/repos/kit-fixups/browse git]), which is the starting point for all autogeneration of ebuilds.
 
To perform your first {{c|doit}} run, enter into the appropriate kit-fixups directory and run the {{c|doit}} command:
 
{{console|body=
$ ##i##cd development/kit-fixups/core-kit/curated
$ ##i##doit
\##g##[INFO 21:02:35]##!g## Fetched https://git-scm.com/download/linux 6042 bytes
\##g##[INFO 21:02:35]##!g## Created: dev-vcs/git/git-2.35.1.ebuild
\##g##[INFO 21:02:35]##!g## Fetched https://api.github.com/repos/hashicorp/vagrant_cloud/tags 9513 bytes
\##g##[INFO 21:02:36]##!g## Created: dev-ruby/vagrant_cloud/vagrant_cloud-2.0.3.ebuild
\##g##[INFO 21:02:36]##!g## Fetched https://api.github.com/repos/distcc/distcc/releases 34549 bytes
\##g##[INFO 21:02:36]##!g## Created: sys-devel/distcc/distcc-3.4.ebuild
\##g##[INFO 21:02:36]##!g## Fetched https://api.github.com/repos/dbrgn/tealdeer/releases 151336 bytes
\##g##[INFO 21:02:36]##!g## Fetched https://api.github.com/repos/tmux/tmux/releases 94211 bytes
\##g##[INFO 21:02:36]##!g## Created: app-misc/tmux/tmux-3.2a.ebuild
\##g##[INFO 21:02:36]##!g## Fetched https://api.github.com/repos/lotabout/skim/releases 225892 bytes
\##g##[INFO 21:02:36]##!g## Fetched https://ftp.debian.org/debian/pool/main/c/ca-certificates/ 7174 bytes
\##g##[INFO 21:02:36]##!g## Created: app-misc/ca-certificates/ca-certificates-20211016.ebuild
\##g##[INFO 21:02:36]##!g## Fetched https://api.github.com/repos/jarun/nnn/releases 564842 bytes
\##g##[INFO 21:02:36]##!g## Fetched https://api.github.com/repos/netwide-assembler/nasm/tags 13895 bytes
\##g##[INFO 21:02:36]##!g## Created: app-misc/nnn/nnn-4.4.ebuild
\##g##[INFO 21:02:36]##!g## Fetched https://api.github.com/repos/doxygen/doxygen/tags?per_page=100 46121 bytes
}}
 
What you are seeing above is output from the {{c|doit}} command, which will:
 
# Find all autogens ({{f|autogen.yaml}} and {{f|autogen.py}} files) in the current directory tree
# Execute them using multiple threads, which in turn will cause {{c|doit}} to:
# Query upstream Web sites and APIs (like GitHub) for current versions of source code, and:
# Fetch all source code artifacts (distfiles) by using an efficient spider engine, and:
# Auto-create ebuilds for these packages, along with Manifests.
 
Funtoo contributors will use the {{c|doit}} command locally to test their autogens and ensure their proper operation before submitting a PR.
 
== Where Can I Learn More about Metatools? ==
 
The best place to learn is to join us in the #dev-help channel on [https://discord.gg/BNUSpUU Discord].
 
There is "in progress" documentation for metatools at our to-be-launched projects site: https://projects.funtoo.org/metatools/docs/install.html
SSL Cert is not yet valid and the documentation is a work in progress. Refer to this wiki page for current setup documentation until the documentation
has caught up with the current release of metatools.
 
[[Category:Official Documentation]]

Latest revision as of 05:45, February 22, 2022

Redirect to: