On 16 Apr 2014, at 23:04, Ryan Schmidt <[email protected]> wrote:
> On Apr 16, 2014, at 15:52, Peter Danecek wrote:
>
>> On 16 Apr 2014, at 22:41, Ryan Schmidt wrote:
>>
>>> On Apr 16, 2014, at 15:34, Peter Danecek wrote:
>>>
>>>> I am looking for an elegant way to remove some directory (directories) if
>>>> they are empty in a Portfile.
>>>>
>>>> I would like to use this in the post-deactivate hook. There I remove some
>>>> unregistered files, after related registered files are deactivated.
>>>> However, afterwords I'd like to check if the dir now is empty and
>>>> conditionally remove it.
>>>>
>>>> I am not very fluent in TCL, so any tip how to do this in an elegant way
>>>> is welcome.
>>>
>>> MacPorts automatically removes empty directories from the destroot before
>>> installation. This is easy for it to do. It might be nice if there were a
>>> way for it to do the same post-
>>
>> The directories were registered, but are unregistered in the deactivate
>> step, even if they are not removed because not (yet) empty, right?
>>
>> It would be most consistent to postpone this unregister step only after
>> retrying to remove them after post-deactivate. Unfortunately, I do not know
>> base too well. Would this be difficult to implement?
>
> Sorry, I was writing on my phone and managed to hit send before I was done.
This makes things clearer ;-)
> I was just musing that it’s easy for base to remove empty directories from
> the destroot directory before it creates the package tarball. But this isn’t
> so easy for it to do in the activate or deactivate phases when we no longer
> have a destroot.
Ok
> Also, MacPorts only registers files to active ports; it doesn’t register
> directories.
Right, I checked then ...
> My point was going to be that it would be nice if base handled this somehow
> for you; I wouldn’t want you to have to write too much code specific to this
> in every portfile where you wanted this behavior.
>
> On the other hand, this is apparently not a common need, or else it would
> have come up before now.
I'd agree that what I am doing with this special port (igtf-ca-bundle) is
probably not a common use case, and I probably won't need this elsewhere.
>
> This is in contrast to the MacPorts function “delete” which is an alias for
> “file delete -force” and would remove non-empty directories.
>
> If “file delete” throws an error if the directory is non-empty, then you may
> have to wrap it in a catch.
I was not aware of the subtile difference with respect to the alias, and missed
the catch wrap. I already did this (thanks to Joshua's mail), so this is done.
Now, however I came across a different issue. I realise I need to clean a cache
directory as well. So I added the code below.
---
# purge fetch-crl cache
delete [ glob ${prefix}/var/cache/fetch-crl/*.state ]
---
The problem here is that the glob list becomes too long and the command fails
on deactivations.
So how could I deal with this?
~petr
---
Error: org.macports.deactivate for port igtf-ca-bundle returned:
/opt/local/var/cache/fetch-crl/AAACertificateServices.0.state
/opt/local/var/cache/fetch-crl/AddTrust-External-CA-Root.0.state
/opt/local/var/cache/fetch-crl/AEGIS.0.state
/opt/local/var/cache/fetch-crl/ANSPGrid.0.state
/opt/local/var/cache/fetch-crl/ArmeSFo.0.state
/opt/local/var/cache/fetch-crl/ASGCCA-2007.0.state
/opt/local/var/cache/fetch-crl/AustrianGrid.0.state
/opt/local/var/cache/fetch-crl/BalticGrid.0.state
/opt/local/var/cache/fetch-crl/BEGrid2008.0.state
/opt/local/var/cache/fetch-crl/BG-ACAD-CA.0.state
/opt/local/var/cache/fetch-crl/BrGrid.0.state
/opt/local/var/cache/fetch-crl/BYGCA.0.state
/opt/local/var/cache/fetch-crl/CALG.0.state
/opt/local/var/cache/fetch-crl/CERN-GridCA.0.state
/opt/local/var/cache/fetch-crl/CERN-Root-2.0.state
/opt/local/var/cache/fetch-crl/CERN-Root.0.state
/opt/local/var/cache/fetch-crl/CERN-TCA.0.state
/opt/local/var/cache/fetch-crl/CESNET-CA-3.0.state
/opt/local/var/cache/fetch-crl/CESNET-CA-Root.0.state
/opt/local/var/cache/fetch-crl/cilogon-silver.0.state
/opt/local/var/cache/fetch-crl/CNIC.0.state
/opt/local/var/cache/fetch-crl/CNRS2-Grid-FR.0.state
/opt/local/var/cache/fetch-crl/CNRS2-Projets.0.state
/opt/local/var/cache/fetch-crl/CNRS2.0.state
/opt/local/var/cache/fetch-crl/CyGrid.0.state
/opt/local/var/cache/fetch-crl/DFN-GridGermany-Root.0.state
/opt/local/var/cache/fetch-crl/DFN-SLCS.0.state
/opt/local/var/cache/fetch-crl/DigiCertAssuredIDRootCA-Root.0.state
/opt/local/var/cache/fetch-crl/DigiCertGridCA-1-Classic.0.state
/opt/local/var/cache/fetch-crl/DigiCertGridCA-1G2-Classic.0.state
/opt/local/var/cache/fetch-crl/DigiCertGridRootCA-Root.0.state
/opt/local/var/cache/fetch-crl/DigiCertGridTrustCA-Classic.0.state
/opt/local/var/cache/fetch-crl/DigiCertGridTrustCAG2-Classic.0.state
/opt/local/var/cache/fetch-crl/DZeScience.0.state
/opt/local/var/cache/fetch-crl/EG-GRID.0.state
/opt/local/var/cache/fetch-crl/FNAL-SLCS.0.state
/opt/local/var/cache/fetch-crl/GermanGrid.0.state
/opt/local/var/cache/fetch-crl/GridCanada.0.state
/opt/local/var/cache/fetch-crl/HellasGrid-CA-2006.0.state
/opt/local/var/cache/fetch-crl/HellasGrid-Root.0.state
/opt/local/var/cache/fetch-crl/HIAST.0.state
/opt/local/var/cache/fetch-crl/HKU.0.state
/opt/local/var/cache/fetch-crl/IGCA.0.state
/opt/local/var/cache/fetch-crl/IHEP-2013.0.state
/opt/local/var/cache/fetch-crl/IHEP.0.state
/opt/local/var/cache/fetch-crl/INFN-CA-2006.0.state
/opt/local/var/cache/fetch-crl/IRAN-GRID.0.state
/opt/local/var/cache/fetch-crl/KEK.0.state
/opt/local/var/cache/fetch-crl/KISTI-2007.0.state
/opt/local/var/cache/fetch-crl/LACGridCA.0.state
/opt/local/var/cache/fetch-crl/LIPCA.0.state
/opt/local/var/cache/fetch-crl/MaGrid.0.state
/opt/local/var/cache/fetch-crl/MARGI.0.state
/opt/local/var/cache/fetch-crl/MD-Grid.0.state
/opt/local/var/cache/fetch-crl/MREN-CA.0.state
/opt/local/var/cache/fetch-crl/MYIFAM.0.state
/opt/local/var/cache/fetch-crl/NAREGI.0.state
/opt/local/var/cache/fetch-crl/NCHC.0.state
/opt/local/var/cache/fetch-crl/NCSA-mics.0.state
/opt/local/var/cache/fetch-crl/NCSA-slcs-2013.0.state
/opt/local/var/cache/fetch-crl/NCSA-slcs.0.state
/opt/local/var/cache/fetch-crl/NCSA-tfca-2013.0.state
/opt/local/var/cache/fetch-crl/NCSA-tfca.0.state
/opt/local/var/cache/fetch-crl/NECTEC.0.state
/opt/local/var/cache/fetch-crl/NERSC-SLCS.0.state
/opt/local/var/cache/fetch-crl/NICS-MyProxy.0.state
/opt/local/var/cache/fetch-crl/NIIF.0.state
/opt/local/var/cache/fetch-crl/NIKHEF.0.state
/opt/local/var/cache/fetch-crl/NorduGrid.0.state
/opt/local/var/cache/fetch-crl/PK-Grid-2007.0.state
/opt/local/var/cache/fetch-crl/pkIRISGrid.0.state
/opt/local/var/cache/fetch-crl/PolishGrid.0.state
/opt/local/var/cache/fetch-crl/PRAGMA-UCSD.0.state
/opt/local/var/cache/fetch-crl/PSC-Myproxy-CA.0.state
/opt/local/var/cache/fetch-crl/QuoVadis-Root-CA1.0.state
/opt/local/var/cache/fetch-crl/RDIG.0.state
/opt/local/var/cache/fetch-crl/REUNA-ca.0.state
/opt/local/var/cache/fetch-crl/RomanianGRID.0.state
/opt/local/var/cache/fetch-crl/SDG.0.state
/opt/local/var/cache/fetch-crl/SEE-GRID.0.state
/opt/local/var/cache/fetch-crl/seegrid-ca-2013.0.state
/opt/local/var/cache/fetch-crl/SiGNET-CA.0.state
/opt/local/var/cache/fetch-crl/SlovakGrid.0.state
/opt/local/var/cache/fetch-crl/SRCE.0.state
/opt/local/var/cache/fetch-crl/SWITCH-QuoVadis-Grid-ICA.0.state
/opt/local/var/cache/fetch-crl/TERENA-eScience-SSL-CA.0.state
/opt/local/var/cache/fetch-crl/TERENAeSciencePersonalCA.0.state
/opt/local/var/cache/fetch-crl/TRGrid.0.state
/opt/local/var/cache/fetch-crl/UGRID.0.state
/opt/local/var/cache/fetch-crl/UKeScienceCA-2A.0.state
/opt/local/var/cache/fetch-crl/UKeScienceCA-2B.0.state
/opt/local/var/cache/fetch-crl/UKeScienceRoot-2007.0.state
/opt/local/var/cache/fetch-crl/ULAGrid-CA-2008.0.state
/opt/local/var/cache/fetch-crl/UNAMgrid-ca.0.state
/opt/local/var/cache/fetch-crl/UniandesCA.0.state
/opt/local/var/cache/fetch-crl/UNLPGrid.0.state
/opt/local/var/cache/fetch-crl/UTN-USERFirst-Hardware.0.state
/opt/local/var/cache/fetch-crl/UTNAAAClient.0.state: file name too long
Warning: targets not executed for igtf-ca-bundle: org.macports.deactivate
Please see the log file for port igtf-ca-bundle for details:
/opt/local/var/macports/logs/_opt_local_var_macports_registry_portfiles_igtf-ca-bundle_1.56_0/igtf-ca-bundle/main.log
Warning: Failed to execute portfile from registry for igtf-ca-bundle @1.56_0
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ macports-dev mailing list [email protected] https://lists.macosforge.org/mailman/listinfo/macports-dev
