dsynth details on DragonFly

First, history: DragonFly has had binaries of dports available for download for quite some time.  These were originally built using poudriere, and then using the synth tool put together by John Marino.  Synth worked both to build all software in dports, and as a way to test DragonFly’s SMP capability under extreme load.

Matthew Dillon is working on a new version, called dsynth.  It is available now but not yet part of the build.  He’s been working quickly on it and there’s plenty more commits than what I have linked here.  It’s already led to finding more high-load fixes.

pkg and pkg-static

If you upgrade DragonFly and one of the shared libraries used by pkg gets updated, you can’t run pkg until you get files, but pkg is the program you use to bring in new files.  This chicken-and-egg problem is solved with pkg-static, a version of pkg built without shared libraries.

You may have noticed some format flip-flopping between pkg and pkg-static if you had to run it after the most recent DragonFly upgrade; that is fixed.  There’s a larger issue of certificate installation identified there; I don’t know a solution to it, but I do want to mention this for next time pkg breaks for someone – pkg-static will work as backup, including to bring in a new version of pkg.

Dports update for DragonFly-current

The binary package repository for DragonFly-current has been updated with the latest build of all packages, thanks to tuxillo and others on EFNet #dragonflybsd doing a lot of work.

Tuxillo noted: there’s new rust, thunderbird, firefox, nginx, several llvm versions, and a new chrome (version 72).  freerdp is temporarily broken; use remmina with the rdp plugin instead.  openvpn isn’t upgraded yet cause the build was with libressl, which is a broken combination – it’ll all be built with openssl in a future run.

Issues go here, submissions of work go there.

New dports build on the way

Thanks to tuxillo and others, there’s a new build of dports on the way for DragonFly 5.4 that includes packages that weren’t building before – mongodb, kodi, mysql80, and I imagine more that I don’t know about.  If the synth build is still running when you read this, you can look at its status page.  If it isn’t running, the packages are of course in the normal place and you can use ‘pkg upgrade’ to get them.

Ravenports, and picking out packages

A little while back I linked to an excellent deep dive into Ravenports, and added my own bit of statistical guessing at popular packages.  John Marino wants to know what packages people find most useful/most required.  If you have opinions, and I’m sure you do, post something on the Ravenports Google Groups page.

If you are saying to yourself “Gee, what packages did I install and what came in as a dependency?”, here’s an easy way to find out:

pkg query -a '%n %a' | grep 0 | cut -d ' ' -f 1 | less

This lists all “vital” packages, which usually means ones installed with intent, rather than automatically.  This might be a useful thing to post for Ravenports…

Some package statistics

The article I linked yesterday about Ravenports got me wondering about what package are most popular.  avalon.dragonflybsd.org is the default binary package archive for pkg, and it has httpd logs back to 2013, so I collated some information.

I read out a list of packages, and weighed them according to how recently they were downloaded.  I also mushed together all the py/ruby/p5/php numbered packages, and excluded lib*.

After all that… there’s a lot of noise.  One install of any desktop environment pulls in hundreds of packages automatically, so it’s hard to tell what’s installed by a human and what’s installed by dependency.  That being said, here’s some highlights.  This is me applying an arbitrary value and then arbitrarily snipping out a list… but it’s fun to see if nothing else.

18596 python27
13564 xorg-server
13499 perl5
13391 xterm
12098 xorg
8512 cups
8453 bash
8389 ffmpeg
8367 spidermonkey170
7884 python
7432 firefox
6997 sudo
6896 bind-tools
6702 openldap-client
5651 nano
5529 xfce4-conf
5052 xfce
4663 ruby
4447 vim
3133 tmux
2578 chromium
2248 zsh
2175 samba44
2132 python36
2007 mate-desktop
1765 mysql56-client
1699 fluxbox
1690 vim-lite
1517 CoinMP
1407 openjdk8
1395 samba46
1384 lumina
1367 kde
1355 mpg123
1353 spidermonkey24
1340 vlc
1338 thunderbird
1329 wpa_supplicant
1252 firebird25-client
1164 gimp
1103 zip
1083 youtube_dl
1044 php
941 freerdp
931 mercurial
927 lynx
866 evolution
848 gnome3
845 openjdk
842 openbox
842 epiphany
799 nmap
798 go
796 mutt
796 gnuchess
743 apache24
726 rxvt-unicode
722 irssi
652 firefox-esr
652 htop
649 rust
619 smartmontools
575 fvwm
529 windowmaker
477 openvpn
472 synth
451 fish
406 npm
403 inkscape
402 enlightenment
367 firefox-i18n
351 dwm
347 neovim
341 R
339 emacs25
320 emacs
320 unbound
312 tor
310 lua
300 cinnamon
300 wireshark
282 netcat
272 pidgin
258 postfix
258 joe
252 GraphicsMagick
251 dillo
249 icewm
242 mosh
236 rtorrent
225 weechat
219 audacious
218 smtube
216 calibre
190 xmms
187 pdksh
184 redis
184 openssh-portable
183 tk85
173 rdesktop
172 nedit
164 terminator
161 fetchmail
160 KeePassX
156 dnsmasq

Building your own DragonFly

Mixed in with the other documentation on the DragonFly website is a “how to build a release” explanation.  I use it every time there’s a new DragonFly version.  If you were wanting to build a DragonFly ISO/IMG with changes or different preinstalled dports, I’ve added some notes about what’s relevant for non-release building.

We used to have “GUI” releases of DragonFly which were based on the nrelease process installing pkgsrc packages and adding some configuration files.  It doesn’t happen now mostly because nobody has had the time to reconfigure for dports; if you were looking for a project this weekend, may I suggest…?