Difference between revisions of "Package:Ego"

From Funtoo
Jump to: navigation, search
(Added epro show-json and epro get)
 
(14 intermediate revisions by 3 users not shown)
Line 5: Line 5:
 
}}
 
}}
  
{{c|ego}} (aka personality) is master program used to manipulate Funtoo system settings. It is present in base system, and in every stage3. It consist of various modules, which serve for view, change and control a basic system. Below we describe ego's module called <code>epro</code> which, one may guess, is a profile manager.
+
{{c|ego}} is Funtoo's official system personality management tool, designed to eventually replace the venerable {{c|eselect}} from Gentoo Linux. Daniel Robbins created a new meta-tool to replace eselect because eselect has a couple of design issues. It requires extensions to be written as shell scripts, which is a big limitation. With the advent of Funtoo's modular profile system, {{c|eselect profile}} was becoming cumbersome to use, and I needed to make the tool faster and more feature-rich. Ultimately, shell scripts are too slow and too hard to use to implement advanced functionality.
  
=== Usage ===
+
{{c|ego}} is a meta-tool that works similarly to eselect. Typing {{c|ego}} will show a list of available commands. Some of the benefits of ego over eselect are that ego modules can be implemented in any language. In addition, the ego architecture is designed so that the modules are themselves stand-alone commands, which allows you to access these sub-commands using shortcuts. For example, {{c|epro}} is a shortcut for {{c|ego profile}}. Please see the [[Funtoo Profiles]] page for detailed documentation on {{c|ego profile}}.
[[Funtoo 1.0 Profile|Funtoo profiles]] are used to define defaults for Portage specific to your needs. There are five basic profile types: arch, build, subarch, [[Flavors and Mix-ins|flavor, and mix-ins]]:
 
  
;arch: typically <code>x86-32bit</code> or <code>x86-64bit</code>, this defines the processor type and support of your system. This is defined when your stage was built and should not be changed.
+
== Ego Modules ==
;build: defines whether your system is a <code>current</code>, <code>stable</code> or <code>experimental</code> build. <code>current</code> systems will have newer packages unmasked than <code>stable</code> systems. This is defined when your stage is built and is typically not changed.
 
;subarch: Defines optimizations for your CPU. The subarch is set at the time the stage3 is built, but can be changed later to better settings if necessary. Be sure to pick a setting that is compatible with your CPU.
 
;flavor: defines the general type of system, such as <code>server</code> or <code>desktop</code>, and will set default USE flags appropriate for your needs.
 
;mix-ins: define various optional settings that you may be interested in enabling.
 
  
One arch, build and flavor must be set for each Funtoo Linux system, while mix-ins are optional and you can enable more than one if desired.
+
{{TableStart}}
 +
{{3Col|'''type'''|'''sub-command'''|'''description'''}}
 +
{{3Col|profile|{{c|epro}}|Profile management -- see [[Funtoo Profiles]] for usage information}}
 +
{{3Col|doc|{{c|edoc}}|Display wiki documentation}}
 +
{{3Col|query|-|Query information about packages}}
 +
{{3Col|sync|-|Synchronize Portage tree}}
 +
{{TableEnd}}
  
Remember that profiles can often be inherited. For example, the <code>desktop</code> flavor inherits the <code>workstation</code> flavor settings, which in turn inherits the <code>X</code> and <code>audio</code> mix-ins. You can view this by using {{c|epro}}:
+
=== Query module ===
  
{{console|body=
+
{{c|ego query}} module is a tool to display information about packages. Bellow are described the various available commands.
# ##i## epro show
 
  
=== ##g##Enabled Profiles##!g##: ===
+
==== Versions ====
  
        arch: ##c## x86-64bit
+
The {{c|versions}} (shortcut: {{c|v}}) command lists all available versions matching a given atom. For each version, it also shows its slot and repository (along with git branch if any).
      build: ##c## current
 
    subarch: ##c## intel64-haswell
 
      flavor: ##c## desktop
 
    mix-ins: ##c## gnome
 
  
 +
<console>
 +
$##i## ego query versions python
 +
dev-lang/python|    slot|                repo
 +
----------------+---------+---------------------
 +
          ##c##2.7.12##!c##|      ##y##2.7##!y##| ##bl##python-kit##!bl##/##g##3.6-prime
 +
        ##b##* ##c##2.7.13##!c####!b##|        | ##bl##python-kit##!bl##/##g##3.6-prime
 +
----------------+---------+---------------------
 +
          ##c##3.4.5##!c##| ##y##3.4/3.4m##!y##| ##bl##python-kit##!bl##/##g##3.6-prime
 +
          ##c##3.4.6##!c##|        | ##bl##python-kit##!bl##/##g##3.6-prime
 +
----------------+---------+---------------------
 +
        ##b##* ##c##3.5.3##!c####!b##| ##y##3.5/3.5m##!y##| ##bl##python-kit##!bl##/##g##3.6-prime
 +
----------------+---------+---------------------
 +
      ##b##* ##c##3.6.1-r1##!c####!b##| ##y##3.6/3.6m##!y##| ##bl##python-kit##!bl##/##g##3.6-prime
  
=== ##g##All inherited flavors from desktop flavor##!g##: ===
+
$##i## ego query versions '=python-3*'
 +
dev-lang/python|    slot|                repo
 +
----------------+---------+---------------------
 +
          ##c##3.4.5##!c##| ##y##3.4/3.4m##!y##| ##bl##python-kit##!bl##/##g##3.6-prime
 +
          ##c##3.4.6##!c##|        | ##bl##python-kit##!bl##/##g##3.6-prime
 +
----------------+---------+---------------------
 +
        ##b##* ##c##3.5.3##!c####!b##| ##y##3.5/3.5m##!y##| ##bl##python-kit##!bl##/##g##3.6-prime
 +
----------------+---------+---------------------
 +
      ##b##* ##c##3.6.1-r1##!c####!b##| ##y##3.6/3.6m##!y##| ##bl##python-kit##!bl##/##g##3.6-prime
  
                    ##c##workstation (from desktop flavor)
+
$##i## ego query v dev-lang/python:3.5
                            ##c##core (from workstation flavor)
+
dev-lang/python|    slot|                repo
                        ##c##minimal (from core flavor)
+
----------------+---------+---------------------
 +
        ##b##* ##c##3.5.3##!c####!b##| ##y##3.5/3.5m##!y##| ##bl##python-kit##!bl##/##g##3.6-prime
  
=== ##g##All inherited mix-ins from desktop flavor##!g##: ===
+
$##i## ego query v coffee-script
 +
dev-lang/coffee-script| slot|          repo
 +
-----------------------+-----+---------------
 +
              ##c##1.9.3-r1##!c##|    ##y##0##!y##| ##bl##dev-kit##!bl##/##g##master
 +
              ##b##* ##c##1.12.5##!c####!b##|    | ##bl##dev-kit##!bl##/##g##master
  
                              ##c##X##!c## (from workstation flavor)
+
dev-ruby/coffee-script| slot|          repo
                          ##c##audio##!c## (from workstation flavor)
+
-----------------------+-----+---------------
                            ##c##dvd##!c## (from workstation flavor)
+
                  ##c##2.4.1##!c##|    ##y##0##!y##| ##bl##dev-kit##!bl##/##g##master
                          ##c##media##!c## (from workstation flavor)
+
</console>
      ##c##mediadevice-audio-consumer##!c## (from media mix-in)
 
                ##c##mediadevice-base##!c## (from mediadevice-audio-consumer mix-in)
 
      ##c##mediadevice-video-consumer##!c## (from media mix-in)
 
                ##c##mediadevice-base##!c## (from mediadevice-video-consumer mix-in)
 
        ##c##mediaformat-audio-common##!c## (from media mix-in)
 
          ##c##mediaformat-gfx-common##!c## (from media mix-in)
 
        ##c##mediaformat-video-common##!c## (from media mix-in)
 
                  ##c##console-extras##!c## (from workstation flavor)
 
                          ##c##print##!c## (from desktop flavor)
 
}}
 
  
To view available profiles:
 
{{console|body=
 
# ##i## epro list
 
}}
 
  
Enabled profiles will be highlighted in cyan. Directly enabled profiles will be in bold and have an asterisc {{c|*}} appended.
+
Installed versions are in bold and marked with a star.
  
To change the profile arch to x86-64:
+
==== Origin ====
{{console|body=###i## epro arch x86-64bit}}
 
  
To change the build to current:
+
The {{c|origin}} (shortcut: {{c|o}}) command will tell you where a given package comes from and give you the URL to browse the ebuilds. This is mainly a tool for developers designed to figure out where fixes should be applied.
{{console|body=###i## epro build current}}
 
  
To change the subarch to generic_64:
+
<console>
{{console|body=###i## epro subarch generic_64}}
+
$##i## ego query origin dev-python/appi
 +
dev-python/appi::python-kit comes from ##g##flora
 +
        ##bl##https://github.com/funtoo/flora/tree/master/dev-python/appi
 +
$##i## ego query o screen
 +
app-misc/screen::core-kit comes from ##g##kit-fixups
 +
        ##bl##https://github.com/funtoo/kit-fixups/tree/master/core-kit/global/app-misc/screen
 +
        ##c##https://gitweb.gentoo.org/repo/gentoo.git/tree/app-misc/screen
 +
app-vim/screen::editors-kit comes from ##g##gentoo-staging
 +
        ##bl##http://git.funtoo.org/gentoo-staging/tree/app-vim/screen
 +
        ##c##https://gitweb.gentoo.org/repo/gentoo.git/tree/app-vim/screen
 +
</console>
  
To change the profile flavor:
+
When the package is also available in Gentoo, the URL to the Gentoo repository is also shown in cyan as you may want to compare Funtoo version with Gentoo's.
{{console|body=
 
# ##i## epro flavor desktop
 
}}
 
  
To add a mix-in:
+
==== Bugs ====
  
{{console|body=
+
The {{c|bugs}} command lists bugs reported on https://bugs.funtoo.org/ regarding the given atom. This allows you to quickly find out if an issue you're facing was reported recently.
# ##i## epro mix-ins +gnome
 
}}
 
  
To remove a mix-in:
+
<console>
{{console|body=
+
$##i## ego query bugs www-client/chromium
# ##i## epro mix-ins -gnome
+
##r##FL-4233 ##c##2017-09-21 ##bl##Closed ##y##Unable to emerge the package 'www-client/chromium' due to a missing dependency
}}
+
##r##FL-3019 ##c##2015-11-27 ##bl##Closed ##y##Emerge fails to find proper dependencies for www-client/chromium on arm with system-ffmpeg
 
+
##r##FL-444  ##c##2013-03-05 ##bl##Closed ##y##www-client/chromium depends on missing >=media-libs/mesa-9.1
To get a JSON output of your profiles:
+
$##i## ego query bugs mesa
{{console|body=
+
##r##FL-3269 ##c##2016-07-19 ##bl##Backlog ##y##media-libs/mesa need video_cards_virgl use flag.
# ##i## epro show-json
+
##r##FL-2225 ##c##2015-03-29 ##bl##Closed  ##y##[media-libs/mesa] upgrading to 10.4.4 failed
}}
+
##r##FL-2224 ##c##2015-03-29 ##bl##Closed  ##y##[media-libs/mesa] bump new 10.4.4 version to 10.4.7
 
+
##r##FL-634  ##c##2013-07-22 ##bl##Closed  ##y##portage complaining that media-libs/mesa and x11-libs/cairo need openvg flag
To get the current value of a given profile:
+
</console>
{{console|body=
 
# ##i## epro get <build|flavor|arch|subarch|mix-ins>
 
}}
 
  
 
{{EbuildFooter}}
 
{{EbuildFooter}}

Latest revision as of 05:22, September 26, 2019

Ego

   Tip

We welcome improvements to this page. To edit this page, Create a Funtoo account. Then log in and then click here to edit this page. See our editing guidelines to becoming a wiki-editing pro.


ego is Funtoo's official system personality management tool, designed to eventually replace the venerable eselect from Gentoo Linux. Daniel Robbins created a new meta-tool to replace eselect because eselect has a couple of design issues. It requires extensions to be written as shell scripts, which is a big limitation. With the advent of Funtoo's modular profile system, eselect profile was becoming cumbersome to use, and I needed to make the tool faster and more feature-rich. Ultimately, shell scripts are too slow and too hard to use to implement advanced functionality.

ego is a meta-tool that works similarly to eselect. Typing ego will show a list of available commands. Some of the benefits of ego over eselect are that ego modules can be implemented in any language. In addition, the ego architecture is designed so that the modules are themselves stand-alone commands, which allows you to access these sub-commands using shortcuts. For example, epro is a shortcut for ego profile. Please see the Funtoo Profiles page for detailed documentation on ego profile.

Ego Modules

typesub-commanddescription
profileeproProfile management -- see Funtoo Profiles for usage information
docedocDisplay wiki documentation
query-Query information about packages
sync-Synchronize Portage tree

Query module

ego query module is a tool to display information about packages. Bellow are described the various available commands.

Versions

The versions (shortcut: v) command lists all available versions matching a given atom. For each version, it also shows its slot and repository (along with git branch if any).

user $ ego query versions python
 dev-lang/python|     slot|                 repo
----------------+---------+---------------------
          2.7.12|      2.7| python-kit/3.6-prime
        * 2.7.13|         | python-kit/3.6-prime
----------------+---------+---------------------
           3.4.5| 3.4/3.4m| python-kit/3.6-prime
           3.4.6|         | python-kit/3.6-prime
----------------+---------+---------------------
         * 3.5.3| 3.5/3.5m| python-kit/3.6-prime
----------------+---------+---------------------
      * 3.6.1-r1| 3.6/3.6m| python-kit/3.6-prime

user $ ego query versions '=python-3*'
 dev-lang/python|     slot|                 repo
----------------+---------+---------------------
           3.4.5| 3.4/3.4m| python-kit/3.6-prime
           3.4.6|         | python-kit/3.6-prime
----------------+---------+---------------------
         * 3.5.3| 3.5/3.5m| python-kit/3.6-prime
----------------+---------+---------------------
      * 3.6.1-r1| 3.6/3.6m| python-kit/3.6-prime

user $ ego query v dev-lang/python:3.5
 dev-lang/python|     slot|                 repo
----------------+---------+---------------------
         * 3.5.3| 3.5/3.5m| python-kit/3.6-prime

user $ ego query v coffee-script
 dev-lang/coffee-script| slot|           repo
-----------------------+-----+---------------
               1.9.3-r1|    0| dev-kit/master
               * 1.12.5|     | dev-kit/master

 dev-ruby/coffee-script| slot|           repo
-----------------------+-----+---------------
                  2.4.1|    0| dev-kit/master


Installed versions are in bold and marked with a star.

Origin

The origin (shortcut: o) command will tell you where a given package comes from and give you the URL to browse the ebuilds. This is mainly a tool for developers designed to figure out where fixes should be applied.

user $ ego query origin dev-python/appi
dev-python/appi::python-kit comes from flora
        https://github.com/funtoo/flora/tree/master/dev-python/appi
user $ ego query o screen
app-misc/screen::core-kit comes from kit-fixups
        https://github.com/funtoo/kit-fixups/tree/master/core-kit/global/app-misc/screen
        https://gitweb.gentoo.org/repo/gentoo.git/tree/app-misc/screen
app-vim/screen::editors-kit comes from gentoo-staging
        http://git.funtoo.org/gentoo-staging/tree/app-vim/screen
        https://gitweb.gentoo.org/repo/gentoo.git/tree/app-vim/screen

When the package is also available in Gentoo, the URL to the Gentoo repository is also shown in cyan as you may want to compare Funtoo version with Gentoo's.

Bugs

The bugs command lists bugs reported on https://bugs.funtoo.org/ regarding the given atom. This allows you to quickly find out if an issue you're facing was reported recently.

user $ ego query bugs www-client/chromium
root ##r##FL-4233 2017-09-21 Closed Unable to emerge the package 'www-client/chromium' due to a missing dependency
root ##r##FL-3019 2015-11-27 Closed Emerge fails to find proper dependencies for www-client/chromium on arm with system-ffmpeg
root ##r##FL-444  2013-03-05 Closed www-client/chromium depends on missing >=media-libs/mesa-9.1
user $ ego query bugs mesa
root ##r##FL-3269 2016-07-19 Backlog media-libs/mesa need video_cards_virgl use flag.
root ##r##FL-2225 2015-03-29 Closed  [media-libs/mesa] upgrading to 10.4.4 failed
root ##r##FL-2224 2015-03-29 Closed  [media-libs/mesa] bump new 10.4.4 version to 10.4.7
root ##r##FL-634  2013-07-22 Closed  portage complaining that media-libs/mesa and x11-libs/cairo need openvg flag