# fcgiwrap build failing, needs gm4 to build



## andyzammy (Jan 27, 2012)

I checked for updates with ports-mgmt/portmaster, and www/fcgiwrap had a new version. Upgrading via ports-mgmt/portmaster threw an error which I didn't record. I then decided to *make deinstall clean* and *reinstall*, which gave the same error minus the ports-mgmt/portmaster lingo:


```
server# make install clean
===>  License MIT accepted by the user
===>  Extracting for fcgiwrap-1.0.3_4
=> SHA256 Checksum OK for fcgiwrap-1.0.3.tar.gz.
===>  Patching for fcgiwrap-1.0.3_4
===>  Applying FreeBSD patches for fcgiwrap-1.0.3_4
===>   fcgiwrap-1.0.3_4 depends on file: /usr/local/bin/autoconf-2.68 - found
===>   fcgiwrap-1.0.3_4 depends on shared library: fcgi.0 - found
===>  Configuring for fcgiwrap-1.0.3_4
autom4te-2.68: need GNU m4 1.4 or later: /usr/local/bin/gm4
autoheader-2.68: '/usr/local/bin/autom4te-2.68' failed with exit status: 1
*** Error code 1

Stop in /usr/ports/www/fcgiwrap.
```

I couldn't find any mention of gm4 so am not sure what the problem is. It's as though it's depending on a port that doesn't exist?


----------



## jake (Jan 27, 2012)

Does this help?

Make sure your ports tree is uptodate
`# portsnap fetch update`

Update devel/m4
`# cd /usr/ports/devel/m4`
`# make deinstall reinstall`

Then try to upgrade fcgiwrap again.


----------



## andyzammy (Jan 27, 2012)

jake said:
			
		

> Does this help?
> 
> Make sure your ports tree is uptodate
> `# portsnap fetch update`
> ...



Thanks, this did the trick! I saw m4 in the ports tree but I didn't realize it was the GNU version ie gm4. Why is it named like this? It was confusing to run a whereis and find it in bin/, then install a 'port I already have' only to be told it's not installed and give me a binary with a different name. Is it just me or is this very backwards?

How come portmaster didn't automatically fix this dependency issue for me? Did it trip up in the same place I did?

PS. Just realized the port for m4 didn't show up in the whereis command I ran to find it. How come?


----------



## SirDice (Jan 27, 2012)

andyzammy said:
			
		

> I saw m4 in the ports tree but I didn't realize it was the GNU version ie gm4. Why is it named like this?


To differentiate it from the BSD licensed m4(1) that's part of the base OS.


----------



## andyzammy (Jan 27, 2012)

SirDice said:
			
		

> To differentiate it from the BSD licensed m4(1) that's part of the base OS.



But that's my point, it didn't quite manage it. I assumed it was the BSD version, perhaps a more up to date version than what was in base. Of course I wondered why it wasn't packed into update system (maybe an experimental development version, who knows??) but I thought that was more likely than naming a GNU tool exactly the same as a BSD tool.

I wanted to check the port description at the time but couldn't find the command to display it.

I guess I made an incorrect assumption that with GNU tools there was a naming convention (devel/gmake), but it looks like not.

In any case, m4 looks like build dependency for fcgiwrap, but looking at the following..


```
%make build-depends-list
/usr/ports/devel/autoconf
/usr/ports/www/fcgi
```

.. does this suggest that the maintainer forgot to add this to the list? Would certainly explain why compiling fails. If so what's the conventional way to notify? An email?


----------



## SirDice (Jan 27, 2012)

andyzammy said:
			
		

> But that's my point, it didn't quite manage it. I assumed it was the BSD version, perhaps a more up to date version than what was in base. Of course I wondered why it wasn't packed into update system (maybe an experimental development version, who knows??) but I thought that was more likely than naming a GNU tool exactly the same as a BSD tool.


The GNU version uses it's own GPL'ed source. The code is different and the resulting m4 may behave a little different too.



> In any case, m4 looks like build dependency for fcgiwrap, but looking at the following..
> 
> 
> ```
> ...



Yes, you can try to email the port maintainer. You can also submit a PR.


----------



## andyzammy (Jan 27, 2012)

SirDice said:
			
		

> The GNU version uses it's own GPL'ed source. The code is different and the resulting m4 may behave a little different too.



I understand the differences, but it was lack of name difference that confused me. Wouldn't it be better to prefix all GNU variants which have BSD counterparts with a 'g'? It make sense (at least in my opinion) that a binary with the name of gm4 have it's port also called gm4. That would outline clearly that there is a difference between m4(1) and m4 'GNU Edition'. Especially when in this particular case it didn't reveal the port to me with a whereis.

Email sent!


----------



## SirDice (Jan 27, 2012)

Excellent point. It would make it more consistent.


----------



## jake (Jan 27, 2012)

Just a quick note on finding ports, you said you had trouble tracking down it's location in the ports tree using the whereis command. If you are a portsnap user you can do the following to search the ports tree.

`# cd /usr/ports`
`# make search name=m4`
Output:

```
Port:	sim4-2003.09.21
Path:	/usr/ports/biology/sim4
Info:	An algorithm for aligning expressed DNA with genomic sequences
Maint:	ports@FreeBSD.org
B-deps:	
R-deps:	
WWW:	http://globin.cse.psu.edu/

Port:	m4-1.4.16,1
Path:	/usr/ports/devel/m4
Info:	GNU m4
Maint:	johans@FreeBSD.org
B-deps:	
R-deps:	
WWW:	http://www.gnu.org/software/m4/m4.html

--- SNIP ---
```

To search more than just the name you can use 'key'
`# make search key=m4`

Although in this case, searching for 'gm4' would still of returned nothing :\


----------

