# xawtv does not build



## BertramScharpf (Jun 19, 2013)

multimedia/xawtv refuses to build:


```
[cmd=#]make package-name[/cmd]
xawtv-3.103
[cmd=#]make[/cmd]
... [lots of information]
libng/plugins/drv0-v4l2.tmpl.c:25:40: error: asm/types.h: No such file or directory
In file included from libng/plugins/drv0-v4l2.tmpl.c:26:
./libng/videodev2.h:61:25: error: linux/ioctl.h: No such file or directory
./libng/videodev2.h:62:25: error: linux/types.h: No such file or directory
In file included from libng/plugins/drv0-v4l2.tmpl.c:26:
...
```

There is no asm/types.h:
`# rbfind /usr/include /usr/local/include -P 'path =~ /asm\/types\.h/'`

No answer.


```
[cmd=#]rbfind /usr/ports -m 4 'name =~ /^pkg-plist/[/cmd] and [cmd]grep /asm\/types\.h/[/cmd]
/usr/ports/emulators/linux_dist-gentoo-stage3/pkg-plist.i486:1807:%%PREFIX_SUBDIR%%usr/include/asm/types.h
/usr/ports/emulators/linux_dist-gentoo-stage3/pkg-plist.i686:1807:%%PREFIX_SUBDIR%%usr/include/asm/types.h
/usr/ports/lang/gnatdroid-sysroot/pkg-plist:162:usr/include/asm/types.h
```

Installing the former port did not help.

I found that the types __u32 etc. will be defined in videodev2.h belonging to v4l_compat-1.0.20120501_1 and just deleted the line 
	
	



```
#including "asm/types.h"
```
Then, still linux/ioctl.h will be missed because it is not part of v4l_compat.

What do I have to do?

Thanks in advance,

Bertram

P.S.: rbfind is a find tool written by me in Ruby. Probably you can guess what the calls mean.


----------



## jozze (Jun 19, 2013)

First of all, make sure your ports tree is up to date (for example `# portsnap fetch update` will do). If you have any settings that might be of interest to us in make.conf, src.conf or even just your port's build options, post them here. Lastly, tell us which version of FreeBSD you're running. Fiddling with the sources is ill advised, since ALL the ports are tested and build cleanly without any errors. If you want to modify them, write a patch and place it in the /usr/ports/some/port/files directory -- they will automatically be applied in alphabetical order before build.

After that install ports-mgmt/portmaster and try rebuilding those ports along with all the dependencies with

```
# make -C /usr/ports/ports-mgmt/portmaster install clean
# portmaster -Rd /usr/ports/multimedia/xawtv
```

The `-d' flag will remove existing sources in /usr/ports/distfiles, just in case, and again download them.


----------



## BertramScharpf (Jun 20, 2013)

Before I posted I updateded everthing. I did a `svnup`.


```
/usr/ports/multimedia/xawtv # make package-name
xawtv-3.103
```

/etc/make.conf contains nothing special (WITHOUT_CUPS=yes etc.).


```
# uname -r
9.1-STABLE
```

I just did another `make clean` without NOCLEANDEPENDS. Then, I did a `pkg_delete` for everything that was mentioned. The `make` afterwards was no fun.


```
# make install
===>  Building for xawtv-3.103
env: gmake: No such file or directory
*** [do-build] Error code 1
```

And many more!

In the end, I received the same error and multimedia/xawtv still refuses to build.


----------



## jozze (Jun 20, 2013)

Well, I understand you prefer to use make program itself to do that, but that's "last-line-of-defense" tool. For serious usage of ports you should really consider installing ports-mgmt/portupgrade or ports-mgmt/portmaster (the last one is just one big shell script, and requires no external dependencies).

If you used portmaster from the beginning, it would create backup of all ports before reinstalling them, in case something goes wrong. You don't have to manually [cmd=""]pkg_delete[/cmd] everything. In fact, you didn't have to delete anything, just reinstall. See ports(8)() if you insist, there is a reinstall target.

In any case, I can reproduce your problem. Perhaps it's a bug. I'll look into it when I have more time, but on a quick glance, it seems that /usr/ports/multimedia/xawtv/files/patch-libng::plugins::drv0-bsd.c could have something to do with it, in the sense that it doesn't fix the code well enough.

Maybe you should file a PR, and notify the maintainer, oliver@FreeBSD.org.


----------



## BertramScharpf (Jun 21, 2013)

Yes, I created a new jail, copied /usr/ports into it (nullfs-mounted distfiles) and did inside exactly two things: `make install` in /usr/ports/ports-mgmt/portmaster, then `portmaster -KD multimedia xawtv`. That worked indeed.

Anyway, portmaster didn't convince me. First, I'm wont to tweak the sources of some packages after the `make patch` step. Second, in my opinion, the Makefile has to do its single job competely. Third, when I understood `man ports` I do not want to read another pile of portmaster documentation. Can't it stay simple? Fourth, finally, when I started over in a virgin jail and installed some basic ports (zsh, sudo, tmux etc.), then x11/xorg, that died in a very unfriendly way:


```
===>  Checking if textproc/xmlcharent already installed
/bin/mkdir -p /usr/local/share/xml/xmlcharent
install  -o root -g wheel -m 444 /usr/ports/textproc/xmlcharent/work/*.ent /usr/ports/textproc/xmlcharent/files/catalog /usr/ports/t
/usr/local/bin/xmlcatmgr -sc /usr/local/share/sgml/catalog.ports add CATALOG /usr/local/share/xml/xmlcharent/catalog
xmlcatmgr: entry already exists for `/usr/local/share/xml/xmlcharent/catalog' of type `CATALOG'
*** [do-install] Error code 1

Stop in /usr/ports/textproc/xmlcharent.
```

I fixed that saying `make install` again...

Sorry, but portmaster and me will probably not become friends. Suppose Oliver will hear from me.


----------



## jozze (Jun 21, 2013)

If you want to tweak the sources, why don't you just create a patch file, and put it with the other patches in /usr/ports/some/port/files? They will be automatically applied in alphabetical order. That way your changes to the sources will also be automatically applied with `# make install clean`. I use a set of custom patches like this for x11-wm/dwm.

As for the portmaster, it's up to you. Not everyone likes automation, and some people like to do things by hand, manually and I respect that. That was Slackware's main feature :e. Anyway, good luck!


----------



## BertramScharpf (Jun 21, 2013)

*SOLVED: xawtv does not build*

ARRGH! Arrgh! It's definitely not a question of make vs. portmaster. I found out that xawtv checks whether v4l is installed. If this is true it compiles the part that fails. In my first installation, there was webcamd that pulled in v4l and then xawtv failed. The xawtv port is definitely broken. I edited the v4l headers in xawtv and now it compiles. I will submit a PR containing my solution.

Yes, I have a kind of kinky view on automation; I cannot stymie that and I should not complain. As long as I find some bugs it's at least worth the effort.

Thank you anyway for keeping me curious.

Bertram

P.S.: May I ask here? I am still looking for a job in Germany where my attitude of clean software is sought. Does anyone have some advice how and where to present myself?


----------

