3

Trying to compile the Dwm Tile Manager (that uses Xorg ) on Arch Linux currently produces the following error (original attached file):

dwm build options:
CFLAGS   = -std=c99 -pedantic -Wall -Wno-deprecated-declarations -Os -I/usr/include/X11 -I/usr/include/freetype2 -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_C_SOURCE=200809L -DVERSION="6.2" -DXINERAMA
LDFLAGS  = -L/usr/lib -lX11 -lXinerama -lfontconfig -lXft
CC       = cc
cc -c -std=c99 -pedantic -Wall -Wno-deprecated-declarations -Os -I/usr/include/X11 -I/usr/include/freetype2 -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_C_SOURCE=200809L -DVERSION=\"6.2\" -DXINERAMA drw.c
drw.c:6:10: fatal error: X11/Xft/Xft.h: No such file or directory
    6 | #include <X11/Xft/Xft.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:18: drw.o] Error 1

Does this indicate that the Xft.h library is required to compile Dwm?

The Arch Linux package manager fails to install Xorg-server (which contains Xft.h) leaving this keyring error (original attached file):

resolving dependencies...
looking for conflicting packages...
warning: dependency cycle detected:
warning: harfbuzz will be installed before its freetype2 dependency

Packages (21) freetype2-2.10.2-1  graphite-1:1.3.14-1  harfbuzz-2.7.2-1  libepoxy-1.5.4-2  libevdev-1.9.1-1  libfontenc-1.1.4-3  libgudev-234-1  libinput-1.16.1-1  libpng-1.6.37-3  libwacom-1.5-1  libxfont2-2.0.4-3  libxkbfile-1.1.0-2  mtdev-1.1.6-1  pixman-0.40.0-1  xf86-input-libinput-0.30.0-1  xkeyboard-config-2.30-2  xorg-fonts-encodings-1.0.5-2  xorg-server-common-1.20.9-2  xorg-setxkbmap-1.3.2-2  xorg-xkbcomp-1.4.3-1  xorg-server-1.20.9-2

Total Installed Size:  23.80 MiB

:: Proceed with installation? [Y/n] checking keyring...
downloading required keys...
:: Import PGP key 3B94A80E50A477C7, "Jan Alexander Steffens (heftig) <[email protected]>"? [Y/n] error: key "3B94A80E50A477C7" could not be looked up remotely
error: required key missing from keyring
error: failed to commit transaction (unexpected error)
Errors occurred, no packages were upgraded.

Is there an alternative way I can obtain Xft.h?

3
  • 1
    when's the last time you've run pacman -Syu? in my experience keyring errors are just from not having updated the arch linux keyring package in too long
    – Fox
    Oct 2, 2020 at 15:26
  • Thank you for the suggestion. pacman -Syu hasn't changed the behaviour in this case. Oct 2, 2020 at 15:41
  • 1) Are you saying that pacman -Syu succeeds, and your system is up to date, but you are still getting the error related to the missing key? Or that pacman -Syu fails somehow? 2) Doesn't gpg --list-key --homedir /etc/pacman.d/gnupg/ 3B94A80E50A477C7 list any key? If so, you may be able to import the missing key with: sudo gpg --recv-keys --keyserver hkp://pool.sks-keyservers.net --homedir /etc/pacman.d/gnupg 19802F8B0D70FC30 (3B94A80E50A477C7 is apparently a subkey of this one).
    – fra-san
    Oct 2, 2020 at 16:59

1 Answer 1

2

Yes, the compiler complains about not being able to find X11/Xft/Xft.h in the include directories on your system.

You can query pacman's file database to know which packages, including non-installed ones, provide a file:

sudo pacman -Fy    # the database likely needs to be refreshed
pacman -F Xft.h

Or, if you have the more feature-rich pkgfile installed (which maintains its own file database):

pkgfile Xft.h

Both will tell you that usr/include/X11/Xft/Xft.h is provided by libxft.

Note that you may also take advantage of existing packages: dwm exists in the AUR and, even if you need to compile your own version, you may still look at the dependencies ("depends", "makedepends") declared in the PKGBUILD file provided there.

Reports about issues with [email protected]'s gpg key have come up more than once on the Arch Linux forums in the past few months [1] [2]. If your archlinux-keyring package is up to date and you still see errors related to the missing key you can try importing the key 3B94A80E50A477C7 happens to be a sub-key of:

sudo gpg --recv-keys --keyserver hkp://pool.sks-keyservers.net \
  --homedir /etc/pacman.d/gnupg 19802F8B0D70FC30

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .