If a package is added to the upgrade list because of a
reverseDependencyUpdate action (e.g. google-gadgets because of
libproxy), runtime dependencies of that package are not examined (e.g.
webkit-gtk not installed although it is a dep of google-earth). This
commit also fixes this issue.
<Provides>
<COMAR script="iscsi-service.py" name="iscsi">System.Service</COMAR>
<COMAR script="iscsid-service.py" name="iscsid">System.Service</COMAR>
</Provides>
Will register two separate system services called respectively "iscsi" and "iscsid". This way
we don't have to split packages to give them separate names or to provide more than 1 services
in a sub-package.
Following is an example to specify "security" type and
"reverseDependencyUpdate" action for different sub-packages.
<Update release="30">
<Date>2010-02-17</Date>
<Version>2.4.18</Version>
<Comment> ... </Comment>
<Type package="libdrm-intel">security</Type>
<Requires>
<Action package="libdrm-nouveau">reverseDependencyUpdate</Action>
</Requires>
<Name>Fatih Aşıcı</Name>
<Email>fatih@pardus.org.tr</Email>
</Update>
It is also possible to specify different targets for the actions. In the
following example, new release of mod_php package requires a restart of apache
service.
<Update release="30">
<Date>2010-02-17</Date>
<Version>5.2.13</Version>
<Comment> ... </Comment>
<Requires>
<Action package="mod_php" targetPackage="apache">serviceRestart</Action>
</Requires>
<Name>Fatih Aşıcı</Name>
<Email>fatih@pardus.org.tr</Email>
</Update>
Pisi was selecting "icon-naming-utils-0.8.90-7-1.pisi" when both
icon-naming-utils-0.8.90-7-1.pisi
icon-naming-utils-0.8.90-8-1.pisi
files exist in the same directory. With this commit, it chooses the one
with greater release number.
pisi.version.Version is one of most frequently used class in pisi
(esp. when calculating dependencies). This new function is a fast
alternative which returns a tuple representation of version strings.
Since python is able to compare tuple and list objects, we do not
have to write a special compare function.
Here are some results:
In [7]: %timeit -n100000 pisi.version.make_version("1.2.3.4.5")
100000 loops, best of 3: 8.12 us per loop
In [8]: %timeit -n100000 pisi.version.Version("1.2.3.4.5")
100000 loops, best of 3: 60.6 us per loop
In [9]: %timeit -n100000 pisi.version.make_version("1.2") < pisi.version.make_version("1.3")
100000 loops, best of 3: 10.1 us per loop
In [10]: %timeit -n100000 pisi.version.Version("1.2") < pisi.version.Version("1.3")
100000 loops, best of 3: 85.4 us per loop
Since release number are integers, we don't have to use Version objects.
Also piksemel returns tags in the order they are written. So we don't
have to iterate all update tags.