Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[compile] error dosbox-x-dosbox-x-v0.83.17 with raspberry pi 4 armhf rasbpian 10 #2886

Open
arrowgent opened this issue Sep 6, 2021 · 10 comments

Comments

@arrowgent
Copy link

arrowgent commented Sep 6, 2021

Describe the bug
A clear and concise description of what the bug is.

compile error fails

To Reproduce
Steps to reproduce the behavior:
https://gist.github.com/arrowgent/2585365d2660e97957f221398c547b56
full log

./build-debug-sdl2

At global scope:
cc1plus: warning: unrecognized command line option ‘-Wno-int-to-void-pointer-cast’
cc1plus: warning: unrecognized command line option ‘-Wno-address-of-packed-member’
cc1plus: warning: unrecognized command line option ‘-Wno-address-of-packed-member’
cc1plus: warning: unrecognized command line option ‘-Wno-int-to-void-pointer-cast’
make[4]: *** [Makefile:793: hardware.o] Error 1
make[4]: *** Waiting for unfinished jobs....
At global scope:
cc1plus: warning: unrecognized command line option ‘-Wno-int-to-void-pointer-cast’
cc1plus: warning: unrecognized command line option ‘-Wno-address-of-packed-member’
cc1plus: warning: unrecognized command line option ‘-Wno-address-of-packed-member’
cc1plus: warning: unrecognized command line option ‘-Wno-int-to-void-pointer-cast’
make[4]: Leaving directory '/home/pi/Downloads/BUILD/dosbox-x/dosbox-x-dosbox-x-v0.83.17/src/hardware'
make[3]: *** [Makefile:815: all-recursive] Error 1
make[3]: Leaving directory '/home/pi/Downloads/BUILD/dosbox-x/dosbox-x-dosbox-x-v0.83.17/src/hardware'
make[2]: *** [Makefile:529: all-recursive] Error 1
make[2]: Leaving directory '/home/pi/Downloads/BUILD/dosbox-x/dosbox-x-dosbox-x-v0.83.17/src'
make[1]: *** [Makefile:400: all-recursive] Error 1
make[1]: Leaving directory '/home/pi/Downloads/BUILD/dosbox-x/dosbox-x-dosbox-x-v0.83.17'
make: *** [Makefile:333: all] Error 2

Expected behavior
A clear and concise description of what you expected to happen.
compile succeeds, like it does on ubuntu 18.04 x86_64

Environment (please complete the following information):

  • Operating system Raspbian 10 armhf
uname -a 
Linux raspberrypi 5.10.17-v7l+ #1421 SMP Thu May 27 14:00:13 BST 2021 armv7l GNU/Linux
  • DOSBox-X release version or commit SHA1 this issue occurred on dosbox-x-dosbox-x-v0.83.17

Additional context
Add any other context about the problem here.
#2594

https://github.com/joncampbell123/dosbox-x/blob/master/BUILD.md
libslirp-dev, libslirp, & libslirp0 not found in raspbian. shouldnt be issue / disable networking
libfreetype-dev = libfreetype6-dev in raspbian, also shouldnt be an issue

also tried magpi instructions:
https://magpi.raspberrypi.org/articles/build-a-dos-emulation-system

also tested with
./build
it attempts to build sdl1, same error failure.

same process compiles successfully with ubuntu linux x86_64
E: Unable to locate package libslirp-dev --- not on ubuntu
./build-debug-sdl2
compiles without issue

@arrowgent
Copy link
Author

retested with: dosbox-x-dosbox-x-v0.83.14
same fail

@arrowgent
Copy link
Author

is dosbox-x not compatible with armhf / 32bit?

@arrowgent
Copy link
Author

arrowgent commented Sep 6, 2021

dosbox-x-dosbox-x-v0.83.17'
make: *** [Makefile:333: all] Error 2

all: config.h
	$(MAKE) $(AM_MAKEFLAGS) all-recursive

.SUFFIXES:

dosbox-x-dosbox-x-v0.83.17/src'
make[1]: *** [Makefile:400: all-recursive] Error 1

.SUFFIXES:
.SUFFIXES: .cpp .o .obj .rc
$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
	@for dep in $?; do \
	  case '$(am__configure_deps)' in \
	    *$$dep*) \
	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
	        && { if test -f $@; then exit 0; else break; fi; }; \
	      exit 1;; \
	  esac; \
	done; \
	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
	$(am__cd) $(top_srcdir) && \
	  $(AUTOMAKE) --foreign src/Makefile

dosbox-x-dosbox-x-v0.83.17/src/hardware'
make[2]: *** [Makefile:529: all-recursive] Error 1

	snd_pc98/sound/$(DEPDIR)/$(am__dirstamp)
snd_pc98/sound/psggenc.$(OBJEXT): snd_pc98/sound/$(am__dirstamp) \

dosbox-x-dosbox-x-v0.83.17/src/hardware'
make[3]: *** [Makefile:815: all-recursive] Error 1

$(am__recursive_targets):
	@fail=; \
	if $(am__make_keepgoing); then \
	  failcom='fail=yes'; \
	else \
	  failcom='exit 1'; \
	fi; \
	dot_seen=no; \
	target=`echo $@ | sed s/-recursive//`; \
	case "$@" in \
	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
	  *) list='$(SUBDIRS)' ;; \
	esac; \
	for subdir in $$list; do \
	  echo "Making $$target in $$subdir"; \
	  if test "$$subdir" = "."; then \
	    dot_seen=yes; \
	    local_target="$$target-am"; \
	  else \
	    local_target="$$target"; \
	  fi; \
	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
	  || eval $$failcom; \
	done; \
	if test "$$dot_seen" = "no"; then \
	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
	fi; test -z "$$fail"

make[4]: *** [Makefile:793: hardware.o] Error 1
make[4]: *** Waiting for unfinished jobs....
unknown location

from error log:

depbase=`echo hardware.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../include -I../../src/aviwriter -I../../src/hardware/snd_pc98/sound -I../../src/hardware/snd_pc98/common -I../../src/hardware/snd_pc98/generic -I../../src/hardware/snd_pc98/sound/getsnd -I../../src/hardware/snd_pc98/x11 -I../../src/hardware/snd_pc98/cbus -I../../src -Wno-int-to-void-pointer-cast   -Wno-address-of-packed-member   -Wno-format-zero-length   -Wno-missing-field-initializers   -Wno-strict-aliasing   -Wno-implicit-fallthrough   -Wno-deprecated-declarations   -Wconversion-null   -Wsign-promo   -Wlogical-op   -pedantic   -Wunused   -Wextra   -Wall   -I/usr/include/SDL2 -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -D_REENTRANT -I/home/pi/Downloads/BUILD/dosbox-x/dosbox-x-dosbox-x-v0.83.17 -I/home/pi/Downloads/BUILD/dosbox-x/dosbox-x-dosbox-x-v0.83.17/vs2015/sdlnet/linux-host/include -I/home/pi/Downloads/BUILD/dosbox-x/dosbox-x-dosbox-x-v0.83.17/vs2015/sdlnet/linux-host/include/SDL -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/local/include  -g -std=gnu++14  -O2  -Wall   -Wextra   -Wunused   -pedantic   -Wlogical-op   -Wsign-promo   -Wconversion-null   -Wno-deprecated-declarations   -Wno-implicit-fallthrough   -Wno-strict-aliasing   -Wno-missing-field-initializers   -Wno-format-zero-length   -Wno-address-of-packed-member   -Wno-int-to-void-pointer-cast  -I/home/pi/Downloads/BUILD/dosbox-x/dosbox-x-dosbox-x-v0.83.17 -I/home/pi/Downloads/BUILD/dosbox-x/dosbox-x-dosbox-x-v0.83.17/vs2015/sdlnet/linux-host/include -I/home/pi/Downloads/BUILD/dosbox-x/dosbox-x-dosbox-x-v0.83.17/vs2015/sdlnet/linux-host/include/SDL -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L  -MT hardware.o -MD -MP -MF $depbase.Tpo -c -o hardware.o hardware.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo iohandler.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../include -I../../src/aviwriter -I../../src/hardware/snd_pc98/sound -I../../src/hardware/snd_pc98/common -I../../src/hardware/snd_pc98/generic -I../../src/hardware/snd_pc98/sound/getsnd -I../../src/hardware/snd_pc98/x11 -I../../src/hardware/snd_pc98/cbus -I../../src -Wno-int-to-void-pointer-cast   -Wno-address-of-packed-member   -Wno-format-zero-length   -Wno-missing-field-initializers   -Wno-strict-aliasing   -Wno-implicit-fallthrough   -Wno-deprecated-declarations   -Wconversion-null   -Wsign-promo   -Wlogical-op   -pedantic   -Wunused   -Wextra   -Wall   -I/usr/include/SDL2 -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -D_REENTRANT -I/home/pi/Downloads/BUILD/dosbox-x/dosbox-x-dosbox-x-v0.83.17 -I/home/pi/Downloads/BUILD/dosbox-x/dosbox-x-dosbox-x-v0.83.17/vs2015/sdlnet/linux-host/include -I/home/pi/Downloads/BUILD/dosbox-x/dosbox-x-dosbox-x-v0.83.17/vs2015/sdlnet/linux-host/include/SDL -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/local/include  -g -std=gnu++14  -O2  -Wall   -Wextra   -Wunused   -pedantic   -Wlogical-op   -Wsign-promo   -Wconversion-null   -Wno-deprecated-declarations   -Wno-implicit-fallthrough   -Wno-strict-aliasing   -Wno-missing-field-initializers   -Wno-format-zero-length   -Wno-address-of-packed-member   -Wno-int-to-void-pointer-cast  -I/home/pi/Downloads/BUILD/dosbox-x/dosbox-x-dosbox-x-v0.83.17 -I/home/pi/Downloads/BUILD/dosbox-x/dosbox-x-dosbox-x-v0.83.17/vs2015/sdlnet/linux-host/include -I/home/pi/Downloads/BUILD/dosbox-x/dosbox-x-dosbox-x-v0.83.17/vs2015/sdlnet/linux-host/include/SDL -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L  -MT iohandler.o -MD -MP -MF $depbase.Tpo -c -o iohandler.o iohandler.cpp &&\

@grapeli
Copy link

grapeli commented Sep 6, 2021

Disable ffmpeg support.
--disable-avcodec
or install the necessary libraries and header files.
The required version of ffmpeg is 4.0.2 or later.

@arrowgent
Copy link
Author

ffmpeg/now 7:4.1.6-1~deb10u1+rpt2 armhf [installed,local]
libavcodec-dev/now 7:4.1.6-1~deb10u1+rpt2 armhf [installed,local]
libavformat-dev/now 7:4.1.6-1~deb10u1+rpt2 armhf [installed,local]

again, only missing is libslirp & libslirp-dev, which was compiled and installed from src (also not required in ubuntu to compile successfully)
and libfreetype-dev = libfreetype6-dev in raspbian

libfreetype6-dev/oldstable,now 2.9.1-3+deb10u2 armhf [installed]

sudo apt install automake gcc g++ make libncurses-dev nasm libsdl-net1.2-dev libsdl2-net-dev libpcap-dev libslirp-dev fluidsynth libfluidsynth-dev libavdevice58 libavformat-dev libavcodec-dev libavcodec-extra libavcodec-extra58 libswscale-dev libfreetype-dev libxkbfile-dev libxrandr-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libslirp-dev
E: Unable to locate package libfreetype-dev

and
dosbox-x-dosbox-x-v0.83.17/ $ ./build-debug-sdl2 --disable-avcodec
completes correctly
src/
rwxr-xr-x 1 pi pi 75816460 Sep 8 08:13 dosbox-x*

what specifically would someone need to compile without disabling avcodec?

ffmpeg dev?

@rderooy
Copy link
Contributor

rderooy commented Sep 8, 2021

If you look at the link @grapeli gave you before, there are instructions on how to compile it on Ubuntu, which should be pretty close to the Debian based raspbian.

That has the following packages listed, which should I think resolve the issue:

  • libavdevice58 libavformat-dev libavcodec-dev libavcodec-extra libavcodec-extra58

Not sure though if all those are available for Raspbian (or Debian for that matter).

@grapeli
Copy link

grapeli commented Sep 8, 2021

You need to install the necessary libraries and header files.
It's really not that hard to type.
apt search ffmpeg
and then.
sudo apt install libavdevice58 libavformat-dev libavcodec-dev libavcodec-extra libavcodec-extra58 libswscale-dev

@arrowgent
Copy link
Author

arrowgent commented Sep 11, 2021

this is interesting because there are broken version dependencies for Raspbian

 libavcodec-extra58 : Depends: libavutil56 (= 7:4.1.6-1~deb10u1) but 7:4.1.6-1~deb10u1+rpt2 is to be installed
                      Depends: libswresample3 (= 7:4.1.6-1~deb10u1) but 7:4.1.6-1~deb10u1+rpt2 is to be installed

libavcodec-extra58 doesnt have a version 7:4.1.6-1~deb10u1+rpt2

this is the only package of that group that doesnt have a +rpt2 version
note that libavutil56 and libswresample3 is already installed as version 7:4.1.6-1~deb10u1+rpt2

so while not something you can prevent, its good to be noted about the Raspbian 10 os

infact let me check my apt sources, i know i have one in here for debian for a reason.
so im curious if it was re-written from raspbian to debian for some reason...
checking the mirrors...
yes, because of my DE == Mate, thats why i have a lower priority on the /debian/ repo

yet still, libavcodec-extra58 & libavcodec-extra dont exist in Raspbian buster

@arrowgent
Copy link
Author

arrowgent commented Sep 11, 2021

can you tell me what FFMPEG dependency is for in Dosbox-x? is it for recording only or does it have some other feature required by dosbox-x? some other kind of backend like media playback?

none of the other dosbox forks have this requirement

AH_TEMPLATE(C_AVCODEC,[Define to 1 to use FFMPEG libavcodec for video capture])

guess its only for recording video, no need. will leave it disabled in future builds

thanks

@joncampbell123
Copy link
Owner

@arrowgent FFMPEG is not a requirement, but it is supported if you want to capture audio/video to an MPEG transport stream (H.264+AAC) instead of an AVI file.

The MPEG-TS option provides better compression and can handle video mode changes without having to start another capture file.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants