Project Home
Project Home
Source Code
Source Code
Documents
Documents
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
wiki1428: Bootstrap (Version 15)

Building from source with pkgsrc.#

Before you start#

  • QNX support for 'pkgsrc' is currently for self hosted machines only. Please see the QNX site for download information.
  • Make sure you have an internet connection. 'pkgsrc' will download distributions from the applicable sites.

Set up your kit#

Before building packages from source under QNX, it's recommended you download and install the QNX Utility Package for pkgsrc containing fixes and omissions to our kit this entire exercise has uncovered. This may be updated periodically and the fixes contained within will eventually be part of a general distribution of QNX. You may want to verify its contents and backup any existing components. The '-U' option to tar may be required to install this archive:
# cd /
# tar -xzvUf /tmp/pkgsrc_qnxutil-0.7.tar.gz

Archive contents at time of writing:#

  • usr/bin/patch
    • The shipped one doesn't do anything. PR 21085.
  • usr/qnx632/target/qnx6/x86/usr/lib/libtermcap.a
    usr/qnx632/target/qnx6/x86/usr/lib/libtermcapS.a
    • tgetent() can pull out terminal definition for ansi rather than qansi. PR 45283.
      • tcsh can tickle this one.
  • usr/bin/expr
    • regular expression matching done with the ':' operator must be anchored to the beginning of the string. PR 49169.
      • libtool can tickle this one.
    • work buffer for ':' operator is too small. PR 50882.
      • configure scripts can tickle this one.
  • bin/uname
    • trailing space if muliple options are passed or -a specified is not POSIX. PR 44076.
  • usr/bin/comm
    • comm is needed for POSIX conformance. PR 19760.
      • perl needs this one.
  • usr/bin/ftp
    • This is the latest one from our next scheduled networking release and adds http support which pkgsrc likes to have.
  • bin/pwd
    • Lack of terminating newline if stdout isn't a tty isn't POSIX. PR 44519.
  • usr/bin/tr
    • '\\' , '\a' , '\b' , '\f' , '\n' , '\r' , '\t' , '\v' should be supported as POSIX escape sequences. PR 24740.
  • bin/ksh
    • This is a weird one. libtool-1.5.24 consistently caused ksh to fault while building ncurses. Wasn't really able to debug it but recompiling the HEAD ksh seemed to remedy it so maybe something fixed along the way?

Optionally update your procnto#

  • This is _probably_ not needed. The building of groff passes a lot of args via its environment. There was a case where processes with a large PATH would not inherit their environment correctly (PR 44407). So depending on where you check it out to, the build of groff may show issues.

Set up your environment#

  • Add /usr/pkg/bin:/usr/pkg/sbin to your PATH
  • Add /usr/pkg/lib to your CS_LIBPATH
    • I have the following in my /etc/rc,d/rc.local
      setconf CS_LIBPATH $(getconf CS_LIBPATH):/usr/pkg/lib
  • Your default compiler will be used. 3.3.5 works much better.
    # qcc -V 3.3.5,gcc_ntox86 -set-default
    4.2.1 might be better still? Someone try it out :)

Bootstrap#

  • Download pkgsrc with QNX diffs. Familiarize yourself with the repository layout.
    • The "vendor" branch contains snapshots of the unmodified NetBSD tree. These are useful for diffs and merges to the entire tree but otherwise aren't that interesting.
    • The "pkgsrc-2007Q2" branch, is based on "vendor/pkgsrc2007Q2" but have a lots of QNX support patch put in. If you just started pkgsrc, we suggest you try this repository.
    • The "HEAD" branch, is our working in progress. Your are welcome to give it a try if you really want "bleeding edge" stuff.
        • # cd pkgsrc/bootstrap
          # ./bootstrap

Set up the resulting /usr/pkg/etc/mk.conf#

  • We've taken the route of trying to leverage qcc for future cross platform support so add the following line:
    PKGSRC_COMPILER=qcc
  • You'll probably want globally disable x11 support for now. To do so add the following line:
    PKG_DEFAULT_OPTIONS+= -x11
    Alternatively you can disable it on a per package basis as per the following example:
    # cd textproc/groff
    # bmake PKG_OPTIONS.groff=-x11

Try your first package#

# cd misc/figlet
# bmake install
# pkg_info