From: "André Erdmann" <dywi@mailerd.de> To: gentoo-commits@lists.gentoo.org Subject: [gentoo-commits] proj/R_overlay:gsoc13/next commit in: doc/rst/ Date: Mon, 15 Jul 2013 22:31:48 +0000 (UTC) [thread overview] Message-ID: <1373927474.e09da4f72660a0e564b57c9439f9dddaaf7c9186.dywi@gentoo> (raw) 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. +++++++++++++++++++++++++++++
WARNING: multiple messages have this Message-ID (diff)
From: "André Erdmann" <dywi@mailerd.de> To: gentoo-commits@lists.gentoo.org Subject: [gentoo-commits] proj/R_overlay:master commit in: doc/rst/ Date: Tue, 16 Jul 2013 16:36:30 +0000 (UTC) [thread overview] Message-ID: <1373927474.e09da4f72660a0e564b57c9439f9dddaaf7c9186.dywi@gentoo> (raw) Message-ID: <20130716163630.lgiocbBHASx4Da6eMuZcmOBW3f2xi1uQiKfM6Xa9V38@z> (raw) 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. +++++++++++++++++++++++++++++
next reply other threads:[~2013-07-15 22:31 UTC|newest] Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-07-15 22:31 André Erdmann [this message] 2013-07-16 16:36 ` [gentoo-commits] proj/R_overlay:master commit in: doc/rst/ 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
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1373927474.e09da4f72660a0e564b57c9439f9dddaaf7c9186.dywi@gentoo \ --to=dywi@mailerd.de \ --cc=gentoo-commits@lists.gentoo.org \ --cc=gentoo-dev@lists.gentoo.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox