public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/R_overlay:gsoc13/next commit in: doc/rst/
@ 2013-06-05 18:08 André Erdmann
  0 siblings, 0 replies; 12+ messages in thread
From: André Erdmann @ 2013-06-05 18:08 UTC (permalink / raw
  To: gentoo-commits

commit:     c73dd7909d2969d35451bd0945be545ddf0a155b
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Wed Jun  5 18:05:14 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Wed Jun  5 18:05:14 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=c73dd790

doc/rst, package rules: set/rename actions

---
 doc/rst/usage.rst | 110 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 100 insertions(+), 10 deletions(-)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index 34ce7ac..e74c091 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -405,6 +405,10 @@ to know in detail what *roverlay* does before running it.
    Summary: Expect 300 (slow) or 600MB (fast) memory consumption when using
    the default package repositories.
 
+--fixup-category-move, --fixup-category-move-reverse
+   Remove ebuilds that have been moved to a different category.
+   See `Action Blocks`_ in `Package Rules`_ for details.
+
 --config file, -c file
 	Path to the config file
 
@@ -1223,6 +1227,7 @@ Rule Stubs
 
          [<keychar>]<short dependency>
 
+
 ===============
  Package Rules
 ===============
@@ -1315,7 +1320,12 @@ These *match keywords* are recognized:
    | package_name  | *implicit*       | package file name without version    |
    |               |                  | and file extension, e.g. *seewave*   |
    +---------------+------------------+--------------------------------------+
-   | name          | *implicit*       | *alias to package_name*              |
+   | ebuild_name   | *implicit*       | ebuild name ``${PN}``, which is the  |
+   |               |                  | package_name with special chars      |
+   |               |                  | removed or replaced (e.g.,           |
+   |               |                  | *R.oo* (pkg) => *R_oo* (ebuild))     |
+   +---------------+------------------+--------------------------------------+
+   | name          | *implicit*       | *alias to ebuild_name*               |
    +---------------+------------------+--------------------------------------+
 
 Note the **implicit operator**. It will be used whenever no explicit operator
@@ -1478,21 +1488,60 @@ control *where*) and the number of values they accept:
    | keywords       | ebuild variables | >= 1        | set per-package        |
    |                |                  |             | ``KEYWORDS``           |
    +----------------+------------------+-------------+------------------------+
-   | trace          | package rules    | none        | marks a package as     |
+   | trace          | package rules    | none        | mark a package as      |
    |                |                  |             | modified               |
    +                +                  +-------------+------------------------+
-   |                |                  | 1           | adds the stored string |
+   |                |                  | 1           | add the stored string  |
    |                |                  |             | to a package's         |
    |                |                  |             | *modified* variable    |
    |                |                  |             | whenever this action   |
    |                |                  |             | is applied             |
    +----------------+------------------+-------------+------------------------+
+   | set            | package          | 2           | set package            |
+   +----------------+ metadata,        +-------------+ information            |
+   | set_<key>      | overlay creaton  | 1           |                        |
+   +----------------+------------------+-------------+------------------------+
+   | rename         | package          | 2           | modify package         |
+   +----------------+ metadata,        +-------------+ information with       |
+   | rename_<key>   | overlay creation | 1           | sed-like               |
+   |                |                  |             | *s/expr/repl/*         |
+   |                |                  |             | statements             |
+   +----------------+------------------+-------------+------------------------+
+
+The two-arg form of the set/rename keywords expect a <key> as first and
+a value / sed expression as second arg. The one-arg form expects the latter
+one only. The "/" delimitier in the sed expression can be any character.
 
+The following *info keys* can be set and/or modified:
+
+..  table:: info keys for set/rename
+
+   +--------------+---------------------+-------------------------------------+
+   | info key     | supports set/rename | description                         |
+   +==============+=====================+=====================================+
+   | name         | yes / yes           | rename the ebuild                   |
+   +--------------+---------------------+-------------------------------------+
+   | category     | yes / **no**        | set package category                |
+   +--------------+---------------------+-------------------------------------+
+   | destfile     | yes / yes           | rename ebuild destfile by using the |
+   |              |                     | '->' operator in ``${SRC_URI}``     |
+   +--------------+---------------------+-------------------------------------+
+
+.. Caution::
+
+   Category moves are not handled automatically. In incremental mode, overlay
+   creation has to be called with either ``--fixup-category-move`` or
+   ``--fixup-category-move-reverse``, depending on whether the package(s)
+   have been moved away from the default category or back to the default
+   category ("reverse"). Configuring both category move types at once requires
+   a full recreation of the overlay, that is ``rm -rf <overlay dir>``
+   followed by ``roverlay create``.
 
 .. Note::
 
-   Applying the same (non-incremental) ebuild variable action more than once
-   is possible, but only the last one will have an effect on ebuild creation.
+   Applying the same (non-incremental) ebuild variable, set or rename action
+   more than once is possible, but only the last one will have an effect
+   on ebuild creation.
 
 
 Extended Action Block Syntax
@@ -1562,6 +1611,46 @@ if the package is from BIOC/experiment, and otherwise to ``-x86 amd64``:
    END;
 
 
+A rule that assigns all packages from BIOC-2.10/bioc to sci-bioc:
+
+.. code::
+
+   MATCH:
+      repo == BIOC-2.10/bioc
+   ACTION:
+      set category sci-bioc
+   END;
+
+   # alternatively:
+   MATCH:
+      repo == BIOC-2.10/bioc
+   ACTION:
+      set_category sci-bioc
+   END;
+
+
+The following example prefixes all *yaml* packages with *Rpkg_*:
+
+.. code::
+
+   MATCH:
+      ebuild_name ,= yaml
+   ACTION:
+      rename destfile s/^/Rpkg_/
+   END;
+
+
+Moving such packages to a "R-package" sub directory would be possible, too:
+
+.. code::
+
+   MATCH:
+      name ,= yaml
+   ACTION:
+      rename_destfile s=^=R-package=
+   END;
+
+
 =========================
  Configuration Reference
 =========================
@@ -1639,8 +1728,9 @@ DISTROOT
 
 EBUILD_PROG
    Name or path of the ebuild executables that is required for (external)
-   Manifest file creation. A wrong value will cause ebuild creation late,
-   which is a huge time loss, so make sure that this option is properly set.
+   Manifest file creation. A wrong value will cause ebuild creation to fail
+   late, which is a huge time loss, so make sure that this option is properly
+   set.
 
    Defaults to *ebuild*, which should be fine in most cases.
 
@@ -2340,9 +2430,9 @@ functionality:
 * *sync* all repos and *nosync* all repos (offline mode)
 * create *PackageInfo* instances for R packages from all repositories
 
-++++++++++++++
- Repositories
-++++++++++++++
+++++++++++++
+ Repository
+++++++++++++
 
 The functionality described above is an abstraction layer that calls the
 respective function for each repository and collects the result.


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [gentoo-commits] proj/R_overlay:gsoc13/next commit in: doc/rst/
@ 2013-06-12 21:10 André Erdmann
  0 siblings, 0 replies; 12+ messages in thread
From: André Erdmann @ 2013-06-12 21:10 UTC (permalink / raw
  To: gentoo-commits

commit:     b882ecc22d31458fc64949fd458931ec79a88456
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Wed Jun 12 21:09:03 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Wed Jun 12 21:09:03 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=b882ecc2

doc/rst: additions dir

---
 doc/rst/usage.rst | 132 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 120 insertions(+), 12 deletions(-)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index adf26da..ab2c563 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -52,19 +52,20 @@ This document is targeted at
    * *roverlay* maintainers who **control and test overlay creation**,
      e.g. configure which R packages will be part of the generated overlay
 
-     Depending on what you want to configure, chapters 5-8 are relevant,
-     namely `Repositories / Getting Packages`_, `Dependency Rules`_,
-     `Configuration Reference`_ and `Field Definition Config`_.
+     Depending on what you want to configure, chapters 5-10 are relevant,
+     namely `Repositories / Getting Packages`_, `Additions Directory`,
+     `Dependency Rules`_, `Package Rules`_, `Configuration Reference`_
+     and `Field Definition Config`_.
 
      There is another chapter that is only interesting for testing, the
-     `Dependency Resolution Console`_ (10), which can be used to interactively
+     `Dependency Resolution Console`_ (11), which can be used to interactively
      test dependency rules.
 
    * *roverlay* code maintainers who want to know **how roverlay works** for
      code improvements etc.
 
-     The most important chapter is `Implementation Overview`_ (11) which has
-     references to other chapters (4-9) where required.
+     The most important chapter is `Implementation Overview`_ (12) which has
+     references to other chapters (4-10) where required.
 
 Expected prior knowlegde:
 
@@ -279,13 +280,19 @@ have reasonable defaults if *roverlay* has been installed using *emerge*:
 
       Example: REPO_CONFIG = ~/roverlay/config/repo.list
 
-   PACKAGE_RULES:
+   PACKAGE_RULES
       A list of files and/or directories with package rules.
       Package rules can be used to control overlay/ebuild creation.
       This option is not required.
 
       Example: PACKAGE_RULES = ~/roverlay/config/packagerules.d
 
+   ADDITIONS_DIR
+      Directory with an overlay-like structure that contains extra files, e.g.
+      ebuild patches and hand-written ebuilds.
+
+      Example: ADDITIONS_DIR = ~/roverlay/additions
+
    FIELD_DEFINITION
       The value of this option should point to a field definition file which
       controls how an R package's DESCRIPTION file is read.
@@ -330,6 +337,7 @@ There is another option that is useful for creating new dependency rules,
 LOG_FILE_UNRESOLVABLE_, which will write all unresolvable dependencies
 to the specified file (one dependency string per line).
 
+
 +++++++++++++++++++++++++++++++++++++++++++++++++
  Extended Configuration / Where to go from here?
 +++++++++++++++++++++++++++++++++++++++++++++++++
@@ -510,7 +518,9 @@ These are the steps that *roverlay* performs:
 
 2. scan the R Overlay directory (if it exists) for valid ebuilds
 
-3. **add** - queue all R packages for ebuild creation
+3. import ebuilds from the additions dir
+
+4. **add** - queue all R packages for ebuild creation
 
    * all repositories are asked to list their packages which are then added
      to a queue
@@ -522,7 +532,7 @@ These are the steps that *roverlay* performs:
 
      See also: `Package Rules`_
 
-4. **create** - process each package *p* from the package queue
+5. **create** - process each package *p* from the package queue
    (thread-able on a per package basis)
 
   * read *p*'s DESCRIPTION file that contains information fields
@@ -545,9 +555,9 @@ These are the steps that *roverlay* performs:
   * **done** with *p* - the overlay creator takes control over *p*
     and may decide to write *p*'s ebuild now (or later)
 
-5. write the overlay
+6. write the overlay
 
-   * write all ebuilds
+   * write all ebuilds and apply patches to them
      (supports threads on a per package basis)
 
    * write the *metadata.xml* files
@@ -957,6 +967,91 @@ A local directory will never be modified.
    websync_pkglist_.
 
 
+=====================
+ Additions Directory
+=====================
+
+The *additions directory* is a directory with overlay-like structure that
+contains extra files for overlay creation. Currently, ebuild patches and
+ebuild files are supported.
+
+To give an idea of how this directory could
+
+
+
+------------------
+ Patching ebuilds
+------------------
+
+Patches can apply to a **specific version** or to **all versions** of a
+package.
+
+The naming convention for patches is (full filesystem paths relative to the
+additions dir):
+
+..  code:: text
+
+   # version-specific patches
+   ${CATEGORY}/${PN}/${PF}[-dddd].patch
+
+   # version-agnostic patches
+   ${CATEGORY}/${PN}/${PN}[-dddd].patch
+
+
+The *-dddd* part is optional and can be used to apply more than one patch to
+an ebuild in the specified order. *d* should be a digit (0..9) and exactly
+4 digits are expected. The not-numbered patch is always applied first.
+So, in theory, up to 10001 patches per ebuild are supported.
+
+The *default* (version-agnostic) patches are only applied to ebuilds for
+which no version-specific patches exist.
+
+Exempting a specific ebuild from being patched can be achieved by creating
+an empty patch file (or a symlink to /dev/null). This is only necessary
+if *default* patches are available, else it adds some overhead.
+
+..  Caution::
+
+   Don't try to patch the (R)DEPEND variables of an ebuild.
+   It will *randomly* break because *roverlay* uses unordered data structures
+   for collecting dependencies.
+
+Example:
+
+..  code:: text
+
+   <additions dir>/sci-CRAN/R_oo/R_oo-1.9.8.patch
+   <additions dir>/sci-CRAN/R_oo/R_oo-1.9.8-0000.patch
+   <additions dir>/sci-CRAN/R_oo/R_oo-1.9.8-0001.patch
+   <additions dir>/sci-R/seewave/seewave-1.6.7.patch
+   <additions dir>/sci-R/seewave/seewave.patch
+
+
+-------------------
+ Importing ebuilds
+-------------------
+
+Foreign ebuilds can be imported into the overlay by simple putting them into
+the additions directory.
+
+The naming convention is similar to ebuild patches and identical to the
+portage tree:
+
+..  code::
+
+   ${CATEGORY}/${PN}/${PF}.ebuild
+
+
+Ebuilds imported that way can not be overwritten by generated ebuilds and
+benefit from most overlay creation features, e.g. Manifest file creation.
+However, they cannot be used for metadata creation.
+
+..  Important::
+
+   Importing ebuilds is only supported by the default Manifest implementation
+   (*ebuildmanifest*).
+
+
 ==================
  Dependency Rules
 ==================
@@ -1747,6 +1842,11 @@ RSYNC_BWLIMIT
  overlay options
 -----------------
 
+.. _ADDITIONS_DIR:
+
+ADDITIONS_DIR:
+   Alias to OVERLAY_ADDITIONS_DIR_.
+
 .. _DISTDIR:
 
 DISTDIR
@@ -1772,6 +1872,14 @@ ECLASS
 MANIFEST_IMPLEMENTATION
    Alias to OVERLAY_MANIFEST_IMPLEMENTATION_.
 
+.. _OVERLAY_ADDITIONS_DIR:
+
+OVERLAY_ADDITIONS_DIR
+   Directory with an overlay-like structure that contains extra files, e.g.
+   ebuild patches and hand-written ebuilds. This option is not required.
+
+   Defaults to <not set>, which disables this feature.
+
 .. _OVERLAY_CATEGORY:
 
 OVERLAY_CATEGORY
@@ -1790,7 +1898,7 @@ OVERLAY_DIR
 .. _OVERLAY_DISTDIR_FLAT:
 
 OVERLAY_DISTDIR_FLAT
-   A *bool* that controls the overall layout of _OVERLAY_DISTDIR_ROOT.
+   A *bool* that controls the overall layout of OVERLAY_DISTDIR_ROOT_.
 
    A flat distdir is a single directory with all package files or package
    file links in it. A nested distdir contains per-package directories.


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [gentoo-commits] proj/R_overlay:gsoc13/next commit in: doc/rst/
@ 2013-06-18 14:12 André Erdmann
  0 siblings, 0 replies; 12+ messages in thread
From: André Erdmann @ 2013-06-18 14:12 UTC (permalink / raw
  To: gentoo-commits

commit:     846a4c66dabd31bbb4b9c2e17394ad53cc086d3d
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Tue Jun 18 12:54:18 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Tue Jun 18 12:54:18 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=846a4c66

doc/rst: r_suggests USE_EXPAND variable

---
 doc/rst/usage.rst | 190 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 161 insertions(+), 29 deletions(-)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index ab2c563..8d06bab 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -302,6 +302,18 @@ have reasonable defaults if *roverlay* has been installed using *emerge*:
 
       Example: FIELD_DEFINITION = ~/roverlay/config/description_fields.conf
 
+   USE_EXPAND_DESC
+      A file that contains USE_EXPAND flag descriptions. This option is not
+      required.
+
+      Example: USE_EXPAND_DESC = ~/roverlay/config/useflag/useflag_desc
+
+   USE_EXPAND_RENAME
+      The value of this option should point to a USE flag remap file which
+      can be used to rename USE_EXPAND flags. This option is not required.
+
+      Example: USE_EXPAND_RENAME = ~/roverlay/config/useflag_rename
+
    OVERLAY_ECLASS
       This option lists eclass files that should be imported into the overlay
       (into *OVERLAY_DIR*/eclass/) and inherited in all ebuilds.
