* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2011-02-17 21:08 Jeremy Olexa
0 siblings, 0 replies; 32+ messages in thread
From: Jeremy Olexa @ 2011-02-17 21:08 UTC (permalink / raw
To: gentoo-commits
commit: 2f4f4030eff56025d8b2b4fcdfd50f44739f8dfb
Author: Jeremy Olexa <darkside <AT> gentoo <DOT> org>
AuthorDate: Thu Feb 17 21:07:48 2011 +0000
Commit: Jeremy Olexa <darkside <AT> gentoo <DOT> org>
CommitDate: Thu Feb 17 21:07:48 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/devmanual.git;a=commit;h=2f4f4030
Improve wording about REDPEND
---
general-concepts/dependencies/text.xml | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 49b0ff1..671ccf8 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -31,10 +31,10 @@ exemptions).
<p>
The <c>RDEPEND</c> ebuild variable should specify any dependencies which are
required at runtime. This includes libraries (when dynamically linked), any data
-packages and (for interpreted languages) the relevant interpreter. If this
-variable is not specified, it defaults to the value of <c>DEPEND</c>, but you
-should always explicitly define <c>RDEPEND="${DEPEND}"</c> (as in the future
-this setting is planned to be removed from Portage).
+packages and (for interpreted languages) the relevant interpreter. In EAPI=3 or
+older, if this variable is not specified it defaults to the value of
+<c>DEPEND</c>, however the implicit usage is frowned upon. In EAPI=4, the
+implicit behaviour was removed and the assignment is always explicit.
</p>
<p>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2013-07-29 21:53 Julian Ospald
0 siblings, 0 replies; 32+ messages in thread
From: Julian Ospald @ 2013-07-29 21:53 UTC (permalink / raw
To: gentoo-commits
commit: b4cff9c0030cd3bb41b3248472cd2a134159e0dd
Author: hasufell <hasufell <AT> posteo <DOT> de>
AuthorDate: Mon Jul 29 21:52:11 2013 +0000
Commit: Julian Ospald <julian.ospald <AT> googlemail <DOT> com>
CommitDate: Mon Jul 29 21:52:11 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/devmanual.git;a=commit;h=b4cff9c0
add info about hardblockers wrt #407597
---
general-concepts/dependencies/text.xml | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index ce25fa7..587a0d7 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -208,7 +208,7 @@ asterisk. Also note that when selecting all versions in a specific
<p>
Sometimes two packages cannot be installed in parallel. This is handled by
-blockers. A blocker is specified as follows:
+blockers. A softblocker is specified as follows:
</p>
<codesample lang="ebuild">
@@ -216,7 +216,19 @@ RDEPEND="!app-misc/foo"
</codesample>
<p>
-Note that blockers are usually <e>runtime</e> rather than buildtime.
+Portage will try to resolve this conflict automatically if possible.
+Sometimes we need to use a hardblocker to ensure correct emerge order.
+Those cannot be resolved by Portage and must be taken care of by the user.
+A hardblocker is specified as follows:
+</p>
+
+<codesample lang="ebuild">
+RDEPEND="!!app-misc/foo"
+</codesample>
+
+<p>
+Hardblockers always take precedence over softblockers and need at least EAPI="2".
+Also note that blockers are usually <e>runtime</e> rather than buildtime.
</p>
<p>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2013-07-29 21:53 Julian Ospald
0 siblings, 0 replies; 32+ messages in thread
From: Julian Ospald @ 2013-07-29 21:53 UTC (permalink / raw
To: gentoo-commits
commit: 76f967c4282120b9c4fe5ffd58a2af6f8e2b5e1f
Author: hasufell <hasufell <AT> posteo <DOT> de>
AuthorDate: Mon Jul 29 21:52:27 2013 +0000
Commit: Julian Ospald <julian.ospald <AT> googlemail <DOT> com>
CommitDate: Mon Jul 29 21:52:27 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/devmanual.git;a=commit;h=76f967c4
add info to slot deps wrt #407597
---
general-concepts/dependencies/text.xml | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 587a0d7..8586db6 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -279,6 +279,15 @@ DEPEND="qt3? ( x11-libs/qt:3 )
gtk? ( x11-libs/gtk+:2 )
</codesample>
+<p>
+To depend on a specific version or version-range within a SLOT we use:
+</p>
+
+<codesample lang="ebuild">
+DEPEND="qt3? ( ~x11-libs/qt-3.3.8:3 )
+ gtk? ( >=x11-libs/gtk+-2.24.9:2 )
+</codesample>
+
<subsection>
<title>Slot Operators</title>
<body>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2014-10-18 17:40 Markos Chandras
0 siblings, 0 replies; 32+ messages in thread
From: Markos Chandras @ 2014-10-18 17:40 UTC (permalink / raw
To: gentoo-commits
commit: 9f29f77794f9329b6f5f5e1e2478bbefad9a8b6a
Author: Anthony Ryan <anthonyryan1 <AT> gmail <DOT> com>
AuthorDate: Tue Aug 19 21:19:41 2014 +0000
Commit: Markos Chandras <hwoarang <AT> gentoo <DOT> org>
CommitDate: Sat Oct 18 17:40:13 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/devmanual.git;a=commit;h=9f29f777
Document use dependency defaults on this section of the devmanual
---
general-concepts/dependencies/text.xml | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 8586db6..dc95e28 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -447,7 +447,6 @@ In order to use built with use dependencies you must specify <c>EAPI="2"</c>.
Available specifiers are:
</p>
-<p>
<table>
<tr>
<th>Specifier</th>
@@ -466,13 +465,11 @@ Available specifiers are:
<ti>foo must have bar disabled and baz enabled.</ti>
</tr>
</table>
-</p>
<p>
There are also shortcuts for conditional situations:
</p>
-<p>
<table>
<tr>
<th>Compact form</th>
@@ -495,9 +492,25 @@ There are also shortcuts for conditional situations:
<ti><c>bar? ( app-misc/foo[-bar] ) !bar? ( app-misc/foo[bar] )</c></ti>
</tr>
</table>
+
+<subsection>
+<title>Use dependency defaults</title>
+<body>
+
+<p>
+If a dependency is introducing or removing a <c>USE</c> flag in new versions, a use
+dependency default may be used. Appending a <c>(+)</c> or <c>(-)</c> suffix will indicate
+whether the absence of the flag from a particular version should indicate its
+presence or absence.
+</p>
+<p>
+<c>>=dev-libs/boost-1.48[threads(+)]</c> will treat all versions without <c>threads</c> as having it set.
</p>
</body>
+</subsection>
+
+</body>
</section>
<section>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2017-09-25 4:31 Göktürk Yüksek
0 siblings, 0 replies; 32+ messages in thread
From: Göktürk Yüksek @ 2017-09-25 4:31 UTC (permalink / raw
To: gentoo-commits
commit: b63b50810d6e621274ad7d8364404d004bd6d645
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 6 10:04:17 2017 +0000
Commit: Göktürk Yüksek <gokturk <AT> gentoo <DOT> org>
CommitDate: Mon Sep 25 04:28:58 2017 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=b63b5081
general-concepts/dependencies: Explain the meaning of hard blockers in DEP/RDEP
general-concepts/dependencies/text.xml | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index f83506a..f6cceba 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -245,6 +245,15 @@ RDEPEND="!!app-misc/foo"
</codesample>
<p>
+Hard blockers apply accordingly to the dependency type defining them.
+Blockers defined in <c>RDEPEND</c> are enforced as long as the package
+is installed (but do not prevent building binary packages). Blockers
+defined purely in <c>DEPEND</c> are enforced only for building
+the package from source, and may not apply once the package is installed
+or when it is installed from a binary package.
+</p>
+
+<p>
Hard blocks require EAPI 2 or newer.
</p>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2017-09-25 4:31 Göktürk Yüksek
0 siblings, 0 replies; 32+ messages in thread
From: Göktürk Yüksek @ 2017-09-25 4:31 UTC (permalink / raw
To: gentoo-commits
commit: d82fac36796849882d8718bdb024f7d01daed50a
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 6 10:11:16 2017 +0000
Commit: Göktürk Yüksek <gokturk <AT> gentoo <DOT> org>
CommitDate: Mon Sep 25 04:29:21 2017 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=d82fac36
general-concepts/dependencies: Add a warning on pure DEPEND soft blockers
general-concepts/dependencies/text.xml | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index f6cceba..7c8caeb 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -215,6 +215,10 @@ to the package manager.
</p>
<p>
+The following description applies to all EAPIs starting with EAPI 2.
+</p>
+
+<p>
There are two kinds of blockers: soft blockers and hard blockers.
</p>
@@ -233,11 +237,17 @@ to solve file collisions between packages and are meaningful only
in <c>RDEPEND</c>.
</p>
+<warning>
+Soft blockers that are pure <c>DEPEND</c> <e>do not work correctly</e>.
+While Portage seemingly queues the package for removal, it <e>does not</e>
+exempt their contents from file collision checks. Always include your
+soft blockers in <c>RDEPEND</c>!
+</warning>
+
<p>
If it is strictly necessary to resolve the blocker before the package
-is built (installed) or if automatic resolution is undesired,
-a hard blocker must be used instead. Hard blockers are not resolved
-automatically, and are expressed using the following syntax:
+is built (installed), a hard blocker must be used instead. Hard blockers
+are expressed using the following syntax:
</p>
<codesample lang="ebuild">
@@ -254,10 +264,6 @@ or when it is installed from a binary package.
</p>
<p>
-Hard blocks require EAPI 2 or newer.
-</p>
-
-<p>
Specific versions can also be blocked:
</p>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2017-09-25 4:31 Göktürk Yüksek
0 siblings, 0 replies; 32+ messages in thread
From: Göktürk Yüksek @ 2017-09-25 4:31 UTC (permalink / raw
To: gentoo-commits
commit: 0fb64d84c35060f60f767fa98553789f660a82f6
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 6 09:59:41 2017 +0000
Commit: Göktürk Yüksek <gokturk <AT> gentoo <DOT> org>
CommitDate: Mon Sep 25 04:28:38 2017 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=0fb64d84
general-concepts/dependencies: Improve the description of blockers
Improve the text describing blockers to clearly explain the difference
between soft and hard blockers, and how are they supposed to be used.
Emphasize on using in RDEPEND.
general-concepts/dependencies/text.xml | 31 +++++++++++++++++++++++--------
1 file changed, 23 insertions(+), 8 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 18fcefd..f83506a 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -209,19 +209,35 @@ asterisk. Also note that when selecting all versions in a specific
<body>
<p>
-Sometimes two packages cannot be installed in parallel. This is handled by
-blockers. A softblocker is specified as follows:
+When two packages (package slots, versions) can not be installed
+simultaneously, blockers can be used to expose such a conflict
+to the package manager.
</p>
+<p>
+There are two kinds of blockers: soft blockers and hard blockers.
+</p>
+
+<p>A soft blocker is defined using the following syntax:</p>
+
<codesample lang="ebuild">
RDEPEND="!app-misc/foo"
</codesample>
<p>
-Portage will try to resolve this conflict automatically if possible.
-Sometimes we need to use a hardblocker to ensure correct emerge order.
-Those cannot be resolved by Portage and must be taken care of by the user.
-A hardblocker is specified as follows:
+The package manager will try to resolve this conflict automatically.
+The package blocked by a soft blocker can be uninstalled <e>after</e>
+installing the package blocking it. However, it exempts the common
+files from file collision checks. Soft blockers are usually used
+to solve file collisions between packages and are meaningful only
+in <c>RDEPEND</c>.
+</p>
+
+<p>
+If it is strictly necessary to resolve the blocker before the package
+is built (installed) or if automatic resolution is undesired,
+a hard blocker must be used instead. Hard blockers are not resolved
+automatically, and are expressed using the following syntax:
</p>
<codesample lang="ebuild">
@@ -229,8 +245,7 @@ RDEPEND="!!app-misc/foo"
</codesample>
<p>
-Hardblockers always take precedence over softblockers and need at least EAPI=2.
-Also note that blockers are usually <e>runtime</e> rather than buildtime.
+Hard blocks require EAPI 2 or newer.
</p>
<p>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2018-09-10 15:20 Mike Gilbert
0 siblings, 0 replies; 32+ messages in thread
From: Mike Gilbert @ 2018-09-10 15:20 UTC (permalink / raw
To: gentoo-commits
commit: c53568d93df9e2c94d0334e1e42e8a6de1a6797a
Author: Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 24 18:21:10 2018 +0000
Commit: Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Mon Sep 10 15:18:05 2018 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=c53568d9
Add section about defining "Test Dependencies"
Reviewed-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 38 ++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 2f10380..6b0ce38 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -578,6 +578,44 @@ valid.
</body>
</section>
+<section>
+<title>Test Dependencies</title>
+<body>
+
+<p>
+Packages often have optional dependencies that are needed only when running
+tests. These should be specified in DEPEND behind a USE flag. Often, the
+'test' USE flag is used for this purpose.
+</p>
+
+<p>
+Since testing will likely fail when test dependencies are not installed, the
+test phase should be disabled in this case. This may be accomplished via USE
+conditionals in the RESTRICT variable.
+</p>
+
+<p>
+If other optional features must be enabled/disabled when testing, REQUIRED_USE
+may be set to express this.
+</p>
+
+<codesample lang="ebuild">
+# Define some USE flags
+IUSE="debug test"
+
+# Require debug support when tests are enabled
+REQUIRED_USE="test? ( debug )"
+
+# Disable test phase when test USE flag is disabled
+RESTRICT="!test? ( test )"
+
+# Running tests requires 'foo' to be installed
+DEPEND="test? ( dev-util/foo )"
+</codesample>
+
+</body>
+</section>
+
</body>
</chapter>
</guide>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2019-10-16 18:49 Göktürk Yüksek
0 siblings, 0 replies; 32+ messages in thread
From: Göktürk Yüksek @ 2019-10-16 18:49 UTC (permalink / raw
To: gentoo-commits
commit: b48f5e83b285aa086a844e1e9bd1035d49df122a
Author: Thomas Deutschmann <whissi <AT> whissi <DOT> de>
AuthorDate: Fri Sep 6 14:57:52 2019 +0000
Commit: Göktürk Yüksek <gokturk <AT> gentoo <DOT> org>
CommitDate: Wed Oct 16 18:47:48 2019 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=b48f5e83
general-concepts/dependencies: Fix ranged dependencies example
Closes: https://github.com/gentoo/devmanual.gentoo.org/pull/106
Acked-by: Michael Orlitzky <mjo <AT> gentoo.org>
Signed-off-by: Thomas Deutschmann <whissi <AT> whissi.de>
Signed-off-by: Göktürk Yüksek <gokturk <AT> gentoo.org>
general-concepts/dependencies/text.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 6b0ce38..c91c7e9 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -195,7 +195,7 @@ the asterisk postfix. This is most commonly seen in situations like:
</p>
<codesample lang="ebuild">
-DEPEND="gtk? ( =x11-libs/gtk+-1.2* )"
+DEPEND="gtk? ( =x11-libs/gtk+-2* )"
</codesample>
<p>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2019-12-21 5:19 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2019-12-21 5:19 UTC (permalink / raw
To: gentoo-commits
commit: e6410dc5f785ebe65ea5231863d9beadf8d38ae0
Author: Göktürk Yüksek <gokturk <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 21 04:39:56 2019 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Dec 21 05:18:17 2019 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=e6410dc5
general-concepts/dependencies: remove incorrect indentation in <p>
Signed-off-by: Göktürk Yüksek <gokturk <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index d1d6db2..0c0327a 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -6,8 +6,8 @@
<body>
<p>
- Automatic dependency resolution is one of the most useful features provided by
- <c>emerge</c>.
+Automatic dependency resolution is one of the most useful features
+provided by <c>emerge</c>.
</p>
</body>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2020-01-23 7:47 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2020-01-23 7:47 UTC (permalink / raw
To: gentoo-commits
commit: 68aff5730fe3477bfb4f0990008e620964792b92
Author: Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Mon Jan 20 20:35:13 2020 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Jan 23 00:01:01 2020 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=68aff573
general-concepts/dependencies: Drop section on if-else USE blocks.
If-else USE blocks, i.e. "Legacy Inverse USE-Conditional Dependency
Syntax", have been abandoned before EAPI was introduced.
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 30 ------------------------------
1 file changed, 30 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 9f2cc47..4e3a84e 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -536,36 +536,6 @@ presence or absence.
</subsection>
</section>
-<section>
-<title>Legacy Inverse USE-Conditional Dependency Syntax</title>
-<body>
-
-<p>
- Once upon a time the <c>:</c> conditional operator was allowed in <c>*DEPEND</c>:
-</p>
-
-<codesample lang="ebuild">
-DEPEND="use-flag? ( app-misc/foo ) : ( app-misc/bar )"
-</codesample>
-
-<p>
-<b>This syntax is no longer permitted</b>. It is exactly equivalent to the
-following, which should be used instead:
-</p>
-
-<codesample lang="ebuild">
-DEPEND="use-flag? ( app-misc/foo )
- !use-flag? ( app-misc/bar )"
-</codesample>
-
-<p>
-It is useful to recognise the legacy syntax and to know that it is no longer
-valid.
-</p>
-
-</body>
-</section>
-
<section>
<title>Test Dependencies</title>
<body>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2020-01-29 7:59 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2020-01-29 7:59 UTC (permalink / raw
To: gentoo-commits
commit: a7e1e6accfd537734321ddcefcc0515fe64a25e5
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 29 08:47:41 2019 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Jan 29 07:58:27 2020 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=a7e1e6ac
general-concepts/dependencies: Describe circular deps in detail
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 49 ++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index dde6cda..2aca289 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -620,6 +620,55 @@ RESTRICT="!test? ( test )"
DEPEND="test? ( dev-util/foo )"
</codesample>
+</body>
+</section>
+
+<section>
+<title>Circular Dependencies</title>
+<body>
+
+<p>
+Circular dependencies occur if one or more of package's (possibly indirect)
+dependencies depend on the package itself. This creates a dependency cycle where
+each of the packages must technically be installed before the other.
+For example, if package A depends on B, B depends on C and C depends on A, then
+the package manager cannot install A before C, and C before A.
+</p>
+
+<p>
+There are three kinds of circular dependencies:
+</p>
+
+<ol>
+ <li>
+ Circular dependencies that occur if only one of the packages strictly needs
+ to be installed before the other. For example, <c>dev-python/certifi</c>
+ strictly requires <c>dev-python/setuptools</c> to build but the latter
+ package requires the former for some runtime functionality. As a result,
+ <c>dev-python/certifi</c> can be installed later than the other package.
+ <c>PDEPEND</c> is used to express this and automatically resolve
+ the circular dependency.
+ </li>
+
+ <li>
+ Circular dependencies that occur if the cycle applies only to some
+ combination of USE flags on one of the packages. For example, running tests
+ in <c>dev-python/setuptools</c> requires a number of packages which require
+ <c>dev-python/setuptools</c> to be installed first. This kind of circular
+ dependency can be resolved by the user by adjusting USE flags on one
+ of the packages, e.g. by disabling tests on <c>dev-python/setuptools</c>,
+ and reenabling them once the dependency is initially installed.
+ </li>
+
+ <li>
+ Circular dependencies that cannot be resolved using the regular means.
+ For example, <c>dev-util/cmake</c> used to depend
+ on <c>dev-libs/jsoncpp</c>, while the latter package used the former
+ to build. Resolving this kind of dependency usually requires bundling one
+ of the dependencies conditionally, or providing an alternate bootstrap path.
+ </li>
+</ol>
+
</body>
</section>
</chapter>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2020-01-29 7:59 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2020-01-29 7:59 UTC (permalink / raw
To: gentoo-commits
commit: be7ec7f3d2965719ffb69879bd879fc9b48c6dc1
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 29 08:03:11 2019 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Jan 29 07:58:26 2020 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=be7ec7f3
general-concepts/dependencies: Improve PDEPEND
Rewrite the PDEPEND description to be more focused on its purpose.
Rename to 'Post Dependencies' to match PMS. Reverse the weird backwards
logic that indicated that they might be installed before the package
into saying that they may be installed after it. Clearly indicate
that its only purpose is to resolve circular dependencies.
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 8deca1f..dde6cda 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -94,16 +94,14 @@ Items which are in <c>RDEPEND</c> but not <c>DEPEND</c> could <e>in theory</e> b
</section>
<section>
-<title>Post-Merge Dependencies</title>
+<title>Post Dependencies</title>
<body>
<p>
-The <c>PDEPEND</c> variable specifies dependencies that should be
-merged <e>after</e> the package, but which may be merged at any time,
-if the former is not possible. This is sometimes used for plugins
-that have a dependency upon the package being merged. Generally
-<c>PDEPEND</c> should be avoided in favour of <c>RDEPEND</c> except
-where this will create circular dependency chains.
+The <c>PDEPEND</c> variable specifies runtime dependencies that do not strictly
+require being satisfied immediately. They can be merged <e>after</e>
+the package. This variable is used purely to resolve circular dependencies,
+while in general case <c>RDEPEND</c> should be used instead.
</p>
</body>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2020-01-29 7:59 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2020-01-29 7:59 UTC (permalink / raw
To: gentoo-commits
commit: d25e172b16fa3c59f6868dc164bc6dcc801c4fc2
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 29 07:59:28 2019 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Jan 29 07:58:26 2020 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=d25e172b
general-concepts/dependencies: Document BDEPEND
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 48 ++++++++++++++++++++++++++++++++--
1 file changed, 46 insertions(+), 2 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 32feff1..8deca1f 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -11,17 +11,61 @@ provided by <c>emerge</c>.
</p>
</body>
+<section>
+<title>CHOST vs CBUILD</title>
+<body>
+
+<p>
+In order to avoid ambiguity, we use the following terms to indicate different
+systems when cross-compiling:
+</p>
+
+<dl>
+ <dt>CBUILD</dt>
+ <dd>
+ The system on which the build is performed. Dependencies that apply
+ to the CBUILD system can be executed during build time. When
+ cross-compiling, they are not installed into the system being built.
+ </dd>
+
+ <dt>CHOST</dt>
+ <dd>
+ The system on which the package is going to be executed. When
+ cross-compiling, dependencies applying to CHOST can not be executed.
+ </dd>
+</dl>
+
+<p>
+When not cross-compiling, CBUILD and CHOST have the same value and both classes
+of dependencies are merged.
+</p>
+
+</body>
+</section>
+
<section>
<title>Build Dependencies</title>
<body>
<p>
-The <c>DEPEND</c> ebuild variable should specify any dependencies which are
-required to unpack, patch, compile or install the package (but see
+Build dependencies are used to specify any dependencies that are required
+to unpack, patch, compile, test or install the package (but see
<uri link="::general-concepts/dependencies#Implicit System Dependency"/> for
exemptions).
</p>
+<p>
+Starting with EAPI 7, build dependencies are split into two variables:
+<c>BDEPEND</c> and <c>DEPEND</c>. <c>BDEPEND</c> specifies dependencies
+applicable to CBUILD, i.e. programs that need to be executed during the build,
+e.g. <c>virtual/pkgconfig</c>. <c>DEPEND</c> specifies dependencies for CHOST,
+i.e. packages that need to be found on built system, e.g. libraries and headers.
+</p>
+
+<p>
+In earlier EAPIs, all build dependencies are placed in <c>DEPEND</c>.
+</p>
+
</body>
</section>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2020-05-25 15:43 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2020-05-25 15:43 UTC (permalink / raw
To: gentoo-commits
commit: be93eaeb521f18b0f8b563accd1d2b398bb87b02
Author: Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Wed Apr 15 18:23:47 2020 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat May 9 11:06:19 2020 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=be93eaeb
general-concepts/dependencies: Better section structure.
Collect similar topics as subsections under new section headers.
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 114 +++++++++++++++++----------------
1 file changed, 60 insertions(+), 54 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 1a1d970..52d053e 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -2,16 +2,19 @@
<guide self="general-concepts/dependencies/">
<chapter>
<title>Dependencies</title>
-
<body>
<p>
Automatic dependency resolution is one of the most useful features
provided by <c>emerge</c>.
</p>
+
</body>
<section>
+<title>Dependency types</title>
+
+<subsection>
<title>CHOST vs CBUILD</title>
<body>
@@ -41,9 +44,9 @@ of dependencies are merged.
</p>
</body>
-</section>
+</subsection>
-<section>
+<subsection>
<title>Build Dependencies</title>
<body>
@@ -67,9 +70,9 @@ In earlier EAPIs, all build dependencies are placed in <c>DEPEND</c>.
</p>
</body>
-</section>
+</subsection>
-<section>
+<subsection>
<title>Runtime Dependencies</title>
<body>
@@ -91,9 +94,9 @@ Items which are in <c>RDEPEND</c> but not <c>DEPEND</c> could <e>in theory</e> b
</p>
</body>
-</section>
+</subsection>
-<section>
+<subsection>
<title>Post Dependencies</title>
<body>
@@ -105,39 +108,13 @@ while in general case <c>RDEPEND</c> should be used instead.
</p>
</body>
+</subsection>
</section>
<section>
-<title>Implicit System Dependency</title>
-<body>
+<title>Dependency Syntax</title>
-<p>
-All packages have an implicit compile-time and runtime dependency upon the
-entire <c>@system</c> set. It is therefore not necessary, nor
-advisable, to
-specify dependencies upon toolchain packages like <c>gcc</c>, <c>libc</c> and
-so on, except where specific versions or packages (for example, <c>glibc</c>
-over <c>uclibc</c>) are required. Note that this rule also needs consideration
-for packages like <c>flex</c>, <c>zlib</c> and <c>libtool</c>, which aren't in
-the <c>@system</c> set for every profile. For example, the embedded
-profile doesn't have <c>zlib</c> in <c>@system</c>, the <c>libtool</c>
-ABI might
-change and break building order and <c>flex</c> might get removed from the
-<c>@system</c> set in future.
-</p>
-
-<p>
-However, packages which are included in the <c>@system</c> set, or are
-dependencies of <c>@system</c> set packages, should generally include
-a complete dependency list (excluding bootstrap packages). This makes
-<c>emerge -e @system</c>
-possible when installing from a stage 1 or stage 2 tarball.
-</p>
-
-</body>
-</section>
-
-<section>
+<subsection>
<title>Basic Dependency Syntax</title>
<body>
@@ -159,9 +136,9 @@ When specifying names, the category part should be treated as mandatory.
</p>
</body>
-</section>
+</subsection>
-<section>
+<subsection>
<title>Version Dependencies</title>
<body>
@@ -179,7 +156,7 @@ This states that at least version 0.9.7d of <c>openssl</c> is required.
</p>
</body>
-<subsection>
+<subsubsection>
<title>Version Specifiers</title>
<body>
@@ -222,9 +199,9 @@ Available version specifiers are:
</table>
</body>
-</subsection>
+</subsubsection>
-<subsection>
+<subsubsection>
<title>Ranged Dependencies</title>
<body>
@@ -244,9 +221,9 @@ asterisk. Also note that when selecting all versions in a specific
</p>
</body>
-</subsection>
+</subsubsection>
-<subsection>
+<subsubsection>
<title>Blockers</title>
<body>
@@ -343,10 +320,10 @@ newer package that caused the issues.
</p>
</body>
+</subsubsection>
</subsection>
-</section>
-<section>
+<subsection>
<title>SLOT Dependencies</title>
<body>
@@ -370,7 +347,7 @@ DEPEND="qt3? ( ~x11-libs/qt-3.3.8:3 )
</codesample>
</body>
-<subsection>
+<subsubsection>
<title>Slot Operators</title>
<body>
@@ -407,10 +384,10 @@ RDEPEND="media-libs/cogl:1.0=
</codesample>
</body>
+</subsubsection>
</subsection>
-</section>
-<section>
+<subsection>
<title>USE-Conditional Dependencies</title>
<body>
@@ -464,9 +441,9 @@ DEPEND="!build? (
</codesample>
</body>
-</section>
+</subsection>
-<section>
+<subsection>
<title>Any of Many Dependencies</title>
<body>
@@ -487,7 +464,7 @@ DEPEND="baz? ( || ( app-misc/foo app-misc/bar ) )"
</codesample>
</body>
-<subsection>
+<subsubsection>
<title>Any of Many Versus USE</title>
<body>
@@ -509,10 +486,10 @@ flag is not necessary if and only if all of the following hold:
</ul>
</body>
+</subsubsection>
</subsection>
-</section>
-<section>
+<subsection>
<title>Built with USE Dependencies</title>
<body>
@@ -567,7 +544,7 @@ There are also shortcuts for conditional situations:
</table>
</body>
-<subsection>
+<subsubsection>
<title>Use dependency defaults</title>
<body>
@@ -592,9 +569,38 @@ DEPEND="
</codesample>
</body>
+</subsubsection>
</subsection>
</section>
+<section>
+<title>Implicit System Dependency</title>
+<body>
+
+<p>
+All packages have an implicit compile-time and runtime dependency upon the
+entire <c>@system</c> set. It is therefore not necessary, nor advisable, to
+specify dependencies upon toolchain packages like <c>gcc</c>, <c>libc</c> and
+so on, except where specific versions or packages (for example, <c>glibc</c>
+over <c>uclibc</c>) are required. Note that this rule also needs consideration
+for packages like <c>flex</c>, <c>zlib</c> and <c>libtool</c>, which aren't in
+the <c>@system</c> set for every profile. For example, the embedded profile
+doesn't have <c>zlib</c> in <c>@system</c>, the <c>libtool</c> ABI might
+change and break building order and <c>flex</c> might get removed from the
+<c>@system</c> set in future.
+</p>
+
+<p>
+However, packages which are included in the <c>@system</c> set, or are
+dependencies of <c>@system</c> set packages, should generally include
+a complete dependency list (excluding bootstrap packages). This makes
+<c>emerge -e @system</c> possible when installing from a stage 1 or stage 2
+tarball.
+</p>
+
+</body>
+</section>
+
<section>
<title>Test Dependencies</title>
<body>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2020-05-25 15:43 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2020-05-25 15:43 UTC (permalink / raw
To: gentoo-commits
commit: 3dc3be9929eaa97576882ab23ac02d9f51368f2d
Author: Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Wed Apr 15 18:25:07 2020 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat May 9 11:06:19 2020 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=3dc3be99
general-concepts/dependencies: Tips for checking dependencies.
This is taken from the Gentoo Developer Handbook, chapter
"Ebuild HOWTO" (proj/en/devrel/handbook/hb-guide-ebuild.xml),
section "Package Dependencies", subsection "Important Notes",
which in turn had been copied from chapter "Common ebuild Mistakes"
(proj/en/devrel/handbook/hb-guide-common-mistakes.xml), section
"Common Ebuild Writing Mistakes", subsection "DEPEND is incomplete".
Permission to reuse the CC-BY-SA-1.0 work under CC BY-SA version 2.0
or any later version of that license obtained from author plasmaroo
per e-mail on 2015-04-16, Message-ID
<CAGV+WHCJ61hvw7kh+Wz=uO2esihwc1dXsCWJJWeFAA7UOyyayw <AT> mail.gmail.com>.
Closes: https://bugs.gentoo.org/465764
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 51 ++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 52d053e..319137f 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -573,6 +573,57 @@ DEPEND="
</subsection>
</section>
+<section>
+<title>Tips for Checking Dependencies</title>
+<body>
+
+<p>
+It is important to ensure that all the dependencies are complete for your
+package:
+</p>
+
+<dl>
+ <dt>Look at installed binaries/libraries</dt>
+ <dd>
+ Use a tool like <c>scanelf -n</c> (from app-misc/pax-utils) or
+ <c>objdump -p</c> (from sys-devel/binutils) to list <c>DT_NEEDED</c>
+ entries
+ </dd>
+ <dt>Look in <c>configure.ac</c></dt>
+ <dd>
+ Look for checks for packages in here. Things to look out for are pkg-config
+ checks or <c>AM_*</c> functions that check for a specific version.
+ </dd>
+ <dt>Look at included <c>.spec</c> files</dt>
+ <dd>
+ A good indication of dependencies is to look at the included <c>.spec</c>
+ files for relevant deps. However, do not trust them to be the definitive
+ complete list of dependencies.
+ </dd>
+ <dt>Look at the application/library website</dt>
+ <dd>
+ Check the application website for possible dependencies that they suggest
+ are needed
+ </dd>
+ <dt>Read the <c>README</c> and <c>INSTALL</c> for the package</dt>
+ <dd>
+ They usually also contain useful information about building and installing
+ packages
+ </dd>
+ <dt>
+ Remember non-binary dependencies such as pkg-config, doc generation
+ programs, etc.
+ </dt>
+ <dd>
+ Usually the build process requires some dependencies such as intltool,
+ libtool, pkg-config, doxygen, scrollkeeper, gtk-doc, etc. Make sure those
+ are clearly stated.
+ </dd>
+</dl>
+
+</body>
+</section>
+
<section>
<title>Implicit System Dependency</title>
<body>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2021-03-11 12:44 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2021-03-11 12:44 UTC (permalink / raw
To: gentoo-commits
commit: 30036bbb6f48b4c61a166e2cf80451b74d6dfda0
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 5 19:43:23 2021 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Mar 11 12:35:22 2021 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=30036bbb
general-concepts/dependencies: add reference to Ebuild Revisions
Let's make a note that it's especially important to consider
the links between dependencies and ebuild revisions.
Closes: https://github.com/gentoo/devmanual/pull/197
Signed-off-by: Sam James <sam <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 9366343..8cf3999 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -17,6 +17,12 @@ checking for changes. Some projects may have different policies <d/> consult
them if you're not sure.
</p>
+<p>
+Please also see the following section on
+<uri link="::general-concepts/ebuild-revisions"/>
+for how dependencies and revisions interact.
+</p>
+
</body>
<section>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2021-03-11 12:44 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2021-03-11 12:44 UTC (permalink / raw
To: gentoo-commits
commit: 558db5739d41e9b8b3d747ed75a72c3b35bfa6f4
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 5 19:29:12 2021 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Mar 11 12:35:21 2021 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=558db573
general-concepts/dependencies: sort dependencies in example
Signed-off-by: Sam James <sam <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 6afefea..9366343 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -431,7 +431,9 @@ This can be nested:
<codesample lang="ebuild">
DEPEND="!build? (
+ >=sys-libs/ncurses-5.2-r2
gcj? (
+ >=media-libs/libart_lgpl-2.1
gtk? (
x11-libs/libXt
x11-libs/libX11
@@ -441,9 +443,7 @@ DEPEND="!build? (
>=x11-libs/gtk+-2.2
x11-libs/pango
)
- >=media-libs/libart_lgpl-2.1
)
- >=sys-libs/ncurses-5.2-r2
nls? ( sys-devel/gettext )
)"
</codesample>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2021-03-11 12:44 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2021-03-11 12:44 UTC (permalink / raw
To: gentoo-commits
commit: 9f40ea2d5d53a204c2ccfade2f5f1ef19555fcc7
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 5 19:28:08 2021 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Thu Mar 11 12:35:21 2021 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=9f40ea2d
general-concepts/dependencies: add sorting
Signed-off-by: Sam James <sam <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 319137f..6afefea 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -9,6 +9,14 @@ Automatic dependency resolution is one of the most useful features
provided by <c>emerge</c>.
</p>
+<p>
+You are encouraged to sort dependencies alphabetically, with unconditional
+dependencies grouped together, then all conditional dependencies. There is an
+exception: you may sort dependencies as per upstream listings if it eases
+checking for changes. Some projects may have different policies <d/> consult
+them if you're not sure.
+</p>
+
</body>
<section>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2021-03-29 20:44 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2021-03-29 20:44 UTC (permalink / raw
To: gentoo-commits
commit: a0af214749946a602a8fef95495ca9150bf93946
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 20 14:56:44 2021 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Mar 29 20:41:38 2021 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=a0af2147
general-concepts/dependencies: emphasise BDEPEND for build-system dependencies
Signed-off-by: Sam James <sam <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index eac1967..f49e319 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -626,12 +626,13 @@ package:
</dd>
<dt>
Remember non-binary dependencies such as pkg-config, doc generation
- programs, etc.
+ programs, etc. Such programs would usually belong in <c>BDEPEND</c>.
</dt>
<dd>
Usually the build process requires some dependencies such as intltool,
libtool, pkg-config, doxygen, scrollkeeper, gtk-doc, etc. Make sure those
- are clearly stated.
+ are clearly stated. Again, such dependencies usually belong in
+ <c>BDEPEND</c>.
</dd>
</dl>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2021-03-29 20:44 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2021-03-29 20:44 UTC (permalink / raw
To: gentoo-commits
commit: c0db3d2014ed39035a0b840a7264d13f044acd31
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 20 14:55:10 2021 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Mar 29 20:41:37 2021 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=c0db3d20
general-concepts/dependencies: slightly modernise Qt example
Signed-off-by: Sam James <sam <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 1b8f425..eac1967 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -347,7 +347,7 @@ the package name, where 'SLOT' is the <c>SLOT</c> of the package wanted:
</p>
<codesample lang="ebuild">
-DEPEND="qt3? ( x11-libs/qt:3 )
+DEPEND="qt5? ( dev-qt/qtcore:5 )
gtk? ( x11-libs/gtk+:2 )
</codesample>
@@ -356,7 +356,7 @@ To depend on a specific version or version-range within a SLOT we use:
</p>
<codesample lang="ebuild">
-DEPEND="qt3? ( ~x11-libs/qt-3.3.8:3 )
+DEPEND="qt5? ( ~dev-qt/qtcore-5.15.2:5 )
gtk? ( >=x11-libs/gtk+-2.24.9:2 )
</codesample>
</body>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2021-03-29 20:44 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2021-03-29 20:44 UTC (permalink / raw
To: gentoo-commits
commit: 54ee612ef406435d1f403d8f76ed422921ffb707
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 20 15:00:27 2021 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Mar 29 20:41:38 2021 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=54ee612e
general-concepts/dependencies: list any-of dependencies in preferred order
This eases Portage dependency resolution.
Signed-off-by: Sam James <sam <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index f49e319..c175cfa 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -461,6 +461,12 @@ DEPEND="!build? (
<title>Any of Many Dependencies</title>
<body>
+<note>
+To ease dependency resolution for Portage, it is recommended that you sort
+the elements in <e>preferred</e> order first. See
+<uri link="https://bugs.gentoo.org/489458">this bug</uri> for more context.
+</note>
+
<p>
To depend on either <c>foo</c> or <c>bar</c>:
</p>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2021-10-13 13:42 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2021-10-13 13:42 UTC (permalink / raw
To: gentoo-commits
commit: c47bae818f63867150e6893232e289f242eb9622
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sun Oct 3 02:09:39 2021 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Oct 13 13:39:14 2021 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=c47bae81
general-concepts/dependencies: clarify strong blocker usage
Noticed we could be a bit clearer in the devmanual after
a discussion on a PR [0]. We've had a lot of confusion over
when it's appropriate to use strong blockers, so I think giving
a non-abstract "example" is helpful here.
[0] https://github.com/gentoo/gentoo/pull/22433#discussion_r720746670
Signed-off-by: Sam James <sam <AT> gentoo.org>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index c175cfa..1340b1c 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -305,6 +305,12 @@ the package from source, and may not apply once the package is installed
or when it is installed from a binary package.
</p>
+<p>
+The most common use for strong blockers is where another package simply
+being installed causes a build failure. Strong blockers are not to be used
+to prevent just file collisions.
+</p>
+
<note>
If both weak and strong blockers match a given package, the strong blocker
takes precedence.
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2021-10-19 9:27 Mike Frysinger
0 siblings, 0 replies; 32+ messages in thread
From: Mike Frysinger @ 2021-10-19 9:27 UTC (permalink / raw
To: gentoo-commits
commit: e20a78631323ed533041a23d0cb1f91e5f301713
Author: Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 19 09:17:19 2021 +0000
Commit: Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Tue Oct 19 09:27:14 2021 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=e20a7863
dependencies: clarify cross-compiling and system shorthands
Try and clarify that BDEPEND/DEPEND are split based on the install
targets, not only when the literal $CBUILD & $CHOST values differ,
and thus only when "cross-compiling" is used.
Signed-off-by: Mike Frysinger <vapier <AT> gentoo.org>
general-concepts/dependencies/text.xml | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 1340b1c..a3ea540 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -34,15 +34,15 @@ for how dependencies and revisions interact.
<p>
In order to avoid ambiguity, we use the following terms to indicate different
-systems when cross-compiling:
+systems when cross-compiling. They serve as a shorthand for an overall system
+in addition to their literal value (e.g. $CHOST).
</p>
<dl>
<dt>CBUILD</dt>
<dd>
The system on which the build is performed. Dependencies that apply
- to the CBUILD system can be executed during build time. When
- cross-compiling, they are not installed into the system being built.
+ to the CBUILD system can be executed during build time.
</dd>
<dt>CHOST</dt>
@@ -53,8 +53,15 @@ systems when cross-compiling:
</dl>
<p>
-When not cross-compiling, CBUILD and CHOST have the same value and both classes
-of dependencies are merged.
+When cross-compiling, CBUILD and CHOST are naturally different, as are the
+actual install paths for the different types of dependencies.
+</p>
+
+<p>
+Note however that, while cross-compiling is used to help explain these concepts,
+it is not strictly required. CBUILD and CHOST could target the exact same
+hardware, but be installed into distinct SYSROOT/ROOT paths. The dependency
+distinctions still apply even if it isn't, strictly speaking, cross-compiling.
</p>
</body>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2022-02-21 5:22 Sam James
0 siblings, 0 replies; 32+ messages in thread
From: Sam James @ 2022-02-21 5:22 UTC (permalink / raw
To: gentoo-commits
commit: 5ef9e1d93aad7538c0c30cd076e956c2947ef4d8
Author: Florian Schmaus <flow <AT> gentoo <DOT> org>
AuthorDate: Thu Dec 23 19:17:28 2021 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Feb 21 05:21:44 2022 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=5ef9e1d9
general-concepts/dependencies: improve explaination of slot operators
The section previously had hard to parse sentences like "[…] and that
your package should be rebuilt if the version best matching the
runtime dependency is updated to a version with a different slot or
subslot" for the := operator.
This commit attempts to improve the readability of the section.
The change superseeds my proposed change in bug #739858.
Thanks to Sam James for reviewing this. :)
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>
Bug: https://bugs.gentoo.org/739858
Closes: https://github.com/gentoo/devmanual/pull/259
Signed-off-by: Sam James <sam <AT> gentoo.org>
general-concepts/dependencies/text.xml | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 1abebc8..ef27ac2 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -387,18 +387,19 @@ or <uri link="::general-concepts/slotting#Sub-Slots">sub-slot</uri>:
<ul>
<li>
- <c>:=</c> means that any slot is acceptable, and that your package should be
- rebuilt if the version best matching the runtime dependency is updated to a
- version with a different slot or subslot;
+ <c>:=</c> means that any slot is acceptable. Additionally indicates that
+ your package should be rebuilt if the version best matching the runtime
+ dependency is updated to a version with a different slot or subslot.
</li>
<li>
- <c>:*</c> means that any slot is acceptable, and explicitly declares that
- changes in the slot or sub-slot can be ignored;
+ <c>:*</c> means that any slot is acceptable. Furthermore, this slot
+ operator explicitly declares that changes in the slot or sub-slot can be
+ ignored.
</li>
<li>
- <c>:SLOT=</c> means that only the 'SLOT' slot is acceptable, and that your
- package should be rebuilt if the version matching the runtime dependency is
- updated to another version with this slot but with a different subslot;
+ <c>:SLOT=</c> means that only the 'SLOT' slot is acceptable. It otherwise
+ behaves identically to the <c>:=</c> operator. That is, the package must be
+ rebuilt if the sub-slot of the dependency changes.
</li>
<li>
<c>:SLOT</c> means that only the 'SLOT' slot is acceptable, and that changes
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2022-02-21 5:22 Sam James
0 siblings, 0 replies; 32+ messages in thread
From: Sam James @ 2022-02-21 5:22 UTC (permalink / raw
To: gentoo-commits
commit: a4828a6aeeae3b413ecce168b427122cc693f887
Author: Florian Schmaus <flow <AT> gentoo <DOT> org>
AuthorDate: Thu Dec 23 19:10:36 2021 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Feb 21 05:21:40 2022 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=a4828a6a
general-concepts/dependencies: indent xml for better raw readability
This is scavenged from my proposed change for bug #739858.
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>
Bug: https://bugs.gentoo.org/739858
Signed-off-by: Sam James <sam <AT> gentoo.org>
general-concepts/dependencies/text.xml | 36 ++++++++++++++++++++++------------
1 file changed, 23 insertions(+), 13 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index a3ea540..1abebc8 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -386,19 +386,29 @@ or <uri link="::general-concepts/slotting#Sub-Slots">sub-slot</uri>:
</p>
<ul>
- <li><c>:=</c> means that any slot is acceptable, and that your package should be
- rebuilt if the version best matching the runtime dependency is updated to a
- version with a different slot or subslot;</li>
- <li><c>:*</c> means that any slot is acceptable, and explicitly declares that
- changes in the slot or sub-slot can be ignored;</li>
- <li><c>:SLOT=</c> means that only the 'SLOT' slot is acceptable, and that your
- package should be rebuilt if the version matching the runtime dependency is
- updated to another version with this slot but with a different subslot;</li>
- <li><c>:SLOT</c> means that only the 'SLOT' slot is acceptable, and that changes
- in the sub-slot can be ignored (like in previous EAPIs).</li>
- <li><c>:SLOT/SUBSLOT</c> means a dependency on a specific slot and sub-slot pair,
- which can be useful for packages installing pre-built binaries that require a
- library with a particular soname version corresponding to the sub-slot.</li>
+ <li>
+ <c>:=</c> means that any slot is acceptable, and that your package should be
+ rebuilt if the version best matching the runtime dependency is updated to a
+ version with a different slot or subslot;
+ </li>
+ <li>
+ <c>:*</c> means that any slot is acceptable, and explicitly declares that
+ changes in the slot or sub-slot can be ignored;
+ </li>
+ <li>
+ <c>:SLOT=</c> means that only the 'SLOT' slot is acceptable, and that your
+ package should be rebuilt if the version matching the runtime dependency is
+ updated to another version with this slot but with a different subslot;
+ </li>
+ <li>
+ <c>:SLOT</c> means that only the 'SLOT' slot is acceptable, and that changes
+ in the sub-slot can be ignored (like in previous EAPIs).
+ </li>
+ <li>
+ <c>:SLOT/SUBSLOT</c> means a dependency on a specific slot and sub-slot pair,
+ which can be useful for packages installing pre-built binaries that require a
+ library with a particular soname version corresponding to the sub-slot.
+ </li>
</ul>
<p>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2022-05-22 6:37 Joonas Niilola
0 siblings, 0 replies; 32+ messages in thread
From: Joonas Niilola @ 2022-05-22 6:37 UTC (permalink / raw
To: gentoo-commits
commit: 6c0b51ae63833c2ddfd58412727c0004db06d605
Author: Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Sat Apr 23 12:42:10 2022 +0000
Commit: Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Sun May 22 06:37:02 2022 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=6c0b51ae
general-concepts/dependencies: expand on finding correct deps a bit
Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>
Closes: https://github.com/gentoo/devmanual/pull/284
general-concepts/dependencies/text.xml | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index ab1a799..59b1b37 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -631,7 +631,9 @@ package:
<dd>
Use a tool like <c>scanelf -n</c> (from app-misc/pax-utils) or
<c>objdump -p</c> (from sys-devel/binutils) to list <c>DT_NEEDED</c>
- entries
+ entries.
+ app-portage/iwdevtools and portage's own <c>qa-unresolved-soname-deps</c>
+ <b>FEATURE</b> can help finding these.
</dd>
<dt>Look in <c>configure.ac</c></dt>
<dd>
@@ -647,12 +649,12 @@ package:
<dt>Look at the application/library website</dt>
<dd>
Check the application website for possible dependencies that they suggest
- are needed
+ are needed.
</dd>
<dt>Read the <c>README</c> and <c>INSTALL</c> for the package</dt>
<dd>
They usually also contain useful information about building and installing
- packages
+ packages.
</dd>
<dt>
Remember non-binary dependencies such as pkg-config, doc generation
@@ -664,6 +666,12 @@ package:
are clearly stated. Again, such dependencies usually belong in
<c>BDEPEND</c>.
</dd>
+ <dt>Testing in chroots, containers and virtual machines</dt>
+ <dd>
+ A sure-way to find missing dependencies is to test your ebuild in a
+ deprived environment. Chroots, containers, virtual machines and
+ dev-util/ebuildtester can achieve this.
+ </dd>
</dl>
</body>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2022-05-22 6:37 Joonas Niilola
0 siblings, 0 replies; 32+ messages in thread
From: Joonas Niilola @ 2022-05-22 6:37 UTC (permalink / raw
To: gentoo-commits
commit: d08d5f0dea3d8580c55a052d6424863d6aeb8ae9
Author: Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Sat Apr 23 12:32:51 2022 +0000
Commit: Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Sun May 22 06:36:57 2022 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=d08d5f0d
general-concepts/dependencies: add new section for indirect deps
Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>
general-concepts/dependencies/text.xml | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index ef27ac2..ab1a799 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -781,6 +781,23 @@ There are three kinds of circular dependencies:
</li>
</ol>
+</body>
+</section>
+
+<section>
+<title>Indirect dependencies</title>
+<body>
+
+<p>
+Always list each direct dependency that your package needs to build and run
+correctly. Do not rely on dependency chains to meet the dependency
+requirements. For example, a package needs <c>dep1</c> and <c>dep2</c>, but
+<c>dep1</c> also depends on <c>dep2</c>. You might consider just adding
+<c>dep1</c> since it currently pulls <c>dep2</c> too, but in the future,
+<c>dep1</c> might drop <c>dep2</c> as a dependency, or make it conditional with
+USE flags. This would then break building your ebuild.
+</p>
+
</body>
</section>
</chapter>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2022-05-27 9:00 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2022-05-27 9:00 UTC (permalink / raw
To: gentoo-commits
commit: 94057052e439ab6fe70cb0560211ce36d56ec2b8
Author: Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri May 27 08:59:21 2022 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Fri May 27 08:59:21 2022 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=94057052
general-concepts/dependencies: Whitespace
Fixes: d08d5f0dea3d8580c55a052d6424863d6aeb8ae9
Fixes: 6c0b51ae63833c2ddfd58412727c0004db06d605
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 59b1b37..0ff903d 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -631,7 +631,7 @@ package:
<dd>
Use a tool like <c>scanelf -n</c> (from app-misc/pax-utils) or
<c>objdump -p</c> (from sys-devel/binutils) to list <c>DT_NEEDED</c>
- entries.
+ entries.
app-portage/iwdevtools and portage's own <c>qa-unresolved-soname-deps</c>
<b>FEATURE</b> can help finding these.
</dd>
@@ -804,7 +804,7 @@ requirements. For example, a package needs <c>dep1</c> and <c>dep2</c>, but
<c>dep1</c> since it currently pulls <c>dep2</c> too, but in the future,
<c>dep1</c> might drop <c>dep2</c> as a dependency, or make it conditional with
USE flags. This would then break building your ebuild.
-</p>
+</p>
</body>
</section>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2022-06-24 9:14 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2022-06-24 9:14 UTC (permalink / raw
To: gentoo-commits
commit: 6ea40822c59d94513f80f8a6d14c125c8e9aec0c
Author: Florian Schmaus <flow <AT> gentoo <DOT> org>
AuthorDate: Thu Dec 23 19:19:10 2021 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Fri Jun 24 09:12:27 2022 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=6ea40822
general-concepts/dependencies: add paragraph explaining example
Add a small paragraph explaining the existing slot-operator example.
This is scavenged from my proposed change for bug #739858.
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>
Bug: https://bugs.gentoo.org/739858
[Commits squashed; small fixes according to style guide.]
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 0ff903d..689fad0 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -421,6 +421,38 @@ RDEPEND="media-libs/cogl:1.0=
gnutls? ( >=net-libs/gnutls-2.8:= )"
</codesample>
+<p>
+means that only the '1.0' slot is acceptable for <c>media-libs/cogl</c> and
+that sub-slot changes of <c>media-libs/cogl</c> will cause a rebuild of the
+dependent package. It furthermore means that every slot of
+<c>net-libs/gnutls</c> is acceptable but any slot change is causing a rebuild.
+</p>
+
+<p>
+The <c>:slot</c> dependency syntax continues to behave like in <c>EAPI=4</c> or
+earlier, i.e. it indicates that only the specific slot value is acceptable and
+that the package will not break when the currently installed version of the
+dependency is replaced by a version with a different sub-slot.
+</p>
+
+<p>
+For example:
+</p>
+
+<codesample lang="ebuild">
+RDEPEND="dev-libs/foo:2=
+ >=dev-libs/bar-0.9:=
+ media-gfx/baz:*
+ x11-misc/wombat:0"
+</codesample>
+
+<p>
+means that the package should be rebuilt when <c>foo:2</c> or
+<c>>=bar-0.9</c> are upgraded to versions with different subslots. On the
+other hand, changes in slot or sub-slots of <c>baz</c> should be ignored, and
+sub-slot changes of <c>wombat:0</c> should be ignored.
+</p>
+
</body>
</subsubsection>
</subsection>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2023-09-27 8:30 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2023-09-27 8:30 UTC (permalink / raw
To: gentoo-commits
commit: a970eb2d03e0856beaac41786e9e27fb7376875a
Author: Petr Vaněk <arkamar <AT> atlas <DOT> cz>
AuthorDate: Wed Sep 27 07:22:02 2023 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Sep 27 08:29:33 2023 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=a970eb2d
general-concepts/dependencies: use <c> tag for dev-util/ebuildtester
Signed-off-by: Petr Vaněk <arkamar <AT> atlas.cz>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index aea0d7f..b041444 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -702,7 +702,7 @@ package:
<dd>
A sure-way to find missing dependencies is to test your ebuild in a
deprived environment. Chroots, containers, virtual machines and
- dev-util/ebuildtester can achieve this.
+ <c>dev-util/ebuildtester</c> can achieve this.
</dd>
</dl>
^ permalink raw reply related [flat|nested] 32+ messages in thread
* [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/
@ 2024-09-28 19:36 Ulrich Müller
0 siblings, 0 replies; 32+ messages in thread
From: Ulrich Müller @ 2024-09-28 19:36 UTC (permalink / raw
To: gentoo-commits
commit: 1f4eb2b2cb996e95f5fb1f09ee912082c8957fea
Author: Andrei Horodniceanu <a.horodniceanu <AT> proton <DOT> me>
AuthorDate: Thu Sep 26 09:08:38 2024 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Sep 28 19:36:07 2024 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=1f4eb2b2
g-c/dependencies: Clarify the stance on circular dependencies
I had a package that needed changes that would introduce a dependency
cycle with USE=test and I had to ask on IRC whether this was OK. Sam
told me not to worry about it and recommended that the devmanual
should note this.
So, add a paragraph that discourages dependency cycles but expresses
that cycles provoked by USE=test can usually be ignored.
Signed-off-by: Andrei Horodniceanu <a.horodniceanu <AT> proton.me>
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
general-concepts/dependencies/text.xml | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/general-concepts/dependencies/text.xml b/general-concepts/dependencies/text.xml
index 6c3207d..407e4c4 100644
--- a/general-concepts/dependencies/text.xml
+++ b/general-concepts/dependencies/text.xml
@@ -821,6 +821,14 @@ There are three kinds of circular dependencies:
</li>
</ol>
+<p>
+While circular dependencies should be avoided, an exception can be made for
+test-only dependencies. Similar to the example above with the tests of
+<c>dev-python/setuptools</c>, if a package needs itself, directly or
+indirectly, in order to run its tests, it is usually fine to leave it
+as-is. You should fix it if you can but don't go to extensive lengths for it.
+</p>
+
</body>
</section>
^ permalink raw reply related [flat|nested] 32+ messages in thread
end of thread, other threads:[~2024-09-28 19:36 UTC | newest]
Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-03-11 12:44 [gentoo-commits] proj/devmanual:master commit in: general-concepts/dependencies/ Ulrich Müller
-- strict thread matches above, loose matches on Subject: below --
2024-09-28 19:36 Ulrich Müller
2023-09-27 8:30 Ulrich Müller
2022-06-24 9:14 Ulrich Müller
2022-05-27 9:00 Ulrich Müller
2022-05-22 6:37 Joonas Niilola
2022-05-22 6:37 Joonas Niilola
2022-02-21 5:22 Sam James
2022-02-21 5:22 Sam James
2021-10-19 9:27 Mike Frysinger
2021-10-13 13:42 Ulrich Müller
2021-03-29 20:44 Ulrich Müller
2021-03-29 20:44 Ulrich Müller
2021-03-29 20:44 Ulrich Müller
2021-03-11 12:44 Ulrich Müller
2021-03-11 12:44 Ulrich Müller
2020-05-25 15:43 Ulrich Müller
2020-05-25 15:43 Ulrich Müller
2020-01-29 7:59 Ulrich Müller
2020-01-29 7:59 Ulrich Müller
2020-01-29 7:59 Ulrich Müller
2020-01-23 7:47 Ulrich Müller
2019-12-21 5:19 Ulrich Müller
2019-10-16 18:49 Göktürk Yüksek
2018-09-10 15:20 Mike Gilbert
2017-09-25 4:31 Göktürk Yüksek
2017-09-25 4:31 Göktürk Yüksek
2017-09-25 4:31 Göktürk Yüksek
2014-10-18 17:40 Markos Chandras
2013-07-29 21:53 Julian Ospald
2013-07-29 21:53 Julian Ospald
2011-02-17 21:08 Jeremy Olexa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox