Git Product home page Git Product logo

fink's Introduction

Fink ReadMe

This is Fink, a package management system that aims to bring the full world of Open Source software to Darwin and Mac OS X.

With the help of dpkg, it maintains a separate directory hierarchy. It downloads original source releases, patches them if necessary, configures them for Darwin and compiles and installs them. The information about available packages and the necessary patches (the "package descriptions") are maintained separately, but are usually included with this distribution. The actual source code is downloaded from the Internet as necessary.

Although Fink cannot be considered "mature" and it has some rough edges and lacking features, it is successfully used by a large number of people. Please read the instructions carefully and don't be surprised if something doesn't work as expected. There are good explanations for most failures; check the website if you need help.

Fink is released under the terms of the GNU General Public License. See the file COPYING for details.

Requirements

You need:

  • An installed Mac OS X system, version 10.9 or later. Earlier versions will not work with fink-0.39.2

  • The Xcode Command Line Tools are mandatory. This package can be installed either by downloading it directly via developer.apple.com, or by running the xcode-select --install command and choosing the Install button in the window that pops up. You may also need to use this command to update the tools, especially if you're having build problems.

    If you're doing a manual download, make sure that the tools you install match your Mac OS X version.

    Some packages require the full Xcode.

  • Java. Entering javac from a Terminal.app window should suffice to make the system download it for you, (10.7, 10.9) or open up a browser window from which you can downloadthe latest Java JDK (10.8).

  • Many other things that come with Mac OS X and the Developer Tools. This includes perl and curl.

  • Internet access. All source code is downloaded from mirror sites.

  • Patience. Compiling several big packages takes time. I'm talking hours or even days here.

Installation

The installation process is described in detail in the file INSTALL. Please read it first, the process is non-trivial. It also describes the upgrade procedure.

Using Fink

The file USAGE describes how to set your paths and how to install and remove packages. It also has a complete list of available commands.

Further Questions?

If the documentation included here doesn't answer your question, stroll over to the Fink website at https://www.finkproject.org/ and check out the Help page there: https://www.finkproject.org/help/. It will point you at the other documentation that is available and sources for support if you need it.

If you'd like to contribute to Fink, the Help page mentioned above also has a list of things you can do, like testing or creating packages.

Staying Informed

The project's website is at https://www.finkproject.org/.

To be informed of new releases, go to https://www.finkproject.org/lists/fink-announce.php and subscribe to the fink-announce mailing list. The list is moderated and low-traffic.

fink's People

Contributors

akhansen avatar beren12 avatar cooljeanius avatar dak180 avatar danielj7 avatar dmacks avatar dmalloc avatar dmrrsn-fink avatar dustinac avatar fangism avatar fingolfin avatar greghe avatar johannkoenig avatar jwhowarth avatar leighsmith avatar microtherion avatar nieder avatar rangerrick avatar smaret avatar thesin- avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fink's Issues

Fix Source: foo.tar.xz packages at next release

Email from danielj on fink-core:

I just found an issue with the new xz code. If a package, like texlive, already uses xz manually to expand .tar.xz files it will fail to build with fink master now since the tarball has already been expanded. It does seem possible to make a package work with either version by checking to see if the expanded directory already exists in PatchScript but it is a PITA. It would probably be best to release this change as soon as possible and alter the few packages using .tar.xz at the same time. In any case, xz-using packages are currently broken under master.

Daniel

Request: rename the '10.4' tree.

Now that 10.4 is unsupported, it's kind of confusing when someone mentions "10.4" with respect to a package: e.g is '10.4' the OS version, or '10.4" the tree for 10.5 and 10.6.

Maybe we should call it the '10.6' tree.

Fink Validate does not parse % expansion before checking description length

From the old SF tracker: https://sourceforge.net/p/fink/bugs/1389/

When the description contains a % expansion the length is incorrectly
checked.

For example from .info file:

Description: PostgreSQL database adapter for Python %type_raw[python]

From build:
$ fink -m --build-as-nobody rebuild psycopg2-py25 2>&1 | tee
psycopg2_build.log
Running in Maintainer Mode
Validating package file /sw/fink/dists/local/main/finkinfo/psycopg2-
py.info...
Warning: Length of package description exceeds 45 characters.
(psycopg2-py.info)
Failed: Please correct the above problems and try again!

