Summary: | lib.req doesn't give deps with the new ldd --list patch | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Ivan Zakharyaschev <imz> |
Component: | rpm | Assignee: | placeholder <placeholder> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | critical | ||
Priority: | P3 | CC: | alexey.tourbin, at, evg, glebfm, imz, ldv, legion, placeholder, vt |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Ivan Zakharyaschev
2016-03-10 16:59:10 MSK
Вот пример пострадавшего: $ compare_packages -a --requires -- /tasks/archive/done/current/161152/build/repo/prev/x86_64/RPMS.classic/libgtk+3-3.18.8-alt2.x86_64.rpm -- /ALT/Sisyphus/x86_64/RPMS.classic/libgtk+3-3.18.9-alt1.x86_64.rpm @@ -5,48 +5,15 @@ grep gtk-update-icon-cache icon-theme-adwaita -libX11.so.6()(64bit) >= set:ogWICLtMYc5zqYoA2yCg2l80qAdbMDCHIEKy2IiPpMa9Mo0ojWKE6oX5DxjAt2PCyFbQG8yltyUyXls904hjXByi0fSJ97q99zqy4e5eN9YH3Gt0sVaEGVC9pMUZjExZBBunDl2qmrHpGmIC5m0nRYsTZJdnKvWhMGwKBbeJxFY0VYmOt2AK36THPWTIjZoLHt8Rp0TBmMpKqOmy5BI4iQ286RU8nrxgb0tmawkZ8sRuq9VbH3VMjQ0wRyML55aaJ9E9rGZfBEf5KQeEMXkSKw6iNDG8lZJw3mBfXZtOl7BbZ25YIY4m8BPZpmzzd4BXe8awcbQVxbFqrfNk3BMK2v79kEMhU208DaQObYRTpQ8H0Ij0 -libXcomposite.so.1()(64bit) >= set:he8ZpfYgDGrn02A0 -libXcursor.so.1()(64bit) >= set:jfd78dp5cR1qJenLD14UBF536i6S0TCt -libXdamage.so.1()(64bit) >= set:he8Nm2J37p7 -libXext.so.6()(64bit) >= set:lhnnNiBuFwPSoRnEoxnhhviconmjE0Z6kD6j5 -libXfixes.so.3()(64bit) >= set:jg48ZveeeOQO6umm2 -libXi.so.6()(64bit) >= set:kga6p2q7hT26CMdTQgZtvhPPZnH7rncXZ8om9 -libXinerama.so.1()(64bit) >= set:hf45oga -libXrandr.so.2()(64bit) >= set:kgufGZmgD39F4pBQ0FyFA4urO4ZmafPOEue -libatk-1.0.so.0()(64bit) >= set:mfhTEOlj5caQZmKU9NOX4LT0Zpkl0wJ3F8tAEwTQsRQZduZe6IYzUj7duuNJjNgwAbN1ZLNkt5wSmaGd89fpawBfrc73n7xnP1JCmLoGZkONgHHJD6rlHrkQxpCCWZ8fytQbgWD9hrg3OZc5wI95wICX3hYs1Qta3oySGASU8xJQKCqa4PIIxwEH5 -libatk-bridge-2.0.so.0()(64bit) >= set:fem30 libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) -libcairo-gobject.so.2()(64bit) >= set:jgygltgx3h30 -libcairo.so.2()(64bit) >= set:metjTTC6y8L2C1Eq2wswsKE1ysyq1cMIlFueVI7tZfS4an2QcstFYptztoPPgwwDDMeqIGzypJ0UwQqpIEFyMevUcnQzdotf079NjRk55Gywz9KOdp0SjUsKJxHYmeYuhwbR6WrucnjfdL2GmaiWvQL5ZFC7T0X7ZGeZafpkCLI03TPHIa1UciD3uY05JDs4mWxaDd9oCXM3bMzb7RUCQ9Nfwe3AabUJ0MMQcoD3ge8fScJ6pF3UyNe2NAZ2ZklShbbjVxrgeSMnbQDWWfyMdp4MkjogW6p9h290yZ14OB3MUUY67fyeC5gs1BHpVZpAlZwakVR3VGhtZgqT2jdbzLxu5LiBZxZAtBnyI2JEwh7hdqeKwDAav2KYAKsrshD3KjEHZp0Pe -libcolord.so.2()(64bit) >= set:lgixeaoKZApwNd0mFl4INuxWk7YhqRlTP2CM8babp97 -libcups.so.2()(64bit) >= set:ngdHvRhnvWZBN7OUYlTzEeE1Cd6N1EDZdaR8ZDxVXDYo7wrc4S9wrfX7nlzl1IKeRKnTVJ3MVqIOi50UvTsybvZH1G2bnCl6We6lF3JVmTrV0C61Ik8rbJRKOwbaWIYA3XLHOWAXMZtznDtYQjcTiwAj2JvgKyHYilZHwJl0fyQ1IxjBGFgLbcfdu3MAMpMOKm4u2dn1CiTkOb10 -libepoxy.so.0()(64bit) >= set:pimtdjoAHQIYQQ28MzhX0DlxtI5d8192ixQ6owaAnqFWO2VzZD67yPms0ZGI980WgjJ9gZKIQKlhapA9KvZ4Ngozp4UghY6xZ9BbOShIfPd70HuwDyFxxq3a7CwBoUNHKnYsggSMIW8Lo9B7CDicuqyXAhZ1GMiO6YfbbGnJsZCI0hAoE6aI6aV3g4H8PUOTOu7yYqslb6BLearmDZDMzzTyKMqhZadlQr7YRHIZ55ZJQbULInAorZcpJZj7N2Zt8HnBdLX3IzjSiYMZBurnOKf1e3kD6VcAwWUlddzUnZ1 -libfontconfig.so.1()(64bit) >= set:lj42EvZssU80 -libgdk_pixbuf-2.0.so.0()(64bit) >= set:keP7FwzxW4ZBMZd5eLtI8U7UC81a7UHFcJzhbUAIwJKb8slGTNEmmHQpZr8EsTOvLlmy6O2CYylKuKYtvSZIS2JbUflL8Qt5kpoVlhTM2AW0b1ZKSAMa36DF8oQP6TBZr3iJQ00 -libgio-2.0.so.0()(64bit) >= set:ofzMfiEvYMCfkrZEJudFXrnaGyWLmrVWcGSLdTWWYXxIZpnVelLJ3LgLgZpig5OP4fU9MhyhjSml48CoZmNEztZhliX0NCaEfyy3jlJkbIVs1FsIVoTeikhb168YjoEocCxi5qvcoH8LFWswGbWZ2ztzFJOUkWlh8YkZqaiyRdUa2Df65lAIKZEwasmRLc9sZ6VcZ9dNSG84RwElmZ2ojj7ZqShim5Edtv8PZaw7iTbiZsAx8vz56LS5IGNeyH2L068AuwgnAbm3wD9ZIH3nNEqMziCKdhhmyalZd1A2nNDVKKJg6DllVC8l8Y8iVp8pVsPcqBCg0JOaixE6ao64xjWgZrH8o3qFvZde7nBgQHEndwEhHj4eZ8hOpsCnZoZb0Tw8JbB3F2sF2gfNHc7zkAOzdG6Z6PeAYSfjBBepsS9VYdfZgZ33ZvX9STve8wE7NAA3O4WssftC9AJiZL1B6htLzWqQuoSH5Z2xN6eVkpw4dv68ZGnTUZItbaZcby4nSb0af6eaZxXfD7qZmJOZp4hA8jRQoMUCWfQ5p0OigKTUeDL4YKgcy8d3azRlQ1mnlRBu4CMZ48cSUbyv2awgrxYJ7uB1Qazf8NDqCvO6fzEfOq5pAZ9ZAt7NFzzZJZnSBHfrVYCi7iXE7qveO46WpFFenJHrA8gyLjtI5wMmQFGnTCNrL33bVRUvZv0HfkwJe7sZEo1Cet7XJXQb6bvhA0JK1HT6hE23GFH4eGCLHcpb5Vwk8lz6R7j9EBqYHhKaCbwzghuBH6v1HZoSCn4otjfYrlRZyZHgyMZwPoKtKZ1QZ74EYZaQTE71y4q3r9Mj0f8OwRuEkaN9W8GT0bEH5RdJUnZ14mWBQcJhEony3ZDqcgelDW3NRQAFcSUcBBMqrfZwe37uLkosGI2awSGWb91JeXuYdBjT1ZspZxZKS5PB9nd8zgcQ9YImolS9Zu9JcjnGLEHKSi5U1wu7E5UIVBgcX7 -libglib-2.0.so.0()(64bit) >= set:oe1i55k5Nh2mEmZAkkFscz6RrxmZoxTvqiH85nZEbFhZCqNLOVix7iBIdQWNTJ5I6YBZgs2gMrZ0SOeLAwM5pQ2pkLOcdq0n9OvzVJfW2GnSU6hfzeQlv02HmyjtAKqcCGuEic689oVwofn0auo7hIZdJYYDZ6ACg5gtkDIjVNWqyqbkuZy0aBJBZ1ZKcXZFqwWXktACuFF9Z3Z6evAaYRC9r4HseZxGxwl4cjybHG42300IFZsmedMMNjdeIwu67w1HMtIQ8iNy38e0wxMLxbQbgtdTymQwP1t4rgCzuyJ1NAIp298WdcWgX8Megycxa79u0ourLSdDzg3ZFKBuWmC0ZxBNaC0fanEcyHPTcA84wIBAlwBfMizl0RM0ZLYTQ11GLEA5NDTZAs1tD94rMx7VHnTnq45Zums0CzEhOw7qcoUmFbO1SjPabt8eepufHZCGeE7VUxIjloH2aF7aIOPjnWSQ6r2wx6JbtgkAYEpkbL7B07WPfgO9BIpMULDfvpykkKW6Nimh2fdFl9YnwSIQJ3GUwHvbefoHacY6OFwROMbO3M44yCWtr58qK0DAzwNMuA35kLXwI1Q8Msy8pzgsTy2USghQ8ZcX9ebGlVZ8x53c0rIzBsPTcsQ1AFhN4jiq7bZmtqiLyhYSrAgiGjtCZIJRkAfrwQa8SqjwVS7I64ZkBJ5qM1QVvBnmOCAxoJrIDb8ZFT02Ow8Y85VeFVbYi5BCZDM1hfpArSTsBcAwnWZrJ9rIrc7sE81RglDdOBnelNR228aBVfYOJged4Nvo6r6lOZ4GmdtOTmsBA45s0skIowo1mbAUZnQbJwxZ3ZkMXTgIZcniuAsKrp412dUwAybud2I9fQXuf0IgDFlyjGe2iqnjCZn3Xw0FAAWqehvoGjaRewLAJiCWK9kmatGMyl6dHy4nBWi1p93IxhUHh6f8y498WB0ZDQKoa2xo3GnXlxGSPPgLZEwFcAZwtnjZ5cLk35yuWozY8yXjBmdzqBWOo41shGUk6MHeffL86gvQgMNB90VdyqBKtTZKYf5Mtc59tDlsswnCfUgUy0kwffCGVqDFcYOMja5tuuHE4EMD1Ri2YfZrg77JqI128sFLpMGStg6d1infkOtev6OPKhaJ8FluqbSrPcobm3YS5pcR5F9mOS9UU2nEZIgs2pLD7QaZkaF9wzcLugbXd42td42otxriLftpOBx3igpsUwuykG8gNvsMTw10CDK96f1601YlVCWJnvzbZd08Or0rAlLMAs87wHaCtoq3z8PZlTEvAGB8JGtpRDbZ68J8WRNm5GZJ0zh2SanysZ2SBXmzyFmCGwrI0qG02JIb9zc2hmeCeKNwqicf2 -libgmodule-2.0.so.0()(64bit) >= set:heJjPMqjBSZbcRkvs -libgobject-2.0.so.0()(64bit) >= set:mdXE7zPuR3adS9hXdx1e08XlLnZdyVASrjCOrOva5X3F5d0RJnxNvg33r4kGnMfjKONFt4PbVJ4C2K80Gw3XdZKYzgY8D3ni1ib7kNZ4BZuwIW5DbHgcXlMdxm1axi2l9THxNeIcMH9E25NjZkZkdY6v7RhZc5FIGJfP2CDegwS8w9CUMaCtVyFbh3xM3MmaZ1C38u0N2WA6QURc67bUCCfOgltmCK9HOI6w41UbajUwLpm3UpVCwZhPFkk10nMkFsGf6cr6UG7Joez0o4tA0XnIKozaOh4sDARkZgWBhgWPeEKpeWiGVHR8H2tcGtAMPXcnQCKRmhMqQF0lNmAv6Ud06lI6Bc02seUr4K6wJ8pZwvkFHVUQ7l032oBEdm7dPDvGa98Ot7rMD60Sj8sCFYmpDVaAnZpZptgjlLgLnIWp0uQAqcsFr7EPZ0rvwlasTdLDiZ5oWxcPNgIOFdl2lJxJSL7ud68LZ7MfeXK10ilWHqPPH7xTZbON5gVh28mrCXDncYw0QjqsoizAjeRgVarAK90OBHJTCm2 -libjson-glib-1.0.so.0()(64bit) >= set:lgaIxeIV7Z9EORZtP0HxkMkVpK0zb41vccG40XQlZoZHb libm.so.6(GLIBC_2.2.5)(64bit) -libpango-1.0.so.0()(64bit) >= set:meFYmQYoZwPoiik9OdpyOjw1U903ejjebC3uuBRSZoFfAiekQZoTkoHwBDVBqTpYrp1g7rEoR2t2QlXmjuT8PqZfKz8BuZkyJgg44kqshFgRZv5VJ0fjbxCYlrIlTvVvqpsdcytfKQ4v323XzkjWlTKEBrnEs8QWGequZoQgZ6aZeTnQUXtkNQuivEff1HbxYpTl0zUJ0Safbihjrl3IZDWJoV1GKMwRTwh4cWjcwcHdy8DlA1QpgXoZwVCvejBCunDG7mUJkpqMU59saY4uszO1EmJcixpH93GjOG5FXcAdsDZ8gXKUPSv9KQuHBiQhmxLyZe4lMnaIrYFNDsFS5vb6jCLJe6Y6bBv2a7q183J95RXQMEx6LFrIwmIMULl8r7CmTrZ5huyt9ctmiUjEJdBOJieILQGM3LPZDi4l2Oo0 -libpangocairo-1.0.so.0()(64bit) >= set:jfOrRtOc6qYbVQELVp4B9x9CU3 -libpangoft2-1.0.so.0()(64bit) >= set:kiheSeQ2 libpthread.so.0(GLIBC_2.2.5)(64bit) -librest-0.7.so.0()(64bit) >= set:kgfc5NKIGDh1LxE6BwvlW7EVMFruS0 -librt.so.1()(64bit) >= set:jhyjl221 librt.so.1(GLIBC_2.2.5)(64bit) -libwayland-client.so.0()(64bit) >= set:keed0sUM4ogPPRQfZf5U0xZeQ2ZojP2nmFbMH0ORDn5SXi1bfDFKfGNGLsOQYESS6iuweyqFFv -libwayland-cursor.so.0()(64bit) >= set:gdOuegx24l1 -libwayland-egl.so.1()(64bit) >= set:gednthYZz -libxkbcommon.so.0()(64bit) >= set:kfwQiLGa4R0MZknB9ZxHtRkoehXrUyNu6WhIKSwNVDu5ijZgXgIpWHdb7 libxkbcommon.so.0(V_0.5.0)(64bit) rpmlib(PayloadIsLzma) rpmlib(PosttransFiletriggers) -rpmlib(SetVersions) rtld(GNU_HASH) Простите за offtopic, но пользуясь случаем можно поинтересоваться (я без сарказма, совершенно серьёзно) какие типы символов извлекает lib.req ? Объясню вопрос: в 2013 я пробовал переписать lib.{req,prov} на libelf и если в случае с prov всё более менее понятно, то с req я смог понять критериев отбора. (In reply to comment #2) > Простите за offtopic, но пользуясь случаем можно поинтересоваться (я без > сарказма, совершенно серьёзно) какие типы символов извлекает lib.req ? lib.req не извлекает символы. Вместо этого он запускает динамический линкер, который составляет полную карту разрешения символов. Чтобы было проще понять, считай, что это исполняемый файл и ты просто запускаешь его через execve c LD_BIND_NOW=1, только в самый последний момент вместо передачи управления в __libc_start_main он печатает карту разрешения символов и выходит. $ /usr/lib/rpm/ldd --bindings /usr/bin/perl '' 2>&1 | grep /usr/bin/perl 19804: binding file /usr/bin/perl [0] to /usr/lib64/libperl-5.22.so [0]: normal symbol `boot_DynaLoader' ... 19804: binding file /usr/bin/perl [0] to /lib64/libc.so.6 [0]: normal symbol `exit' [GLIBC_2.2.5] Дальше этот вывод немного рафинируется и делается join на прилинкованные библиотеки (с которыми слинкован /usr/bin/perl). Так и получаются set-версионные зависимости. > Объясню вопрос: в 2013 я пробовал переписать lib.{req,prov} на libelf и если в > случае с prov всё более менее понятно, то с req я смог понять критериев отбора. В общем, с помощью libelf нельзя легко "извлечь" символы, не реализовав при этом чего-то вроде ld.so, который подгружает разделяемые библиотеки и т.д. rpm-4.0.4-alt100.90 -> sisyphus: * Thu Mar 10 2016 Dmitry V. Levin <ldv@altlinux> 4.0.4-alt100.90 - lib.req: made "no symbol bindings" condition fatal. - relative: fixed potential heap buffer overflow (by Gleb F-Malinovskiy). - rpmrc.in: armv7: do not force FPU kind, rely on compiler defaults (by Sergey Bolshakov). * Thu Mar 10 2016 Dmitry V. Levin <ldv@altlinux> 4.0.4-alt100.89.1 - ldd: reverted recent change (closes: #31870). |