Bug 86552 - quake2-icculus is missing ref_softx.so and/or ref_soft.so on amd64
Bug#: 86552 Product:  Gentoo Linux Version: unspecified Platform: AMD64
OS/Version: Linux Status: RESOLVED Severity: normal Priority: P2
Resolution: FIXED Assigned To: games@gentoo.org Reported By: oli-j@postmark.net
Component: Games
URL: 
Summary: quake2-icculus is missing ref_softx.so and/or ref_soft.so on amd64
Keywords:  
Status Whiteboard: 
Opened: 2005-03-24 10:42 0000
Description:   Opened: 2005-03-24 10:42 0000
after emerging quake2-icculus, it doesn't run and complains about a missing
file.

Either ref_softx.so if run from X, or ref_soft.so if run from the console.

version is 0.16.1, which is the latest version available for amd64 currently

Reproducible: Always
Steps to Reproduce:
1. emerge quake2-icculus
2. as a user in the 'games' group, run quake2, sdlquake2, quake2-qmax or
sdlquake2-qmax
3. weep as it fails to work

Actual Results:  
If run from within X, the output is:

oj@unicron ~ $ quake2      
Quake 2 -- Version 3.21+r0.16
Added packfile /usr/share/games/quake2-data/baseq2/pak0.pak (3307 files)
Added packfile /usr/share/games/quake2-data/baseq2/pak1.pak (279 files)
Added packfile /usr/share/games/quake2-data/baseq2/pak2.pak (2 files)
using /home/oj/.quake2/baseq2/ for writing
execing default.cfg
couldn't exec config.cfg
Console initialized.

------- sound initialization -------
/dev/dsp: Input/output error
SNDDMA_Init: Could not mmap /dev/dsp.
------- Loading ref_softx.so -------
LoadLibrary("ref_softx.so") failed: No such file or directory
Refresh failed
recursive shutdown
Error: Couldn't fall back to software refresh!

if run from a console, I get the same, but with ref_soft.so instead

Expected Results:  
quake2 should have loaded

Portage 2.0.51.19 (default-linux/amd64/2004.3, gcc-3.3.4,
glibc-2.3.4.20041102-r1, 2.6.9-gentoo-r6 x86_64)
=================================================================
System uname: 2.6.9-gentoo-r6 x86_64 AMD Athlon(tm) 64 Processor 3000+
Gentoo Base System version 1.6.10
Python:              dev-lang/python-2.2.3-r5,dev-lang/python-2.3.4-r1 [2.3.4
(#1, Feb 14 2005, 22:28:42)]
distcc 2.18.3 x86_64-pc-linux-gnu (protocols 1 and 2) (default port 3632)
[disabled]
dev-lang/python:     2.2.3-r5, 2.3.4-r1
sys-devel/autoconf:  2.13, 2.59-r6
sys-devel/automake:  1.5, 1.4_p6, 1.9.4, 1.8.5-r3, 1.6.3, 1.7.9-r1
sys-devel/binutils:  2.15.92.0.2-r1
sys-devel/libtool:   1.5.10-r4
virtual/os-headers:  2.4.21-r1
ACCEPT_KEYWORDS="amd64"
AUTOCLEAN="yes"
CFLAGS="-O2 -fomit-frame-pointer -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.1/share/config
/usr/kde/3.2/share/config /usr/kde/3.3/env /usr/kde/3.3/share/config
/usr/kde/3.3/shutdown /usr/kde/3/share/config /usr/lib/X11/xkb
/usr/share/config
/usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/
/usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/
/usr/share/texmf/xdvi/ /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d"
CXXFLAGS="-O2 -fomit-frame-pointer -pipe"
DISTDIR="/home/special/distfiles"
FEATURES="autoaddcvs autoconfig ccache distlocks sandbox"
GENTOO_MIRRORS="ftp://ftp.snt.utwente.nl/pub/os/linux/gentoo
ftp://ftp.easynet.nl/mirror/gentoo/
http://www.mirrorservice.org/sites/www.ibiblio.org/gentoo/
http://ftp.easynet.nl/mirror/gentoo/
http://ftp.snt.utwente.nl/pub/os/linux/gentoo"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="amd64 S3TC X aalib acpi acpi4linux alsa berkdb bitmap-fonts cdr crypt curl
dga dvd esd ethereal flac font-server fortran gdbm gif gpm gtk imagemagick imap
imlib java javascript jp2 jpeg justify lcms libwww lzw lzw-tiff mad maildir
mikmod motif mp3 ncurses net nls nvidia offensive oggvorbis openal opengl oss
pam pcap perl png python qt readline samba sdl slang sox ssl tcltk tcpd tetex
tiff truetype truetype-fonts type1-fonts usb userlocales videos xchattext xfs
xgetdefault xinerama xml xml2 xmms xosd xpm xrandr xv zlib"
Unset:  ASFLAGS, CBUILD, CTARGET, LANG, LC_ALL, LDFLAGS

------- Comment #1 From Oliver Jeeves 2005-03-24 10:45:32 0000 -------
maybe worth including the contents of qpkg -l to show which files do get built

unicron ~ # qpkg -l quake2-icculus
games-fps/quake2-icculus-0.16.1 *
CONTENTS:
/usr
/usr/share
/usr/share/doc
/usr/share/doc/quake2-icculus-0.16.1
/usr/share/doc/quake2-icculus-0.16.1/readme.txt.gz
/usr/share/doc/quake2-icculus-0.16.1/README.gz
/usr/share/doc/quake2-icculus-0.16.1/TODO.gz
/usr/share/doc/quake2-icculus-0.16.1/README-postinstall.gz
/usr/games
/usr/games/lib
/usr/games/lib/quake2-icculus
/usr/games/lib/quake2-icculus/baseq2
/usr/games/lib/quake2-icculus/baseq2/gamex86_64.so
/usr/games/lib/quake2-icculus/ctf
/usr/games/lib/quake2-icculus/ctf/gamex86_64.so
/usr/games/lib/quake2-icculus/ref_glx.so
/usr/games/lib/quake2-icculus/ref_sdlgl.so
/usr/games/lib/quake2-icculus/ref_softaa.so
/usr/games/lib/quake2-icculus/rogue
/usr/games/lib/quake2-icculus/xatrix
/usr/games/lib/quake2-icculus-qmax
/usr/games/lib/quake2-icculus-qmax/baseq2
/usr/games/lib/quake2-icculus-qmax/baseq2/gamex86_64.so
/usr/games/lib/quake2-icculus-qmax/baseq2/maxpak.pak
/usr/games/lib/quake2-icculus-qmax/ctf
/usr/games/lib/quake2-icculus-qmax/ctf/gamex86_64.so
/usr/games/lib/quake2-icculus-qmax/ref_glx.so
/usr/games/lib/quake2-icculus-qmax/ref_sdlgl.so
/usr/games/lib/quake2-icculus-qmax/ref_softaa.so
/usr/games/lib/quake2-icculus-qmax/rogue
/usr/games/lib/quake2-icculus-qmax/xatrix
/usr/games/bin
/usr/games/bin/quake2
/usr/games/bin/q2ded
/usr/games/bin/sdlquake2
/usr/games/bin/quake2-qmax
/usr/games/bin/q2ded-qmax
/usr/games/bin/sdlquake2-qmax

------- Comment #2 From Paul Bonser 2005-04-11 12:51:53 0000 -------
Ditto...seems to be a problem with AMD64? (since that's what I have, too)

------- Comment #3 From SpanKY 2005-04-28 19:32:19 0000 -------
you built with USE=-X

rebuilt with USE=X

------- Comment #4 From Oliver Jeeves 2005-04-29 15:58:46 0000 -------
first of all, the ebuild doesn't even check for the X USE flag. Secondly, in
the information I have already given, you'll see that X is quite clearly in my
USE flags.

------- Comment #5 From Oliver Jeeves 2005-04-29 16:10:37 0000 -------
ok, it appears that after an emerge sync, X now is a use flag that the ebuild
uses, although the version number of the package hasn't changed?

The results of an emerge -pv quake2-icculus were:
[ebuild   R   ] games-fps/quake2-icculus-0.16.1  +aalib -arts -dedicated -ipv6
-joystick -noqmax +opengl -rogue +sdl (-svga) -xatrix 4,695 kB 

but are now:
[ebuild   R   ] games-fps/quake2-icculus-0.16.1  +X +aalib -arts -dedicated
-ipv6 -joystick -noqmax +opengl -rogue +sdl (-svga) -xatrix 4,695 kB 

shouldn't version number (even just the -rX bit) change when the ebuild
changes?

rebuilding to test this will have to wait until tomorrow.

------- Comment #6 From SpanKY 2005-04-29 22:18:03 0000 -------
calm down there buddy :P

portage normally sorts your USE flags so i looked at the tail end and didnt see X

quake2 has ALWAYS used X, i just neglected to add it to IUSE, so in reality nothing changed

------- Comment #7 From SpanKY 2005-04-29 22:26:10 0000 -------
according to the quake2 makefile, either upstream made a mistake and didnt
include BUILD_X11 support on amd64, or it isnt supported

the 'ifeq ($(ARCH),x86_64)' section is missing this which is under the i386
section:
 ifeq ($(strip $(BUILD_X11)),YES)
  TARGETS += $(BUILDDIR)/ref_softx.$(SHLIBEXT)
 endif

------- Comment #8 From SpanKY 2005-04-29 22:37:27 0000 -------
ok, the makefile just has a typo (BUILD_SOFTX instead of BUILD_X11)

regardless, software rendering isnt supported on x86_64 atm ... but quake2 uses that when it is first run, so you get stuck in a loop ... no way to change your driver without starting the game, but no way to start the game without ref_softx ;)

as a workaround, you can for now do this: `quake2 +set vid_ref glx`

------- Comment #9 From SpanKY 2005-04-29 23:14:38 0000 -------
added a small workaround to portage ... the default renderer on amd64 will be
'glx' until the 'softx' and 'soft' renderers work on amd64