machine/_stdint.h: No such file or directory

Okapi

Active Member
Hi,

ich habe FreeBSD 7.0 stable auf einer i386er Maschine laufen. Bisher einwandfrei mit allerhand Diensten aus Ports und Binärpaketen installieren. Basis scheint also zu stimmen. Ich habe mir dann einen ISDN-Kernel für die Fritz!-Card gebacken, da ich eigentlich HylaFax damit nutzen wollten. Lief ebenfalls problemlos, Karte wurde erkannt. Leider hab ich dann festgestellt, dass ich für Capi for BSD (C4B) eine aktive Karte benötige - diese bei eBay gekauft, eingebaut und gemäß README versucht, c4b zu installieren.

Zuerst wollte ich wieder den GENERIC Kernel ohne ISDN installieren.

1. Problem:
Code:
…
/usr/include/inttypes.h:32:31: error: machine/_inttypes.h: No such file or directory
In file included from /usr/include/inttypes.h:33,
                 from /usr/src/sys/modules/aic7xxx/aicasm/../../../dev/aic7xxx/aicasm/aicasm_symbol.c:53:
/usr/include/sys/stdint.h:35:29: error: machine/_stdint.h: No such file or directory
In file included from /usr/include/stdlib.h:42,
                 from aicasm_gram.c:1:
/usr/include/sys/_types.h:33:28: error: machine/_types.h: No such file or directory
…

usw..., das Verzeichnis "machine" existiert nirgends.

2. Problem (höchstwahrscheinlich gemeinsame Ursache mit 1. Problem)

Code:
mkdep -f .depend -a   -nostdinc -D_KERNEL -DKLD_MODULE -I/usr/local/src/c4b/kernel/modules/i4bcapimgr/../../c4b/include -I/usr/local/src/c4b/kernel/modules/i4bcapimgr/../.. -I. -I@ -I@/contrib/altq /usr/local/src/c4b/kernel/modules/i4bcapimgr/../../i4b/i4bcapimgr/i4bcapimgr.c /usr/local/src/c4b/kernel/modules/i4bcapimgr/../../i4b/i4bcapimgr/i4bcmgr_l4if.c /usr/local/src/c4b/kernel/modules/i4bcapimgr/../../i4b/i4bcapimgr/i4bcmgr_plcism.c /usr/local/src/c4b/kernel/modules/i4bcapimgr/../../i4b/i4bcapimgr/i4bcmgr_nccism.c /usr/local/src/c4b/kernel/modules/i4bcapimgr/../../i4b/i4bcapimgr/i4bcmgr_capiutil.c
/usr/local/src/c4b/kernel/modules/i4bcapimgr/../../i4b/i4bcapimgr/i4bcapimgr.c:62:31: error: machine/i4b_cause.h: No such file or directory
/usr/local/src/c4b/kernel/modules/i4bcapimgr/../../i4b/i4bcapimgr/i4bcapimgr.c:63:31: error: machine/i4b_ioctl.h: No such file or directory
/usr/local/src/c4b/kernel/modules/i4bcapimgr/../../i4b/i4bcapimgr/i4bcmgr_l4if.c:56:31: error: machine/i4b_cause.h: No such file or directory
/usr/local/src/c4b/kernel/modules/i4bcapimgr/../../i4b/i4bcapimgr/i4bcmgr_l4if.c:57:31: error: machine/i4b_ioctl.h: No such file or directory
/usr/local/src/c4b/kernel/modules/i4bcapimgr/../../i4b/i4bcapimgr/i4bcmgr_plcism.c:56:31: error: machine/i4b_cause.h: No such file or directory
/usr/local/src/c4b/kernel/modules/i4bcapimgr/../../i4b/i4bcapimgr/i4bcmgr_plcism.c:57:31: error: machine/i4b_ioctl.h: No such file or directory
/usr/local/src/c4b/kernel/modules/i4bcapimgr/../../i4b/i4bcapimgr/i4bcmgr_nccism.c:55:31: error: machine/i4b_cause.h: No such file or directory
/usr/local/src/c4b/kernel/modules/i4bcapimgr/../../i4b/i4bcapimgr/i4bcmgr_nccism.c:56:31: error: machine/i4b_ioctl.h: No such file or directory
/usr/local/src/c4b/kernel/modules/i4bcapimgr/../../i4b/i4bcapimgr/i4bcmgr_capiutil.c:50:31: error: machine/i4b_ioctl.h: No such file or directory



Ich hab auch schon versucht, symbolische Links von /usr/include/i4b/i4b_ioctl.h nach /usr/machine zu legen - bringt alles nichts.

Was mache ich falsch?
 
Was steht denn in der README? Also wie hast Du versucht den Kernel bzw. das Modul zu übersetzen?

machine/ ist ein Symlink der automatisch von den Buildtools erzeugt werden sollte. Vermutlich hast Du einen Schritt vergessen.
 
Kernel Installation:

Code:
# cd /usr/src/sys/i386/conf
# conf GENERIC
# cd /usr/src/sys/i386/compile/GENERIC
# make cleandepend && make depend
…und dann taucht der Fehler auf. Aber auch mit den Build-Befehle aus /usr/src… gleiches Ergebnis.

Bei c4b ähnlich… Archiv heruntergeladen und nach /usr/local/src entpackt, ins Verzeichnis gewechselt und 'make obj && make depend && make'.
 
machine/ ist ein Symlink der automatisch von den Buildtools erzeugt werden sollte

Wird scheinbar auch erzeugt…

Code:
…
rm -f .depend GPATH GRTAGS GSYMS GTAGS
===> zyd (cleandepend)
rm -f @ machine
rm -f .depend GPATH GRTAGS GSYMS GTAGS
machine -> ../../../i386/include
rm -f .newdep
make -V CFILES -V SYSTEM_CFILES -V GEN_CFILES |  MKDEP_CPP="cc -E" CC="cc" xargs mkdep -a -f .newdep -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I. -I../../.. -I../../../contrib/altq -I../../../contrib/ipfilter -I../../../contrib/pf -I../../../dev/ath -I../../../contrib/ngatm -I../../../dev/twa -I../../../gnu/fs/xfs/FreeBSD -I../../../gnu/fs/xfs/FreeBSD/support -I../../../gnu/fs/xfs -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -fno-common -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000  -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding
…
 
Noch ein paar Infos…

/usr/src/sys/i386/compile/GENERIC/machine existiert, zeigt in den i386/include und hat folgenden Inhalt:

Code:
_bus.h			cpufunc.h		iodev.h			pcpu.h			sigframe.h
_inttypes.h		cputypes.h		kdb.h			pecoff_machdep.h	signal.h
_limits.h		cserial.h		legacyvar.h		perfmon.h		smapi.h
_stdint.h		db_machdep.h		limits.h		pmap.h			smp.h
_types.h		elan_mmcr.h		md_var.h		pmc_mdep.h		speaker.h
acpica_machdep.h	elf.h			memdev.h		ppireg.h		specialreg.h
apicreg.h		endian.h		metadata.h		privatespace.h		stack.h
apicvar.h		exec.h			minidump.h		proc.h			stdarg.h
apm_bios.h		float.h			mp_watchdog.h		profile.h		sysarch.h
apm_segments.h		floatingpoint.h		mptable.h		psl.h			timerreg.h
asm.h			frame.h			mutex.h			ptrace.h		trap.h
asmacros.h		gdb_machdep.h		npx.h			reg.h			tss.h
atomic.h		ieeefp.h		param.h			reloc.h			ucontext.h
bootinfo.h		if_wl_wavelan.h		pc			resource.h		varargs.h
bus.h			in_cksum.h		pcaudioio.h		runq.h			vm86.h
bus_dma.h		intr_machdep.h		pcb.h			segments.h		vmparam.h
clock.h			ioctl_bt848.h		pcb_ext.h		setjmp.h		xbox.h
cpu.h			ioctl_meteor.h		pci_cfgreg.h		sf_buf.h
 
Kernel Installation:

Code:
# cd /usr/src/sys/i386/conf
# conf GENERIC
# cd /usr/src/sys/i386/compile/GENERIC
# make cleandepend && make depend

Wenn, dann muss das "config" heißen.


…und dann taucht der Fehler auf. Aber auch mit den Build-Befehle aus /usr/src… gleiches Ergebnis.

Was steht denn in /etc/make.conf? Und hast Du vielleicht irgendwelche Umgebungsvariablen gesetzt? Ist Dein Source-Tree vollständig und ohne Veränderungen? Im Zweifel kannst Du einfach csup(1) mit entsprechendem Supfile verwenden um die Quellen zu aktualisieren.

Bei c4b ähnlich… Archiv heruntergeladen und nach /usr/local/src entpackt, ins Verzeichnis gewechselt und 'make obj && make depend && make'.

Ähm, keine Ahnung wie die c4b Sourcen übersetzt werden müssen. Aber wenn sie in die Kernelquellen integriert sind, dann ist "/usr/local/src" vermutlich der falsche Ort.
 
Wenn, dann muss das "config" heißen.
Klar… war ein Tippfehler.




Was steht denn in /etc/make.conf?
Und hast Du vielleicht irgendwelche Umgebungsvariablen gesetzt?
Ist Dein Source-Tree vollständig und ohne Veränderungen?

1.
/etc/make.conf
Code:
# added by use.perl 2008-07-23 13:54:27
PERL_VER=5.8.8
PERL_VERSION=5.8.8
NO_SENDMAIL=true

2.
Es sind nur die Standards der BASH gesetzt.
/etc/profile
Code:
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:~/bin
export PATH
HOME=/root
export HOME
TERM=${TERM:-cons25}
export TERM
PAGER=more
export PAGER

3.
Nicht, das ich wüsste.

Im Zweifel kannst Du einfach csup(1) mit entsprechendem Supfile verwenden um die Quellen zu aktualisieren.
Nach Lesen von man csup 1 hab ich die stable-supfile benutzt und erhalte folgenden Output. Der Source-Tree sollte doch nun komplett sein, oder?

Code:
/usr/bin/csup -g -L 2 /root/stable-supfile
Parsing supfile "/root/stable-supfile"
Connecting to cvsup4.de.FreeBSD.org
Connected to 212.19.57.134
Server software version: SNAP_16_1h
Negotiating file attribute support
Exchanging collection information
Establishing multiplexed-mode data connection
Running
Updating collection src-all/cvs
Shutting down connection to server
Finished successfully

Ähm, keine Ahnung wie die c4b Sourcen übersetzt werden müssen. Aber wenn sie in die Kernelquellen integriert sind, dann ist "/usr/local/src" vermutlich der falsche Ort.
Gemäß README gibt es zwei verschiedene Möglichkeiten – einmal muß der Kernel gepatched werden, wenn man isdnd für ppp nutzen möchte – und einmal geht es mit dem GENERIC Kernel als Modul. In jedem Fall kann man einen beliebige Pfad zum Entpacken und kompilieren benutzen. Das Problem mit c4d können wir aber vernachlässigen, da es scheinbar dieselbe Ursache wie das "Kernel Problem" hat - es fehlen einige Dateien in dem dynamisch angelegten "machine".
 
Ist die ISDN-Unterstützung überhaupt wieder vorhanden? In 7.0-RELEASE war sie deaktiviert, siehe Release-Notes.
 
Ich habe die ISDN Unterstützung doch, soweit ich das richtig verstanden habe, durch Kompilieren eines eigenen Kernels aktiviert. Da ich aber i4b nicht benötige, was ich jedoch fälschlicherweise annahm, möchte ich jetzt wieder den GENERIC Kernel haben. Denn c4b verträgt sich nicht mit i4b – und da ich das nicht parallel laufen lassen möchte (ISDNoPPP wird nicht gebraucht), kann ich laut c4b README mit dem GENERIC Kernel arbeiten und c4b als Modul nachladen.
 
Ich hab /usr/src/sys mal entfernt und neu mittels csup eingebunden - kein Unterschied.

Dann… Installation von OpenVPN über Portinstall gab einen interessanten Hinweis:
Code:
checking how to run the C preprocessor... cc -E -traditional-cpp
checking whether the C preprocessor needs special flags... ERROR
configure: error: your C preprocessor is broken - for details see config.log

config.log
Code:
configure:2399: checking for cc option to accept ANSI C
configure:2469: cc  -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c:9:20: error: stdarg.h: No such file or directory
In file included from /usr/include/stdio.h:45,
                 from conftest.c:10:
/usr/include/sys/_types.h:33:28: error: machine/_types.h: No such file or directory
In file included from /usr/include/stdio.h:45,
                 from conftest.c:10:


…die Frage ist nur, was daran broken ist. Bin mir keiner Schuld bewusst… :P
 
[Solved]

Naja…Holzhammer-Methode. Das System mittels sysinstall resettet und die Konfigurationen zurückgesichert. Jetzt geht es wieder. Bin gespannt, ob es nochmal auftritt - und was dann dazu führt. Werd jetzt mal Protokoll führen.
 
…c4b kompiliert immer noch nicht fehlerfrei.

/usr/local/src/c4b/kernel/modules/avmaic/../../c4b/avmaic/avmb1.c:906: error: too few arguments to function 'bus_setup_intr'

Seit 7.0 Release gibt es ein zusätzliches Parameter. Ich schau mal, ob jemand schon einen Patch dafür hat. Ansonsten darf ich selbst ran.
 
Es ist zum Heulen…

Code:
Probing for best speed to talk to modem:capidev: WARNING: Got illegal ioctl command 0x402C7413, process id 1254
capidev: WARNING: Got illegal ioctl command 0x402C7413, process id 1255
capidev: WARNING: Got illegal ioctl command 0x402C7413, process id 1256
capidev: WARNING: Got illegal ioctl command 0x402C7413, process id 1257
capidev: WARNING: Got illegal ioctl command 0x402C7413, process id 1258
capidev: WARNING: Got illegal ioctl command 0x402C7413, process id 1259

Hier übrigens das Hintergrundprojekt…

https://www.dock42.com/trac/hyladae/wiki/HylaFaxFreeBsd
 
Hallo Okapi,

Bin gerade über Deine Threads gestolpert und mal die Frage: wie weit bist du denn miitlerweile? Vor 2 Wochen kam ich auch die selbe Idee mit einer AVM B1 ISA. Hier läuft es jetzt aber (c2faxrecv bringt zwar was im Log beim Starten wegen einer gid, aber Faxe senden und empfangen tut...)

Hier mein Patch, teilweise erweitert (z.B. Makefile angepasst).
In diesem Makefile hab ich auch noch DPADD passend angepasst. Weiterhin braucht man beim kcapimgr auch noch ein paar includes.

Das Makefile für den capi4hylafax Port hab ich mir auch umgeschrieben und lässt sich hier zumindest so ohne Probleme installieren und benutzen.

(Sorry für das Archiv in Archiv. Warum kann man hier denn keine gz Dateien hochladen...)
 

Anhänge

Bei mir läuft mittlerweile alles, Danke!
Schön das es läuft.

Die Situation mit ISDN unter FreeBSD ist tatsächlich etwas unbefriedigend. Bei dem aktuellen I4B hätte man ja mittlerweile wirklich eine gute CAPI dabei, dafür ist gerade die Unterstützung für aktive Kontroller herausgeflogen. (Und das wo man im Firmen/Serverumfeld ja in D eher Fax benötigt, als einen ISDN-DialUp). Bei C4B hat man dagegen den Vorteil, dass man keinen Kernel bauen muss und somit freebsd-update weiterhin ohne Probleme tut.

Nachdem jetzt sogar der CAPI-Server unter FreeBSD hier läuft, könnte ich oft sogar fast auf Hylafax verzichten. Wohl nicht machbar, fehlt mir jetzt eigentlich nur, dass man die CAPI auch aus der Linux-Emu benutzen könnte. (Und schon fast am auslaufen, hab ich tatsächlich auch noch Bedarf an der CAPI 1.2, was damit den FreeBSD CAPI-Server nicht ganz komplett macht, und ich somit in einem Client immer noch eine Karte verbauen muss)
 
Zurück
Oben