@@ -1176,6 +1176,7 @@ repowriter_write(Repowriter *writer, FILE *fp)
11761176 unsigned int solv_flags ;
11771177 Id * oldkeyskip = 0 ;
11781178 Id * keyskip = 0 ;
1179+ int searchflags = 0 ;
11791180
11801181 Id id , * sp ;
11811182
@@ -1496,6 +1497,10 @@ for (i = 1; i < target.nkeys; i++)
14961497
14971498/********************************************************************/
14981499
1500+ searchflags = SEARCH_SUB |SEARCH_ARRAYSENTINEL ;
1501+ if ((writer -> flags & REPOWRITER_KEEP_TYPE_DELETED ) != 0 )
1502+ searchflags |= SEARCH_KEEP_TYPE_DELETED ;
1503+
14991504 /* set needed count of all strings and rels,
15001505 * find which keys are used in the solvables
15011506 * put all strings in own spool
@@ -1523,7 +1528,7 @@ for (i = 1; i < target.nkeys; i++)
15231528 continue ;
15241529 cbdata .keymap = keymap + keymapstart [j ];
15251530 cbdata .lastdirid = 0 ; /* clear dir mapping cache */
1526- repodata_search_keyskip (data , SOLVID_META , 0 , SEARCH_SUB | SEARCH_ARRAYSENTINEL , keyskip , collect_needed_cb , & cbdata );
1531+ repodata_search_keyskip (data , SOLVID_META , 0 , searchflags , keyskip , collect_needed_cb , & cbdata );
15271532 }
15281533 needid = cbdata .needid ; /* maybe relocated */
15291534 sp = cbdata .sp ;
@@ -1560,7 +1565,7 @@ for (i = 1; i < target.nkeys; i++)
15601565 continue ;
15611566 cbdata .keymap = keymap + keymapstart [j ];
15621567 cbdata .lastdirid = 0 ;
1563- repodata_search_keyskip (data , i , 0 , SEARCH_SUB | SEARCH_ARRAYSENTINEL , keyskip , collect_needed_cb , & cbdata );
1568+ repodata_search_keyskip (data , i , 0 , searchflags , keyskip , collect_needed_cb , & cbdata );
15641569 }
15651570 needid = cbdata .needid ; /* maybe relocated */
15661571 }
@@ -1795,7 +1800,7 @@ fprintf(stderr, "dir %d used %d\n", i, cbdata.dirused ? cbdata.dirused[i] : 1);
17951800 continue ;
17961801 cbdata .keymap = keymap + keymapstart [j ];
17971802 cbdata .lastdirid = 0 ;
1798- repodata_search_keyskip (data , SOLVID_META , 0 , SEARCH_SUB | SEARCH_ARRAYSENTINEL , keyskip , collect_data_cb , & cbdata );
1803+ repodata_search_keyskip (data , SOLVID_META , 0 , searchflags , keyskip , collect_data_cb , & cbdata );
17991804 }
18001805
18011806 if (xd -> len - cbdata .lastlen > cbdata .maxdata )
@@ -1835,7 +1840,7 @@ fprintf(stderr, "dir %d used %d\n", i, cbdata.dirused ? cbdata.dirused[i] : 1);
18351840 continue ;
18361841 cbdata .keymap = keymap + keymapstart [j ];
18371842 cbdata .lastdirid = 0 ;
1838- repodata_search_keyskip (data , i , 0 , SEARCH_SUB | SEARCH_ARRAYSENTINEL , keyskip , collect_data_cb , & cbdata );
1843+ repodata_search_keyskip (data , i , 0 , searchflags , keyskip , collect_data_cb , & cbdata );
18391844 }
18401845 }
18411846 if (xd -> len - cbdata .lastlen > cbdata .maxdata )
@@ -2009,7 +2014,7 @@ fprintf(stderr, "dir %d used %d\n", i, cbdata.dirused ? cbdata.dirused[i] : 1);
20092014 continue ;
20102015 cbdata .keymap = keymap + keymapstart [j ];
20112016 cbdata .lastdirid = 0 ;
2012- repodata_search_keyskip (data , i , 0 , SEARCH_SUB | SEARCH_ARRAYSENTINEL , keyskip , collect_data_cb , & cbdata );
2017+ repodata_search_keyskip (data , i , 0 , searchflags , keyskip , collect_data_cb , & cbdata );
20132018 }
20142019 if (xd -> len > 1024 * 1024 )
20152020 {
0 commit comments