<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>38103</bug_id>
          
          <creation_ts>2020-02-17 04:11:42 +0300</creation_ts>
          <short_desc>possible way to make dependency resolution in APT faster by preparsing EVRDT</short_desc>
          <delta_ts>2020-10-30 20:21:22 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>apt</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ivan Zakharyaschev">imz</reporter>
          <assigned_to name="Ivan Zakharyaschev">imz</assigned_to>
          <cc>boyarsh</cc>
    
    <cc>glebfm</cc>
    
    <cc>imz</cc>
    
    <cc>lav</cc>
    
    <cc>ldv</cc>
    
    <cc>placeholder</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>187891</commentid>
    <comment_count>0</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2020-02-17 04:11:42 +0300</bug_when>
    <thetext>apt-0.5.15lorg2-alt71.x86_64

The APT&apos;s package cache could be made to store the version info of packages and of dependencies in preparsed form instead of strings (as now), namely, something like a union of a EVRDT structure or a parsed binary representation of set-versions.

(Then, the comparison functions from librpm which operate on such internal representations (i.e., already parsed) should be called.)

Then, I suppose, a bit more work would be done on cache generation (e.g., apt-get update), but less work in dependency resolution (e.g., during apt-get dist-upgrade).

In 0.5.15lorg2-alt65 and 0.5.15lorg2-alt68, we put some effort into making APT internally and all libapt&apos;s clients use a single comparison API as a blackbox (so that it&apos;s easy to change the algorithm only at one place in librpm). But the input data for it is ultimately stored as strings in the cache (and passed as strings between libapt and clients).</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>