$ fink list psycopg2
Information about 6332 packages read in 2 seconds.
psycopg2-py24 2.0.5.1-3 PostgreSQL database
adapter for Python 2.4
psycopg2-py25 2.0.5.1-3 PostgreSQL database
adapter for Python 2.5

Character count is 42 which is less than 45.

Check Xcode version in bootstrap

The bootstrap script doesn't actually check that the Xcode version is appropriate for Fink on the relevant OS (e.g. we don't support 3.2.6 on 10.7).

selfupdate using SSL

The package description files are currently updated via 'fink selfupdate' using either CVS or rsync. Both mechanisms send unencrypted traffic that is not protected against tampering. An attacker in a privileged network position (read: man in the middle) can alter package description files while in transit and thereby install malware into your system as you compile and install a package from the malicious description.

A proposed solution is to pull fink selfupdates via git using an SSL-protected connection.

--use-binary-dist downloads but does not install from .debs on 10.8/10.9

Here's an example:

$ fink install symlinks
Information about 9127 packages read in 1 seconds.
The package 'symlinks' will be downloaded as a binary package and installed.
Reading dependency for symlinks-1.2-2...
Reading runtime dependency for symlinks-1.2-2...
The following package will be installed or updated:
symlinks
Downloading symlinks_1.2-2_darwin-x86_64.deb from binary dist.
/sw/bin/apt-get-lockwait --ignore-breakage --download-only install symlinks=1.2-2
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
symlinks
0 packages upgraded, 1 newly installed, 0 to remove and 20 not upgraded.
Need to get 7114B of archives. After unpacking 24.6kB will be used.
Get:1 http://bindist.finkmirrors.net stable/main symlinks 1.2-2 [7114B]
Fetched 7114B in 0s (25.3kB/s)
Download complete and in download only mode
Setting runtime build-lock...
dpkg-deb -b /sw/src/fink.build/root-fink-buildlock-symlinks-1.2-2 /sw/src/fink.build
dpkg-deb: building package fink-buildlock-symlinks-1.2-2' in/sw/src/fink.build/fink-buildlock-symlinks-1.2-2_2014.02.18-07.42.14_darwin-x86_64.deb'.
Installing build-lock package...
/sw/bin/dpkg-lockwait -i /sw/src/fink.build/fink-buildlock-symlinks-1.2-2_2014.02.18-07.42.14_darwin-x86_64.deb
Selecting previously deselected package fink-buildlock-symlinks-1.2-2.
(Reading database ... 407471 files and directories currently installed.)
Unpacking fink-buildlock-symlinks-1.2-2 (from .../fink-buildlock-symlinks-1.2-2_2014.02.18-07.42.14_darwin-x86_64.deb) ...
Setting up fink-buildlock-symlinks-1.2-2 (2014.02.18-07.42.14) ...

curl --connect-timeout 30 -f -L -A 'fink/0.36.99.git' -O http://ftp.fi.muni.cz/pub/linux/ftp.ibiblo.org/utils/file/symlinks-1.2.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0
curl: (22) The requested URL returned error: 404

execution of curl failed, exit code 22

Downloading the file "symlinks-1.2.tar.gz" failed.

(1) Give up
(2) Retry the same mirror
(3) Retry using next mirror set "master"

Default answer will be chosen in 120 seconds...
How do you want to proceed? [3]
curl --connect-timeout 30 -f -L -A 'fink/0.36.99.git' -O http://distfiles.master.finkmirrors.net/symlinks-1.2.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 4650 100 4650 0 0 5981 0 --:--:-- --:--:-- --:--:-- 84545
sudo -u fink-bld [ENV] sh -c /tmp/fink.O81iE
โ€ฆ

Transfer web and xml CVS module to git

Other than dists, they are basically the last thing from CVS we are still using. They should be turned into a single web repository, from which our website is built. Note that the "xml" and "fink" CVS modules are a strange beast... In reality, xml is a subdir of "web". But our CVSROOT/modules file contains this magic:

website -a !web/xml web
xml web/xml &website
fink-mirrors fink/mirror
pdb pdb &php-lib &fink &website

Hence, the "xml" CVS module is a virtual alias, its content consist of web/xml, plus a subdir "xml/web", which has all the content of the web module -- except web/xml... So basically it is reversing the inclusion... Bizarre. In any case, this needs to be sorted out.

One caveat is that the file currently make use of CVS keywords like $Author$ and $Date$. Specifically, the XML files contain lines like

  <cvsid>$Id: doc.en.xml,v 1.19 2012/11/11 15:20:13 gecko2 Exp $</cvsid>

These are then parsed by our tools to produce output like this in the corresponding PHP file:

$cvs_author = 'Author: gecko2';
$cvs_date = 'Date: 2012/11/11 15:20:13';

Clearly, this must be reworked. @nieder suggest that using https://github.com/Autorevision/autorevision might be helpful for this.

On the long run, we may wish to consider switching to a different way to manage our website. E.g. using a static site generator like http://jekyllrb.com/ or http://middlemanapp.com/ -- or perhaps a CMS. But on the short run, this would cause us a lot of work, though.

multiarch/universal support?

Debian Wheezy was recently released as stable, and one of the features it touts is better multiarch support: http://www.debian.org/News/2013/20130504

I'm assuming the reason Fink hasn't been universal until now is because the Debian packaging system it's based on hasn't been universal until now, is that correct? If so, now that upstream has multiarch support, does that mean that Fink could now be universal, too?

add `fink help` command as an alias for `fink --help`

This, while funny, shouldn't happen:

eric-gallagers-macbook-pro:~ root# fink help
fink: unknown command "help".
Type 'fink --help' for more information.

(MacPorts has port help as a valid sub-command, for reference)

As much as possible of fink should work as non-root.

Todo.md lists this as "major" priority. It also says, "Especially important that 'fink build' should work, in case we ever want to use a build farm." Wasn't this recently fixed though with the addition of the fink-bld user?

Release tarballs have 10.4/unzip-10.4.info

There's no need to have a file marked "Distribution: 10.4" in current releases since that system has been EOL'ed. jhowarth has seen the file being left behind in "10.4/stable/main/finkinfo/base/unzip-10.4.info" on a clean bootstrap after doing 'fink selfupdate-cvs ; fink selfupdate'

Improve mirror setup during bootstrap

When doing a fresh Fink bootstrap, I am currently being asked two times to set or review my mirror choices (once at the start, and once when fink-mirrors gets installed). This by itself is somewhat worrying -- why does it have to ask me twice? That should be avoided.

But to me, the most annoying part is the first time, when Fink forces you to go through the whole mirror setup. For a pro-Fink-user, it is no problem to simply choose either the defaults, or "good" ones. But for newbies, this is something less clear and automatic... most would just use the defaults anyway, wouldn't they?