@@ -557,6 +569,10 @@ These are the steps that *roverlay* performs:
 
 6. write the overlay
 
+   * write/update the profiles dir
+
+     * *roverlay* respects manual changes to USE_EXPAND description files
+
    * write all ebuilds and apply patches to them
      (supports threads on a per package basis)
 
@@ -588,6 +604,8 @@ eclass file are used, the result should look like:
    <overlay root>/profiles/categories
    <overlay root>/profiles/repo_name
    <overlay root>/profiles/use.desc
+   <overlay root>/profiles/desc
+   <overlay root>/profiles/desc/r_suggests.desc
    <overlay root>/sci-R/<many directories per R package>
    <overlay root>/sci-R/seewave/
    <overlay root>/sci-R/seewave/Manifest
@@ -604,19 +622,22 @@ Ebuild Template
    .. code-block:: text
 
       <ebuild header>
+
+      EAPI=<EAPI>
+
       inherit <eclass(es)>
 
       DESCRIPTION="<the R package's description>"
       SRC_URI="<src uri for the R package>"
 
-      IUSE="${IUSE:-}
-         R_suggests
+      IUSE="${IUSE-}
+         r_suggests_<flag> r_suggests_<another flag> ...
       "
-      R_SUGGESTS="<R package suggestions>"
+      R_SUGGESTS="r_suggests_<flag>? ( <optional dependency> ) ..."
       DEPEND="<build time dependencies for the R package>"
-      RDEPEND="${DEPEND:-}
+      RDEPEND="${DEPEND-}
          <runtime dependencies>
-         R_suggests? ( ${R_SUGGESTS} )
+         ${R_SUGGESTS-}
       "
 
       _UNRESOLVED_PACKAGES=(<unresolvable, but optional dependencies>)
@@ -628,6 +649,9 @@ Ebuild Template
    .. code-block:: text
 
       <ebuild header>
+
+      EAPI=<EAPI>
+
       inherit <eclass(es)>
 
       SRC_URI="<src uri for the R package>"
@@ -638,7 +662,7 @@ Example: seewave 1.6.4 from CRAN:
 
    .. code-block:: sh
 
-      # Copyright 1999-2012 Gentoo Foundation
+      # Copyright 1999-2013 Gentoo Foundation
       # Distributed under the terms of the GNU General Public License v2
       # $Header: $
 
@@ -648,11 +672,13 @@ Example: seewave 1.6.4 from CRAN:
       DESCRIPTION="Time wave analysis and graphical representation"
       SRC_URI="http://cran.r-project.org/src/contrib/seewave_1.6.4.tar.gz"
 
-      IUSE="${IUSE:-}
-         R_suggests
+      IUSE="${IUSE-}
+         r_suggests_sound
+         r_suggests_audio
       "
-      R_SUGGESTS="sci-R/sound
-         sci-R/audio
+      R_SUGGESTS="
+         r_suggests_sound? ( sci-R/sound )
+         r_suggests_audio? ( sci-R/audio )
       "
       DEPEND="sci-R/fftw
          sci-R/tuneR
@@ -660,11 +686,11 @@ Example: seewave 1.6.4 from CRAN:
          sci-R/rpanel
          sci-R/rgl
       "
-      RDEPEND="${DEPEND:-}
+      RDEPEND="${DEPEND-}
          media-libs/flac
          sci-libs/fftw
          media-libs/libsndfile
-         R_suggests? ( ${R_SUGGESTS} )
+         ${R_SUGGESTS-}
       "
 
 Example: MetaPCA 0.1.3 from CRAN's archive:
@@ -673,7 +699,7 @@ Example: MetaPCA 0.1.3 from CRAN's archive:
 
    .. code-block:: sh
 
-      # Copyright 1999-2012 Gentoo Foundation
+      # Copyright 1999-2013 Gentoo Foundation
       # Distributed under the terms of the GNU General Public License v2
       # $Header: $
 
@@ -683,21 +709,29 @@ Example: MetaPCA 0.1.3 from CRAN's archive:
       DESCRIPTION="MetaPCA: Meta-analysis in the Di... (see metadata)"
       SRC_URI="http://cran.r-project.org/src/contrib/Archive/MetaPCA/MetaPCA_0.1.3.tar.gz"
 
-      IUSE="${IUSE:-}
-         R_suggests
+      IUSE="${IUSE-}
+         r_suggests_domc
+         r_suggests_affy
+         r_suggests_ellipse
+         r_suggests_pcapp
+         r_suggests_mass
+         r_suggests_impute
+         r_suggests_dosmp
+         r_suggests_geoquery
       "
-      R_SUGGESTS="sci-R/doMC
-         sci-R/affy
-         sci-R/ellipse
-         sci-R/pcaPP
-         sci-R/MASS
-         sci-R/impute
-         sci-R/doSMP
-         sci-R/GEOquery
+      R_SUGGESTS="
+         r_suggests_domc? ( sci-R/doMC )
+         r_suggests_affy? ( sci-R/affy )
+         r_suggests_ellipse? ( sci-R/ellipse )
+         r_suggests_pcapp? ( sci-R/pcaPP )
+         r_suggests_mass? ( sci-R/MASS )
+         r_suggests_impute? ( sci-R/impute )
+         r_suggests_dosmp? ( sci-R/doSMP )
+         r_suggests_geoquery? ( sci-R/GEOquery )
       "
       DEPEND="sci-R/foreach"
-      RDEPEND="${DEPEND:-}
-         R_suggests? ( ${R_SUGGESTS} )
+      RDEPEND="${DEPEND-}
+         ${R_SUGGESTS-}
       "
 
       _UNRESOLVED_PACKAGES=('hgu133plus2.db')
@@ -1847,6 +1881,11 @@ RSYNC_BWLIMIT
 ADDITIONS_DIR:
    Alias to OVERLAY_ADDITIONS_DIR_.
 
+.. _BACKUP_DESC:
+
+BACKUP_DESC
+   Alias to OVERLAY_BACKUP_DESC_.
+
 .. _DISTDIR:
 
 DISTDIR
@@ -1862,6 +1901,11 @@ DISTDIR_FLAT
 DISTDIR_STRATEGY
    Alias to OVERLAY_DISTDIR_STRATEGY_.
 
+.. _EBUILD_USE_EXPAND_NAME:
+
+EBUILD_USE_EXPAND_NAME
+   Name of the R_SUGGESTS USE_EXPAND variable. Defaults to *R_SUGGESTS*.
+
 .. _ECLASS:
 
 ECLASS
@@ -1880,6 +1924,14 @@ OVERLAY_ADDITIONS_DIR
 
    Defaults to <not set>, which disables this feature.
 
+.. _OVERLAY_BACKUP_DESC:
+
+OVERLAY_BACKUP_DESC
+   A *bool* that indicates whether the description file of the *R_SUGGESTS*
+   USE_EXPAND variable should be backed up before (over-)writing it.
+
+   Defaults to *true*.
+
 .. _OVERLAY_CATEGORY:
 
 OVERLAY_CATEGORY
@@ -1997,6 +2049,11 @@ OVERLAY_NAME
 
    Defaults to *R_Overlay*.
 
+.. _USE_EXPAND_NAME:
+
+USE_EXPAND_NAME:
+   Alias to EBUILD_USE_EXPAND_NAME_.
+
 --------------------
  other config files
 --------------------
@@ -2011,6 +2068,21 @@ reasons:
 The paths to these files have to be listed in the main config file and
 can be overridden with the appropriate command line options.
 
+.. _EBUILD_USE_EXPAND_DESC:
+
+EBUILD_USE_EXPAND_DESC
+   Path to a flag description file (for the *R_SUGGESTS* USE_EXPAND variable).
+   The syntax of this file is identical to USE_EXPAND description files
+   (``<overlay root>/profiles/desc/r_suggests.desc``).
+
+   Defaults to <not set>, which disables this option.
+
+.. _EBUILD_USE_EXPAND_RENAME:
+
+EBUILD_USE_EXPAND_RENAME
+   Path to a file that lists alternative names for a flag in the *R_SUGGESTS*
+   USE_EXPAND variable.
+
 .. _FIELD_DEFINITION:
 
 FIELD_DEFINITION
@@ -2066,6 +2138,16 @@ SIMPLE_RULES_FILE
 SIMPLE_RULES_FILES
    Alias to SIMPLE_RULES_FILE_.
 
+.. _USE_EXPAND_DESC:
+
+USE_EXPAND_DESC
+   Alias to EBUILD_USE_EXPAND_DESC_.
+
+.. _USE_EXPAND_RENAME:
+
+USE_EXPAND_RENAME
+   Alias to EBUILD_USE_EXPAND_RENAME_.
+
 ---------
  logging
 ---------
@@ -2210,11 +2292,61 @@ LOG_FILE_UNRESOLVABLE
    Defaults to <not set>, which disables this feature.
 
 
+====================
+ Other config files
+====================
+
+-----------------------------
+ USE_EXPAND flag rename file
+-----------------------------
+
+The USE_EXPAND_RENAME_ file contains dictionary-like entries that assign
+*effective* flag names to flag names generated at runtime.
+
+The syntax is as follows:
+
+..  code-block:: text
+
+   # comments start with '#'
+
+   <effective flag> <runtime flag> [<another runtime flag>...]
+
+   # a '=' can be used as separator to improve readability
+   <effective flag> = <runtime flag> [<another runtime flag>...]
+
+   # the previous line can be continued with leading whitespace
+   <effective flag> = <runtime flag>
+      [<another runtime flag>...]
+
+
+Example:
+
+..  code-block:: text
+
+   # rename 'audio' and 'snd' to 'sound'
+   sound = audio snd
+
+
+Each flag is renamed at most once, so the following example renames 'sound'
+to media, but 'audio' to 'sound':;
+
+..  code-block:: text
+
+   sound = audio snd
+   media = sound video
+
+
+..  Caution::
+
+   Assigning more than one *effective flag* to a *runtime flag* leads to
+   unpredictable results.
+
+
 .. _Field Definition:
 
-=========================
+-------------------------
  Field Definition Config
-=========================
+-------------------------
 
 The field definition file uses ConfigParser_ syntax and defines
 how an R package's DESCRIPTION file is read.
@@ -2319,9 +2451,9 @@ Known field flags:
 
 .. _default field definition file:
 
---------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++
  Example: The default field definition file
---------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++
 
 This is the default field definition file (without any ignored fields):
 


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [gentoo-commits] proj/R_overlay:gsoc13/next commit in: doc/rst/
@ 2013-06-25 21:10 André Erdmann
  0 siblings, 0 replies; 12+ messages in thread
