Checking the Debian autobuilder logs, I discovered that sane-backends fail to build on Linux/hppa. The error message seem to be related to the inclusion of <asm/io.h>. Apparently <sys/io.h> is missing bug <asm/io.h> is present and useless.
It do not seem like a god idea to use <asm/io.h> as a fallback. Anyone know how to solve this? The full build log is available from <URL:http://buildd.debian.org/build.php?pkg=sane-backends&arch=hppa>, but this is the failing part: make[2]: Entering directory `/build/buildd/sane-backends-1.0.6/sanei' mkdir .libs gcc -c -DHAVE_CONFIG_H -I. -I. -I../include -I../include -D_GNU_SOURCE -DPATH_SANE_CONFIG_DIR=/etc/sane.d -DPATH_SANE_DATA_DIR=/usr/share/sane -DV_MAJOR=1 -DV_MINOR=0 -O2 -g sanei_ab306.c -fPIC -DPIC -o .libs/sanei_ab306.lo In file included from /usr/include/asm/processor.h:14, from /usr/include/asm/pgtable.h:12, from /usr/include/asm/io.h:14, from sanei_ab306.c:55: /usr/include/asm/hardware.h:76: parse error before "nothing" /usr/include/asm/hardware.h:77: parse error before "io_eim" /usr/include/asm/hardware.h:78: parse error before "io_dc_adata" /usr/include/asm/hardware.h:79: parse error before "io_ii_cdata" /usr/include/asm/hardware.h:80: parse error before "io_dma_link" /usr/include/asm/hardware.h:81: parse error before "io_dma_command" /usr/include/asm/hardware.h:82: parse error before "io_dma_address" /usr/include/asm/hardware.h:83: parse error before "io_dma_count" /usr/include/asm/hardware.h:84: parse error before "io_flex" /usr/include/asm/hardware.h:85: parse error before "io_spa_address" /usr/include/asm/hardware.h:86: parse error before "reserved1" /usr/include/asm/hardware.h:87: parse error before "io_command" /usr/include/asm/hardware.h:88: parse error before "io_status" /usr/include/asm/hardware.h:89: parse error before "io_control" /usr/include/asm/hardware.h:90: parse error before "io_data" /usr/include/asm/hardware.h:91: parse error before "reserved2" /usr/include/asm/hardware.h:92: parse error before "chain_addr" /usr/include/asm/hardware.h:93: parse error before "sub_mask_clr" /usr/include/asm/hardware.h:94: parse error before "reserved3" /usr/include/asm/hardware.h:95: parse error before "undefined" /usr/include/asm/hardware.h:96: parse error before "unpriv" /usr/include/asm/hardware.h:97: parse error before '}' token /usr/include/asm/hardware.h:100: parse error before "unused1" /usr/include/asm/hardware.h:101: parse error before "io_command" /usr/include/asm/hardware.h:102: parse error before "io_status" /usr/include/asm/hardware.h:103: parse error before "io_control" /usr/include/asm/hardware.h:104: parse error before "unused2" /usr/include/asm/hardware.h:105: parse error before "io_err_resp" /usr/include/asm/hardware.h:106: parse error before "io_err_info" /usr/include/asm/hardware.h:107: parse error before "io_err_req" /usr/include/asm/hardware.h:108: parse error before "unused3" /usr/include/asm/hardware.h:109: parse error before "io_io_low" /usr/include/asm/hardware.h:110: parse error before "io_io_high" In file included from /usr/include/asm/io.h:14, from sanei_ab306.c:55: /usr/include/asm/pgtable.h:203: parse error before "swapper_pg_dir" /usr/include/asm/pgtable.h:246: parse error before "pgd" /usr/include/asm/pgtable.h:247: parse error before "pgd" /usr/include/asm/pgtable.h:248: parse error before "pgd" /usr/include/asm/pgtable.h:249: parse error before '*' token /usr/include/asm/pgtable.h:256: parse error before "pte" /usr/include/asm/pgtable.h: In function `pte_read': /usr/include/asm/pgtable.h:256: `pte' undeclared (first use in this function) /usr/include/asm/pgtable.h:256: (Each undeclared identifier is reported only once /usr/include/asm/pgtable.h:256: for each function it appears in.) /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:257: parse error before "pte" /usr/include/asm/pgtable.h: In function `pte_dirty': /usr/include/asm/pgtable.h:257: `pte' undeclared (first use in this function) /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:258: parse error before "pte" /usr/include/asm/pgtable.h: In function `pte_young': /usr/include/asm/pgtable.h:258: `pte' undeclared (first use in this function) /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:259: parse error before "pte" /usr/include/asm/pgtable.h: In function `pte_write': /usr/include/asm/pgtable.h:259: `pte' undeclared (first use in this function) /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:261: parse error before "pte_rdprotect" /usr/include/asm/pgtable.h:261: parse error before "pte" /usr/include/asm/pgtable.h: In function `pte_rdprotect': /usr/include/asm/pgtable.h:261: `pte' undeclared (first use in this function) /usr/include/asm/pgtable.h:261: invalid lvalue in assignment /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:262: parse error before "pte_mkclean" /usr/include/asm/pgtable.h:262: parse error before "pte" /usr/include/asm/pgtable.h: In function `pte_mkclean': /usr/include/asm/pgtable.h:262: `pte' undeclared (first use in this function) /usr/include/asm/pgtable.h:262: invalid lvalue in assignment /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:263: parse error before "pte_mkold" /usr/include/asm/pgtable.h:263: parse error before "pte" /usr/include/asm/pgtable.h: In function `pte_mkold': /usr/include/asm/pgtable.h:263: `pte' undeclared (first use in this function) /usr/include/asm/pgtable.h:263: invalid lvalue in assignment /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:264: parse error before "pte_wrprotect" /usr/include/asm/pgtable.h:264: parse error before "pte" /usr/include/asm/pgtable.h: In function `pte_wrprotect': /usr/include/asm/pgtable.h:264: `pte' undeclared (first use in this function) /usr/include/asm/pgtable.h:264: invalid lvalue in assignment /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:265: parse error before "pte_mkread" /usr/include/asm/pgtable.h:265: parse error before "pte" /usr/include/asm/pgtable.h: In function `pte_mkread': /usr/include/asm/pgtable.h:265: `pte' undeclared (first use in this function) /usr/include/asm/pgtable.h:265: invalid lvalue in assignment /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:266: parse error before "pte_mkdirty" /usr/include/asm/pgtable.h:266: parse error before "pte" /usr/include/asm/pgtable.h: In function `pte_mkdirty': /usr/include/asm/pgtable.h:266: `pte' undeclared (first use in this function) /usr/include/asm/pgtable.h:266: invalid lvalue in assignment /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:267: parse error before "pte_mkyoung" /usr/include/asm/pgtable.h:267: parse error before "pte" /usr/include/asm/pgtable.h: In function `pte_mkyoung': /usr/include/asm/pgtable.h:267: `pte' undeclared (first use in this function) /usr/include/asm/pgtable.h:267: invalid lvalue in assignment /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:268: parse error before "pte_mkwrite" /usr/include/asm/pgtable.h:268: parse error before "pte" /usr/include/asm/pgtable.h: In function `pte_mkwrite': /usr/include/asm/pgtable.h:268: `pte' undeclared (first use in this function) /usr/include/asm/pgtable.h:268: invalid lvalue in assignment /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:305: parse error before "pte_modify" /usr/include/asm/pgtable.h:305: parse error before "pte" /usr/include/asm/pgtable.h: In function `pte_modify': /usr/include/asm/pgtable.h:306: `pte' undeclared (first use in this function) /usr/include/asm/pgtable.h:306: `newprot' undeclared (first use in this function) /usr/include/asm/pgtable.h:306: invalid lvalue in assignment /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:350: parse error before "pte_t" /usr/include/asm/pgtable.h:363: parse error before '*' token /usr/include/asm/pgtable.h: In function `ptep_test_and_clear_young': /usr/include/asm/pgtable.h:368: `pte_t' undeclared (first use in this function) /usr/include/asm/pgtable.h:368: parse error before "pte" /usr/include/asm/pgtable.h:369: `pte' undeclared (first use in this function) /usr/include/asm/pgtable.h:371: `ptep' undeclared (first use in this function) /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:376: parse error before '*' token /usr/include/asm/pgtable.h: In function `ptep_test_and_clear_dirty': /usr/include/asm/pgtable.h:381: `pte_t' undeclared (first use in this function) /usr/include/asm/pgtable.h:381: parse error before "pte" /usr/include/asm/pgtable.h:382: `pte' undeclared (first use in this function) /usr/include/asm/pgtable.h:384: `ptep' undeclared (first use in this function) /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:395: parse error before "ptep_get_and_clear" /usr/include/asm/pgtable.h:395: parse error before '*' token /usr/include/asm/pgtable.h: In function `ptep_get_and_clear': /usr/include/asm/pgtable.h:397: `pte_t' undeclared (first use in this function) /usr/include/asm/pgtable.h:397: parse error before "old_pte" /usr/include/asm/pgtable.h:401: `pte' undeclared (first use in this function) /usr/include/asm/pgtable.h:401: `old_pte' undeclared (first use in this function) /usr/include/asm/pgtable.h:401: `ptep' undeclared (first use in this function) /usr/include/asm/pgtable.h:402: invalid lvalue in assignment /usr/include/asm/pgtable.h:403: invalid lvalue in assignment /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:410: parse error before '*' token /usr/include/asm/pgtable.h: In function `ptep_set_wrprotect': /usr/include/asm/pgtable.h:420: `pte_t' undeclared (first use in this function) /usr/include/asm/pgtable.h:420: parse error before "old_pte" /usr/include/asm/pgtable.h:421: `ptep' undeclared (first use in this function) /usr/include/asm/pgtable.h:421: `old_pte' undeclared (first use in this function) /usr/include/asm/pgtable.h: At top level: /usr/include/asm/pgtable.h:425: parse error before '*' token /usr/include/asm/pgtable.h: In function `ptep_mkdirty': /usr/include/asm/pgtable.h:430: `pte_t' undeclared (first use in this function) /usr/include/asm/pgtable.h:430: parse error before "old_pte" /usr/include/asm/pgtable.h:431: `ptep' undeclared (first use in this function) /usr/include/asm/pgtable.h:431: `old_pte' undeclared (first use in this function) In file included from sanei_ab306.c:55: /usr/include/asm/io.h: In function `__raw_readl': /usr/include/asm/io.h:77: `u32' undeclared (first use in this function) /usr/include/asm/io.h:77: parse error before "ret" /usr/include/asm/io.h:81: `ret' undeclared (first use in this function) sanei_ab306.c: At top level: /usr/include/asm/pgtable.h:203: warning: array `swapper_pg_dir' assumed to have one element make[2]: *** [sanei_ab306.o] Error 1 make[2]: Leaving directory `/build/buildd/sane-backends-1.0.6/sanei'