[Slackbuilds-users] requirements in README files
c.willing at uq.edu.au
Tue Jul 10 10:24:24 UTC 2012
On 10/07/2012, at 5:02 PM, LukenShiro wrote:
> Il giorno Tue, 10 Jul 2012 10:42:10 +1000
> Christoph Willing <c.willing at uq.edu.au> ha scritto:
>> A listing of build prerequisites is even more innocuous - no
>> particular need for that to appear in a final package at all. My
>> suggestion would be for a PREREQS="..." line in the .info file
>> (which doesn't by default appear in the final package).
> I am not absolutely against this idea, but it is not so simple.
> First, there are several types of prerequisites:
> - mandatory build dependencies;
> - optional build dependencies;
The PREREQS="..." line, as I use it already, is only used for build
Let me say right now that I suggest this mechanism largely because I
have been using it myself for some time. In the lab that I'm
responsible for, we have many specialist softwares that have various
build dependencies. I have a number of my own build scripts which
specify the build depenednecies but over the last year or so I have
been modifying SBo scripts (when they already exist) to include a
PREREQS= line in the info file. If PREREQS were already included, I
wouldn't have to maintain my own versions of them. However the effort
in doing so is worth it, so I do.
I general, the PREREQS field is most useful for mandatory build
dependencies - my unsubstantiated guestimate is that this probably
covers about 80-90% of all cases. Other cases can be dealt with
specifically in the .SlackBuild script itself. However even if an
optional dependency is listed in PREREQS but not actually used (i.e.
we needlessly treat even an optional dependency as mandatory), so
what? Its just another package that happens to be installed while
you're building - whether its used or not. In general, any given
system has probably hundreds of packages installed that are not needed
to build a particular software package.
> - mandatory runtime dependencies;
> - optional runtime dependencies;
I believe runtime dependencies should be a different topic. I don't
use the PREREQS= entry for that.
> - build and/or runtime dependencies who relies on one o more flags
> users can pass to .SlackBuild.
As above, an SBo author could also "blindly" treat any optional build
dependencies as mandatory and include them in the PREREQS field.
Whether such optional dependencies are actually used could depend on
flags passed to the .SlackBuild
> To complicate the scenario ;) upstream developers sometimes use
> auto-detection in their configure files, so maybe it should taken into
> the account, too.
Setting up a useful PREREQS field can actually make use of that
mechanism i.e. as a configure script fails due to a missing package,
that package can be added to the PREREQS field. If the PREREQS field
is used to ensure that its members are installed at build time (after
all, this is the purpose of the PREREQS field) then the previously
missing package will be installed next time the build script is run.
After dealing with a number of such failures, a reliable PREREQS field
will have been constructed. By the time such an SBO script reaches an
ordinary user, it will just work because all the build dependencies
have already been transparently specified.
> Moreover, it would also make sense to note reverse dependencies (a
> prerequisite upgrade, particularly for a shared library, often
> entails a new compilation of packages who uses it).
> GNU/Linux * Slackware64 current/multilib
> LU #210970 SU #12583 LM #98222/#412913
> SlackBuilds-users mailing list
> SlackBuilds-users at slackbuilds.org
> Archives - http://lists.slackbuilds.org/pipermail/slackbuilds-users/
> FAQ - http://slackbuilds.org/faq/
Christoph Willing +61 7 3365 8316
Research Computing Centre
University of Queensland
More information about the SlackBuilds-users