From: André Erdmann @ 2013-06-25 21:10 UTC (permalink / raw
  To: gentoo-commits

commit:     adbe0bb8d1edc7cbff598b4834fbaceb7335fbb3
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Tue Jun 25 21:10:02 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Tue Jun 25 21:10:02 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=adbe0bb8

doc/rst: doc for "run hooks" (incomplete)

---
 doc/rst/usage.rst | 354 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 354 insertions(+)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index 8d06bab..078a7ac 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -314,6 +314,12 @@ have reasonable defaults if *roverlay* has been installed using *emerge*:
 
       Example: USE_EXPAND_RENAME = ~/roverlay/config/useflag_rename
 
+   CACHEDIR
+      Directory for generated files that do not belong to the overlay, e.g.
+      the *distmap* file. This option is **required**.
+
+      Example: CACHEDIR = ~/roverlay/workdir/cache
+
    OVERLAY_ECLASS
       This option lists eclass files that should be imported into the overlay
       (into *OVERLAY_DIR*/eclass/) and inherited in all ebuilds.
@@ -409,6 +415,10 @@ to know in detail what *roverlay* does before running it.
 --nosync, --no-sync
    Disable downloading of R packages.
 
+--distmap-verify
+   Enforce verification of R packages in the package mirror directory.
+   This also tries to recreate the distmap.
+
 --no-incremental
    Force recreation of existing ebuilds
 
@@ -1834,6 +1844,16 @@ The following sections will list all config entries.
  misc options
 --------------
 
+.. _CACHEDIR:
+
+CACHEDIR
+   Directory for persistent files that don't belong to the overlay, e.g.
+   the distmap file.
+
+   This option is **required**.
+
+   <<TODO: default value!>>
+
 .. _DISTFILES:
 
 DISTFILES
@@ -1863,6 +1883,14 @@ EBUILD_PROG
 
    Defaults to *ebuild*, which should be fine in most cases.
 
+.. _NOSYNC:
+
+NOSYNC
+   A *bool* that controls whether *syncing*, i.e. data transfers from/to
+   remote machines, is allowed or forbidden.
+
+   Defaults to *no*.
+
 .. _RSYNC_BWLIMIT:
 
 RSYNC_BWLIMIT
@@ -1872,6 +1900,7 @@ RSYNC_BWLIMIT
    Defaults to <not set>, which disables bandwidth limitation.
 
 
+
 -----------------
  overlay options
 -----------------
@@ -1901,6 +1930,17 @@ DISTDIR_FLAT
 DISTDIR_STRATEGY
    Alias to OVERLAY_DISTDIR_STRATEGY_.
 
+
+.. _DISTDIR_VERIFY:
+
+DISTDIR_VERIFY
+   Alias to OVERLAY_DISTDIR_VERIFY_.
+
+.. _DISTMAP_FILE:
+
+DISTMAP_FILE
+   Alias to OVERLAY_DISTMAP_FILE_.
+
 .. _EBUILD_USE_EXPAND_NAME:
 
 EBUILD_USE_EXPAND_NAME
@@ -2002,6 +2042,23 @@ OVERLAY_DISTDIR_STRATEGY
    This option is **required**, but has a reasonable value in the default
    config file, "hardlink symlink".
 
+.. _OVERLAY_DISTDIR_VERIFY:
+
+OVERLAY_DISTDIR_VERIFY
+   A *bool* that controls whether file integrity of *OVERLAY_DISTDIR_ROOT*
+   should be checked on startup. This is an expensive operation since each
+   file have to be read once.
+
+   Defaults to *no* as the verification is normally not needed.
+
+
+.. _OVERLAY_DISTMAP_FILE:
+
+OVERLAY_DISTMAP_FILE:
+   File path to the distmap file.
+
+   Defaults to <not set>, which results in CACHEDIR_/distmap.db.
+
 .. _OVERLAY_ECLASS:
 
 OVERLAY_ECLASS
@@ -2148,6 +2205,45 @@ USE_EXPAND_DESC
 USE_EXPAND_RENAME
    Alias to EBUILD_USE_EXPAND_RENAME_.
 
+---------------------------
+ shell environment / hooks
+---------------------------
+
+.. _EVENT_HOOK:
+
+EVENT_HOOK
+   A script that is called for handling *events* (see Hooks_).
+
+   Defaults to ADDITIONS_DIR_/hooks/mux.sh.
+
+.. _EVENT_HOOK_RESTRICT:
+
+EVENT_HOOK_RESTRICT
+   A list of *events* that are allowed (``<event>``, ``+<event>``) or
+   forbidden (``-<event>``). The asterisk wildcard character can be used to
+   set the default policy to *allow unless forbidden* (``*``) or
+   *deny unless allowed* (``-*``).
+
+   Defaults to <not set>, which is equivalent to *deny all*.
+
+.. _FILTER_SHELL_ENV:
+
+FILTER_SHELL_ENV
+   A *bool* that controls whether the hook environment should be filtered
+   or not.
+
+   Defaults to *true*.
+
+.. _HOOK:
+
+HOOK
+   Alias to EVENT_HOOK_.
+
+.. _HOOK_RESTRICT:
+
+HOOK_RESTRICT
+   Alias to EVENT_HOOK_RESTRICT_.
+
 ---------
  logging
 ---------
@@ -3146,3 +3242,261 @@ Its mode of operation of operation is best described in pseudo-code:
 
 The dependency resolver can be **run as thread**, in which case the while loop
 becomes "loop until resolver closes".
+
+
+=======
+ undef
+=======
+
+<<TODO; this section has to merged/moved>>
+
+---------
+ distmap
+---------
+
+The distmap is a file that stores information about the files in the package
+mirror directory (`OVERLAY_DISTDIR_ROOT`_).
+<<TODO>>
+
+
+-------
+ hooks
+-------
+
+*roverlay* calls a script when certain events occur, e.g. after successful
+overlay creation.
+
+<<TODO>>
+
+* real work is offloaded to the called script
+* roverlay provides some env vars
+* roverlay provides a *$FUNCTIONS* file and a way to load other function files
+* ``EVENT_HOOK_RESTRICT="this -not_that *"``
+
+<<^^TODO>>
+
+.. Note::
+
+   *roverlay* waits until the script terminates.
+
+
+++++++++++++++++++
+ Hook environment
+++++++++++++++++++
+
+.. table:: environment variables provided by *roverlay*
+
+   +----------------+------------------+-----------------------------------------+
+   | variable       | source           | notes / description                     |
+   +================+==================+=========================================+
+   | PATH           | os.environ       |                                         |
+   +----------------+------------------+-----------------------------------------+
+   | LOGNAME        | os.environ       |                                         |
+   +----------------+------------------+-----------------------------------------+
+   | SHLVL          | os.environ       |                                         |
+   +----------------+------------------+-----------------------------------------+
+   | TERM           | os.environ       |                                         |
+   +----------------+------------------+-----------------------------------------+
+   | HOME           | os.environ       |                                         |
+   +----------------+------------------+-----------------------------------------+
+   | ROVERLAY_PHASE | event            | event that caused the script to run     |
+   +----------------+------------------+-----------------------------------------+
+   | OVERLAY        | config           | overlay directory (`OVERLAY_DIR`_),     |
+   +----------------+------------------+ initial working directory               |
+   | S              | *$OVERLAY*       |                                         |
+   +----------------+------------------+                                         |
+   | PWD            | *$OVERLAY*       |                                         |
+   +----------------+------------------+-----------------------------------------+
+   | DISTROOT       | config           | package mirror directory                |
+   |                |                  | (`OVERLAY_DISTDIR_ROOT`_)               |
+   +----------------+------------------+-----------------------------------------+
+   | TMPDIR         | os.environ,      | directory for temporary files           |
+   |                | *fallback*       |                                         |
+   +----------------+------------------+                                         |
+   | T              | *$TMPDIR*        |                                         |
+   +----------------+------------------+-----------------------------------------+
+   | ADDITIONS_DIR  | config           | directory with supplementary files      |
+   |                |                  | (`OVERLAY_ADDITIONS_DIR`_)              |
+   +----------------+------------------+                                         |
+   | FILESDIR       | *$ADDITIONS_DIR* |                                         |
+   +----------------+------------------+-----------------------------------------+
+   | SHLIB          | *$ADDITIONS_DIR* | directory with shell function files     |
+   |                |                  | (optional, only set if it exists)       |
+   +----------------+------------------+-----------------------------------------+
+   | FUNCTIONS      | *$ADDITIONS_DIR* | file with essential shell functions     |
+   |                |                  | (optional, only set if it exists)       |
+   +----------------+------------------+-----------------------------------------+
+   | DEBUG          | log level        | *shbool* (``y`` or ``n``) that          |
+   |                |                  | indicates whether debug messages should |
+   |                |                  | be printed                              |
+   +----------------+------------------+-----------------------------------------+
+   | VERBOSE        | log level        | *shbool*                                |
+   +----------------+------------------+-----------------------------------------+
+   | QUIET          | log level        | *shbool* that indicates whether scripts |
+   |                |                  | should be quiet                         |
+   +----------------+------------------+-----------------------------------------+
+   | NO_COLOR       | *n/a*            | *shbool*. Always set to *y* since       |
+   |                |                  | colored output should not be produced   |
+   +----------------+------------------+-----------------------------------------+
+   | NOSYNC         | config           | *shbool* that indicates whether data    |
+   |                |                  | transfers from/to remote machines is    |
+   |                |                  | allowed (NOSYNC_)                       |
+   +----------------+------------------+-----------------------------------------+
+   | EBUILD         | config           | the *ebuild* executable                 |
+   +----------------+------------------+-----------------------------------------+
+   | GIT_EDITOR     | *n/a*            | set to */bin/false*                     |
+   +----------------+------------------+                                         |
+   | GIT_ASKPASS    | *n/a*            |                                         |
+   +----------------+------------------+-----------------------------------------+
+
+
+The default *essential shell functions* file (*$FUNCTIONS*) makes,
+when included in the hook script, most of the enviroment variables readonly.
+
+
+.. table:: variables provided by *$FUNCTIONS*
+
+   +-----------------+-------------------------------------------------------+
+   | variable        | description                                           |
+   +=================+=======================================================+
+   | IFS_DEFAULT     | default *internal field separator*                    |
+   +-----------------+-------------------------------------------------------+
+   | IFS_NEWLINE     | *IFS* for iterating over text lines                   |
+   +-----------------+-------------------------------------------------------+
+   | DEVNULL         | */dev/null* target (could also be a file)             |
+   +-----------------+-------------------------------------------------------+
+   | EX_ERR          | default error exit code                               |
+   +-----------------+-------------------------------------------------------+
+   | EX_ARG_ERR      | default exit code for arg errors                      |
+   +-----------------+-------------------------------------------------------+
+   | SCRIPT_FILENAME | file name of the hook script                          |
+   +-----------------+-------------------------------------------------------+
+   | SCRIPT_NAME     | name of the hook script (without file extension)      |
+   +-----------------+-------------------------------------------------------+
+   | lf              | reference to a function that loads additional shell   |
+   |                 | function files                                        |
+   +-----------------+-------------------------------------------------------+
+
+
+*$FUNCTIONS* also provides a number of shell functions:
+
+.. code-block:: sh
+
+   # --- message ---
+   #
+   # void veinfo ( message )
+   #  Prints a message to stdout if $DEBUG is set to 'y'.
+   #
+   # void einfo  ( message )
+   #  Prints a message to stdout if $VERBOSE is set to 'y'.
+   #
+   # void ewarn  ( message )
+   #  Prints a message to stderr unless $QUIET is set to 'y'.
+   #
+   # void eerror ( message )
+   #  Prints a message to stderr.
+   #
+   #
+   # --- core ---
+   #
+   # @noreturn die ( [message], [exit_code] ), raises exit()
+   #  Lets the script die with the given message/exit code.
+   #
+   # @noreturn OUT_OF_BOUNDS(), raises die()
+   #  Lets the script die due to insufficient arg count.
+   #
+   # int run_command ( *cmdv )
+   #  Logs a command and runs it afterwards.
+   #
+   # int run_command_logged ( *cmdv )
+   #  Logs a command, runs it and logs the result.
+   #
+   # void autodie ( *cmdv ), raises die()
+   #  Runs a command. Lets the script die if the command fails.
+   #
+   #
+   # void load_functions ( *filenames, **SHLIB ), raises die()
+   #  Loads additional shell functions file(s) from $SHLIB.
+   #  (Referenced by $lf.)
+   #
+   # void dont_run_as_root(), raises die()
+   #  Lets the script die if it is run as root.
+   #
+   # int list_has ( word, *list_items )
+   #  Returns 0 if $word is in the given list.
+   #
+   # int qwhich ( *command )
+   #  Returns 0 if all listed commands are found by "which".
+   #
+   #
+   # --- fs ---
+   #
+   # int dodir ( *dir )
+   #  Ensures that zero or more directories exist by creating them if
+   #  necessary. Returns the number of directories that could not be created.
+   #
+   #
+   # --- str ---
+   #
+   # int yesno ( word, **YESNO_YES=0, **YESNO_NO=1, **YESNO_EMPTY=2 )
+   #  Returns $YESNO_YES if $word means "yes", $YESNO_EMPTY if $word is empty
+   #  and $YESNO_NO otherwise (if $word probably means "no").
+   #
+   # ~int str_trim ( *args )
+   #  Removes whitespace at the beginning and end of a string and replaces
+   #  any whitespace sequence within the string with a single space char.
+   #  Passes the return value of the underlying sed command.
+   #
+   # ~int str_upper ( *args )
+   #  Echoes the uppercase variant of stdin or *args.
+   #  Passes tr's return value.
+   #
+   # ~int str_lower ( *args )
+   #  Echoes the lowercase variant of stdin or *args.
+   #  Passes tr's return value.
+   #
+   # ~int str_field ( fieldspec, *args, **FIELD_SEPARATOR=' ' )
+   #  Echoes the requested fields of stdin or *args.
+   #  Passes cut's return value.
+   #
+   #
+   # --- int ---
+   #
+   # int is_int ( word )
+   #  Returns 0 if $word is an integer, else 1.
+   #
+   # int is_natural ( word )
+   #  Returns 0 if $word is an integer >= 0, else 1.
+   #
+   # int is_positive ( word )
+   #  Returns 0 if $word is an integer >= 1, else 1.
+   #
+   # int is_negative ( word )
+   #  Returns 0 if $word is an integer < 0, else 1.
+   #
+
+
++++++++++++++++++++++
+ Adding a hook event
++++++++++++++++++++++
+
+in roverlay
+
+..  code-block:: python
+
+   # import hook module
+   import roverlay.hook
+
+   # ...
+   # then:
+   roverlay.hook.run ( "<event>" )
+   # ...
+   roverlay.hook.run ( "<another event>" )
+
+
+in additions dir (assuming that mux.sh is used)
+
+..  code-block:: text
+
+   <somehow create> ${ADDITIONS_DIR}/<hook>.<event>
+   <somehow create> ${ADDITIONS_DIR}/<hook>/<event>.sh


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [gentoo-commits] proj/R_overlay:gsoc13/next commit in: doc/rst/
@ 2013-06-26 17:29 André Erdmann
  0 siblings, 0 replies; 12+ messages in thread
From: André Erdmann @ 2013-06-26 17:29 UTC (permalink / raw
  To: gentoo-commits

commit:     0678580564dcf6aa8e2587d3b04d62544265ca74
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Wed Jun 26 17:28:39 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Wed Jun 26 17:28:39 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=06785805

doc/rst: "run hooks", "distmap"

---
 doc/rst/usage.rst | 643 ++++++++++++++++++++++++++++++++----------------------
 1 file changed, 383 insertions(+), 260 deletions(-)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index 078a7ac..2daedce 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -1010,6 +1010,22 @@ A local directory will never be modified.
    consider using one of the **websync** repo types, websync_repo_ and
    websync_pkglist_.
 
+---------
+ distmap
+---------
+
+*roverlay* uses a text file to store information about files in the package
+mirror directory (OVERLAY_DISTDIR_ROOT_). This is necessary for comparing
+package files from repos with files for which an ebuild has already been
+created (in previous runs).
+
+With the help of the *distmap file*, *roverlay* is able to determine whether
+upstream has changed a package file silently and creates a revision-bumped
+ebuild for the *new* package file.
+
+The *distmap file* can optionally be compressed (bzip2 or gzip), which
+reduces its size considerably.
+
 
 =====================
  Additions Directory
@@ -1790,6 +1806,354 @@ Moving such packages to a "R-package" sub directory would be possible, too:
    END;
 
 
+=============
+ Event Hooks
+=============
+
+*roverlay* is able to call a script when certain events occur, e.g. after
+successful overlay creation, which can be used to perform additional actions
+without touching *roverlay's* source code.
+
+To realize this, *roverlay* determines whether a given event is permitted
+(`event policy`_) and, if so, creates a `hook environment`_ and runs the
+script. Additionally, shell scripts can load *roverlay's* *$FUNCTIONS* file,
+which provides extra functionality.
+
+.. Note::
+
+   *roverlay* waits until the script terminates and thus possibly waits
+   forever.
+
+
+----------------------
+ Default event script
+----------------------
+
+The default event script (``mux.sh``) loads *$FUNCTIONS* and then runs the
+following script files (by sourcing them), in order:
+
+#. all files from ADDITIONS_DIR_/hooks/<event> that end with *.sh*
+   (``<ADDITIONS_DIR>/hooks/<event>/*.sh``)
+#. all files ADDITIONS_DIR_/hooks that end with *.<event>*
+   (``<ADDITIONS_DIR>/hooks/*.<event>``)
+
+So, there are two naming schemes for *hook scripts*.
+Either one is acceptable, but it is advised to stay consistent.
+Having the same script at both locations results in executing it twice.
+
+..  Note::
+
+   The default event script enables *nounset* behavior, which causes the
+   shell command interpreter to exit abnormally if an unset variable is
+   accessed.
+
+
+++++++++++++++++++++++++++
+ Activating a hook script
+++++++++++++++++++++++++++
+
+Activating a hook script can be done by symlinking it:
+
+..  code-block:: text
+
+   ln -s <real script> ${ADDITIONS_DIR}/hooks/<event>/<name>.sh
+   # or
+   ln -s <real script> ${ADDITIONS_DIR}/hooks/<name>.<event>
+
+
+++++++++++++++++++++++++++
+ Adding a new hook script
+++++++++++++++++++++++++++
+
+As hinted before, *hook scripts* are simple shell scripts. The following
+template gives an idea of how to write them:
+
+..  code-block:: sh
+
+   #!/bin/sh
+   #set -u
+
+   # load essential functions
+   # (not necessary when using the default event script)
+   . "${FUNCTIONS?}" || exit
+
+   ## load additional function files, if any
+   #$lf <name(s)>
+
+   # script body
+   #
+   # when redirecting output to $DEVNULL, use ">>" instead of ">" as
+   # $DEVNULL could be a file
+   #ls >>${DEVNULL}
+   #
+   # ...
+
+
+   # the script must not exit if everything went well (return is ok)
+   return 0
+
+
+--------------
+ Event Policy
+--------------
+
+The *event policy* controls whether a certain event actually triggers a script
+call or not.
+It is constructed by parsing the EVENT_HOOK_RESTRICT_ config option:
+
+* a word prefixed by ``-`` means *deny specific event* (-> blacklist)
+* the asterisk char ``*`` (or ``+*``) sets the policy to
+  *allow unless denied* (blacklist) or *allow all*
+* a word prefixed by ``+`` or without a prefix char means
+  *allow specific event* (-> whitelist)
+* the asterisk char with ``-`` as prefix (``-*``) sets the policy to
+  *deny unless allowed* (whitelist) or *deny all*
+
+
+The policy defaults to *allow all* if ``EVENT_HOOK_RESTRICT`` is not set in
+the config file. An empty string sets the policy to *deny all*.
+
+
+------------------
+ Hook Environment
+------------------
+
+.. table:: environment variables provided by *roverlay*
+
+   +----------------+-------------------+-----------------------------------------+
+   | variable       | source            | notes / description                     |
+   +================+===================+=========================================+
+   | PATH           | os.environ        |                                         |
+   +----------------+-------------------+-----------------------------------------+
+   | LOGNAME        | os.environ        |                                         |
+   +----------------+-------------------+-----------------------------------------+
+   | SHLVL          | os.environ        |                                         |
+   +----------------+-------------------+-----------------------------------------+
+   | TERM           | os.environ        |                                         |
+   +----------------+-------------------+-----------------------------------------+
+   | HOME           | os.environ        |                                         |
+   +----------------+-------------------+-----------------------------------------+
+   | ROVERLAY_PHASE | event             | event that caused the script to run     |
+   +----------------+-------------------+-----------------------------------------+
+   | OVERLAY        | config            | overlay directory (`OVERLAY_DIR`_),     |
+   +----------------+-------------------+ initial working directory               |
+   | S              | *$OVERLAY*        |                                         |
+   +----------------+-------------------+                                         |
+   | PWD            | *$OVERLAY*        |                                         |
+   +----------------+-------------------+-----------------------------------------+
+   | DISTROOT       | config            | package mirror directory                |
+   |                |                   | (`OVERLAY_DISTDIR_ROOT`_)               |
+   +----------------+-------------------+-----------------------------------------+
+   | TMPDIR         | os.environ,       | directory for temporary files           |
+   |                | *fallback*        |                                         |
+   +----------------+-------------------+                                         |
+   | T              | *$TMPDIR*         |                                         |
+   +----------------+-------------------+-----------------------------------------+
+   | ADDITIONS_DIR  | config            | directory with supplementary files      |
+   |                |                   | (`OVERLAY_ADDITIONS_DIR`_)              |
+   +----------------+-------------------+                                         |
+   | FILESDIR       | *$ADDITIONS_DIR*  |                                         |
+   +----------------+-------------------+-----------------------------------------+
+   | SHLIB          | *$ADDITIONS_DIR*, | A list of directories with shell        |
+   |                | *installed?*      | function files                          |
+   |                |                   | (optional, only set if any dir exists)  |
+   +----------------+-------------------+-----------------------------------------+
+   | FUNCTIONS      | *$ADDITIONS_DIR*, | file with essential shell functions     |
+   |                | *installed?*      | (optional, only set if it exists)       |
+   +----------------+-------------------+-----------------------------------------+
+   | DEBUG          | log level         | *shbool* (``y`` or ``n``) that          |
+   |                |                   | indicates whether debug messages should |
+   |                |                   | be printed                              |
+   +----------------+-------------------+-----------------------------------------+
+   | VERBOSE        | log level         | *shbool*                                |
+   +----------------+-------------------+-----------------------------------------+
+   | QUIET          | log level         | *shbool* that indicates whether scripts |
+   |                |                   | should be quiet                         |
+   +----------------+-------------------+-----------------------------------------+
+   | NO_COLOR       | *n/a*             | *shbool*. Always set to *y* since       |
+   |                |                   | colored output should not be produced   |
+   +----------------+-------------------+-----------------------------------------+
+   | NOSYNC         | config            | *shbool* that indicates whether data    |
+   |                |                   | transfers from/to remote machines is    |
+   |                |                   | allowed (NOSYNC_)                       |
+   +----------------+-------------------+-----------------------------------------+
+   | EBUILD         | config            | the *ebuild* executable                 |
+   +----------------+-------------------+-----------------------------------------+
+   | GIT_EDITOR     | *n/a*             | set to */bin/false*                     |
+   +----------------+-------------------+                                         |
+   | GIT_ASKPASS    | *n/a*             |                                         |
+   +----------------+-------------------+-----------------------------------------+
+
+
+The default *essential shell functions* file (*$FUNCTIONS*) makes,
+when included in the hook script, most of the enviroment variables readonly.
+
+
+.. table:: variables provided by *$FUNCTIONS*
+
+   +-----------------+-------------------------------------------------------+
+   | variable        | description                                           |
+   +=================+=======================================================+
+   | IFS_DEFAULT     | default *internal field separator*                    |
+   +-----------------+-------------------------------------------------------+
+   | IFS_NEWLINE     | *IFS* for iterating over text lines                   |
+   +-----------------+-------------------------------------------------------+
+   | DEVNULL         | */dev/null* target (could also be a file)             |
+   +-----------------+-------------------------------------------------------+
+   | EX_ERR          | default error exit code                               |
+   +-----------------+-------------------------------------------------------+
+   | EX_ARG_ERR      | default exit code for arg errors                      |
+   +-----------------+-------------------------------------------------------+
+   | SCRIPT_FILENAME | file name of the hook script                          |
+   +-----------------+-------------------------------------------------------+
+   | SCRIPT_NAME     | name of the hook script (without file extension)      |
+   +-----------------+-------------------------------------------------------+
+   | lf              | reference to a function that loads additional shell   |
+   |                 | function files                                        |
+   +-----------------+-------------------------------------------------------+
+
+
+*$FUNCTIONS* also provides a number of shell functions:
+
+.. code-block:: sh
+
+   # --- message ---
+   #
+   # void veinfo ( message )
+   #  Prints a message to stdout if $DEBUG is set to 'y'.
+   #
+   # void einfo  ( message )
+   #  Prints a message to stdout if $VERBOSE is set to 'y'.
+   #
+   # void ewarn  ( message )
+   #  Prints a message to stderr unless $QUIET is set to 'y'.
+   #
+   # void eerror ( message )
+   #  Prints a message to stderr.
+   #
+   #
+   # --- core ---
+   #
+   # @noreturn die ( [message], [exit_code] ), raises exit()
+   #  Lets the script die with the given message/exit code.
+   #
+   # @noreturn OUT_OF_BOUNDS(), raises die()
+   #  Lets the script die due to insufficient arg count.
+   #
+   # int run_command ( *cmdv )
+   #  Logs a command and runs it afterwards.
+   #
+   # int run_command_logged ( *cmdv )
+   #  Logs a command, runs it and logs the result.
+   #
+   # void autodie ( *cmdv ), raises die()
+   #  Runs a command. Lets the script die if the command fails.
+   #
+   #
+   # void load_functions ( *filenames, **SHLIB ), raises die()
+   #  Loads additional shell functions file(s) from $SHLIB.
+   #  (Referenced by $lf.)
+   #
+   # void dont_run_as_root(), raises die()
+   #  Lets the script die if it is run as root.
+   #
+   # int list_has ( word, *list_items )
+   #  Returns 0 if $word is in the given list, else 1.
+   #
+   # int qwhich ( *command )
+   #  Returns 0 if all listed commands are found by "which", else 1.
+   #
+   #
+   # --- fs ---
+   #
+   # int dodir ( *dir )
+   #  Ensures that zero or more directories exist by creating them if
+   #  necessary. Returns the number of directories that could not be created.
+   #
+   #
+   # --- str ---
+   #
+   # int yesno ( word, **YESNO_YES=0, **YESNO_NO=1, **YESNO_EMPTY=2 )
+   #  Returns $YESNO_YES if $word means "yes", $YESNO_EMPTY if $word is empty
+   #  and $YESNO_NO otherwise (if $word probably means "no").
+   #
+   # ~int str_trim ( *args )
+   #  Removes whitespace at the beginning and end of a string and replaces
+   #  any whitespace sequence within the string with a single space char.
+   #  Passes the return value of the underlying sed command.
+   #
+   # ~int str_upper ( *args )
+   #  Echoes the uppercase variant of stdin or *args.
+   #  Passes tr's return value.
+   #
+   # ~int str_lower ( *args )
+   #  Echoes the lowercase variant of stdin or *args.
+   #  Passes tr's return value.
+   #
+   # ~int str_field ( fieldspec, *args, **FIELD_SEPARATOR=' ' )
+   #  Echoes the requested fields of stdin or *args.
+   #  Passes cut's return value.
+   #
+   #
+   # --- int ---
+   #
+   # int is_int ( word )
+   #  Returns 0 if $word is an integer, else 1.
+   #
+   # int is_natural ( word )
+   #  Returns 0 if $word is an integer >= 0, else 1.
+   #
+   # int is_positive ( word )
+   #  Returns 0 if $word is an integer >= 1, else 1.
+   #
+   # int is_negative ( word )
+   #  Returns 0 if $word is an integer < 0, else 1.
+   #
+
+
+------------------------
+ Adding a function file
+------------------------
+
+Function files are shell script files that provide functions and variables.
+They should, however, not execute any code directly.
+
+The template below illustrates how to write function files:
+
+..  code-block:: sh
+
+   # protect against repeated inclusion of this file
+   # (replace <name> with a unique identifier)
+   if [ -z "${__HAVE_<name>__-}" ]; then
+   readonly __HAVE_<name>__=y
+
+   # function file body
+   # ...
+
+   fi
+
+Shell function files should be put into ``<ADDITIONS_DIR>/shlib``.
+
+---------------------
+ Adding a hook event
+---------------------
+
+Adding a new event has to be done in *roverlay's* source code and is a rather
+trivial task. The ``roverlay.hook`` module implements a function for running
+the event script:
+
+..  code-block:: python
+
+   # import hook module
+   import roverlay.hook
+
+   # ...
+   # then, somewhere in the code
+   roverlay.hook.run ( "<event>" )
+   # ...
+   roverlay.hook.run ( "<another event>" )
+
+
 =========================
  Configuration Reference
 =========================
@@ -1936,6 +2300,11 @@ DISTDIR_STRATEGY
 DISTDIR_VERIFY
    Alias to OVERLAY_DISTDIR_VERIFY_.
 
+.. _DISTMAP_COMPRESSION:
+
+DISTMAP_COMPRESSION
+   Alias to OVERLAY_DISTMAP_COMPRESSION_.
+
 .. _DISTMAP_FILE:
 
 DISTMAP_FILE
@@ -2051,6 +2420,13 @@ OVERLAY_DISTDIR_VERIFY
 
    Defaults to *no* as the verification is normally not needed.
 
+.. _OVERLAY_DISTMAP_COMPRESSION:
+
+OVERLAY_DISTMAP_COMPRESSION
+   Compression format for the distmap file. Choices are none, gzip/gz and
+   bzip2/bz2.
+
+   Defaults to bzip2.
 
 .. _OVERLAY_DISTMAP_FILE:
 
@@ -2212,9 +2588,10 @@ USE_EXPAND_RENAME
 .. _EVENT_HOOK:
 
 EVENT_HOOK
-   A script that is called for handling *events* (see Hooks_).
+   A script that is called for handling *events* (see `Event Hooks`_).
 
-   Defaults to ADDITIONS_DIR_/hooks/mux.sh.
+   Defaults to <libexec dir>/hooks/mux.sh if roverlay has been installed
+   and ADDITIONS_DIR_/hooks/mux.sh otherwise.
 
 .. _EVENT_HOOK_RESTRICT:
 
@@ -2226,6 +2603,10 @@ EVENT_HOOK_RESTRICT
 
    Defaults to <not set>, which is equivalent to *deny all*.
 
+   ``EVENT_HOOK_RESTRICT="overlay_success"`` would allow the ``overlay_success``
+   event only, whereas ``EVENT_HOOK_RESTRICT="* -overlay_success"`` would
+   allow any event except for ``overlay_success``. Also see `event policy`_.
+
 .. _FILTER_SHELL_ENV:
 
 FILTER_SHELL_ENV
@@ -3242,261 +3623,3 @@ Its mode of operation of operation is best described in pseudo-code:
 
 The dependency resolver can be **run as thread**, in which case the while loop
 becomes "loop until resolver closes".
-
-
-=======
- undef
-=======
-
-<<TODO; this section has to merged/moved>>
-
----------
- distmap
----------
-
-The distmap is a file that stores information about the files in the package
-mirror directory (`OVERLAY_DISTDIR_ROOT`_).
-<<TODO>>
-
-
--------
- hooks
--------
-
-*roverlay* calls a script when certain events occur, e.g. after successful
-overlay creation.
-
-<<TODO>>
-
-* real work is offloaded to the called script
-* roverlay provides some env vars
-* roverlay provides a *$FUNCTIONS* file and a way to load other function files
-* ``EVENT_HOOK_RESTRICT="this -not_that *"``
-
-<<^^TODO>>
-
-.. Note::
-
-   *roverlay* waits until the script terminates.
-
-
-++++++++++++++++++
- Hook environment
-++++++++++++++++++
-
-.. table:: environment variables provided by *roverlay*
-
-   +----------------+------------------+-----------------------------------------+
-   | variable       | source           | notes / description                     |
-   +================+==================+=========================================+
-   | PATH           | os.environ       |                                         |
-   +----------------+------------------+-----------------------------------------+
-   | LOGNAME        | os.environ       |                                         |
-   +----------------+------------------+-----------------------------------------+
-   | SHLVL          | os.environ       |                                         |
-   +----------------+------------------+-----------------------------------------+
-   | TERM           | os.environ       |                                         |
-   +----------------+------------------+-----------------------------------------+
-   | HOME           | os.environ       |                                         |
-   +----------------+------------------+-----------------------------------------+
-   | ROVERLAY_PHASE | event            | event that caused the script to run     |
-   +----------------+------------------+-----------------------------------------+
-   | OVERLAY        | config           | overlay directory (`OVERLAY_DIR`_),     |
-   +----------------+------------------+ initial working directory               |
-   | S              | *$OVERLAY*       |                                         |
-   +----------------+------------------+                                         |
-   | PWD            | *$OVERLAY*       |                                         |
-   +----------------+------------------+-----------------------------------------+
-   | DISTROOT       | config           | package mirror directory                |
-   |                |                  | (`OVERLAY_DISTDIR_ROOT`_)               |
-   +----------------+------------------+-----------------------------------------+
-   | TMPDIR         | os.environ,      | directory for temporary files           |
-   |                | *fallback*       |                                         |
-   +----------------+------------------+                                         |
-   | T              | *$TMPDIR*        |                                         |
-   +----------------+------------------+-----------------------------------------+
-   | ADDITIONS_DIR  | config           | directory with supplementary files      |
-   |                |                  | (`OVERLAY_ADDITIONS_DIR`_)              |
-   +----------------+------------------+                                         |
-   | FILESDIR       | *$ADDITIONS_DIR* |                                         |
-   +----------------+------------------+-----------------------------------------+
-   | SHLIB          | *$ADDITIONS_DIR* | directory with shell function files     |
-   |                |                  | (optional, only set if it exists)       |
-   +----------------+------------------+-----------------------------------------+
-   | FUNCTIONS      | *$ADDITIONS_DIR* | file with essential shell functions     |
-   |                |                  | (optional, only set if it exists)       |
-   +----------------+------------------+-----------------------------------------+
-   | DEBUG          | log level        | *shbool* (``y`` or ``n``) that          |
-   |                |                  | indicates whether debug messages should |
-   |                |                  | be printed                              |
-   +----------------+------------------+-----------------------------------------+
-   | VERBOSE        | log level        | *shbool*                                |
-   +----------------+------------------+-----------------------------------------+
-   | QUIET          | log level        | *shbool* that indicates whether scripts |
-   |                |                  | should be quiet                         |
-   +----------------+------------------+-----------------------------------------+
-   | NO_COLOR       | *n/a*            | *shbool*. Always set to *y* since       |
-   |                |                  | colored output should not be produced   |
-   +----------------+------------------+-----------------------------------------+
-   | NOSYNC         | config           | *shbool* that indicates whether data    |
-   |                |                  | transfers from/to remote machines is    |
-   |                |                  | allowed (NOSYNC_)                       |
-   +----------------+------------------+-----------------------------------------+
-   | EBUILD         | config           | the *ebuild* executable                 |
-   +----------------+------------------+-----------------------------------------+
-   | GIT_EDITOR     | *n/a*            | set to */bin/false*                     |
-   +----------------+------------------+                                         |
-   | GIT_ASKPASS    | *n/a*            |                                         |
-   +----------------+------------------+-----------------------------------------+
-
-
-The default *essential shell functions* file (*$FUNCTIONS*) makes,
-when included in the hook script, most of the enviroment variables readonly.
-
-
-.. table:: variables provided by *$FUNCTIONS*
-
-   +-----------------+-------------------------------------------------------+
-   | variable        | description                                           |
-   +=================+=======================================================+
-   | IFS_DEFAULT     | default *internal field separator*                    |
-   +-----------------+-------------------------------------------------------+
-   | IFS_NEWLINE     | *IFS* for iterating over text lines                   |
-   +-----------------+-------------------------------------------------------+
-   | DEVNULL         | */dev/null* target (could also be a file)             |
-   +-----------------+-------------------------------------------------------+
-   | EX_ERR          | default error exit code                               |
-   +-----------------+-------------------------------------------------------+
-   | EX_ARG_ERR      | default exit code for arg errors                      |
-   +-----------------+-------------------------------------------------------+
-   | SCRIPT_FILENAME | file name of the hook script                          |
-   +-----------------+-------------------------------------------------------+
-   | SCRIPT_NAME     | name of the hook script (without file extension)      |
-   +-----------------+-------------------------------------------------------+
-   | lf              | reference to a function that loads additional shell   |
-   |                 | function files                                        |
-   +-----------------+-------------------------------------------------------+
-
-
-*$FUNCTIONS* also provides a number of shell functions:
-
-.. code-block:: sh
-
-   # --- message ---
-   #
-   # void veinfo ( message )
-   #  Prints a message to stdout if $DEBUG is set to 'y'.
-   #
-   # void einfo  ( message )
-   #  Prints a message to stdout if $VERBOSE is set to 'y'.
-   #
-   # void ewarn  ( message )
-   #  Prints a message to stderr unless $QUIET is set to 'y'.
-   #
-   # void eerror ( message )
-   #  Prints a message to stderr.
-   #
-   #
-   # --- core ---
-   #
-   # @noreturn die ( [message], [exit_code] ), raises exit()
-   #  Lets the script die with the given message/exit code.
-   #
-   # @noreturn OUT_OF_BOUNDS(), raises die()
-   #  Lets the script die due to insufficient arg count.
-   #
-   # int run_command ( *cmdv )
-   #  Logs a command and runs it afterwards.
-   #
-   # int run_command_logged ( *cmdv )
-   #  Logs a command, runs it and logs the result.
-   #
-   # void autodie ( *cmdv ), raises die()
-   #  Runs a command. Lets the script die if the command fails.
-   #
-   #
-   # void load_functions ( *filenames, **SHLIB ), raises die()
-   #  Loads additional shell functions file(s) from $SHLIB.
-   #  (Referenced by $lf.)
-   #
-   # void dont_run_as_root(), raises die()
-   #  Lets the script die if it is run as root.
-   #
-   # int list_has ( word, *list_items )
-   #  Returns 0 if $word is in the given list.
-   #
-   # int qwhich ( *command )
-   #  Returns 0 if all listed commands are found by "which".
-   #
-   #
-   # --- fs ---
-   #
-   # int dodir ( *dir )
-   #  Ensures that zero or more directories exist by creating them if
-   #  necessary. Returns the number of directories that could not be created.
-   #
-   #
-   # --- str ---
-   #
-   # int yesno ( word, **YESNO_YES=0, **YESNO_NO=1, **YESNO_EMPTY=2 )
-   #  Returns $YESNO_YES if $word means "yes", $YESNO_EMPTY if $word is empty
-   #  and $YESNO_NO otherwise (if $word probably means "no").
-   #
-   # ~int str_trim ( *args )
-   #  Removes whitespace at the beginning and end of a string and replaces
-   #  any whitespace sequence within the string with a single space char.
-   #  Passes the return value of the underlying sed command.
-   #
-   # ~int str_upper ( *args )
-   #  Echoes the uppercase variant of stdin or *args.
-   #  Passes tr's return value.
-   #
-   # ~int str_lower ( *args )
-   #  Echoes the lowercase variant of stdin or *args.
-   #  Passes tr's return value.
-   #
-   # ~int str_field ( fieldspec, *args, **FIELD_SEPARATOR=' ' )
-   #  Echoes the requested fields of stdin or *args.
-   #  Passes cut's return value.
-   #
-   #
-   # --- int ---
-   #
-   # int is_int ( word )
-   #  Returns 0 if $word is an integer, else 1.
-   #
-   # int is_natural ( word )
-   #  Returns 0 if $word is an integer >= 0, else 1.
-   #
-   # int is_positive ( word )
-   #  Returns 0 if $word is an integer >= 1, else 1.
-   #
-   # int is_negative ( word )
-   #  Returns 0 if $word is an integer < 0, else 1.
-   #
-
-
-+++++++++++++++++++++
- Adding a hook event
-+++++++++++++++++++++
-
-in roverlay
-
-..  code-block:: python
-
-   # import hook module
-   import roverlay.hook
-
-   # ...
-   # then:
-   roverlay.hook.run ( "<event>" )
-   # ...
-   roverlay.hook.run ( "<another event>" )
-
-
-in additions dir (assuming that mux.sh is used)
-
-..  code-block:: text
-
-   <somehow create> ${ADDITIONS_DIR}/<hook>.<event>
-   <somehow create> ${ADDITIONS_DIR}/<hook>/<event>.sh


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [gentoo-commits] proj/R_overlay:gsoc13/next commit in: doc/rst/
  2013-07-03 10:05 [gentoo-commits] proj/R_overlay:master " André Erdmann
@ 2013-06-28 17:18 ` André Erdmann
  0 siblings, 0 replies; 12+ messages in thread
From: André Erdmann @ 2013-06-28 17:18 UTC (permalink / raw
  To: gentoo-commits

commit:     22b1e80c37192d3049f95293cedd03b30ca2c7d2
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Fri Jun 28 17:16:32 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Fri Jun 28 17:16:32 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=22b1e80c

doc/rst: SLOT handling (incomplete)

Draft for documentation about fuzzy slot rules.

(No doc/html commit will be created since documentation is todo.)

---
 doc/rst/usage.rst | 69 +++++++++++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 62 insertions(+), 7 deletions(-)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index 2daedce..f3e2e18 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -1160,7 +1160,8 @@ Simple Rules
 Fuzzy Rules
    Fuzzy Rules are **extended Simple Rules**. If the basic lookup
    as described above fails for a *dependency string*,
-   they will *try* to resolve it as a **version-relative match**.
+   they will *try* to resolve it as a **version-relative**,
+   **slot-relative** or **version,slot-relative match**.
 
    To do this, the *dependency string* will be split into components like
    *dependency name*, *dependency version* and useless comments, which are
@@ -1177,7 +1178,7 @@ Fuzzy Rules
       * "R 2.12" as ">=dev-lang/R-2.12"
       * "The R PROGRAMMING LANGUAGE [<2.14] from http://www.r-project.org/"
         as "<dev-lang/R-2.14"
-      * "R ( !2.10 )" as "( !=dev-lang/R-2.10 dev-lang/R )"
+      * "R ( !=2.10 )" as "( !=dev-lang/R-2.10 dev-lang/R )"
 
 
 ++++++++++++++++++++
@@ -1190,7 +1191,7 @@ See `Rule File Syntax`_ for a formal description.
 
 Example 1 - *default* fuzzy rule
    A rule that matches many dependencies on dev-lang/R, for example
-   "r 2.12", "R(>= 2.14)", "R [<2.10]", "r{  !2.12 }", and "R", and
+   "r 2.12", "R(>= 2.14)", "R [<2.10]", "r{ !=2.12 }", and "R", and
    resolves them as '>=dev-lang/R-2.12', '>=dev-lang/R-2.14',
    '<dev-lang/R-2.10', etc.:
 
@@ -1239,6 +1240,25 @@ Example 4 - *ignore* simple rule
          Will use djmrgl or rgl packages for rendering if present
       }
 
+Example 5 - fuzzy slot rule
+   A rule that matches many dependencies on sci-libs/fftw and resolves them
+   as slotted depencency:
+
+   .. code-block:: text
+
+      ~sci-libs/fftw: :: fftw
+
+Example 6 - slot-restricted fuzzy slot rule
+   Similar to example 5, but this rule does not resolve anything unless the
+   calculated slot is allowed.
+
+   .. code-block:: text
+
+      ~sci-libs/fftw:2.1,3.0: :: fftw
+
+   ..  caution::
+
+      TODO! (only integers accepted)
 
 Please see the default rule files for more extensive examples that cover
 other aspects like limiting a rule to certain dependency types.
@@ -1307,14 +1327,13 @@ Dependencies
       Dependency strings cannot start with *~* as it is a keychar.
       Use braces *( ~... )* to work around that.
 
-
 Single line rules
    resolve exactly one *dependency string*. Their rule separator is ' :: '.
 
    Syntax:
       .. code:: text
 
-         [<keychar>]<dependency> :: <dependency string>
+         [<keychar>]<dependency>[<rule options>] :: <dependency string>
 
 Multi line rules
    resolve several *dependency strings*.
@@ -1324,7 +1343,7 @@ Multi line rules
    Syntax:
       .. code-block:: text
 
-         [<keychar>]<dependency> {
+         [<keychar>]<dependency>[<rule options>] {
             <dependency string>
             [<dependency string>]
             ...
@@ -1336,6 +1355,42 @@ Multi line rules
       zero or more *dependency strings*. An empty rule makes little sense,
       though.
 
+Rule Options
+   Certain rule types accept options that control the rule's behavior.
+   For example, *default* fuzzy rules can be set up to yield slotted
+   dependencies.
+
+Fuzzy Slot Rules
+   <<TODO>>
+
+   Fuzzy Slot rules are a subtype of *default* fuzzy rules. Appending a colon
+   character ``:`` to the *dependency string* of a fuzzy rules
+   (as *rule option*) turns it into a slot rule.
+
+   Fuzzy slot rules accept even more options:
+
+   * accepted slot values can be restricted (integer range or list)
+   * *version,slot-relative* matches can be enabled (example, <<TODO>>: ``>=${CATEGORY}/${PN}-${PV}:${SLOT}${SLOT_SUFFIX-}``)
+   * a *slot suffix* can be specified (e.g. for using *Atom Slot Operators*)
+
+   ..  code-block:: text
+
+      fuzzy slot options := [:<slot restrict>]:{+<flag>}[<slot suffix>]
+      flag               := v
+      slot restrict      := <restrict range> | <restrict list>
+      restrict range     := [<number>]..[<number>]
+      restrict list      := <number>{,<number>}
+
+      # slot suffix can be any string that starts with '/', '=' or '*'
+      # number is a natural number (0..N)
+
+
+
+   ..  Note::
+
+      Fuzzy Slot rules cannot resolve "not <version>" statements, e.g.
+      "R ( != 2.14 )".
+
 Comments
    start with **#**. There are a few exceptions to that, the *#deptype* and
    *#! NOPARSE* keywords. Comments inside rule blocks are not allowed and
@@ -1380,7 +1435,7 @@ Rule Stubs
    Syntax:
       .. code:: text
 
-         [<keychar>]<short dependency>
+         [<keychar>]<short dependency>[<rule options>]
 
 
 ===============


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [gentoo-commits] proj/R_overlay:gsoc13/next commit in: doc/rst/
@ 2013-07-03 10:04 André Erdmann
  0 siblings, 0 replies; 12+ messages in thread
From: André Erdmann @ 2013-07-03 10:04 UTC (permalink / raw
  To: gentoo-commits

commit:     1e797b7bcafc6b364190961ef74b63febe10b9e9
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Wed Jul  3 09:57:49 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Wed Jul  3 09:57:49 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=1e797b7b

doc/rst: SLOT handling

---
 doc/rst/usage.rst | 53 +++++++++++++++++++++++++++++++----------------------
 1 file changed, 31 insertions(+), 22 deletions(-)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index f3e2e18..54ed6d3 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -1242,11 +1242,15 @@ Example 4 - *ignore* simple rule
 
 Example 5 - fuzzy slot rule
    A rule that matches many dependencies on sci-libs/fftw and resolves them
-   as slotted depencency:
+   as slotted depencency. The ``s=<range>`` option controls which parts of the
+   version (from the dependency string) are relevant for calculating the
+   slot. The following example resolves "fftw 2.1", "fftw 2.1.2" and
+   "fftw 2.1.3" as "sci-libs/fftw:2.1", "fftw 3.0" as "sci-libs/fftw:3.0"
+   and so on:
 
    .. code-block:: text
 
-      ~sci-libs/fftw: :: fftw
+      ~sci-libs/fftw:s=0..1 :: fftw
 
 Example 6 - slot-restricted fuzzy slot rule
    Similar to example 5, but this rule does not resolve anything unless the
@@ -1254,11 +1258,17 @@ Example 6 - slot-restricted fuzzy slot rule
 
    .. code-block:: text
 
-      ~sci-libs/fftw:2.1,3.0: :: fftw
+      ~sci-libs/fftw:s=0..1:restrict=2.1,3.0: :: fftw
 
-   ..  caution::
+Example 7 - slot-restricted fuzzy slot rule with *immediate* value
+   Example 6 is not quite correct, as sci-libs/fftw currently uses slot 3.0
+   for various versions from the 3.x range. The following rule resolves
+   "fftw 3.0", ..., "fftw 3.3" as "sci-libs/fftw:3.0":
+
+   .. code-block:: text
+
+      ~sci-libs/fftw:s=i3.0:restrict=3.0,3.1,3.2,3.3 :: fftw
 
-      TODO! (only integers accepted)
 
 Please see the default rule files for more extensive examples that cover
 other aspects like limiting a rule to certain dependency types.
@@ -1361,30 +1371,29 @@ Rule Options
    dependencies.
 
 Fuzzy Slot Rules
-   <<TODO>>
-
    Fuzzy Slot rules are a subtype of *default* fuzzy rules. Appending a colon
-   character ``:`` to the *dependency string* of a fuzzy rules
+   character ``:`` to the *dependency string* of a fuzzy rule
    (as *rule option*) turns it into a slot rule.
 
-   Fuzzy slot rules accept even more options:
-
-   * accepted slot values can be restricted (integer range or list)
-   * *version,slot-relative* matches can be enabled (example, <<TODO>>: ``>=${CATEGORY}/${PN}-${PV}:${SLOT}${SLOT_SUFFIX-}``)
-   * a *slot suffix* can be specified (e.g. for using *Atom Slot Operators*)
-
-   ..  code-block:: text
+   Fuzzy slot rules accept even more options, each of them separated by one
+   colong char ``:``:
 
-      fuzzy slot options := [:<slot restrict>]:{+<flag>}[<slot suffix>]
-      flag               := v
-      slot restrict      := <restrict range> | <restrict list>
-      restrict range     := [<number>]..[<number>]
-      restrict list      := <number>{,<number>}
+   * slot mode:
 
-      # slot suffix can be any string that starts with '/', '=' or '*'
-      # number is a natural number (0..N)
+     * ``default``: calculate a slot value (``<cat>/<pkg>:<SLOT>``)
+     * ``with_version`` or ``+v``: include version, too (``=<cat>/<pkg>-<pkgver>:<SLOT>``)
+     * ``open``: non-versioned slot (``<cat>/<pkg>:*`` or ``<cat>/<pkg>:=``)
 
+   * accepted *calculated* slot values can be restricted with
+     ``restrict=<list of accepted values`` or ``r=<list>``
+   * relevant slot parts can be set with ``slotparts=<selection>`` or
+     ``s=<selection>``
+   * relevant subslot parts can be set with ``subslotparts=<selection>`` or
+     ``/<selection>``
+   * slot operator can be set to ``*`` or ``=``
 
+   ``<selection>`` can be an index (integer) range
+   ``[<low>:=0]..[<high>:=<low>]`` or a fixed value ``i<value>``.
 
    ..  Note::
 


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [gentoo-commits] proj/R_overlay:gsoc13/next commit in: doc/rst/
@ 2013-07-15 22:31 André Erdmann
  2013-07-16 16:36 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
  0 siblings, 1 reply; 12+ messages in thread
From: André Erdmann @ 2013-07-15 22:31 UTC (permalink / raw
  To: gentoo-commits

commit:     e09da4f72660a0e564b57c9439f9dddaaf7c9186
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Mon Jul 15 22:31:14 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Mon Jul 15 22:31:14 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=e09da4f7

doc/rst: selfdep validation, add TODO sections

---
 doc/rst/usage.rst | 128 ++++++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 100 insertions(+), 28 deletions(-)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index 54ed6d3..36fa031 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -85,11 +85,13 @@ Expected prior knowlegde:
 
 * argparse (http://code.google.com/p/argparse)
 
+* setuptools (http://pypi.python.org/pypi/setuptools)
+
 * rsync (for using rsync repositories)
 
 * for Manifest creation:
 
-  * portage (*ebuild* and/or the *portage libs* directly)
+  * portage (*ebuild*)
   * *true* or *echo* from coreutils or busybox for preventing
     package downloads during Manifest creation (optional)
 
@@ -110,7 +112,7 @@ Expected prior knowlegde:
       using a slower one.
 
    time
-      Expect 3-6h execution time for the first run, depending on computing
+      Expect 1h execution time for the first run, depending on computing
       and I/O speed. *roverlay* is able to work in incremental mode,
       thus making subsequent runs need a lot less time.
 
@@ -211,6 +213,17 @@ The config file is a text file with '<option> = <value>' syntax. Some options
 accept multiple values (e.g. <option> = file1, file2), in which case the
 values have to be enclosed with quotes (-> ``<option> = "file1 file2"``).
 
+If roverlay has been installed, then ``emerge --config roverlay`` can be
+used to set up the config file as well as to create essential directories.
+It can be run multiple times in order to configure roverlay for more than
+one user.
+
+..  Important::
+
+   ``emerge --config roverlay`` will overwrite the user's config file (or
+   /etc/roverlay/R-overlay.conf when configuring for root).
+
+
 The following options should be set before running *roverlay*:
 
    OVERLAY_DIR
@@ -350,6 +363,10 @@ have reasonable defaults if *roverlay* has been installed using *emerge*:
 
       Example: DISTDIR_FLAT = yes
 
+   PORTDIR
+      Portage directory, which is used to scan for valid licenses.
+
+      Example: PORTDIR = /usr/portage
 
 There is another option that is useful for creating new dependency rules,
 LOG_FILE_UNRESOLVABLE_, which will write all unresolvable dependencies
@@ -569,6 +586,9 @@ These are the steps that *roverlay* performs:
     * **immediately stop** processing *p* if a *required* dependency
       cannot be resolved in which case a valid ebuild cannot be created
 
+    * verify dependencies on packages found in the overlay, whether their
+      ebuilds already exist or not (*selfdep validation*)
+
       See also: `Dependency Resolution`_
 
   * create an ebuild for *p* by using the dependency resolution results
@@ -1106,11 +1126,6 @@ Ebuilds imported that way can not be overwritten by generated ebuilds and
 benefit from most overlay creation features, e.g. Manifest file creation.
 However, they cannot be used for metadata creation.
 
-..  Important::
-
-   Importing ebuilds is only supported by the default Manifest implementation
-   (*ebuildmanifest*).
-
 
 ==================
  Dependency Rules
@@ -1314,6 +1329,15 @@ Keywords
    * *all* (no type restrictions)
    * *pkg* (resolve only R package dependencies)
    * *sys* (resolve only system dependencies)
+   * *selfdep* (subtype: dependency is part of the overlay, see selfdep below)
+
+   The dependency type can also be a comma-separated list of the listed types.
+   Actually, *all* is an abbreviated version of ``pkg,sys``.
+   Specifying *selfdep* alone does not resolve anything.
+
+   ..  Hint::
+
+      Check the *dependency type* if a newly added rule has no effect.
 
    The other keyword is *#! NOPARSE* which stops parsing of a rule file.
 
@@ -1406,16 +1430,28 @@ Comments
    will be read as normal *dependency strings*.
 
 Selfdep
-   This is another name for *dependency strings* that are resolved by an
-   R package with the same name, which is also part of the overlay being
-   created.
+   This is a classification for dependencies on packages which are also part
+   of the overlay being created. Typically, selfdeps refer to other R
+   packages, but there may be a few exceptions.
+
+   roverlay validates *selfdeps* during overlay creation, which is the most
+   significant difference to non-*selfdeps*.
+
+   Selfdep rules can be written by prefixing a single rule with ``@selfdep``
+   (in a separate text line) or by adding ``selfdep`` to the dependency rule
+   type.
+
+
+   There is a second variant of selfdeps, *true selfdeps*, which resolve
+   a *dependency string* as R package with the same name.
+
 
-   Example: *zoo* is resolved as *sci-R/zoo*, assuming that `OVERLAY_CATEGORY`_
-   is set to *sci-R*
+   Example: *zoo* is resolved as *sci-R/zoo*, assuming that
+   `OVERLAY_CATEGORY`_ is set to *sci-R*.
 
-   Writing selfdep rules is not necessary since *roverlay* automatically
-   creates rules for all known R packages (see `Dynamic Selfdep Rule Pool`_
-   for details).
+   Writing such selfdep rules is not necessary since *roverlay* automatically
+   creates rules for all known R packages at runtime (see
+   `Dynamic Selfdep Rule Pool`_ for details).
 
    There are a few exceptions to that in which case selfdep rules have to
    be written:
@@ -1424,15 +1460,10 @@ Selfdep
      R package). This is likely a "bug" in the DESCRIPTION file of the
      R package being processed.
 
-   * The R package name is not ebuild-name compliant (e.g. contains the '.'
-     char, which is remapped to '_'.).
-     Most *char remap* cases are handled properly, but there may be a few
-     exceptions.
-
    .. Caution::
 
-      Writing unnecessary selfdep rules slows dependency resolution down!
-      Each rule will exist twice, once as *dynamic* rule and once as
+      Writing unnecessary *true selfdep* rules slows dependency resolution
+      down! Each rule will exist twice, once as *dynamic* rule and once as
       the written one.
 
 
@@ -2524,10 +2555,12 @@ OVERLAY_KEEP_NTH_LATEST
 
 OVERLAY_MANIFEST_IMPLEMENTATION
    Sets the implementation that will be used for Manifest file writing.
-   Available choices are *ebuild*, *portage*, *default* and *none*.
-   Defaults to *default* (-> *ebuild*).
-   *portage* is highly experimental and therefore not recommended
-   for production usage.
+   Available choices are *ebuild*, *next*, *default* and *none*.
+   Defaults to *default* (-> *next*).
+
+   *next* is an mostly internal implementation that is considerably faster
+   than *ebuild*. *ebuild* is still used when creating Manifest files for
+   imported ebuilds.
 
    .. Note::
 
@@ -2966,6 +2999,13 @@ Known field flags:
       Declares that a field's value is a list whose values are separated by
       whitespace. Has no effect if `field flag: isList` is set.
 
+   .. _field flag\: isLicense:
+
+   isLicense
+      Declares that a field's value should be interpreted as license string.
+      This disables *allowed_value*/*allowed_values* and all other flags
+      except for *mandatory*/*optional*.
+
    .. _field flag\: mandatory:
    .. _'mandatory' field flag:
 
@@ -3162,6 +3202,14 @@ Example Session:
       cmd % exit
 
 
+====================
+ Roverlay Interface
+====================
+
+<<TODO: stub only>>
+
+API to roverlay functionality. Currently supports dependency resolution.
+
 =========================
  Implementation Overview
 =========================
@@ -3353,6 +3401,8 @@ for which an ebuild has been created.
  Manifest Creation
 +++++++++++++++++++
 
+<<TODO:this section is totally out of date>>
+
 Manifest files are created by calling the *ebuild* executable for each
 package directory in a filtered environment where FETCHCOMMAND and
 RESUMECOMMAND are set to no-operation. The directories that contain the R
@@ -3374,6 +3424,14 @@ It does the following steps:
 
 #. Call `dependency resolution`_
 
+#. If dependency resolution was successful and any *selfdeps* found
+   (dependencies on other packages): *pause* ebuild creation for *p* until
+   it has been verified whether these dependencies are satisfiable.
+   This is necessary because dependency resolution does not know whether a
+   resolved dependency is actually valid. To realize this, *roverlay* collects
+   paused ebuild creation jobs after processing all packages, performs
+   *selfdep validation* and then continues ebuild creation.
+
 #. If dependency resolution was successful, dependency ebuild variables are
    created (*DEPEND*, *RDEPEND* and *R_SUGGESTS*, also *IUSE*, *MISSINGDEPS*).
    Otherwise **ebuild creation stops** and *p* is marked as
@@ -3414,6 +3472,13 @@ afterwards. Overlay creation keeps going if an ebuild cannot be created,
 instead the event is logged. Running more than one *OverlayWorker* in parallel
 is possible.
 
+++++++++++++++++++++
+ Selfdep Validation
+++++++++++++++++++++
+
+<<TODO: specify algo here>>
+
+
 -----------------------
  Dependency Resolution
 -----------------------
@@ -3467,6 +3532,13 @@ System Dependency
    This declares that the *dependency string* could be a system dependency,
    e.g. a scientific library or a video encoder.
 
+Selfdep
+   This declares that the resolved dependency has to pass
+   *selfdep validation*. While *selfdep* usually implies *package*, these
+   types are not the same. The *package* type is applied to *dependency strings*
+   based on their origin (DESCRIPTION field), whereas *selfdep* is a property
+   of the resolving rule.
+
 Try other dependency types
    This declares that the *dependency string* can be resolved by ignoring its
    dependency type partially. This property allows to resolve package
@@ -3602,8 +3674,8 @@ R packages" to create rules.
 .. _Dynamic Selfdep Rule Pool:
 
 *roverlay* uses one dynamic rule pool, the **Dynamic Selfdep Rule Pool**.
-This pool contains rules for all known R packages and is able to resolve
-R package dependencies.
+This pool contains *selfdep* rules for all known R packages and is able
+to resolve R package dependencies.
 By convention, it will never resolve any system dependencies.
 
 +++++++++++++++++++++++++++++


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [gentoo-commits] proj/R_overlay:gsoc13/next commit in: doc/rst/
@ 2013-07-16 16:35 André Erdmann
  0 siblings, 0 replies; 12+ messages in thread
From: André Erdmann @ 2013-07-16 16:35 UTC (permalink / raw
  To: gentoo-commits

commit:     d7db304d7a087f04613cc0d62cf0d39504311f14
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Tue Jul 16 16:33:22 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Tue Jul 16 16:33:22 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=d7db304d

doc/rst: api, manifest creation

---
 doc/rst/usage.rst | 77 +++++++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 67 insertions(+), 10 deletions(-)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index 36fa031..df18824 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -2311,8 +2311,6 @@ CACHEDIR
 
    This option is **required**.
 
-   <<TODO: default value!>>
-
 .. _DISTFILES:
 
 DISTFILES
@@ -3206,9 +3204,63 @@ Example Session:
  Roverlay Interface
 ====================
 
-<<TODO: stub only>>
+Roverlay provides an API for accessing its functionality independently of
+R overlay creation. Only dependency resolution is available, currently.
+
+Note, however, that a minimal config file may still be required for accessing
+*roverlay interfaces*.
+
+The table below lists all interfaces and where to find them:
+
+.. table:: roverlay interfaces
+
+   +-----------------+---------------------------+-----------------------------+
+   | name            | module                    | description                 |
+   +=================+===========================+=============================+
+   | RootInterface   | roverlay.interface.root   | meta interface for managing |
+   |                 |                           | other interfaces            |
+   +-----------------+---------------------------+-----------------------------+
+   | MainInterface   | roverlay.interface.main   | RootInterface with delayed  |
+   |                 |                           | initialization              |
+   +-----------------+---------------------------+-----------------------------+
+   | DepresInterface | roverlay.interface.depres | dependency resolution       |
+   +-----------------+---------------------------+-----------------------------+
+
+
+For extending the API, roverlay provides the abstract *RoverlayInterface* and
+*RoverlaySubInterface* classes.
+
+
+------------------
+ DepRes Interface
+------------------
+
+The *DepResInterface* offers the following functionality:
+
+* rule creation
+
+  * load rules from text input, files and/or configured files (SIMPLE_RULES_FILE_)
+
+  * *compile* rules after loading them
+
+* manage dependency rule pools (container for rules)
+
+  * rule pools are kept in a stack-like data structure, which makes it easy
+    to "forget" the most recent rules (*discard_pool()* et al.)
 
-API to roverlay functionality. Currently supports dependency resolution.
+  * *visualize* pools: convert rules into text (inverse of rule creation)
+
+* easy access to the resolver via *resolve()*, *can_resolve()*
+  and *cannot_resolve()*
+
+* "low-level" access to dependency resolution, e.g. *EbuildJobChannels*, is
+  also possible
+
+
+Refer to in-code documentation on how to use this interface.
+See the dependency resolution test suite for a usage example
+(``tests.depres``, not part of the roverlay installation).
+(The depres console is also a candidate for using this interface in future.)
 
 =========================
  Implementation Overview
@@ -3401,13 +3453,18 @@ for which an ebuild has been created.
  Manifest Creation
 +++++++++++++++++++
 
-<<TODO:this section is totally out of date>>
+Two implementations for writing manifest files are available, *ebuild* and
+*next*.
+
+The *ebuild* implementation calls the ``ebuild`` executable for each package
+directory in a filtered environment where where FETCHCOMMAND and
+RESUMECOMMAND are set to no-operation (/bin/true on systems that support it).
 
-Manifest files are created by calling the *ebuild* executable for each
-package directory in a filtered environment where FETCHCOMMAND and
-RESUMECOMMAND are set to no-operation. The directories that contain the R
-package files are passed in the PORTAGE_RO_DISTDIRS variable and DISTDIR
-is set to `DISTFILES_ROOT`_/__tmp__.
+*next* is an internal implementation that uses the
+``roverlay.overlay.pkgdir.manifest`` module for creating Manifest files.
+It falls back to *ebuild* when creating Manifest entries for imported ebuilds,
+since roverlay does not support reading *SRC_URI* from ebuilds reliably (that
+would require variable interpolation, e.g. for ``${PN}``).
 
 
 -----------------


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [gentoo-commits] proj/R_overlay:master commit in: doc/rst/
  2013-07-15 22:31 [gentoo-commits] proj/R_overlay:gsoc13/next commit in: doc/rst/ André Erdmann
@ 2013-07-16 16:36 ` André Erdmann
  0 siblings, 0 replies; 12+ messages in thread
From: André Erdmann @ 2013-07-16 16:36 UTC (permalink / raw
  To: gentoo-commits

commit:     e09da4f72660a0e564b57c9439f9dddaaf7c9186
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Mon Jul 15 22:31:14 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Mon Jul 15 22:31:14 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=e09da4f7

doc/rst: selfdep validation, add TODO sections

---
 doc/rst/usage.rst | 128 ++++++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 100 insertions(+), 28 deletions(-)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index 54ed6d3..36fa031 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -85,11 +85,13 @@ Expected prior knowlegde:
 
 * argparse (http://code.google.com/p/argparse)
 
+* setuptools (http://pypi.python.org/pypi/setuptools)
+
 * rsync (for using rsync repositories)
 
 * for Manifest creation:
 
-  * portage (*ebuild* and/or the *portage libs* directly)
+  * portage (*ebuild*)
   * *true* or *echo* from coreutils or busybox for preventing
     package downloads during Manifest creation (optional)
 
@@ -110,7 +112,7 @@ Expected prior knowlegde:
       using a slower one.
 
    time
-      Expect 3-6h execution time for the first run, depending on computing
+      Expect 1h execution time for the first run, depending on computing
       and I/O speed. *roverlay* is able to work in incremental mode,
       thus making subsequent runs need a lot less time.
 
@@ -211,6 +213,17 @@ The config file is a text file with '<option> = <value>' syntax. Some options
 accept multiple values (e.g. <option> = file1, file2), in which case the
 values have to be enclosed with quotes (-> ``<option> = "file1 file2"``).
 
+If roverlay has been installed, then ``emerge --config roverlay`` can be
+used to set up the config file as well as to create essential directories.
+It can be run multiple times in order to configure roverlay for more than
+one user.
+
+..  Important::
+
+   ``emerge --config roverlay`` will overwrite the user's config file (or
+   /etc/roverlay/R-overlay.conf when configuring for root).
+
+
 The following options should be set before running *roverlay*:
 
    OVERLAY_DIR
@@ -350,6 +363,10 @@ have reasonable defaults if *roverlay* has been installed using *emerge*:
 
       Example: DISTDIR_FLAT = yes
 
+   PORTDIR
+      Portage directory, which is used to scan for valid licenses.
+
+      Example: PORTDIR = /usr/portage
 
 There is another option that is useful for creating new dependency rules,
 LOG_FILE_UNRESOLVABLE_, which will write all unresolvable dependencies
@@ -569,6 +586,9 @@ These are the steps that *roverlay* performs:
     * **immediately stop** processing *p* if a *required* dependency
       cannot be resolved in which case a valid ebuild cannot be created
 
+    * verify dependencies on packages found in the overlay, whether their
+      ebuilds already exist or not (*selfdep validation*)
+
       See also: `Dependency Resolution`_
 
   * create an ebuild for *p* by using the dependency resolution results
@@ -1106,11 +1126,6 @@ Ebuilds imported that way can not be overwritten by generated ebuilds and
 benefit from most overlay creation features, e.g. Manifest file creation.
 However, they cannot be used for metadata creation.
 
-..  Important::
-
-   Importing ebuilds is only supported by the default Manifest implementation
-   (*ebuildmanifest*).
-
 
 ==================
  Dependency Rules
@@ -1314,6 +1329,15 @@ Keywords
    * *all* (no type restrictions)
    * *pkg* (resolve only R package dependencies)
    * *sys* (resolve only system dependencies)
+   * *selfdep* (subtype: dependency is part of the overlay, see selfdep below)
+
+   The dependency type can also be a comma-separated list of the listed types.
+   Actually, *all* is an abbreviated version of ``pkg,sys``.
+   Specifying *selfdep* alone does not resolve anything.
+
+   ..  Hint::
+
+      Check the *dependency type* if a newly added rule has no effect.
 
    The other keyword is *#! NOPARSE* which stops parsing of a rule file.
 
@@ -1406,16 +1430,28 @@ Comments
    will be read as normal *dependency strings*.
 
 Selfdep
-   This is another name for *dependency strings* that are resolved by an
-   R package with the same name, which is also part of the overlay being
-   created.
+   This is a classification for dependencies on packages which are also part
+   of the overlay being created. Typically, selfdeps refer to other R
+   packages, but there may be a few exceptions.
+
+   roverlay validates *selfdeps* during overlay creation, which is the most
+   significant difference to non-*selfdeps*.
+
+   Selfdep rules can be written by prefixing a single rule with ``@selfdep``
+   (in a separate text line) or by adding ``selfdep`` to the dependency rule
+   type.
+
+
+   There is a second variant of selfdeps, *true selfdeps*, which resolve
+   a *dependency string* as R package with the same name.
+
 
-   Example: *zoo* is resolved as *sci-R/zoo*, assuming that `OVERLAY_CATEGORY`_
-   is set to *sci-R*
+   Example: *zoo* is resolved as *sci-R/zoo*, assuming that
+   `OVERLAY_CATEGORY`_ is set to *sci-R*.
 
-   Writing selfdep rules is not necessary since *roverlay* automatically
-   creates rules for all known R packages (see `Dynamic Selfdep Rule Pool`_
-   for details).
+   Writing such selfdep rules is not necessary since *roverlay* automatically
+   creates rules for all known R packages at runtime (see
+   `Dynamic Selfdep Rule Pool`_ for details).
 
    There are a few exceptions to that in which case selfdep rules have to
    be written:
@@ -1424,15 +1460,10 @@ Selfdep
      R package). This is likely a "bug" in the DESCRIPTION file of the
      R package being processed.
 
-   * The R package name is not ebuild-name compliant (e.g. contains the '.'
-     char, which is remapped to '_'.).
-     Most *char remap* cases are handled properly, but there may be a few
-     exceptions.
-
    .. Caution::
 
-      Writing unnecessary selfdep rules slows dependency resolution down!
-      Each rule will exist twice, once as *dynamic* rule and once as
+      Writing unnecessary *true selfdep* rules slows dependency resolution
+      down! Each rule will exist twice, once as *dynamic* rule and once as
       the written one.
 
 
@@ -2524,10 +2555,12 @@ OVERLAY_KEEP_NTH_LATEST
 
 OVERLAY_MANIFEST_IMPLEMENTATION
    Sets the implementation that will be used for Manifest file writing.
-   Available choices are *ebuild*, *portage*, *default* and *none*.
-   Defaults to *default* (-> *ebuild*).
-   *portage* is highly experimental and therefore not recommended
-   for production usage.
+   Available choices are *ebuild*, *next*, *default* and *none*.
+   Defaults to *default* (-> *next*).
+
+   *next* is an mostly internal implementation that is considerably faster
+   than *ebuild*. *ebuild* is still used when creating Manifest files for
+   imported ebuilds.
 
    .. Note::
 
@@ -2966,6 +2999,13 @@ Known field flags:
       Declares that a field's value is a list whose values are separated by
       whitespace. Has no effect if `field flag: isList` is set.
 
+   .. _field flag\: isLicense:
+
+   isLicense
+      Declares that a field's value should be interpreted as license string.
+      This disables *allowed_value*/*allowed_values* and all other flags
+      except for *mandatory*/*optional*.
+
    .. _field flag\: mandatory:
    .. _'mandatory' field flag:
 
@@ -3162,6 +3202,14 @@ Example Session:
       cmd % exit
 
 
+====================
+ Roverlay Interface
+====================
+
+<<TODO: stub only>>
+
+API to roverlay functionality. Currently supports dependency resolution.
+
 =========================
  Implementation Overview
 =========================
@@ -3353,6 +3401,8 @@ for which an ebuild has been created.
  Manifest Creation
 +++++++++++++++++++
 
+<<TODO:this section is totally out of date>>
+
 Manifest files are created by calling the *ebuild* executable for each
 package directory in a filtered environment where FETCHCOMMAND and
 RESUMECOMMAND are set to no-operation. The directories that contain the R
@@ -3374,6 +3424,14 @@ It does the following steps:
 
 #. Call `dependency resolution`_
 
+#. If dependency resolution was successful and any *selfdeps* found
+   (dependencies on other packages): *pause* ebuild creation for *p* until
+   it has been verified whether these dependencies are satisfiable.
+   This is necessary because dependency resolution does not know whether a
+   resolved dependency is actually valid. To realize this, *roverlay* collects
+   paused ebuild creation jobs after processing all packages, performs
+   *selfdep validation* and then continues ebuild creation.
+
 #. If dependency resolution was successful, dependency ebuild variables are
    created (*DEPEND*, *RDEPEND* and *R_SUGGESTS*, also *IUSE*, *MISSINGDEPS*).
    Otherwise **ebuild creation stops** and *p* is marked as
@@ -3414,6 +3472,13 @@ afterwards. Overlay creation keeps going if an ebuild cannot be created,
 instead the event is logged. Running more than one *OverlayWorker* in parallel
 is possible.
 
+++++++++++++++++++++
+ Selfdep Validation
+++++++++++++++++++++
+
+<<TODO: specify algo here>>
+
+
 -----------------------
  Dependency Resolution
 -----------------------
@@ -3467,6 +3532,13 @@ System Dependency
    This declares that the *dependency string* could be a system dependency,
    e.g. a scientific library or a video encoder.
 
+Selfdep
+   This declares that the resolved dependency has to pass
+   *selfdep validation*. While *selfdep* usually implies *package*, these
+   types are not the same. The *package* type is applied to *dependency strings*
+   based on their origin (DESCRIPTION field), whereas *selfdep* is a property
+   of the resolving rule.
+
 Try other dependency types
    This declares that the *dependency string* can be resolved by ignoring its
    dependency type partially. This property allows to resolve package
@@ -3602,8 +3674,8 @@ R packages" to create rules.
 .. _Dynamic Selfdep Rule Pool:
 
 *roverlay* uses one dynamic rule pool, the **Dynamic Selfdep Rule Pool**.
-This pool contains rules for all known R packages and is able to resolve
-R package dependencies.
+This pool contains *selfdep* rules for all known R packages and is able
+to resolve R package dependencies.
 By convention, it will never resolve any system dependencies.
 
 +++++++++++++++++++++++++++++


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [gentoo-commits] proj/R_overlay:gsoc13/next commit in: doc/rst/
@ 2013-07-23 14:57 André Erdmann
  0 siblings, 0 replies; 12+ messages in thread
From: André Erdmann @ 2013-07-23 14:57 UTC (permalink / raw
  To: gentoo-commits

commit:     c9055b8a4cc87a7518710bd7a2ff7a1f57ad97ee
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Tue Jul 23 14:30:05 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Tue Jul 23 14:30:42 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=c9055b8a

doc/rst: "fix" example 3 in dependency rules

Due to changes in the depresolver, the old example does no longer work.

---
 doc/rst/usage.rst | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index df18824..01c3411 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -1230,16 +1230,13 @@ Example 2 - *default* simple rule stub
 		be resolved. See *Selfdep* in `Rule File Syntax`_ for details.
 
 Example 3 - *default* simple rule
-   A rule that matches several *dependency strings* and resolves them
-   as "sci-libs/gdal and sci-libs/proj":
+   A rule that matches a *dependency string* and resolves it
+   as "virtual/blas and virtual/lapack":
 
    .. code-block:: text
 
-      ( sci-libs/gdal sci-libs/proj ) {
-         for building from source: GDAL >= 1.3.1 && GDAL < 1.6.0 (until tested) library and PROJ.4 (proj >= 4.4.9)
-         for building from source: GDAL >= 1.3.1 library and PROJ.4 (proj >= 4.4.9)
-         for building from source: GDAL >= 1.3.1 library and PROJ.4(proj >= 4.4.9)
-         for building from source: GDAL >= 1.6.0 library and PROJ.4(proj >= 4.4.9)
+      ( virtual/blas virtual/lapack ) {
+         BLAS/LAPACK libraries
       }
 
 Example 4 - *ignore* simple rule


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [gentoo-commits] proj/R_overlay:gsoc13/next commit in: doc/rst/
@ 2013-07-23 18:34 André Erdmann
  0 siblings, 0 replies; 12+ messages in thread
From: André Erdmann @ 2013-07-23 18:34 UTC (permalink / raw
  To: gentoo-commits

commit:     1dc64039a45eb41f785f9f64a4ddbf9464e018ba
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Tue Jul 23 18:33:54 2013 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Tue Jul 23 18:33:54 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=1dc64039

doc/rst: add hook environment changes

---
 doc/rst/usage.rst | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/doc/rst/usage.rst b/doc/rst/usage.rst
index 01c3411..204de09 100644
--- a/doc/rst/usage.rst
+++ b/doc/rst/usage.rst
@@ -542,6 +542,43 @@ to symbolic links if hard links are not supported. This should be fine in
 most cases, but fine-tuning can be done via OVERLAY_DISTDIR_STRATEGY_ and
 OVERLAY_DISTDIR_FLAT_.
 
+------------------
+ roverlay helpers
+------------------
+
+An installation of roverlay includes some helper programs:
+
+*roverlay-sh*
+   a wrapper around /bin/sh that runs a shell or shell script in roverlay's
+   `hook environment`_.
+
+   roverlay-related scripts can use it to automatically inherit roverlay's
+   config and ``$FUNCTIONS`` file:
+
+   ..  code-block:: sh
+
+      #!/usr/bin/roverlay-sh
+
+      # reset DEBUG, VERBOSE, QUIET
+      DEBUG=n; QUIET=n; VERBOSE=y
+
+      # load the functions file (optional)
+      . "${FUNCTIONS?}" || exit
+
+      # script body
+      true
+
+   <<TODO: maybe there's a better place for the details>>
+
+
+*name_is_todo--roverlay_creation_helper*
+   <<TODO>>
+   Safely runs overlay creation <<and $$afterwards>>.
+   Suitable for being run as cron job.
+
+
+
+
 ===============================
  Basic Implementation Overview
 ===============================
@@ -2027,6 +2064,8 @@ the config file. An empty string sets the policy to *deny all*.
    +----------------+-------------------+-----------------------------------------+
    | ROVERLAY_PHASE | event             | event that caused the script to run     |
    +----------------+-------------------+-----------------------------------------+
+   | OVERLAY_NAME   | config            | name of the overlay                     |
+   +----------------+-------------------+-----------------------------------------+
    | OVERLAY        | config            | overlay directory (`OVERLAY_DIR`_),     |
    +----------------+-------------------+ initial working directory               |
    | S              | *$OVERLAY*        |                                         |
@@ -2046,6 +2085,9 @@ the config file. An empty string sets the policy to *deny all*.
    +----------------+-------------------+                                         |
    | FILESDIR       | *$ADDITIONS_DIR*  |                                         |
    +----------------+-------------------+-----------------------------------------+
+   | WORKDIR        | config            | directory for work data                 |
+   |                |                   | (`CACHEDIR`_)                           |
+   +----------------+-------------------+-----------------------------------------+
    | SHLIB          | *$ADDITIONS_DIR*, | A list of directories with shell        |
    |                | *installed?*      | function files                          |
    |                |                   | (optional, only set if any dir exists)  |
@@ -2053,6 +2095,19 @@ the config file. An empty string sets the policy to *deny all*.
    | FUNCTIONS      | *$ADDITIONS_DIR*, | file with essential shell functions     |
    |                | *installed?*      | (optional, only set if it exists)       |
    +----------------+-------------------+-----------------------------------------+
+   | DATADIR        | *installed?*      | location of installed data files        |
+   |                |                   | (directory, usually                     |
+   |                |                   | */usr/share/roverlay*)                  |
+   +----------------+-------------------+-----------------------------------------+
+   | ROVERLAY\      | sys.argv          | path to the roverlay executable that    |
+   | _HELPER_EXE    |                   | created the hook environment            |
+   |                |                   | (usually */usr/bin/roverlay* or         |
+   |                |                   | */usr/bin/roverlay-sh*)                 |
+   +----------------+-------------------+-----------------------------------------+
+   | ROVERLAY_EXE   | guessed,          | guessed path to the roverlay "main"     |
+   |                | *$ROVERLAY\       | executable (which creates the overlay)  |
+   |                | _HELPER_EXE*      |                                         |
+   +----------------+-------------------+-----------------------------------------+
    | DEBUG          | log level         | *shbool* (``y`` or ``n``) that          |
    |                |                   | indicates whether debug messages should |
    |                |                   | be printed                              |


^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2013-07-23 18:34 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-15 22:31 [gentoo-commits] proj/R_overlay:gsoc13/next commit in: doc/rst/ André Erdmann
2013-07-16 16:36 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
  -- strict thread matches above, loose matches on Subject: below --
2013-07-23 18:34 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
2013-07-23 14:57 André Erdmann
2013-07-16 16:35 André Erdmann
2013-07-03 10:05 [gentoo-commits] proj/R_overlay:master " André Erdmann
2013-06-28 17:18 ` [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann
2013-07-03 10:04 André Erdmann
2013-06-26 17:29 André Erdmann
2013-06-25 21:10 André Erdmann
2013-06-18 14:12 André Erdmann
2013-06-12 21:10 André Erdmann
2013-06-05 18:08 André Erdmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox