pkgsrc on a buffalo linkstation

Given that a stable tarball of pkgsrc is coming up this is possibly just a temporary aberration with a couple of broken commits but as of the 17mar08 the pkgsrc.tar.gz tarball won’t build on a FreeLink enabled LinkStation without a couple of tweaks. Annoyingly, the deaths are during the bootstrap stage so everything has to restart from scratch each time so it took longer than normal to track these down.

One is a link error regarding vulnerability checking that I think is just a lack of an extra #ifdef chunk, and another is a missing variable declaration. After that, there are a couple of packages that are worth throwing in on the Debian side of things to ensure a painless start to your builds, not to mention you’d be wise to symlink the /usr/pkg, /usr/pkgsrc and possibly the /var/db/pkg directories onto the main partition to ensure enough disc space to build. Obviously you will need to take care when it comes to running daemons and other boot-time programs and ensure that the filesystems are all mounted first, or else copy back the binaries once built.

In the /usr/pkgsrc/pkgtools/pkg_install/files/admin directory, apply these patches:

diff -u -r1.1 audit.c
--- audit.c     13 Mar 2008 16:35:30 -0000      1.1
+++ audit.c     18 Mar 2008 13:18:11 -0000
@@ -77,7 +77,7 @@
 static void
 parse_options(int argc, char **argv)
-       int ch;
+       int ch,optreset;

optreset = 1; optind = 0;

and then:

diff -u -r1.38 main.c
--- main.c      13 Mar 2008 16:35:30 -0000      1.38
+++ main.c      18 Mar 2008 13:18:12 -0000
@@ -521,10 +521,12 @@
        } else if (strcasecmp(argv[0], "unset") == 0) {
                argv++;         /* "unset" */
                set_unset_variable(argv, TRUE);
+#ifndef BOOTSTRAP
        } else if (strcasecmp(argv[0], "fetch-pkg-vulnerabilities") == 0) {
                fetch_pkg_vulnerabilities(--argc, ++argv);
        } else if (strcasecmp(argv[0], "check-pkg-vulnerabilities") == 0) {
                check_pkg_vulnerabilities(--argc, ++argv);
 #ifndef BOOTSTRAP
        else if (strcasecmp(argv[0], "audit") == 0) {

It’s also worth adding these packages to the base Debian/FreeLink system:

aptitude install patch
aptitude install gawk
aptitude install libncurses-dev
aptitude install libncurses5
aptitude install cvs
aptitude install file
aptitude install sharutils
aptitude install g++

Comments are Disabled