make clean failes to cleanup everything

Tijl Coosemans tijl at FreeBSD.org
Tue Oct 4 14:12:20 UTC 2016


On Tue, 4 Oct 2016 14:18:51 +0200 Gerhard Schmidt <schmidt at ze.tum.de> wrote:
> Am 04.10.2016 um 14:03 schrieb Tijl Coosemans:
>> On Tue, 4 Oct 2016 13:36:29 +0200 Gerhard Schmidt <schmidt at ze.tum.de> wrote:  
>>> Am 04.10.2016 um 12:48 schrieb Tijl Coosemans:  
>>>> On Tue, 4 Oct 2016 09:52:23 +0200 Gerhard Schmidt <schmidt at ze.tum.de> wrote:    
>>>>> make clean fails to clean autoconf and automake.
>>>>>
>>>>> If a port uses autoconf and autoconf isn't installed on the system, it
>>>>> will be build and installed.
>>>>>
>>>>> if you run make clean after installing the port, every dependency is
>>>>> cleaned as well but not autoconf.    
>>>>
>>>> Can you give an example of such a port, because we have two mechanisms
>>>> that can pull in autoconf.    
>>>
>>> It's seams to be quite a complex problem.
>>>
>>> To find out which ports causes this problem tried to build lang/php56
>>> which uses autoconf. But when I do a make clean autoconf is cleaned as
>>> well.
>>>
>>> [root at etustar /usr/ports/lang/php56]# make clean  
>>> ===>  Cleaning for autoconf-2.69_1
>>> ===>  Cleaning for php56-5.6.25_1    
>>>
>>> But it also installs help2man, gmake, p5-Locale-gettext-1.06 and
>>> autoconf-wrapper-20131203 and these are not cleaned.
>>>
>>> The transcript is attached as typescript_clean
>>>
>>> now do a pkg autoremove which removes autoconf and the missed ports form
>>> the system.
>>>
>>> now try again to compile php56 and it fails
>>>
>>> the transcript is attached as typescript_unclean
>>>
>>> It seams that dependencies of dependencies are not clean. It seams that
>>> autoconf was only the most memorable one.  
>> 
>> This seems to be intended.  Make clean runs make limited-clean-depends
>> which cleans direct dependencies only.  If you want to do full recursive
>> clean you have to run make clean-depends.
> 
> I use FreeBSD since FreeBSD 2.2.5. When did this change in semantics
> happen? Why do the first layer. This is something nobody can understand.
> Either make clean should only clean the actual port. So everybody sees
> that dependencies are not cleaned (maybe a message "You should run make
> clean-depens to clean dependencies as well" should be printed if
> dependencies are touched) or do it right and clean all touched.
> 
> make clean-depends doesn't take that much more time than make clean, so
> why the change?

I've filed a bug: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=213188


More information about the freebsd-ports mailing list