The DEPENDS file is used to contain information about what this spell needs to compile, with optional ones for added compile-time or runtime options.
This specifies the name of the spell which this spell requires to compile.
The syntax is:
depends <spell> \
["<config_if_set>"] \
["<description>"] \
[<grimoire>]Example (basic dependency):
depends zlib
Example (multiple dependencies):
depends zlib "--enable-compression" && depends gtk+ "" "for the GUI"
This specifies the name of the spell which this spell requires to run, but not to build.
Example:
runtime_depends perl
This specifies the name of the spell which this spell can use to add features, along with the required ./configure parameters (use ./configure --help for this spell to find out what else you can add to it and what their options are).
The syntax is:
optional_depends <spell> \
"<config_if_set>" \
"<config_if_unset>" \
"descripion" \
[<grimoire>]Example:
optional_depends gtk+ \
"--with-gtk+" \
"--without-gtk+" \
"to enable GTK+ widget support"Example (multiple optional dependencies):
optional_depends gtk+ \
"--with-gtk+" \
"--without-gtk+" \
"to enable GTK+ widget support" &&
optional_depends sdl \
"--with-sdl" \
"--without-sdl" \
"for Simple DirectMedia Layer support"This specifies the name of the spell which this spell can use at runtime, but does not need it to build. It is the runtime-only counterpart of optional_depends called suggest_depends.
Example:
suggest_depends wine-gecko "" "" "for a standalone gecko for wine"
This specifies the name of the provider which this spell requires to compile or run, optionally or not.
Example:
depends MAIL-TRANSPORT-AGENT && suggest_depends WEB-BROWSER "" "" "for browsing the html docs"
See PROVIDES for a listing of generic services provided by spells, and how to use them to make generic dependencies.
Only spells that can actually use all of the providers for a generic dependency are allowed to depend/optional_depend on that provider.
Cross-grimoire dependencies allow you to depend on a spell in a specific grimoire.
Here is an example of how to use cross-grimoire depends:
depends JAVA "" "" z-rejected &&
optional_depends libcg \
"--enable-cg" \
"--disable-cg" \
"for nVIDIA's Computer Graphics library" \
z-rejectedThis package will depend on z-rejected for JAVA, and again depend on z-rejected if the user says 'y' to installing "libcg".
Remember, do not use TABs, but instead SPACEs for formatting. Also make sure that your last line does not have the &&, for there will be nothing after it to continue on, and you will have a syntax error when this file is read. And you always must provide at least "" if you have further arguments or the ordering will be wrong.
Correct example:
depends JAVA "" "" z-rejected &&
optional_depends libcg \
"" \
"" \
"for nVIDIA's Computer Graphics library" \
z-rejectedforce_depends is not a regular dependency function like the rest mentioned here. It is used to force a dependency to be rebuilt if possible. The dependency still has to be specified normally.
For example, "g++" needs to be of the same version as "gcc" or it won't build:
depends gcc && if [[ $VERSION != $(installed_version gcc) ]]; then force_depends gcc fi
force_depends forces ordering and that's what helps most. "gcc" could've been recompiled later in the queue, but this spell needs the latest before its own build.
See SUB_DEPENDS and PRE_SUB_DEPENDS duo for more information on sub-dependencies.