prt-auf: more fixes for the --regex handling in find_port_by_name()
This commit is contained in:
parent
238c856e31
commit
b06ebe46a4
|
@ -7,7 +7,7 @@
|
||||||
.TH "prt-auf" "8" "" "" ""
|
.TH "prt-auf" "8" "" "" ""
|
||||||
.SH "NAME"
|
.SH "NAME"
|
||||||
.LP
|
.LP
|
||||||
prt\-auf \- add/upgrade frontend to the CRUX pkgutils designed to imitate \fBprt\-get\fP(8)
|
prt\-auf \- add/upgrade frontend to the CRUX pkgutils, inspired by \fBprt\-get\fP(8).
|
||||||
|
|
||||||
(see http://www.crux.nu for an overview of CRUX ports and pkgutils)
|
(see http://www.crux.nu for an overview of CRUX ports and pkgutils)
|
||||||
.SH "SYNOPSIS"
|
.SH "SYNOPSIS"
|
||||||
|
@ -91,8 +91,10 @@ run 'prt-auf update' instead.
|
||||||
.B update [\-\-margs=] [\-\-aargs=] <package1> [<package2> ...]
|
.B update [\-\-margs=] [\-\-aargs=] <package1> [<package2> ...]
|
||||||
bring all the listed packages and their dependencies up to date. Among 'install', 'update',
|
bring all the listed packages and their dependencies up to date. Among 'install', 'update',
|
||||||
and 'grpinst', this action is the most permissive, exempting from updates only the locked
|
and 'grpinst', this action is the most permissive, exempting from updates only the locked
|
||||||
ports in the dependency chain. You should use 'install' instead if you only want to build
|
ports in the dependency chain. You might use 'install' instead if you want a speedier
|
||||||
the missing dependencies.
|
compilation time, but if any dependencies have a rapid release cycle and you haven't updated in a
|
||||||
|
while, there is no guarantee that your old installed version will work when building your desired
|
||||||
|
package.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B grpinst [\-\-margs=] [\-\-aargs=] <package1> [<package2> ...]
|
.B grpinst [\-\-margs=] [\-\-aargs=] <package1> [<package2> ...]
|
||||||
|
@ -104,8 +106,8 @@ with the '-u' switch, if one of the packages passed as argument is already insta
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B remove [\-\-rargs=] <package1> [<package2> ...]
|
.B remove [\-\-rargs=] <package1> [<package2> ...]
|
||||||
remove packages listed in this order. The only relevant option you can might want to pass to
|
remove packages listed in this order. The only relevant option you might want to pass to
|
||||||
\fBpkgrm\fP(8) is --root (or -r), used when you want to manage a CRUX installation on a temporarily
|
\fBpkgrm\fP(8) is --root (or -r), used when you're managing a CRUX installation on a temporarily
|
||||||
mounted filesystem. In order not to confuse the argument parser (which splits on whitespace),
|
mounted filesystem. In order not to confuse the argument parser (which splits on whitespace),
|
||||||
you should format such a request as
|
you should format such a request as
|
||||||
.B prt\-auf remove \-\-rargs=\-\-root=/path/to/mounted/crux <package1> [<package2> ...]
|
.B prt\-auf remove \-\-rargs=\-\-root=/path/to/mounted/crux <package1> [<package2> ...]
|
||||||
|
@ -119,7 +121,7 @@ Update all installed packages which are outdated.
|
||||||
.B lock
|
.B lock
|
||||||
and
|
and
|
||||||
.B unlock
|
.B unlock
|
||||||
commands to keep the currently installed versions, even if there are
|
These commands allow you to keep the currently installed versions, even if there are
|
||||||
changes in the ports tree.
|
changes in the ports tree.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
|
@ -165,7 +167,9 @@ spend this time once after updating the ports tree has been updated.
|
||||||
Search the ports tree for file names that match \fBpattern\fP.
|
Search the ports tree for file names that match \fBpattern\fP.
|
||||||
Pattern should be a Perl-compatible regular expression (e.g. prt-auf fsearch
|
Pattern should be a Perl-compatible regular expression (e.g. prt-auf fsearch
|
||||||
--regex 'liblz(o2|ma).*') unless it contains no metacharacters (such as: +,
|
--regex 'liblz(o2|ma).*') unless it contains no metacharacters (such as: +,
|
||||||
*, ., / ), in which case you can omit the \-\-regex switch.
|
*, ., / ), in which case you can omit the \-\-regex switch. The full path is
|
||||||
|
\fInot\fP stripped from the footprint before matching, so if you're looking for
|
||||||
|
a filename that begins with 'liblz', you should use '\\/liblz' rather than '^liblz'.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B info <port>
|
.B info <port>
|
||||||
|
@ -245,15 +249,14 @@ but looks in all directories specified in the config file.
|
||||||
.B listinst [\-v|\-vv]
|
.B listinst [\-v|\-vv]
|
||||||
List installed ports. It's basically the same as
|
List installed ports. It's basically the same as
|
||||||
.B pkginfo \-i,
|
.B pkginfo \-i,
|
||||||
but omits version when called without verbose (\-v, \-vv) switch. Plus
|
but omits version when called without verbose (\-v, \-vv) switch.
|
||||||
it is notably faster in my tests. \-v adds version information, \-vv
|
\-v adds version information, \-vv adds version and description.
|
||||||
adds version and description.
|
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B listorphans
|
.B listorphans
|
||||||
List installed ports which do not appear in the "Depends on:" line of
|
List installed ports which do not appear in the "Depends on:" line of
|
||||||
any other port currently installed. Output appears alphabetically separated by newlines, making it
|
any other port currently installed. Output is sorted first by repository and then alphabetically,
|
||||||
suitable for process substitution as shown in the
|
so you should pipe it to \fBsort\fP(1) if you plan to use it in a \fBcomm\fP(1) command as in the
|
||||||
.B EXAMPLES
|
.B EXAMPLES
|
||||||
section below. Note that some core ports might be runtime
|
section below. Note that some core ports might be runtime
|
||||||
dependencies despite their absence in the "Depends on:" line; see \fBPkgfile(5)\fP
|
dependencies despite their absence in the "Depends on:" line; see \fBPkgfile(5)\fP
|
||||||
|
@ -261,7 +264,6 @@ for an explanation of this practice. Also remember that this operation does NOT
|
||||||
(optional) dependencies. Removing a non-core package returned by this command might require a
|
(optional) dependencies. Removing a non-core package returned by this command might require a
|
||||||
rebuild of other packages; use revdep(1) to locate such breakage.
|
rebuild of other packages; use revdep(1) to locate such breakage.
|
||||||
|
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B isinst <package1> [<package2> ...]
|
.B isinst <package1> [<package2> ...]
|
||||||
Check whether each package given on the command line is installed. Output in the case of multiple
|
Check whether each package given on the command line is installed. Output in the case of multiple
|
||||||
|
@ -416,25 +418,32 @@ subroutine and customizes the handling of the \fI@results\fP array accordingly.
|
||||||
also where the verbose switch (-v|-vv) is taken into account, appending to each element of
|
also where the verbose switch (-v|-vv) is taken into account, appending to each element of
|
||||||
\fI@results\fP the version or description of the ports found in the search.
|
\fI@results\fP the version or description of the ports found in the search.
|
||||||
|
|
||||||
Here are some of the deliberate deviations from the behaviour of \fBprt\-get\fP(8), the first of
|
.SH "CONTRASTS BETWEEN PRT-AUF and PRT-GET"
|
||||||
which was on the TODO list in the prt-get source tree.
|
|
||||||
|
Although taking inspiration from \fBprt\-get\fP for its interface and configuration, \fBprt\-auf\fP
|
||||||
|
diverges from its predecessor in a few notable ways. Some of these differences are mere omissions,
|
||||||
|
which can easily be incorporated at a later date. Long-time users of \fBprt\-get\fP will quickly
|
||||||
|
notice the following differences:
|
||||||
.PP
|
.PP
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu mixed install/update mode. Packages given on the command line can be present or not, and
|
\ \ \ \(bu mixed install/update mode. Packages given on the command line can be present or not, and
|
||||||
\fBprt\-auf\fP will figure out the right way to call \fBpkgadd\fP(8) for each one.
|
\fBprt\-auf\fP will figure out the right way to call \fBpkgadd\fP(8) for each one. The key
|
||||||
|
distinction is that 'install' mode will not try to update an out-of-date package found in the
|
||||||
|
dependency chain unless that package also appears on the command line.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu merged install and depinst. While they still retain some distinguishability in how they
|
\ \ \ \(bu merged update and depinst. Both of these now resolve dependencies by default, as does
|
||||||
treat a given set of targets, both of them now resolve dependencies by default. The old
|
'install'. The original behaviour of \fBprt\-get install\fP can be approximated by the
|
||||||
behaviour of \fBprt\-get install\fP can be approximated by the 'grpinst' action of \fBprt\-auf\fP.
|
'grpinst' action of \fBprt\-auf\fP, except that a 'grpinst' action will not proceed to the next
|
||||||
|
package if a build fails.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\ \ \ \(bu logging is not handled internally. In the event that stdout is \fInot\fP redirected to a
|
\ \ \ \(bu no internal handling of build/install logs. In the event that stdout is \fInot\fP
|
||||||
file, consider using the 'grpinst' action so that error messages remain in the scrollback buffer.
|
redirected to a file, consider using the 'grpinst' action so that error messages remain in the
|
||||||
If \fBprt\-auf\fP is used non-interactively (say, in a cron job), then another non-interactive
|
scrollback buffer. If \fBprt\-auf\fP is used non-interactively (say, in a cron job), then another
|
||||||
process can take care of renaming the file where the stdout of \fBprt\-auf\fP was dumped. This
|
non-interactive process can take care of renaming the file where the stdout of \fBprt\-auf\fP was
|
||||||
design decision is closer to the spirit of "do one thing and do it well", although \fBprt\-auf\fP
|
dumped. This design decision is closer to the spirit of "do one thing and do it well", although
|
||||||
ignores this advice elsewhere by implementing such luxuries as
|
\fBprt\-auf\fP ignores this advice elsewhere by implementing such luxuries as
|
||||||
.B prt\-auf ls, prt\-auf edit, prt\-auf readme
|
.B prt\-auf ls, prt\-auf edit, prt\-auf readme
|
||||||
when command substitutions like
|
when command substitutions like
|
||||||
.B ls $(prt\-auf path $desired_port)
|
.B ls $(prt\-auf path $desired_port)
|
||||||
|
@ -442,6 +451,34 @@ or
|
||||||
.B vim $(prt\-auf path $desired_port)/Pkgfile
|
.B vim $(prt\-auf path $desired_port)/Pkgfile
|
||||||
are perfectly cromulent ways to do the same thing.
|
are perfectly cromulent ways to do the same thing.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
\ \ \ \(bu no 'printf' action (yet). This subcommand is needed by some of the \fBprt\-utils\fP
|
||||||
|
scripts, so it might be one of the first features to come back in the next version of
|
||||||
|
\fBprt\-auf\fP. The subroutine \fIdump_flat_db()\fP already loads most of the data structures
|
||||||
|
needed to generate formatted output; the missing component is a new code block in the argument
|
||||||
|
parser that will translate user requests into the variables used internally by \fBprt\-auf\fP.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
\ \ \ \(bu no "filter" arguments recognized by 'diff', 'list', etc. There is no plan to add such a
|
||||||
|
feature in a later version of \fBprt\-auf\fP, because the newline-separated output of 'diff' and
|
||||||
|
'list' is easily piped to awk or grep for any desired filtering.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
\ \ \ \(bu no version comparator. One of the main reasons to run CRUX is to stay current with the
|
||||||
|
latest stable versions endorsed by the port maintainers. (They subscribe to the upstream mailing
|
||||||
|
lists so you don't have to.) If you want to keep a particular piece of software at a different
|
||||||
|
version than the one chosen by its original maintainer, you can maintain a shadow port in your own
|
||||||
|
overlay (and put that overlay higher in the config file).
|
||||||
|
|
||||||
|
.TP
|
||||||
|
\ \ \ \(bu no "--ignore" switch. This feature is easy enough to add at a later date, but a newcomer
|
||||||
|
to CRUX will likely be confused at having such fine-grained control over the automatic dependency
|
||||||
|
resolution. Getting into the habit of using "--ignore" for any port with a questionable
|
||||||
|
"Depends on" line will discourage the CRUX newcomer from providing valuable feedback to the port
|
||||||
|
maintainers. Reporting the erroneous "Depends on" line will make the port collection better for
|
||||||
|
everyone, while a one-time use of "--ignore" will keep those improvements from reaching a wider
|
||||||
|
audience.
|
||||||
|
|
||||||
.SH "EXAMPLES"
|
.SH "EXAMPLES"
|
||||||
.TP
|
.TP
|
||||||
.B prt\-auf install irssi
|
.B prt\-auf install irssi
|
||||||
|
@ -471,6 +508,10 @@ Show info about glib-networking
|
||||||
(adapted from a script by ppetrov^) Check for the presence of the runtime libraries needed by mpv.
|
(adapted from a script by ppetrov^) Check for the presence of the runtime libraries needed by mpv.
|
||||||
If any are absent, search the footprints to determine which ports provide the missing libraries.
|
If any are absent, search the footprints to determine which ports provide the missing libraries.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B prt\-get search --regex '^(m|n|p)c.*'
|
||||||
|
Return a list of all ports whose names start with "mc", "nc", or "pc"
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B prt\-auf dsearch irc
|
.B prt\-auf dsearch irc
|
||||||
Return a list of all ports having "irc" in their name or description
|
Return a list of all ports having "irc" in their name or description
|
||||||
|
|
|
@ -410,11 +410,11 @@ sub find_port_by_name {
|
||||||
my $query = shift; my $exact=shift; my $fullpath=shift; my $exhaustive=shift;
|
my $query = shift; my $exact=shift; my $fullpath=shift; my $exhaustive=shift;
|
||||||
$query =~ s/\+/\\\+/g unless ($osearch{regex}==1);
|
$query =~ s/\+/\\\+/g unless ($osearch{regex}==1);
|
||||||
$query =~ s/\./\\\./g unless ($osearch{regex}==1);
|
$query =~ s/\./\\\./g unless ($osearch{regex}==1);
|
||||||
$query =~ s/\^/\// if (($osearch{regex}==1) and ($exact==0));
|
# $query =~ s/\^/\// if (($osearch{regex}==1) and ($exact==0));
|
||||||
my $pattern = ($exact==1) ? qr/\/$query$/s : qr/$query/is;
|
my $pattern = ($exact==1) ? qr/\/$query$/s : qr/$query/is;
|
||||||
# my @names_only = map { $_ => (split /\//, $_)[-1] } @allports;
|
my %names_only = map { ($_ => (split /\//, $_)[-1]) } @allports;
|
||||||
my @hits = grep { $_ =~ $pattern } @allports;
|
my @hits = grep { $names_only{$_} =~ $pattern } @allports;
|
||||||
@hits = grep { s/^.*\/// } @hits if ($fullpath==0);
|
@hits = map { $names_only{$_} } @hits if $fullpath==0;
|
||||||
|
|
||||||
return @hits if ($exhaustive==1);
|
return @hits if ($exhaustive==1);
|
||||||
return $hits[0] if ($exhaustive==0);
|
return $hits[0] if ($exhaustive==0);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user