File deprecation and DragonFly upgrades

On your next DragonFly upgrade, watch the end of your ‘make upgrade’ output. You may have some deprecated files, especially if your system has been upgraded through several releases.

= You have 11 now deprecated files.
= Once you are sure that none of your third party (ports or local)
= software are still using them, rerun with REMOVE_DEPRECATED set.

The now-deprecated files will be listed just before this warning. They aren’t removed automatically in case there’s installed software still linking to them. If you are running only dports software, and are up to date with all of it, you are probably fine to remove these files:

make -DREMOVE_DEPRECATED upgrade

If you have software you compiled yourself some time ago, it may have linked to these old files. One way to search for that would be to use find to find all executable files that are in particular directories, and then use ldd to see what shared libraries are used by each executable:

find /usr/local/bin /usr/local/sbin -type f -perm +a+x -print -exec ldd {} \; 

… and then grep for the names of the deprecated files. You’ll get a bunch of “not a dynamic executable” errors when you do this because it’s a rough example I did for this post, but you can always pipe the stdout of the command to a file and review later. If you do turn up any executables linked to the deprecated files – recompile!

(If you have a better find string or strategy, please comment.)

In Other BSDs for 2018/12/22

I had a lot of tabs to close, if you can’t tell.

DragonFly 5.4rc1 image to use

I uploaded the current 5.4 release candidate – there’s an ISO and an IMG file, though your local mirror may be a better place to get it than those links.  Or just wait; I think the release won’t be long.

Note that I was smart for once and named it ‘rc1’, so if there’s another release candidate, it can be named ‘rc2’.  I used ‘rc’ in previous releases and was never sure if I should name a second candidate rc1, rc2…

wpa_supplicant installed by default in DragonFly

Bear with me; this is the history: wpa_supplicant is the program DragonFly uses to connect to most wireless networks.  It’s been part of the base system for some time, but if you start it up, you will see a warning (at boot time) about how this version is deprecated.  Installing from dports puts a newer version in place.

As is the case with most third-party include in any operating system’s base, there’s always lag between the newest version of software and what’s been included in.  Dependencies creep in, or it’s duplicated work between packaging and basic OS maintenance, etc.  (Who here used Perl on FreeBSD 4?  That was frustrating, but a good example here.)  Anyway, the dilemma is that since wpa_supplicant is a program that may be required in order to get online, it must be in the base install.  However, since it has / had vulnerabilities, it must be updated.  The base install doesn’t update as fast as the origin of the software, and there’s the mismatch.

All that’s a long explanation as to why network/wpa_supplicant is now on the DragonFly install CD, and gets automatically used if installed.  Thanks for Aaron LI and Matthew Dillon for making it happen.  The base package is still there, in case someone deletes their installed ports and needs to get online before they can reinstall.  This is in master now and will be in the 5.4 release.

Fetching DragonFly src over https

If you happen to be using DragonFly from a network location that only allows http/https as outbound traffic, you won’t be able to update /usr/src using defaults.  /usr/Makefile pulls DragonFly source using a git:// URL.

The fix is to use the read-only Github mirror.  You can set origin manually or just change GITHOST in /usr/Makefile (or GITURL_SRC if you are on DragonFly-master) to “https://github.com/DragonFlyBSD/DragonFlyBSD”.

(Guess what I did today?  Updated to note it’s different on -master.  Thanks tuxillo for reminding me of this whole thing.)