[pacman-dev] [PATCH] cachemoney: add new contrib script
cachemoney is a robust and flexible package cache cleaner with a variety
of options. Much credit goes to DJ Mills and Pat Brisbin for the ideas
behind this script.
Signed-off-by: Dave Reisner
On Wed, Jul 27, 2011 at 3:13 PM, Dave Reisner
cachemoney is a robust and flexible package cache cleaner with a variety of options. Much credit goes to DJ Mills and Pat Brisbin for the ideas behind this script.
Signed-off-by: Dave Reisner
--- This sort of functionality has been in a few feature requests, and there exist a number of tools that already provide this, but none flexible enough (or portable enough) to be to my liking. This is all bash3 compat with awk, tested on gawk 3.1.8, gawk 4.0.0, bwk (the one true), mawk, and busybox awk (which fscking _sucks_) to do the heavy lifting (rather than bash4). It ends up being insanely fast, with the drawback being that its dependent on the format of the filename to find and consider packages for deletion. In other words, a valid package tarball that isn't compliant with the extglob *.pkg.tar?(.+([^.])) isn't going to be considered. I'm a fan of the name, but I'm also happy to hear alternatives.
Without having tested it, that script might be something I will use but I don't like the current name. I just don't understand the 'money' part in it. A name like cachecleaner would be more intuitive.
On Wed, Jul 27, 2011 at 05:39:46PM -0400, Eric Bélanger wrote:
On Wed, Jul 27, 2011 at 3:13 PM, Dave Reisner
wrote: cachemoney is a robust and flexible package cache cleaner with a variety of options. Much credit goes to DJ Mills and Pat Brisbin for the ideas behind this script.
Signed-off-by: Dave Reisner
--- This sort of functionality has been in a few feature requests, and there exist a number of tools that already provide this, but none flexible enough (or portable enough) to be to my liking. This is all bash3 compat with awk, tested on gawk 3.1.8, gawk 4.0.0, bwk (the one true), mawk, and busybox awk (which fscking _sucks_) to do the heavy lifting (rather than bash4). It ends up being insanely fast, with the drawback being that its dependent on the format of the filename to find and consider packages for deletion. In other words, a valid package tarball that isn't compliant with the extglob *.pkg.tar?(.+([^.])) isn't going to be considered. I'm a fan of the name, but I'm also happy to hear alternatives.
Without having tested it, that script might be something I will use but I don't like the current name. I just don't understand the 'money' part in it. A name like cachecleaner would be more intuitive.
It's mostly just a bad joke[1]. I'll throw out the following alternatives: * slimcache * paccache-clean (more "standard", but too long imo) * cachetrim * pacuum NB: We've already got the following packages in the AUR, which I'd like to try and avoid stepping on: * cacheclean * pacleaner * pkgcacheclean * clearcache (there may be some that i missed) Any feedback on functionality? Anyone manage to break it? d [1] http://en.wikipedia.org/wiki/Cash_Money_Records
On 29/07/11 00:36, Dave Reisner wrote:
On Wed, Jul 27, 2011 at 05:39:46PM -0400, Eric Bélanger wrote:
On Wed, Jul 27, 2011 at 3:13 PM, Dave Reisner
wrote: cachemoney is a robust and flexible package cache cleaner with a variety of options. Much credit goes to DJ Mills and Pat Brisbin for the ideas behind this script.
Signed-off-by: Dave Reisner
--- This sort of functionality has been in a few feature requests, and there exist a number of tools that already provide this, but none flexible enough (or portable enough) to be to my liking. This is all bash3 compat with awk, tested on gawk 3.1.8, gawk 4.0.0, bwk (the one true), mawk, and busybox awk (which fscking _sucks_) to do the heavy lifting (rather than bash4). It ends up being insanely fast, with the drawback being that its dependent on the format of the filename to find and consider packages for deletion. In other words, a valid package tarball that isn't compliant with the extglob *.pkg.tar?(.+([^.])) isn't going to be considered. I'm a fan of the name, but I'm also happy to hear alternatives.
Without having tested it, that script might be something I will use but I don't like the current name. I just don't understand the 'money' part in it. A name like cachecleaner would be more intuitive.
It's mostly just a bad joke[1]. I'll throw out the following alternatives:
I'll add a -1 for the current name too... Bad jokes are usually a bit funny! :P
* slimcache * paccache-clean (more "standard", but too long imo) * cachetrim * pacuum
How about just paccache? A description line about the usage output would be helpful in figuring out what this does too...
NB: We've already got the following packages in the AUR, which I'd like to try and avoid stepping on:
* cacheclean * pacleaner * pkgcacheclean * clearcache
(there may be some that i missed)
Do this script cover all or most of the features of these scripts? I'm sure the maintainers would be "happy" if there is a name conflict if the script we supply covers their functionality.
Any feedback on functionality? Anyone manage to break it?
I can not really test well as I have a somewhat unique cache set-up and my own cache cleaning script (which has the additional feature of always keeping packages that have versions newer than what is in the repos). Allan
On Sun, Jul 31, 2011 at 01:47:03PM +1000, Allan McRae wrote:
On 29/07/11 00:36, Dave Reisner wrote:
On Wed, Jul 27, 2011 at 05:39:46PM -0400, Eric Bélanger wrote:
On Wed, Jul 27, 2011 at 3:13 PM, Dave Reisner
wrote: cachemoney is a robust and flexible package cache cleaner with a variety of options. Much credit goes to DJ Mills and Pat Brisbin for the ideas behind this script.
Signed-off-by: Dave Reisner
--- This sort of functionality has been in a few feature requests, and there exist a number of tools that already provide this, but none flexible enough (or portable enough) to be to my liking. This is all bash3 compat with awk, tested on gawk 3.1.8, gawk 4.0.0, bwk (the one true), mawk, and busybox awk (which fscking _sucks_) to do the heavy lifting (rather than bash4). It ends up being insanely fast, with the drawback being that its dependent on the format of the filename to find and consider packages for deletion. In other words, a valid package tarball that isn't compliant with the extglob *.pkg.tar?(.+([^.])) isn't going to be considered. I'm a fan of the name, but I'm also happy to hear alternatives.
Without having tested it, that script might be something I will use but I don't like the current name. I just don't understand the 'money' part in it. A name like cachecleaner would be more intuitive.
It's mostly just a bad joke[1]. I'll throw out the following alternatives:
I'll add a -1 for the current name too... Bad jokes are usually a bit funny! :P
Nothin' but a bunch of haters!
* slimcache * paccache-clean (more "standard", but too long imo) * cachetrim * pacuum
How about just paccache? A description line about the usage output would be helpful in figuring out what this does too...
paccache actually sits well with me... adding a bit to the usage should do nicely to sell it.
Do this script cover all or most of the features of these scripts? I'm sure the maintainers would be "happy" if there is a name conflict if the script we supply covers their functionality.
Time to re-review!
* cacheclean
Python. Supports N number of copies to keep from hardcoded cache location with a preview function. Requires that it be run as root. I get a backtrace running it with python2 or python3.
* pacleaner
Python. Supports deletion of uninstalled packages, cached packages, or both. Hardcodes the cache location. So really, this seems to just emulate -Sc,-Scc. I get a backtrace running it with python2 or python3.
* pkgcacheclean
C, linked against alpm. Supports N number of copies to keep with a compile time hardcoded cache location. Allows for dry runs. Inflexible output. Offers diskspace saved in bytes. Compiles, but not against git.
* clearcache
bash4. Its nearly at feature parity with mine. Doesn't offer the same level of output control or the ability to move packages. It's written by DJ Mills, so this one actually works. It has the interesting approach of extracting and parsing the .PKGINFO file from each .pkg.tar?(.*) so its possibly more accurate, but very slow. This is the only one worth talking about in comparison with mine.
* pacprune
Late entry. Pat Brisbin's bash script which is meant to be mostly utilitarian, but scores extremely high in that category. Doesn't, however, offer the ability to do things like prune uninstalled packages easily. Size calculations is possible for the crafty, but not inline with another operation.
Any feedback on functionality? Anyone manage to break it?
I can not really test well as I have a somewhat unique cache set-up and my own cache cleaning script (which has the additional feature of always keeping packages that have versions newer than what is in the repos).
Allan
Now _that_ is an interesting feature. Sadly, the code path I've gone down probably isn't flexible enough to handle this as eloquently as I'd like. d
On 01/08/11 02:15, Dave Reisner wrote:
On Sun, Jul 31, 2011 at 01:47:03PM +1000, Allan McRae wrote:
Do this script cover all or most of the features of these scripts? I'm sure the maintainers would be "happy" if there is a name conflict if the script we supply covers their functionality.
Time to re-review!
<snip> I agree with passing over those scripts snipped here... I agree that the following two are really what this script is aiming to replace:
* clearcache
bash4. Its nearly at feature parity with mine. Doesn't offer the same level of output control or the ability to move packages. It's written by DJ Mills, so this one actually works. It has the interesting approach of extracting and parsing the .PKGINFO file from each .pkg.tar?(.*) so its possibly more accurate, but very slow. This is the only one worth talking about in comparison with mine.
I guess the reading of .PKGINFO now is mostly redundant these days as the version is more completely specified with the addition of epoch instead of "force" (which really made packages impossible to order...)
* pacprune
Late entry. Pat Brisbin's bash script which is meant to be mostly utilitarian, but scores extremely high in that category. Doesn't, however, offer the ability to do things like prune uninstalled packages easily. Size calculations is possible for the crafty, but not inline with another operation.
From your description of these scripts, I think we should include your script in contrib. Minor comments: - Add paccache (or whatever it is named...) to contrib/.gitignore - Adjust "cachemoney - clean yo pacman cache, dawg".... - whitespace: + function parse_filename(filename, parts, count, i, pkgname, arch) { - Adjust "Bad dog, no biscuit. You will be prompted for privilege escalation." - is the ":" in front of the "a" right? +while getopts ':a:c:dfhi:k:m:rsuvz' opt; do - it should also (re)move and .sig file alongside the package Allan
On Tue, Aug 02, 2011 at 11:42:05AM +1000, Allan McRae wrote:
On 01/08/11 02:15, Dave Reisner wrote:
On Sun, Jul 31, 2011 at 01:47:03PM +1000, Allan McRae wrote:
Do this script cover all or most of the features of these scripts? I'm sure the maintainers would be "happy" if there is a name conflict if the script we supply covers their functionality.
Time to re-review!
<snip>
I agree with passing over those scripts snipped here... I agree that the following two are really what this script is aiming to replace:
* clearcache
bash4. Its nearly at feature parity with mine. Doesn't offer the same level of output control or the ability to move packages. It's written by DJ Mills, so this one actually works. It has the interesting approach of extracting and parsing the .PKGINFO file from each .pkg.tar?(.*) so its possibly more accurate, but very slow. This is the only one worth talking about in comparison with mine.
I guess the reading of .PKGINFO now is mostly redundant these days as the version is more completely specified with the addition of epoch instead of "force" (which really made packages impossible to order...)
The "bonus" is that you'll catch files not fitting my naming schema. I think that this is somewhat of an odd case and not really required.
* pacprune
Late entry. Pat Brisbin's bash script which is meant to be mostly utilitarian, but scores extremely high in that category. Doesn't, however, offer the ability to do things like prune uninstalled packages easily. Size calculations is possible for the crafty, but not inline with another operation.
From your description of these scripts, I think we should include your script in contrib.
Minor comments: - Add paccache (or whatever it is named...) to contrib/.gitignore
done
- Adjust "cachemoney - clean yo pacman cache, dawg"....
already done.
- whitespace: + function parse_filename(filename, parts, count, i, pkgname, arch) {
Intentional awk-ism. You have no direct way of locally scoping a variable except by declaring it as part of the function parameter list (parameters are always optional). By convention, there's a chunk of whitespace between "required" parameters and scoped variables.
- Adjust "Bad dog, no biscuit. You will be prompted for privilege escalation."
done.
- is the ":" in front of the "a" right? +while getopts ':a:c:dfhi:k:m:rsuvz' opt; do
Intentional. It causes getopts to squelch its own error reporting so that I can do it myself.
- it should also (re)move and .sig file alongside the package
Yes, good point. Will implement this. In the meantime, I've also made the diskspace option the default, since its only adding a single fork (and the stat call itself is fairly light even for a thousand packages). d
On Tue, Aug 2, 2011 at 7:35 AM, Dave Reisner
On Tue, Aug 02, 2011 at 11:42:05AM +1000, Allan McRae wrote:
On 01/08/11 02:15, Dave Reisner wrote:
On Sun, Jul 31, 2011 at 01:47:03PM +1000, Allan McRae wrote:
Do this script cover all or most of the features of these scripts? I'm sure the maintainers would be "happy" if there is a name conflict if the script we supply covers their functionality.
Time to re-review!
<snip>
I agree with passing over those scripts snipped here... I agree that the following two are really what this script is aiming to replace:
* clearcache
bash4. Its nearly at feature parity with mine. Doesn't offer the same level of output control or the ability to move packages. It's written by DJ Mills, so this one actually works. It has the interesting approach of extracting and parsing the .PKGINFO file from each .pkg.tar?(.*) so its possibly more accurate, but very slow. This is the only one worth talking about in comparison with mine.
I guess the reading of .PKGINFO now is mostly redundant these days as the version is more completely specified with the addition of epoch instead of "force" (which really made packages impossible to order...)
The "bonus" is that you'll catch files not fitting my naming schema. I think that this is somewhat of an odd case and not really required.
* pacprune
Late entry. Pat Brisbin's bash script which is meant to be mostly utilitarian, but scores extremely high in that category. Doesn't, however, offer the ability to do things like prune uninstalled packages easily. Size calculations is possible for the crafty, but not inline with another operation.
From your description of these scripts, I think we should include your script in contrib.
Minor comments: - Add paccache (or whatever it is named...) to contrib/.gitignore
done
- Adjust "cachemoney - clean yo pacman cache, dawg"....
already done.
- whitespace: + function parse_filename(filename, parts, count, i, pkgname, arch) {
Intentional awk-ism. You have no direct way of locally scoping a variable except by declaring it as part of the function parameter list (parameters are always optional). By convention, there's a chunk of whitespace between "required" parameters and scoped variables.
- Adjust "Bad dog, no biscuit. You will be prompted for privilege escalation."
done.
- is the ":" in front of the "a" right? +while getopts ':a:c:dfhi:k:m:rsuvz' opt; do
Intentional. It causes getopts to squelch its own error reporting so that I can do it myself.
- it should also (re)move and .sig file alongside the package
Yes, good point. Will implement this.
In the meantime, I've also made the diskspace option the default, since its only adding a single fork (and the stat call itself is fairly light even for a thousand packages).
Damn- you're going to have to turn this into a patch as I just pushed a version from your repo. This is also the second time you have forgotten to update gitignore, young grasshopper. -Dan
On Tue, Aug 02, 2011 at 07:42:13AM -0500, Dan McGee wrote:
On Tue, Aug 2, 2011 at 7:35 AM, Dave Reisner
wrote: On Tue, Aug 02, 2011 at 11:42:05AM +1000, Allan McRae wrote:
On 01/08/11 02:15, Dave Reisner wrote:
On Sun, Jul 31, 2011 at 01:47:03PM +1000, Allan McRae wrote:
Do this script cover all or most of the features of these scripts? I'm sure the maintainers would be "happy" if there is a name conflict if the script we supply covers their functionality.
Time to re-review!
<snip>
I agree with passing over those scripts snipped here... I agree that the following two are really what this script is aiming to replace:
* clearcache
bash4. Its nearly at feature parity with mine. Doesn't offer the same level of output control or the ability to move packages. It's written by DJ Mills, so this one actually works. It has the interesting approach of extracting and parsing the .PKGINFO file from each .pkg.tar?(.*) so its possibly more accurate, but very slow. This is the only one worth talking about in comparison with mine.
I guess the reading of .PKGINFO now is mostly redundant these days as the version is more completely specified with the addition of epoch instead of "force" (which really made packages impossible to order...)
The "bonus" is that you'll catch files not fitting my naming schema. I think that this is somewhat of an odd case and not really required.
* pacprune
Late entry. Pat Brisbin's bash script which is meant to be mostly utilitarian, but scores extremely high in that category. Doesn't, however, offer the ability to do things like prune uninstalled packages easily. Size calculations is possible for the crafty, but not inline with another operation.
From your description of these scripts, I think we should include your script in contrib.
Minor comments: - Add paccache (or whatever it is named...) to contrib/.gitignore
done
- Adjust "cachemoney - clean yo pacman cache, dawg"....
already done.
- whitespace: + function parse_filename(filename, parts, count, i, pkgname, arch) {
Intentional awk-ism. You have no direct way of locally scoping a variable except by declaring it as part of the function parameter list (parameters are always optional). By convention, there's a chunk of whitespace between "required" parameters and scoped variables.
- Adjust "Bad dog, no biscuit. You will be prompted for privilege escalation."
done.
- is the ":" in front of the "a" right? +while getopts ':a:c:dfhi:k:m:rsuvz' opt; do
Intentional. It causes getopts to squelch its own error reporting so that I can do it myself.
- it should also (re)move and .sig file alongside the package
Yes, good point. Will implement this.
In the meantime, I've also made the diskspace option the default, since its only adding a single fork (and the stat call itself is fairly light even for a thousand packages).
Damn- you're going to have to turn this into a patch as I just pushed a version from your repo. This is also the second time you have forgotten to update gitignore, young grasshopper.
-Dan
I blame Allan. d P.S. patchcount++
participants (4)
-
Allan McRae
-
Dan McGee
-
Dave Reisner
-
Eric Bélanger