Open Source Difficulties

I always am surprised when I dig into open source. Today my project was to download and get svn working. I thought this might be a good idea for looking at the source available at QNX, and maybe I aught to think about using it for my own work. I downloaded it and ran ./configure. This reported that my version of apr (0.9.6) was too old.

No big problem, I downloaded the latest apr and tried to create it. A note in the README.dev file indicated that for SVN, I should first run buildconf. I ran this, and tried ./configure, which did not work. I got suspicious, so I downloaded and installed the latest autoconf and libtools.

Now when I ran ./configure for apr, it worked. I started make and waited. In the last step that runs, sh runs libtool. During this step, sh gets a segmentation violation. At least that’s what make reports.

Oh dear, well can someone direct me to where I can download at least the client part of svn for QNX 6?

That’s a good question. I’ve been holding off because I’m fearful of installing subversion alongside cvs within the IDE and haven’t found a simple how-to guide.

Mitch if you get the 6.3.2 CD ( not 6.3.0 + update ) svn is included ( and you need install CD to be able to build the OS)

I have build the lastest version of svn ( at first I didn’t know it was included in 6.3.2 ) I could send you the binary if you prefer that.

Or get pkgsrc :slight_smile:

Well I do think I will get pkgsrc. I’d also like to know from Mario what version of APR you have installed. Oh, and I see that I have 6.3.0 SP3, not 6.3.2.

Mitchell

The windows hosted 6.3.2 iso does not seem to have a svn client. Is that included only on the neutrino hosted version?

The IDE also seems to be SVN oblivious.

It is not clear to me how pkgsrc can help navigate the QNX repositories.

pkgsrc has nothing to do with QNX repositories. It’s a package of source ( with LOTS of various program). QSS is working on getting these program to build under QNX6.

Mitchell. I got the apr from the file subversion-deps-1.4.5.tar.bz2 that you can download from subversion site.

How does pkgsrc work? It seems that lots of packages are maintained and updated by separate groups, and then posted on their websites. Are these updates automatically sent to pksrc? If so, what does it mean for QSS to be working to get them to build under QNX6? That would mean either any changes would need to be made repeatedly as new packages come out, or that the changes would be fed back to the controlling group. If the latter is the case, other than convience, is there any advantage to pkgsrc? I’ve been wondering about this for a while.

I’m new to this pkgsrc stuff, here is my understanding:

pkgsrc stuff officially supports 11 OSes/Compilesr. Typically all packages making up pkgsrc should build on all 11 systems. Some packages can be set to build on certain OS. QSS and various member of the community, are working on making each packages work. Then they want to have these changes commited to the main pkgsrc tree (hence the project originator) and get official QNX6 support.

Mario,

That is helpful, but do you know what happens when a new version of a package comes out?   Do the supporters of pkgsrc have to go in and make fixes to the new source again, or are they sending the fixes back to the originators?

Mitchell

I’m (fairly) new to pkgsrc too :slight_smile:

I doubt all packages build on all platforms. There’s two main advantages to pkgsrc from the QNX POV as I see it:
1 It’s maintained
2 It provides an integrated build environment

Number 2 is important under QNX at this stage: a lot more things will build under pkgsrc than outside it.

pkgsrc also provides the usual tools for managing binary packages (dependency resolution etc). This in itself isn’t a big improvement over say the old qnx installer but again, without 2 you don’t have up to date packages to manage.

The goal of the project is to get some more people testing / building. We also want to send patches back to both the pkgsrc maintainers and the maintainers of various distributions. We’ve just started but if anyone has spare cycles, even if it’s just to pester distributions to bring in QNX diffs, you’re more than welcome.

-seanb

WRT Mitchell’s ques:

The goal eventually is to do continuous bulk builds. pkgsrc generally has quarterly releases. As distributions make new releases they’re tested as they appear (sometimes they even have betas) and pkgsrc tries to stabilize prior to each release. A case in point is the devel/m4 package under QNX. It built without issue under their 1.4.9 release which went out with pkgsrc-2007Q2 but 1.4.10 which is out now didn’t. We have it building under the project so it shouldn’t be an issue when pkgsrc-2007Q3 comes out but we still have to engage the m4 maintainers so that 1.4.11 (or whatever they call it) builds again without patches.

-seanb

Ah ha! So what you are at least trying to do with pkgsrc is to take away all the pain and suffering that a user like me might go through to get this all working.

Another question comes immediately to mind. Some open source software, eg. Apache, have many options. Is there any attempt to deal with this, or is pkgsrc staying away from such distributions?

If you’re just installing binary packages you get the defaults.

If you’re building yourself you can specify options at build time. For example with sendmail (yes I’m I thorn in IS’s side).

