# Obsolete files remain after building and installing FreeBSD from source



## ldgc (Dec 7, 2017)

Howdy 

I created src.conf and followed the instructions in https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html, however there are obsolete files remaining in the system that, according to my src.conf, should have been removed 
Can someone please explain why this happened?

Thanks in advance!


----------



## SirDice (Dec 7, 2017)

23.5.6.2. Checking for Outdated Files and Libraries


----------



## ldgc (Dec 7, 2017)

SirDice said:


> 23.5.6.2. Checking for Outdated Files and Libraries



I did that, but there are obsolete files remaining.


----------



## SirDice (Dec 7, 2017)

`make -C /usr/src -DBATCH_DELETE_OLD_FILES delete-old`

This has worked for me for the past 15-20 years. 



pensador_13 said:


> I did that, but there are obsolete files remaining.


Which are?


----------



## ldgc (Dec 7, 2017)

For example:
`/usr/sbin/sendmail`
`/usr/sbin/zfsd`


----------



## SirDice (Dec 7, 2017)

And what does your src.conf look like?


----------



## ldgc (Dec 7, 2017)

```
...
WITHOUT_SENDMAIL=yes
...
WITHOUT_ZFS=yes
```


----------



## SirDice (Dec 7, 2017)

Yes, and the rest?


----------



## ldgc (Dec 7, 2017)

SirDice, I am writing from my smartphone and I don't have access to my laptop right now. I took pictures of `less /etc/src.conf` in case it was needed  
I have them on my gallery, how do I post them?


----------



## SirDice (Dec 7, 2017)

I'm more interested in seeing the file itself. The thing to watch out for are things like this:

```
WITHOUT_SENDMAIL=yes
<further down>
WITH_SENDMAIL=no
```
Especially the WITH_SENDMAIL=no throws people off. It doesn't matter what's being assigned to the variable, its contents is never checked. The mere fact that a WITH_* variable is defined is enough to overrule the equivalent WITHOUT_* variable. 

And it's also possible you have included something else that actually depends on the things you're trying to remove.


----------



## ldgc (Dec 7, 2017)

```
WITHOUT_ACCT=yes
WITHOUT_AMD=yes
WITHOUT_ASSERT_DEBUG=yes
WITHOUT_ATM=yes
WITHOUT_AUDIT=yes
WITHOUT_AUTHPF=yes
WITHOUT_BHYVE=yes
WITHOUT_BLACKLIST=yes
WITHOUT_BLACKLIST_SUPPORT=yes
WITHOUT_BLUETOOTH=yes
WITHOUT_BSDINSTALL=yes
WITHOUT_BSNMP=yes
WITHOUT_CALENDAR=yes
WITHOUT_CAPSICUM=yes
WITHOUT_CASPER=yes
WITHOUT_CDDL=yes
WITHOUT_CLANG_FULL=yes
WITHOUT_CTM=yes
WITHOUT_CUSE=yes
WITHOUT_CXGBETOOL=yes
WITHOUT_DEBUG_FILES=yes
WITHOUT_DICT=yes
WITHOUT_DMAGENT=yes
WITHOUT_ED_CRYPTO=yes
WITHOUT_EFI=yes
WITHOUT_EXAMPLES=yes
WITHOUT_FINGER=yes
WITHOUT_FLOPPY=yes
WITHOUT_FREEBSD_UPDATE=yes
WITHOUT_FTP=yes
WITHOUT_GAMES=yes
WITHOUT_GCOV=yes
WITHOUT_GDB=yes
WITHOUT_GPIO=yes
WITHOUT_GROFF=yes
WITHOUT_GSSAPI=yes
WITHOUT_HAST=yes
WITHOUT_HTML=yes
WITHOUT_HYPERV=yes
WITHOUT_INET6=yes
WITHOUT_INET6_SUPPORT=yes
WITHOUT_INETD=yes
WITHOUT_IPFILTER=yes
WITHOUT_IPFW=yes
WITHOUT_IPSEC_SUPPORT=yes
WITHOUT_ISCSI=yes
WITHOUT_JAIL=yes
WITHOUT_KDUMP=yes
WITHOUT_KERBEROS=yes
WITHOUT_KERBEROS_SUPPORT=yes
WITHOUT_KERNEL_SYMBOLS=yes
WITHOUT_LDNS=yes
WITHOUT_LDNS_UTILS=yes
WITHOUT_LIB32=yes
WITHOUT_LLDB=yes
WITHOUT_LOCATE=yes
WITHOUT_LPR=yes
WITHOUT_MAIL=yes
WITHOUT_MAILWRAPPER=yes
WITHOUT_MAN=yes
WITHOUT_MAN_UTILS=yes
WITHOUT_NDIS=yes
WITHOUT_NETCAT=yes
WITHOUT_NETGRAPH=yes
WITHOUT_NETGRAPH_SUPPORT=yes
WITHOUT_NIS=yes
WITHOUT_NLS=yes
WITHOUT_NLS_CATALOGS=yes
WITHOUT_NS_CACHING=yes
WITHOUT_NTP=yes
WITHOUT_OPENSSH=yes
WITHOUT_PC_SYSINSTALL=yes
WITHOUT_PF=yes
WITHOUT_PKGBOOTSTRAP=yes
WITHOUT_PORTSNAP=yes
WITHOUT_PPP=yes
WITHOUT_PROFILE=yes
WITHOUT_QUOTAS=yes
WITHOUT_RADIUS_SUPPORT=yes
WITHOUT_RBOOTD=yes
WITHOUT_RCMDS=yes
WITHOUT_RCS=yes
WITHOUT_ROUTED=yes
WITHOUT_SENDMAIL=yes
WITHOUT_SHAREDOCS=yes
WITHOUT_TALK=yes
WITHOUT_TCP_WRAPPERS=yes
WITHOUT_TELNET=yes
WITHOUT_TESTS=yes
WITHOUT_TESTS_SUPPORT=yes
WITHOUT_TEXTPROC=yes
WITHOUT_TFTP=yes
WITHOUT_TIMED=yes
WITHOUT_UNBOUND=yes
WITHOUT_UTMPX=yes
WITHOUT_WIRELESS=yes
WITHOUT_WIRELESS_SUPPORT=yes
WITHOUT_WPA_SUPPLICANT_EAPOL=yes
WITHOUT_ZFS=yes
WITH_SVN=yes
```


----------



## sidetone (Dec 7, 2017)

```
WITHOUT_CDDL=yes
```
You may need CDDL for CTF (Compact C Type Format) to compile the base, and kernel modules. It may be possible to build around it.

As for 
	
	



```
WITHOUT_KERBEROS=yes
WITHOUT_KERBEROS_SUPPORT=yes
```
when you build certain ports, you'll have to choose an option that uses the equivalent from ports.


----------



## Snurg (Dec 7, 2017)

semi OT:


SirDice said:


> Especially the WITH_SENDMAIL=no throws people off. It doesn't matter what's being assigned to the variable, its contents is never checked. The mere fact that a WITH_* variable is defined is enough to overrule the equivalent WITHOUT_* variable.



This sounds somewhat counterintuitive to me.
Shouldn't be WITH_*=no interpreted as WITHOUT_*=yes (and vice versa), and the last such assignment be valid?

If such a fix by (un)defining just one (instead of two) variable would be possible, what could it potentially break?
Wouldn't it be better to make the thing a bit less counterintuitive, if that does not damage nothing?

Because, in my layman's thinking such a change could prevent some grief and wasted time for people who haven't yet reached guru level...
(I apologize for asking a so naive question.)


----------



## tobik@ (Dec 7, 2017)

Snurg said:


> If such a fix by (un)defining just one (instead of two) variable would be possible, what could it potentially break?


It's a pretty big change that'll break everyone's src.conf and expectations.



pensador_13 said:


> WITHOUT_CAPSICUM=yes


There is almost zero cost associated with Capsicum. Leave it on maybe? Do you also compile a kernel without it?


----------



## ldgc (Dec 7, 2017)

> Do you also compile a kernel without it?



Yes, I do


----------



## SirDice (Dec 8, 2017)

Snurg said:


> This sounds somewhat counterintuitive to me.
> Shouldn't be WITH_*=no interpreted as WITHOUT_*=yes (and vice versa), and the last such assignment be valid?


I know it's counter-intuitive, that's why I mentioned it. And as I said, it doesn't matter what the _contents_ of the variables are. So WITH_FOO=no is treated the same as WITH_FOO=yes and WITH_FOO=something. The only thing that's checked is the _existence_ of the variable.


----------

