Difference between revisions of "Fink:Policy:Trees"

From the Fink Wiki
Jump to navigation Jump to search
(→‎Tree Modularity: more improvements)
(fix tag-balance problem)
 
Line 24: Line 24:
 
<pre>fink --trees=stable/main list -t | grep -v '\[' | cut -f2 > pkgs</pre>
 
<pre>fink --trees=stable/main list -t | grep -v '\[' | cut -f2 > pkgs</pre>
 
edit <code>pkgs</code> to remove any known blockers:
 
edit <code>pkgs</code> to remove any known blockers:
* <code>libgems-rb*</code> and <code>rubygems-rb*<code> (-rb16 and -rb18 cannot be built concurrently)
+
* <code>libgems-rb*</code> and <code>rubygems-rb*</code> (-rb16 and -rb18 cannot be built concurrently)
 
<pre>cat pkgs | xargs fink --trees=stable/main,virtual rebuild</pre>
 
<pre>cat pkgs | xargs fink --trees=stable/main,virtual rebuild</pre>
   

Latest revision as of 07:53, 16 July 2017


Linking Against OpenSSL

If the package currently has to be marked "License: Restrictive" because it links against OpenSSL, there is a workaround. The GPL specifies that it is OK to link against non-GPL software if it is a system-provided library. Since Apple includes OpenSSL as part of the base Mac OS X install, it can be linked against without license issues.

To do so, use the system-openssl-dev package.

Tree Modularity

Any package in the stable tree must have all its (Build)Depends be satisfiable by packages in the stable tree. The idea is that a user could use only the stable tree and still still have a self-contained fink installation with no missing dependent packages.

Prior to July 1, 2010, any package that had a (Build)Depends that can only be satisfied by package(s) in section:crypto was required to itself be in section:crypto. This requirement was dropped when crypto was moved into the main tree.

You can pipe the output of 'fink list' into 'fink rebuild' to see if there are any packages with broken dependencies. The subsets are:

  1. stable/main
  2. unstable/main stable/main

(There used to be two more subsets, involving the crypto tree.)

Because some users might only have unstable/main, every package in the stable tree should also appear in the unstable tree, in either the same or a more recent version.

You can use fink's --trees flag instead of having to alter the Trees line in your fink.conf file for each subset of the distro, for example:

fink --trees=stable/main list -t | grep -v '\[' | cut -f2 > pkgs

edit pkgs to remove any known blockers:

  • libgems-rb* and rubygems-rb* (-rb16 and -rb18 cannot be built concurrently)
cat pkgs | xargs fink --trees=stable/main,virtual rebuild

An alternative way to test for modularity and find all unsatisfied dependencies is:

fink --trees=stable,virtual list --format=dotty | perl -n -e 'if (/"(.*?)" -> "(.*?)"/) { push @{$need{$2}}, $1} elsif (/"(.*?)" \[/) {$have{$1}++}} END {foreach (sort keys %need) {print "missing $_ for ".join(" ",@{$need{$_}})."\n" unless $have{$_}}'

For complete diagnosis, that one-liner also needs to be run with --format=dotty-build in place of --format=dotty (to get BuildDepends) and both times as fink -m (to get TestDepends included).