So, why do we force them to set defaults during bootstrap, when we already suggest defaults to them? I would suggest that we change the current process: First, we create a default mirror setup, by using precisely the choices we would suggest to the user. Then, we proceed as with any other mirror change: We ask the user whether to review the mirror settings. Most people would just choose "No". But power users can still override the initial settings. (This could also be important if e.g. the main Fink mirror becomes unavailable, to allow people to choose an alternate one.

Going one step further, right now we sort all FTP mirrors first, the http mirrors come afterwards. But I think even today, more people have trouble with FTP (due to firewalls) than with http. So (and this is an old idea), I think we should sort http mirrors to come first. This way, they would be the default choice during initial setup, too.

Use proxy in phase 1 of bootstrap

Here's the text from a bug report:

  • -------- Original Message --------

    Subject: [Fink-beginners] Possible proxy omission bug in bootstrap
    Date: Fri, 18 Nov 2011 17:18:08 -0500
    From: Kurt Tappe [email protected]
    To: [email protected]
    [email protected]

    When bootstrapping fink 0.31.4, I specify that I have a proxy server and
    I enter the full address and port.

    However, after all user-input has been provided and bootstrap starts to
    download items, it issues this command:

    curl --connect-timeout 30 -f -L -A 'fink/0.31.4' -P -

    Note the lack of a "--proxy" (or "-x") option. And thus this command
    fails with a "no response from server" error. If I copy it and reissue
    it manually with
    "--proxy http://[ourproxyserver]:8443http://[ourproxyserver]:8443"
    inserted, it works a charm.

    So why is bootstrap not using the proxy info I provide it?

    • -Kurt

The proxy information has just been gathered, but since the phase 1 download uses the bare download method rather than going through the whole fink tool, this information isn't getting passed along to curl.

rewrite the dependency code

Todo.md lists this as "Major" priority (which I agree with). It also says that someone has "added Conflicts / BuildConflicts support"

Bootstrap fails on 10.11

Checking package... looks good (fink-0.38.6).
Checking system... i386-apple-darwin15.0.0
Use of uninitialized value $gcc in regexp compilation at /Users/johnpope/Downloads/fink/perlmod/Fink/Services.pm line 1347.
Use of uninitialized value $gcc in concatenation (.) or string at /Users/johnpope/Downloads/fink/perlmod/Fink/Bootstrap.pm line 164.
This system was not released at the time this Fink release was made. Prerelease versions of Mac OS X might work with Fink, but there are
no guarantees.
Distribution: 10.11
Architecture: x86_64
Checking cc... looks good.
Checking make... looks good.
Checking head... looks good.
Verifying that installed Xcode Command Line Tools version is supported...
7.0.0.0.1.1440043355 is OK
Verifying that installed Xcode app version is supported...
Found Xcode version: 6.4 is OK.

OK, installing into '/sw'.

Creating directories...
/bin/mkdir -p -m755 /sw
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 631.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 631.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 631.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 633.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 633.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 633.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 633.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 633.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 633.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 633.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 633.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 633.
/bin/mkdir -m755 /sw/etc
/bin/mkdir -m755 /sw/etc/alternatives
/bin/mkdir -m755 /sw/etc/apt
/bin/mkdir -m755 /sw/src
/bin/mkdir -m755 /sw/fink
/bin/mkdir -m755 /sw/fink/debs
/bin/mkdir -m755 /sw/var
/bin/mkdir -m755 /sw/var/lib
/bin/mkdir -m755 /sw/var/lib/fink
/bin/mkdir -m755 /sw/fink//stable
/bin/mkdir -m755 /sw/fink//local
/bin/mkdir -m755 /sw/fink//local/main
/bin/mkdir -m755 /sw/fink//local/main/finkinfo
/bin/mkdir -m755 /sw/fink//local/main/binary-darwin-x86_64
/bin/mkdir -m755 /sw/fink//stable/main
/bin/mkdir -m755 /sw/fink//stable/main/finkinfo
/bin/mkdir -m755 /sw/fink//stable/main/binary-darwin-x86_64
/bin/mkdir -m755 /sw/fink//stable/crypto
/bin/mkdir -m755 /sw/fink//stable/crypto/finkinfo
/bin/mkdir -m755 /sw/fink//stable/crypto/binary-darwin-x86_64
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 649.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 649.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 649.
/usr/bin/sed -e "s,@arv@,local," -e "s,@comp@,main," -e "s,@arch@,x86_64," < Release > /sw/fink//local/main/binary-darwin-x86_64/Release; /usr/bin/touch /sw/fink//local/main/binary-darwin-x86_64/Packages; /usr/bin/gzip /sw/fink//local/main/binary-darwin-x86_64/Packages
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 649.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 649.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 649.
/usr/bin/sed -e "s,@arv@,stable," -e "s,@comp@,main," -e "s,@arch@,x86_64," < Release > /sw/fink//stable/main/binary-darwin-x86_64/Release; /usr/bin/touch /sw/fink//stable/main/binary-darwin-x86_64/Packages; /usr/bin/gzip /sw/fink//stable/main/binary-darwin-x86_64/Packages
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 649.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 649.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at /Users/johnpope/Downloads/fink/bootstrap line 649.
/usr/bin/sed -e "s,@arv@,stable," -e "s,@comp@,crypto," -e "s,@arch@,x86_64," < Release > /sw/fink//stable/crypto/binary-darwin-x86_64/Release; /usr/bin/touch /sw/fink//stable/crypto/binary-darwin-x86_64/Packages; /usr/bin/gzip /sw/fink//stable/crypto/binary-darwin-x86_64/Packages
Use of uninitialized value $selfupdatetrees in string eq at /Users/johnpope/Downloads/fink/bootstrap line 658.
Use of uninitialized value $selfupdatetrees in string at /Users/johnpope/Downloads/fink/bootstrap line 659.
ERROR: Can't create symlink /sw/fink/10.11

Futureproof2 emits warnings on 'fink update-all'

The current Futureproof2 branch's fink still produces the warnings...

Scanning package description files..........
Information about 7977 packages read in 3 seconds.
Use of uninitialized value $res in negation (-) at /sw/lib/perl5/Fink/Services.pm line 953.
Use of uninitialized value $res in numeric ge (>=) at /sw/lib/perl5/Fink/Services.pm line 963.
The following 10 packages will be installed or updated:
cpan-meta-pm5124 cython-py27 extutils-makemaker-pm5124 gmp5 gmp5-shlibs io-socket-ssl-pm5124 libgmpxx5-shlibs test-harness-pm5124 test-simple-pm5124
unicode-normalize-pm5124

when 'fink update-all' is executed. It would appear that for statement in sub version_cmp....

            for ($i = 0; $i <= $#avers; $i++) {
                    $avers[$i] = "" if (not defined $avers[$i]);
                    $bvers[$i] = "" if (not defined $bvers[$i]);
                    $res = raw_version_cmp($avers[$i], $bvers[$i]);
                    last if $res;
            }

must be allowing $res to escape without being initialized before it is being used.

TheCaptain - bootstrap fails for me on > phase compiling: dpkg-bootstrap-1.10.21-1221 failed

execution of PERL=/usr/bin/perl failed, exit code 1

phase compiling: dpkg-bootstrap-1.10.21-1221 failed

I retried with build tasks as 1 - same error.

execution of PERL=/usr/bin/perl failed, exit code 1

phase compiling: dpkg-bootstrap-1.10.21-1221 failed

I'm osx 10.11 xcode 7 beta 6

Also include the following system information:
Package manager version: 0.38.99.git
Distribution version: selfupdate-point (bootstrap), 10.11, x86_64
Trees: local/main stable/main
Xcode.app: 6.4
Xcode command-line tools: 7.0.0.0.1.1440043355
Max. Fink build jobs: 1

long validator wishlist in Validation.pm

Todo.md lists this as a "minor" issue. FIXMEs in Validation.pm include:

  • # FIXME: (No)SetPATH is undocumented
  • # FIXME: On the other hand, (No)SetJAVA_HOME *is* documented (but unused)
  • # FIXME: this is a bit suspect: Does %lib only exist for Type:lib? Why does validation depend on the machine on which it's running?
  • # FIXME: For some reason, we allow the inclusion of $basepath/src, which may exist but must be empty. The reason for this should either be documented, or this hack be removed.

TODOs in Validation.pm include

  • # TODO: Optionally, should sort the fields to the recommended field order
  • # - better validation of splitoffs
  • # - correct format of Shlibs: (including misuse of %v-%r, and including the optional new "library architecture" entry which may be 32, 64, or 32-64)
  • # - use of %n in SplitOff:Package: (should be %N)
  • # - use of SplitOff:Depends: %n (should be %N (tracker Bugs #622810)
  • # - actually instantiate the Package or PkgVersion object (easier to try it than to check for some broken-ness here)
  • # - run a mock build phase (catch typos in dependencies, BuildDependsOnly violations, etc.)
  • # - make sure for each %type_*[foo] there is a Type: foo
  • # TODO: If epoch has been specified, the pkgfullname should make use of it, too
  • # TODO: figure out how to validate multivariant Type:
  • # - make sure syntax is okay
  • # - make sure each type appears as a type_*[] in Package
  • # support for new script templates TODO: This field is not documented.
  • # - If a package *Script uses debconf, it should Depends:debconf (TODO: should be in preinst not postinst, should be PreDepends not Depends)

dpkg-lockwait fails due to invalid type 'q'

I recently selfupdated, and ever since, dpkg-lockwait always fails with the following message:

Invalid type 'q' in pack at /sw/bin/dpkg-lockwait line 41.

Or more fully:


dpkg-deb: building package `fink-buildlock-fink-mirrors-0.36.1.1-1' in `/sw/src/fink.build/fink-buildlock-fink-mirrors-0.36.1.1-1_2013.12.27-10.58.30_darwin-i386.deb'.
Installing build-lock package...
/sw/bin/dpkg-lockwait -i /sw/src/fink.build/fink-buildlock-fink-mirrors-0.36.1.1-1_2013.12.27-10.58.30_darwin-i386.deb
Invalid type 'q' in pack at /sw/bin/dpkg-lockwait line 41.
### execution of /sw/bin/dpkg-lockwait failed, exit code 25
Can't set build lock for fink-mirrors (0.36.1.1-1)

If any of the above dpkg error messages mention conflicting packages or missing dependencies -- for example, telling you that the package fink-buildlock-fink-mirrors-0.36.1.1-1 conflicts with something else
-- fink has probably gotten confused by trying to build many packages at once. Try building just this current package fink-mirrors (i.e, "fink build fink-mirrors"). When that has completed successfully, you
could retry whatever you did that led to the present error.

Regardless of the cause of the lock failure, don't worry: you have not wasted compiling time! Packages that had been completely built before this error occurred will not have to be recompiled.

See https://github.com/fink/fink/wiki/Buildlocks for more information. 
/sw/bin/dpkg-lockwait -r fink-buildlock-fink-mirrors-0.36.1.1-1 >/dev/null
Invalid type 'q' in pack at /sw/bin/dpkg-lockwait line 41.
### execution of /sw/bin/dpkg-lockwait failed, exit code 25
Failed: buildlock failure

line 41 of /sw/bin/dpkg-lockwait says:

    my $struct_flock = pack("qqiss", 0, 0, 0, F_WRLCK, SEEK_SET);

Some minor bugs in 0.36.0.

One was introduced with Futureproof2:

./setup.sh /sw/src/fink.build/fink-0.36.99.git-20131104.0105/t/basepath x86_64
./setup.sh: line 48: [: missing `]'
./setup.sh: line 48: 12: command not found

I fixed this in master via a4c900e and in branch_0_36 via 8b827fb .

I'm not sure how long the other has been with us, but the manpage for Fink::SelfUpdate::CVS is broken. Apparently, pod2man from perl-5.10.0 and later doesn't throw a fatal error on an extra =cut in a perlmod file, but that from 5.8.8 does, and a user happened to have found it. With newer pod2mans, one gets:

...
Private Methods

POD ERRORS
Hey! The above document had some coding errors, which are explained
below:

   Around line 404:
       =cut found outside a pod block.  Skipping to next block.

This is fixed in master via 5ec85f2 and in branch_0_36 via 26ec1c4 .

I'm not sure whether these merit a new release or not.

Validator doesn't check %p/Library/Python in RuntimeVars

The validator checks for %p/lib/python in PYTHONPATH in RuntimeVars. Now that %p/Library/Python is a valid location, it should also check there.

The current regex is

^\s*(PYTHONPATH:\s+($basepath|\%p)/lib/(Python|python\d\.\d/))\s*$

Also, the PYTHONPATH test doesn't set the failure token "$looks_good" to 0.

Possible patch:

From 00f1e11df9ceb40a55f0ec750e7cb7271e6e40ff Mon Sep 17 00:00:00 2001
From: Hanspeter Niederstrasser <[email protected]>
Date: Sat, 21 Sep 2013 17:47:54 -0400
Subject: [PATCH] validator: prohibit Library/Python in
 RuntimeVars::PYTHONPATH

---
 perlmod/Fink/Validation.pm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/perlmod/Fink/Validation.pm b/perlmod/Fink/Validation.pm
index ef80850..117db3e 100644
--- a/perlmod/Fink/Validation.pm
+++ b/perlmod/Fink/Validation.pm
@@ -808,8 +808,9 @@ sub validate_info_file {
                print "Error: '$1' in RuntimeVars will break many shared libraries. ($filename)\n";
                $looks_good = 0;
            # error for PYTHONPATH pointing to global install location in RuntimeVars
-           } elsif ($line =~ m,^\s*(PYTHONPATH:\s+($basepath|\%p)/lib/(Python|python\d\.\d/))\s*$,) {
+           } elsif ($line =~ m,^\s*(PYTHONPATH:\s+($basepath|\%p)/(lib/(Python|python\d\.\d/)|Library/Python/\d\.\d/site-packages))\s*$,) {
                print "Error: '$1' in RuntimeVars can break other Python scripts. ($filename)\n";
+               $looks_good = 0;
            }
        }
    }
-- 
1.7.12.4 (Apple Git-37)

Two other problems with our current solution as is, that this doesn't address:

  1. The test fails when using % expansion for the python version. The validator doesn't seem to expand % tokens before parsing (most likely issue #82).
  2. This validator test fails when RuntimeVars has something like "PYTHONPATH: %p/lib/python2.7:$PYTHONPATH"

Those can be dealt with later.

Bootstrap fails on 10.9

% sudo ./bootstrap /sw
Checking package... looks good (fink-0.35.99.git).
Checking system... i386-apple-darwin13.0.0
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include/c++/4.2.1
Use of uninitialized value $gcc in regexp compilation at /Users/smaret/Software/fink/fink/perlmod/Fink/Services.pm line 1345.
Use of uninitialized value $gcc in concatenation (.) or string at /Users/smaret/Software/fink/fink/perlmod/Fink/Bootstrap.pm line 166.
This system was not released at the time this Fink release was made. Prerelease versions of Mac OS X might work with Fink, but there are no
guarantees.
Distribution: 10.9
Architecture: x86_64

Fink must be installed and run with superuser (root) privileges. Fink can automatically try to become root when it's run from a user account.
Available methods:

(1) Use sudo
(2) Use su
(3) None, fink must be run as root

Choose a method: [1]
Checking cc... looks good.
Checking make... looks good.
Checking head... looks good.
Verifying that installed Xcode version is supported...
Found Xcode version: 5.0 is OK.

OK, installing into '/sw'.

Creating directories...
/bin/mkdir -p -m755 /sw
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at ./bootstrap line 538, line 1.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at ./bootstrap line 538, line 1.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at ./bootstrap line 538, line 1.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at ./bootstrap line 540, line 1.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at ./bootstrap line 540, line 1.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at ./bootstrap line 540, line 1.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at ./bootstrap line 540, line 1.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at ./bootstrap line 540, line 1.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at ./bootstrap line 540, line 1.
/bin/mkdir -m755 /sw/etc
/bin/mkdir -m755 /sw/etc/alternatives
/bin/mkdir -m755 /sw/etc/apt
/bin/mkdir -m755 /sw/src
/bin/mkdir -m755 /sw/fink
/bin/mkdir -m755 /sw/fink/debs
/bin/mkdir -m755 /sw/var
/bin/mkdir -m755 /sw/var/lib
/bin/mkdir -m755 /sw/var/lib/fink
/bin/mkdir -m755 /sw/fink//stable
/bin/mkdir -m755 /sw/fink//local
/bin/mkdir -m755 /sw/fink//local/main
/bin/mkdir -m755 /sw/fink//local/main/finkinfo
/bin/mkdir -m755 /sw/fink//local/main/binary-darwin-x86_64
/bin/mkdir -m755 /sw/fink//stable/main
/bin/mkdir -m755 /sw/fink//stable/main/finkinfo
/bin/mkdir -m755 /sw/fink//stable/main/binary-darwin-x86_64
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at ./bootstrap line 556, line 1.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at ./bootstrap line 556, line 1.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at ./bootstrap line 556, line 1.
/usr/bin/sed -e "s,@arv@,local," -e "s,@comp@,main," -e "s,@arch@,x86_64," < Release > /sw/fink//local/main/binary-darwin-x86_64/Release; /usr/bin/touch /sw/fink//local/main/binary-darwin-x86_64/Packages; /usr/bin/gzip /sw/fink//local/main/binary-darwin-x86_64/Packages
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at ./bootstrap line 556, line 1.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at ./bootstrap line 556, line 1.
Use of uninitialized value $selfupdatetrees in concatenation (.) or string at ./bootstrap line 556, line 1.
/usr/bin/sed -e "s,@arv@,stable," -e "s,@comp@,main," -e "s,@arch@,x86_64," < Release > /sw/fink//stable/main/binary-darwin-x86_64/Release; /usr/bin/touch /sw/fink//stable/main/binary-darwin-x86_64/Packages; /usr/bin/gzip /sw/fink//stable/main/binary-darwin-x86_64/Packages
Use of uninitialized value $selfupdatetrees in string eq at ./bootstrap line 565, line 1.
Use of uninitialized value $selfupdatetrees in string at ./bootstrap line 566, line 1.
ERROR: Can't create symlink /sw/fink/10.9

Stricter forcing of Xcode CLI tools

I'd like to do some combination of the following;

  1. Forbid bootstrapping when the test for the proper Xcode CLI (via its receipt) fails. This would be a good time to tell the user about xcode-select --install on 10.9.

  2. Have Virtpackages.pm error out if the xcode virtual package isn't generated, as per the same test as in 1), above.

  3. Give fink a Depends: xcode.

  4. Change the format of the xcode virtual package to include a faux CompileScript, e.g. to provide another opportunity to mention xcode-select --install.

  5. Deprecate the xcode virtual package in favor of something less confusing to users, like xcode-cli.

Check TIMESTAMP from _all_ rsync mirrors

During the recent finkproject.org outage, folks who were on most of the rsync mirrors didn't get updates because as far as their machines could tell things were fine.

Would it be useful to grab the TIMESTAMP from all of the rsync mirrors and compare that from a user's selected mirror with the most recent version? They don't get updated in sync, but we could at least fire off a warning to the user that their rsync mirror might be having problems if, say, its TIMESTAMP is more than an hour older than the most recent one.

I don't have time to play with this right now, but I figured I'd mention it so that I don't forget.

Set __CFPREFERENCES_AVOID_DAEMON on Mountain Lion to avoid build hangs

So Mountain Lion had some annoying changes to Core Foundation, namely the introduction of cfprefsd, which can cause some commands to hang. See this MacPorts ticket for reference: https://trac.macports.org/ticket/34221
Apparently it can be fixed by setting __CFPREFERENCES_AVOID_DAEMON in the build environment: https://trac.macports.org/changeset/104118
Fink should try setting this, too, because I've been seeing some hangs with it, too, on Mountain Lion since switching to it.

selfupdate uses non-full-path rsync and cvs

SelfUpdate/rsync.pm and cvs.pm just call 'rsync' or 'cvs' to do their magic.

They should use the full path to their respective tools. Otherwise it is possible that a user has a broken rsync or cvs that doesn't behave the way system-rsync/cvs/svn/git work and this can cause problems (or failures) during a selfupdate.

Failed install

Ran 'fink configure' 'fink selfupdate-rsync'

Still receiving this message when trying to install apt-get -

Failed: no package found for specification

Outdated bundled documentation

The various readme.*.html files included in the fink tarball are way out of date. It'd be nice to have linguistically correct updates.

VirtPackage system-java tests are wrong

Running fink-0.34 on a 10.8 system probably will not ever detect system-java-dev because it looks at subdirectories of /System/Library/Frameworks/JavaVM.framework/Versions/, which no longer ever change.

It would be better to check /usr/libexec/java_home -t CommandLine -V and then see which of those JVMs are JDKs for system-java-dev.

Validator doesn't check that all provided checksums match the tarball

For most of my packages, I have been providing both the MD5 and SHA1 checksum the tarball. On the last ettercap update, I only updated SHA1 sum and forgot to change the MD5 sum. Fink happily downloaded and built the package with only the SHA1 sum matching. The validator should check that all checksums provided match before proceeding.

Interestingly, if the MD5 matches, but the SHA1 doesn't, Fink does complain:

Expected: 008fca94bbd67b578699300eb321766cd41fbffa  <-changed last bit to break it
Actual: MD5(067514bb53ff76b81d578676e2048319)
        SHA1(008fca94bbd67b578699300eb321766cd41fbfff)

Reduce number of spots in code which contains OS or arch specific cases

Right now, there are checks for the Mac OS X version, Darwin kernel version, arch, perl version and other things scattered across all of the fink code -- and not just in perlmods/Fink, but also in scripts like setup.sh, bootstrap etc. This makes it very easy to forget updating all places when adding support for a new OS version. Thus inconsistencies creep in. For example, setup.sh contains this code:

perlexe="/usr/bin/perl"

osMajorVer=`uname -r | cut -d. -f1`

if [ $osMajorVer -eq 9 ]; then
  if [ "$architecture" = "x86_64" ]; then
    perlexe="$basepath/bin/perl5.8.8"
  fi
fi

if [ $osMajorVer -eq 10 ]; then
  perlexe="/usr/bin/arch -arch $architecture /usr/bin/perl5.10.0"
fi

if [ $osMajorVer -gt 10 ]; then
  perlexe="/usr/bin/arch -arch $architecture /usr/bin/perl5.12"
fi

while the bootstrap perl script contains this similar but somewhat different logic:

my $perlexe  = "/usr/bin/perl"; #default
# override defaults
if ($distribution eq "10.6") { 
    $perlexe = "/usr/bin/arch -arch $arch /usr/bin/perl5.10.0";
} elsif ($distribution gt "10.6") { 
    $perlexe = "/usr/bin/arch -arch $arch /usr/bin/perl5.12";
} elsif (($arch eq "x86_64") and ($distribution eq "10.5")) {
    $perlexe = "$bsbase/bin/perl5.8.8";
}

It would be really good if we could cut down on the number of places with such checks, ideally focusing them into one or two files. In the above example, we could achieve this by moving the perlexe computation to a separate helper (shell) script, which is then invoked by both setup.sh and bootstrap.

But this is just the tip of the ice berg. The real interesting cases are inside perlmods/Fink; and the hardest to resolve cases are probably those were similar checks are used in both perlmods/Fink and outside it (such as by bootstrap)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.