svn/community/pkgsrc/HEAD/pkgsrc/mail/sendmail >bmake
=> Bootstrap dependency digest>=20010302: digest-20070803 found
===> Skipping vulnerability checks.
WARNING: No /var/db/pkg/pkg-vulnerabilities file found.
WARNING: To fix run: `download-vulnerability-list’.
=> Checksum SHA1 OK for sendmail.8.14.1.tar.gz
=> Checksum RMD160 OK for sendmail.8.14.1.tar.gz
===> Installing dependencies for sendmail-8.14.1

The supported build options for sendmail are:

    db2 db4 inet6 ldap sasl tcpwrappers tls

The currently selected options are:

    inet6 tcpwrappers

You can select which build options to use by setting PKG_DEFAULT_OPTIONS
or the following variable. Its current value is shown:

    PKG_OPTIONS.sendmail (not defined)

Deprecated variable USE_INET6 set to YES, use PKG_DEFAULT_OPTIONS+=inet6 instead.

==========================================================================

Come on over and give it a try :slight_smile:

-seanb

You think this should be easy right?

Well I downloaded pkgsrc and de-archived it, and after a while I figured out that I needed bmake.
Clearly I can’t use pkgsrc to install bmake, unless I already have bmake ;-).
So I went to the source for bmake. I compiled it and then found I needed an additional archive mk.tar.gz.
I de-archived this in the right place, and I was able to make bmake.
The “bootstrap” make procedure gave me some commands to execute to install bmake, which I followed.

So now, ready to test on devel/zlib, I find that bmake is looking in the wrong place for some of the mk files???
Oh dear, I’m back in dependency hell.

You need to bootstrap pkgsrc first. Make sure you download the source from the project then see the bootstrap page. Any issues can be reported to the project forum.

-seanb

Sean,

I appreciate your patience.   I've been trying to follow your instructions, but I keep running into dead ends.    I'll describe what I've done in detail, and maybe there are some corrections to be made to help others in the future.  

First about your link (download the source)“project” to community.qnx.com/sf/sfmain/do/home
It is not at all clear yet what “the source” means. I know what the pkgsrc tree looks like, as I’ve downloaded the latest public
release from netbsd.
In this tree, there is no source in it initially until you download it, which requires bmake, which I don’t have yet.
Are you refering to the pkgsrc tree as “the source?”.
There are four choices under pkgsrc project (Overview, Bootstrap, Packages, Forum).
Overview does a nice job of explaining the whole thing, and the (Downloads)“Here” guides you to the
same page as “Bootstrap”.
The “Pre-built” packages brings one to a tree, under which there are some pre-built packages, but I can’t find bmake among them.
“Packages” brings one to the same set of downloads.

I then started working on the instructions in the “Bootstrap” page. I might want to add, I didn’t quite understand what you meant the first time, and I found the “bootstrap” instructions at netbsd.org which of course don’t work.
Following instructions on this page, I downloaded and installed pkgsrc_qnxutil-0.8.tar.gz, no bmake here either.
I did not update procnto as there were no instructions on how to get a more up to date one than I have,
which is 6.3.2.
I followed the instructions to set up CS_LIBPATH and PATH.
The next instructions are to “Download pkgsrc with QNX diffs”. There is nothing explaining where I would get this from.
There is a link to the “repository layout”. This page gives a hierarchical access to the pkgsrc tree. I did not find a way to download pkgsrc with QNX diffs here. I did find at the leaves of the tree a way to make a diff for any two versions that are in the tree, but this would need to be done a file at a time.

It’s obvious to me now that this last step is crutial. I found this out by following the next steps and running ./bootstrap.

So, I’m still nowhere as far as being able to download anything but a pre-built package. I’d like to help out, but I’ll need more info.

Thanks,

Mitchell

community.qnx.com/sf/sfmain/do/home is the Foundry27 home page. From the ‘Projects’ tab there go to the pkgsrc project. Once in the pkgsrc project there’s ‘Source Code’ tab which should show a repository which is laid out like:

pkgsrc/vendor
pkgsrc/HEAD
pkgsrc/2007Q2

The vendor branches are snapshot of the NetBSD tree while the other two have the QNX diffs. NetBSD has some of the diffs required to bootstrap and build under QNX but not all (yet) so it’s premature to go to netbsd.org directly.

So basically dowload pkgsrc/HEAD

cd pkgsrc/bootstrap

./bootstrap

The above should give you all the base utilities: bmake, pkg_add, pkg_delete, pkg_info etc… Again make sure you follow the directions in the bootstrap page of the project.

I realize this is kind of hard to describe in a post so hopefully this gets you unstuck.

-seanb

I think figured it out finally. You forgot to mention that svn needs to be used here. At the top of the tree an svn command is shown that works.

Thanks,

Mitchell

I’ve updated the bootstrap page to hopefully make this clearer.

-seanb