# Heimdal Compilation/Install Error



## mattruut (Jul 25, 2013)

I was trying to install security/heimdal (Heimdal 1.5.2) from Ports last night and encountered an error. Here's the build text leading up to the error.


```
cc -DHAVE_CONFIG_H -I. -I. -I../../include -I../../include  -I../../lib/roken -I../../lib/roken -I../asn1 -I./../asn1   -I/usr/local/include  -DHDB_DB_DIR=\"/var/db/heimdal\" -I./../krb5  -I/usr/local/include -I/usr/local/include -I/usr/local/include/db46  -I/usr/local/include/db46 -D_LARGE_FILES= -Wall -Wmissing-prototypes -Wpointer-arith -Wbad-function-cast -Wmissing-declarations -Wnested-externs -DINET6 -O2 -pipe -fPIC -I/usr/local/include/db46 -DLDAP_DEPRECATED -fno-strict-aliasing -MT test_dbinfo.o -MD -MP -MF .deps/test_dbinfo.Tpo -c -o test_dbinfo.o test_dbinfo.c
cc -DHAVE_CONFIG_H -I. -I. -I../../include -I../../include  -I../../lib/roken -I../../lib/roken -I../asn1 -I./../asn1   -I/usr/local/include  -DHDB_DB_DIR=\"/var/db/heimdal\" -I./../krb5  -I/usr/local/include -I/usr/local/include -I/usr/local/include/db46  -I/usr/local/include/db46 -D_LARGE_FILES= -Wall -Wmissing-prototypes -Wpointer-arith -Wbad-function-cast -Wmissing-declarations -Wnested-externs -DINET6 -O2 -pipe -fPIC -I/usr/local/include/db46 -DLDAP_DEPRECATED -fno-strict-aliasing -MT test_hdbkeys.o -MD -MP -MF .deps/test_hdbkeys.Tpo -c -o test_hdbkeys.o test_hdbkeys.c
In file included from ./hdb.h:281,
                 from hdb_locl.h:64,
                 from test_dbinfo.c:34:
./hdb-protos.h:151: warning: type defaults to 'int' in declaration of 'HDB_Ext_PKINIT_cert'
./hdb-protos.h:151: error: expected ';', ',' or ')' before '*' token
*** [test_dbinfo.o] Error code 1
In file included from ./hdb.h:281,
                 from hdb_locl.h:64,
                 from test_hdbkeys.c:34:
./hdb-protos.h:151: warning: type defaults to 'int' in declaration of 'HDB_Ext_PKINIT_cert'
./hdb-protos.h:151: error: expected ';', ',' or ')' before '*' token
test_hdbkeys.c: In function 'main':
test_hdbkeys.c:57: error: 'hdb_keyset' undeclared (first use in this function)
test_hdbkeys.c:57: error: (Each undeclared identifier is reported only once
test_hdbkeys.c:57: error: for each function it appears in.)
test_hdbkeys.c:57: error: expected ';' before 'keyset'
test_hdbkeys.c:88: error: 'keyset' undeclared (first use in this function)
test_hdbkeys.c:103: warning: implicit declaration of function 'length_hdb_keyset'
test_hdbkeys.c:103: warning: nested extern declaration of 'length_hdb_keyset'
test_hdbkeys.c:103: warning: implicit declaration of function 'encode_hdb_keyset'
test_hdbkeys.c:103: warning: nested extern declaration of 'encode_hdb_keyset'
*** [test_hdbkeys.o] Error code 1
2 errors
*** [all] Error code 2
1 error
*** [all-recursive] Error code 1
1 error
*** [all-recursive] Error code 1
1 error
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** [do-build] Error code 1

Stop in /usr/ports/security/heimdal.
*** [build] Error code 1

Stop in /usr/ports/security/heimdal.
```

I did some digging and experimenting and found that if, after the error, I create a symlink named hdb_asn1.h and point it at hdb_asn1.hx (in the work/heimdal-1.5.2/lib/hdb directory), then the compile will work. I'm hesitant to install the result of this because I'm not sure exactly what file I'm linking, what the initial problem is and how this is fixing the problem.

Has anybody run into this? If so, is this fix going to cause problems for me later? Does anybody know what the initial problem is and why it's causing a compilation error?

The only extra options I'm using in my config are LDAP and SQLITE.

Thank you for any help.


----------



## mattruut (Jul 29, 2013)

After more time, I did what the compilation error told me to do and added 
	
	



```
MAKE_JOBS_UNSAFE=YES
```
 to the Makefile. It built properly now. It worked in a VMWare Player virtual machine, running the i386 version of FreeBSD 9.1. I'm going to test it tomorrow on the amd64 system that I had the initial problem on.

If I understand the Porter's Handbook correctly, the 
	
	



```
MAKE_JOBS_UNSAFE=YES
```
 Makefile directive disables SMP and forces the make system to only use one CPU core. Is that correct? If so, then I'll add that directive to the Makefile on my live system and this thread can be marked SOLVED and closed.

Thank you.


----------



## SirDice (Jul 29, 2013)

mattruut said:
			
		

> If I understand the Porter's Handbook correctly, the MAKE_JOBS_UNSAFE=YES Makefile directive disables SMP and forces the make system to only use one CPU core. Is that correct?


No, it simply tells the system to build one part at a time. On multi-core systems you want to have as many compilers running as the system can handle to speed up the process. Appearently this port doesn't like that.


----------

