Using PKGSRC on Manjaro Linux aarch64 Pinebook-pro

I wanted to see how pkgsrc works on aarch64 Linux Manjaro since it is a very mature framework that is very portable and supported by many architectures – pkgsrc (package source) is a package management system for Unix-like operating systems. It was forked from the FreeBSD ports collection in 1997 as the primary package management system for NetBSD.

Full pkgsrc package index is available for browsing here https://www.pkgsrc.se/

One might question why use pkgsrc on Arch based Manjaro, since the pacman package repository is very good on its own. I see alternative pkgsrc as a good automated build framework that offers a way to produce independent build environment /usr/pkg that does not interfere with the current Linux distribution in any way (all libraries are statically built)

I have used the latest Manjaro for Pinebookpro and standard recommended tools as mentioned here https://wiki.netbsd.org/pkgsrc/how_to_use_pkgsrc_on_linux/

 

  • gcc (and libstdc++)   (pacman -S base-devel)
  • ncurses  (pacman -S ncurses)
  • zlib  (pacman -S zlib)
  • openssl  (pacman -S openssl)

Next we make sure we have at least 10 GB of disk space (i have used 20 GB for pkgsrc) to place the pkgsrc environment.

We have a choice to use either the stable quarterly branches of pkgsrc or the bleeding edge (current) which contains the latest pieces of software, but can be unstable in certain situations and times of sync. If one decides to experiment with the current, like me, you can always get help from the wonderful NetBSD/pkgsrc community on their mailing lists https://www.netbsd.org/mailinglists/

Downloading pkgsrc-current

# cd /usr
# ftp ftp.netbsd.org 
login as anonymous (ftp) 
ftp> pass     (I need to enter passive because of my network) 
ftp> cd pub
ftp> cd current
ftp> get pkgsrc.tar.xz     
After it downloads, exit FTP session
ftp> exit
# unxz pkgsrc.tar.xz
# tar -xvf pkgsrc.tar 
After if finishes extracting we can delete pkgsrc.tar
# rm pkgsrc.tar

Next we will bootsrap pkgsrc on our Manjaro Linux aarch64 so that we can start building packages

# cd /usr/pkgsrc/bootstrap
# ./bootstrap

This will take about 10 minutes to finish, and once done we are almost ready to start building packages. There will be a new system independent environment created by default in /usr/pkg   (if once wishes to change the location and customize, one can do so by reading the pkgsrc documentation)  The pkg directory structure is as follows

/usr/pkg/bin
/usr/pkg/etc
/usr/pkg/include
/usr/pkg/info
/usr/pkg/lib
/usr/pkg/libexec
/usr/pkg/man
/usr/pkg/pkgdb
/usr/pkg/pkgdb.refcount 
/usr/pkg/sbin
/usr/pkg/share

All the pkg executable binaries are stored in /usr/pkg/bin and this should be taken into an account if setting up a new binary executable paths.

There is a caveat in Linux Manjaro aarch64 pkgsrc build which results on the dreaded message during certain packages builds (readline, gettext-tools,python … and others)

[builds should fail with compiler cannot create executables]

In order to fix this on Manjaro aarch64 I have edited  the following file in /usr/pkgsrc

/usr/pkgsrc/mk/termcap.builtin.mk

And replaced all   BUILTIN_LIBNAME.termcap= values with curses    Diff and the modified file is available here http://45.76.81.249/pkgsrc/aarch64-linux/

Now we are ready to build pkgsrc packages on the Manjaro aarch64 Pinebook ! Packages are normally built like this

# cd /usr/pkgsrc/security/bcrypt 
# /usr/pkg/bin/bmake install clean clean-depends 
Once the build finishes the gzipped package tarball will
land in /usr/pkgsrc/packages/All and the binaries will get installed 
to 
# /usr/pkg/bin/bcrypt

It is advisable to read the full pkgsrc documentation before running this

As of writing I have managed to successfully compiled a few packages and uploaded them here http://45.76.81.249/pkgsrc/aarch64-linux/All   I will update this with more packages if anybody wants to experiment.

My first test was to see if Doom3 (pkgsrc/games/dhewm3) builds and runs on Manjaro aarch64 , and it does (although its not usgin the panfrost drivers for now)

Binary packages can be installed as follows https://www.netbsd.org/docs/pkgsrc/using.html#installing-binary-packages

Installing binary packages

I have setup a pkgin repo @  http://45.76.81.249/pkgsrc/aarch64-linux/All/

bootstrap pkgsrc-current
install pkgsrc/pkgtools/pkgin 

# cd /usr/pkgsrc/pkgtools/pkgin 
# /usr/pkg/bin/bmake install clean clean-depends 

add http://45.76.81.249/pkgsrc/aarch64-linux/All/ to /usr/pkg/etc/pkgin/repositories.conf 

# /usr/pkg/bin/pkgin update

Then you can install packages via pkgin install ..etc .. read the manual

 

Advertisement

About astr0baby

Please run Adblock or similar... we have been told to do so since Carl Sagan wrote the Contact .
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.