<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg/cachefilter-patterns.h, branch 1.9.4</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=1.9.4</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=1.9.4'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2019-08-15T18:21:34Z</updated>
<entry>
<title>Add ?virtual pattern</title>
<updated>2019-08-15T18:21:34Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2019-08-15T11:40:31Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=c94b507b92b3d833761f3e416d4d5bba709bf87f'/>
<id>urn:sha1:c94b507b92b3d833761f3e416d4d5bba709bf87f</id>
<content type='text'>
This matches any package that does not have versions.
</content>
</entry>
<entry>
<title>Add the ?exact-name pattern</title>
<updated>2019-08-15T18:21:34Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2019-08-15T11:36:04Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=af674d82d5cd36e22223ec49675d32adad07e0a9'/>
<id>urn:sha1:af674d82d5cd36e22223ec49675d32adad07e0a9</id>
<content type='text'>
The ?exact-name pattern matches the name exactly, there is
no substring matching going on, or any regular expression
or fnmatch magic.
</content>
</entry>
<entry>
<title>Add ?essential pattern</title>
<updated>2019-08-15T18:21:34Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2019-08-15T11:35:01Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=08762e0e4e2923360339eeb4d8ed26a00d7f1de5'/>
<id>urn:sha1:08762e0e4e2923360339eeb4d8ed26a00d7f1de5</id>
<content type='text'>
This matches all packages where at least one of the versions
is marked essential; or well, whenver apt considers a package
essential.
</content>
</entry>
<entry>
<title>Add ?broken pattern</title>
<updated>2019-08-15T18:21:34Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2019-08-15T11:32:54Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=9282c9094ab3e77cebe90e97b2f9a5fc21463e2f'/>
<id>urn:sha1:9282c9094ab3e77cebe90e97b2f9a5fc21463e2f</id>
<content type='text'>
This matches all packages that have broken dependencies in the
installed version or the version selected for install.
</content>
</entry>
<entry>
<title>Add ?config-files and ?installed patterns</title>
<updated>2019-08-15T18:21:34Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2019-08-15T11:31:30Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=a3e9ab661b2d670f7d0da53a5f56c52af0763c5b'/>
<id>urn:sha1:a3e9ab661b2d670f7d0da53a5f56c52af0763c5b</id>
<content type='text'>
These two are mutually exclusive states of installed-ness. And
?installed package is fully unpacked and configured; a ?config-files
package only has config files left.
</content>
</entry>
<entry>
<title>Add ?obsolete and ?upgradable patterns</title>
<updated>2019-08-15T18:21:34Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2019-08-15T11:23:55Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=89790c11799c4144e37a6a1f0dbe0f6fff89ea89'/>
<id>urn:sha1:89790c11799c4144e37a6a1f0dbe0f6fff89ea89</id>
<content type='text'>
These match packages that have no version in a repository, or
where an upgrade is available. Notably,

	?and(?obsolete,?upgradable) == ?false

because an upgradable package is by definition not obsolete.
</content>
</entry>
<entry>
<title>Add ?automatic and ?garbage patterns</title>
<updated>2019-08-15T18:21:34Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2019-08-15T11:12:43Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=083e72a5939d33dc1fd7596aa441a9982332f776'/>
<id>urn:sha1:083e72a5939d33dc1fd7596aa441a9982332f776</id>
<content type='text'>
These patterns allow you to identify automatically installed
packages, as well as automatically installed packages that are
no longer reachable from the manually installed ones.
</content>
</entry>
<entry>
<title>Add pattern tree parser infra and connect with cacheset and apt list</title>
<updated>2019-08-15T18:21:34Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2019-08-15T09:47:00Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=08b61197f418883ea20563e2251fb60779c0ba87'/>
<id>urn:sha1:08b61197f418883ea20563e2251fb60779c0ba87</id>
<content type='text'>
This adds a transformation from parse tree into a CacheFilter and
connects it with cachesets and the apt list command.
</content>
</entry>
<entry>
<title>Add initial support for parsing patterns into parse trees</title>
<updated>2019-08-15T11:50:03Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2019-08-14T12:38:26Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=690ff4c3e44e7063ebde2557b7c0087ab720b894'/>
<id>urn:sha1:690ff4c3e44e7063ebde2557b7c0087ab720b894</id>
<content type='text'>
Introduce a parser for patterns that generates a parse tree. The
language understood by the parser is:

pattern = '?'TERM
        | '?'TERM '(' pattern (',' pattern)* ','? ')'
        | WORD
        | QUOTED-WORD
TERM    = [0-9a-zA-Z-]
WORD    = [0-9a-ZA-Z-.*^$\[\]_\\]
QUOTED_WORD = "..."		# you know what I mean

This language is context free, which is a massive simplification
from aptitude's language, where ?foo(bar) could have two different
meanings depending on whether ?foo takes an argument or not.
</content>
</entry>
</feed>
