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

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

    <bug>
          <bug_id>43747</bug_id>
          
          <creation_ts>2022-09-09 12:29:30 +0300</creation_ts>
          <short_desc>Долго запускается на системах с KDE</short_desc>
          <delta_ts>2023-06-13 16:08:19 +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>appinstall</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ivan Alekseev">qwetwe</reporter>
          <assigned_to name="Andrey Cherepanov">cas</assigned_to>
          <cc>cas</cc>
    
    <cc>lav</cc>
    
    <cc>tergoev-m</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>214711</commentid>
    <comment_count>0</comment_count>
    <who name="Ivan Alekseev">qwetwe</who>
    <bug_when>2022-09-09 12:29:30 +0300</bug_when>
    <thetext>Версия пакета:
appinstall-1.3.3-alt1.noarch

Стенды:
kworkstation-10-x86-64
education-10-x86-64-kde

Шаги для воспроизведения:
1) Запустить App Install из меню приложений

Фактический результат: приложение запускается через две минуты.

Ожидаемый результат: приложение запускается в течение десяти секунд.

Ошибка воспроизводится только на системах с KDE.
На системах с Mate/Xfce приложение запускается в течение 10 секунд.

Сообщения в системном журнале при запуске приложения:

сен 09 12:20:11 kworkstation-10-x86-64-20220909.localdomain systemd[3442]: Started App Install - Установка сторонних приложений.
░░ Subject: Запуск юнита UNIT завершен
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░ 
░░ Процесс запуска юнита UNIT был завершен.
░░ 
░░ Результат: done.
сен 09 12:20:13 kworkstation-10-x86-64-20220909.localdomain consolehelper[24050]: pam_tcb(appinstall:auth): Authentication passed for root from test(uid=500)
сен 09 12:20:13 kworkstation-10-x86-64-20220909.localdomain consolehelper[24064]: executing &quot;/usr/sbin/appinstall&quot;: (test --&gt; root --&gt; root)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214713</commentid>
    <comment_count>1</comment_count>
    <who name="Ivan Alekseev">qwetwe</who>
    <bug_when>2022-09-09 12:47:14 +0300</bug_when>
    <thetext>Из терминала приложение запускается с нормальной скоростью:
$ appinstall</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214720</commentid>
    <comment_count>2</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2022-09-09 13:37:09 +0300</bug_when>
    <thetext>(Ответ для Ivan Alekseev на комментарий #1)
&gt; Из терминала приложение запускается с нормальной скоростью:
&gt; $ appinstall
Он зачем-то запускает
epm installed
для каждого из поддерживаемых им приложений.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216822</commentid>
    <comment_count>3</comment_count>
    <who name="Ivan Alekseev">qwetwe</who>
    <bug_when>2022-11-02 13:07:04 +0300</bug_when>
    <thetext>Проверялось в Sisyphus, ошибка воспроизводится.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225589</commentid>
    <comment_count>4</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2023-05-09 07:47:08 +0300</bug_when>
    <thetext>appinstall-1.4.0-alt1 -&gt; sisyphus:

 Mon May 08 2023 Andrey Cherepanov &lt;cas@altlinux&gt; 1.4.0-alt1
 - Show window immediately and display loading animation (ALT #43747)
 - Show only allowed applications from /etc/appinstall/allow.d (ALT #41900)
 - Change installed icon to QStyle.SP_ArrowDown
 - Get installed application list with new epm play parameter --short (ALT #42812, #42802)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227079</commentid>
    <comment_count>5</comment_count>
    <who name="Mikhail Tergoev">tergoev-m</who>
    <bug_when>2023-06-06 12:36:57 +0300</bug_when>
    <thetext>Стенды:
kworkstation (p10)
regular kde (Sisyphus)

Шаги для воспроизведения:
1) Запустить appinstall из меню приложений или с помощью krunner (Alt+F2)

Фактический результат с версией appinstall-1.3.3-alt1.noarch: приложение очень долго запускается.
Фактический результат с версией appinstall-1.4.1-alt1.noarch: приложение запускается в течении 10 секунд, но списка приложений нет долгое время.

Ожидаемый результат: приложение запускается в течение десяти секунд и список приложений появляется сразу.

Если запускать из krunner хитрым способом: 
appinstall &lt;/dev/null 
то обе версии appinstall отрабатывают нормально, идём править:
/usr/share/applications/appinstall.desktop 
и добавляем костыль в строку Exec:
Exec=appinstall &lt;/dev/null

Результат: всё работает корректно

Причина данного поведения на KDE связана с появлением несуществующей pipe в /stdin если мы запускаем приложение не из терминала в КДЕ, в следствии чего когда appinstall запускает epm play одно из условий определяет на входе pipe.
  
Как вариант исправления данной ошибки, можно сделать, чтобы appinstall запускал внутри себя epm play c явным &lt;/dev/null

Подтверждение, что проблема не в epm, а в КDE:
создаем скрипт:
#!/usr/bin/env bash
ls -l /proc/self/fd/0 &gt;&gt; /tmp/script.log
if [ -p /dev/stdin ]  ; then
    echo &quot;PIPE&quot;
else
    echo &quot;NOPIPE&quot;
fi &gt;&gt; /tmp/script.log

читаем что в /tmp/script.log
tail -f /tmp/script.log

запускаем тестовый скрипт из терминала:
/tmp/script 
вывод: lrwx------ 1 fidel fidel 64 июн  6 12:26 /proc/self/fd/0 -&gt; /dev/pts/2
NOPIPE

запускаем тестовый скрипт из терминала но с pipe:
test | /tmp/script 
lr-x------ 1 fidel fidel 64 июн  6 12:27 /proc/self/fd/0 -&gt; pipe:[402571]
PIPE

Логика отрабатывает правильно до тех пор, пока мы не запустим скрипт без терминала, например из файлового менеджера двумя кликами по скрипту или с помощью krunner (Alt+F2): /tmp/script 
Вывод:
lr-x------ 1 fidel fidel 64 июн  6 12:30 /proc/self/fd/0 -&gt; pipe:[397973]
PIPE
Что не является правильным.

Еще раз с помощью krunner (Alt+F2), но немного по-другому: /tmp/script &lt;/dev/null
lr-x------ 1 fidel fidel 64 июн  6 12:33 /proc/self/fd/0 -&gt; /dev/null
NOPIPE
а это уже как вариант использования для исправления данной баги. (Но думаю что надо создать еще и для kde.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227448</commentid>
    <comment_count>6</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2023-06-13 11:09:47 +0300</bug_when>
    <thetext>(Ответ для Sergey V Turchin на комментарий #2)
&gt; (Ответ для Ivan Alekseev на комментарий #1)
&gt; &gt; Из терминала приложение запускается с нормальной скоростью:
&gt; &gt; $ appinstall
&gt; Он зачем-то запускает
&gt; epm installed
&gt; для каждого из поддерживаемых им приложений.
А есть какие-то предположения, зачем KDE вызывает приложения с каким-то pipe на stdin?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227449</commentid>
    <comment_count>7</comment_count>
      <attachid>13457</attachid>
    <who name="Mikhail Tergoev">tergoev-m</who>
    <bug_when>2023-06-13 11:29:51 +0300</bug_when>
    <thetext>Created attachment 13457
Патч исправляющий долгий запуск из меню в KDE

Явное указание stdin=subprocess.DEVNULL исправило ситуацию с долгим запуском appinstall из меню в KDE. Патч прилагаю.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227451</commentid>
    <comment_count>8</comment_count>
    <who name="Mikhail Tergoev">tergoev-m</who>
    <bug_when>2023-06-13 11:32:55 +0300</bug_when>
    <thetext>(Ответ для Vitaly Lipatov на комментарий #6)
&gt; А есть какие-то предположения, зачем KDE вызывает приложения с каким-то pipe
&gt; на stdin?

Смысл такого поведения рабочего окружения KDE на данный момент мне не понятен.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227466</commentid>
    <comment_count>9</comment_count>
    <who name="Andrey Cherepanov">cas</who>
    <bug_when>2023-06-13 13:55:14 +0300</bug_when>
    <thetext>(Ответ для Mikhail Tergoev на комментарий #8)
&gt; (Ответ для Vitaly Lipatov на комментарий #6)
&gt; &gt; А есть какие-то предположения, зачем KDE вызывает приложения с каким-то pipe
&gt; &gt; на stdin?
&gt; 
&gt; Смысл такого поведения рабочего окружения KDE на данный момент мне не
&gt; понятен.

Это поведение излишне умного epm, который сильно завязан на окружение терминала и рассчитан на терминал. Спасибо за патч.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227482</commentid>
    <comment_count>10</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2023-06-13 16:08:19 +0300</bug_when>
    <thetext>appinstall-1.4.2-alt1 -&gt; sisyphus:

 Tue Jun 13 2023 Andrey Cherepanov &lt;cas@altlinux&gt; 1.4.2-alt1
 - Used /dev/null as stdin for prevent epm hang (thanks Mikhail Tergoev) (ALT #43747).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13457</attachid>
            <date>2023-06-13 11:29:51 +0300</date>
            <delta_ts>2023-06-13 11:29:51 +0300</delta_ts>
            <desc>Патч исправляющий долгий запуск из меню в KDE</desc>
            <filename>appinstall-1.4.1-fix-start-from-kde.patch</filename>
            <type>text/plain</type>
            <size>1192</size>
            <attacher name="Mikhail Tergoev">tergoev-m</attacher>
            
              <data encoding="base64">LS0tIGFwcGluc3RhbGwJMjAyMy0wNi0xMyAxMToxMjo1OC4xOTI1MjAzOTggKzAzMDAKKysrIGFw
cGluc3RhbGwJMjAyMy0wNi0xMyAxMTowNjowMi4yMjQzNTA0ODIgKzAzMDAKQEAgLTE0MCw3ICsx
NDAsNyBAQAogCiAgICAgZGVmIGdldEFwcGxpY2F0aW9uc0luc3RhbGxlZChzZWxmKToKICAgICAg
ICAgIiIiR2V0IGluc3RhbGxlZCBhcHBsaWNhdGlvbiBmcm9tIGVwbSBwbGF5IC0tbGlzdCIiIgot
ICAgICAgICBvdXQgPSBzdWJwcm9jZXNzLlBvcGVuKCBbICIvdXNyL2Jpbi9lcG0iLCAiLS1pbnNj
cmlwdCIsICJwbGF5IiwgIi0tbGlzdCIsICItLXNob3J0IiBdLCBzdGRvdXQ9c3VicHJvY2Vzcy5Q
SVBFLCBlbnY9cHJnX2VudikKKyAgICAgICAgb3V0ID0gc3VicHJvY2Vzcy5Qb3BlbiggWyAiL3Vz
ci9iaW4vZXBtIiwgIi0taW5zY3JpcHQiLCAicGxheSIsICItLWxpc3QiLCAiLS1zaG9ydCIgXSwg
c3RkaW49c3VicHJvY2Vzcy5ERVZOVUxMLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBlbnY9cHJn
X2VudikKICAgICAgICAgc2VsZi5pbnN0YWxsZWQgPSBbIHguZGVjb2RlKCkucnN0cmlwKCkgZm9y
IHggaW4gb3V0LnN0ZG91dC5yZWFkbGluZXMoKSBdCiAgICAgICAgICNwcmludCgiSW5zdGFsbGVk
OiIsIHNlbGYuaW5zdGFsbGVkICkKIApAQCAtMTU5LDcgKzE1OSw3IEBACiAgICAgICAgIHNlbGYu
Z2V0QXBwbGljYXRpb25zSW5zdGFsbGVkKCkKICAgICAgICAgc2VsZi5nZXRBbGxvd2VkQXBwbGlj
YXRpb25zKCkKICAgICAgICAgdDEgPSB0aW1lLnBlcmZfY291bnRlcigpCi0gICAgICAgIG91dCA9
IHN1YnByb2Nlc3MuUG9wZW4oIFsgIi91c3IvYmluL2VwbSIsICItLWluc2NyaXB0IiwgInBsYXki
LCAiLS1saXN0LWFsbCIgXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgZW52PXByZ19lbnYpCisg
ICAgICAgIG91dCA9IHN1YnByb2Nlc3MuUG9wZW4oIFsgIi91c3IvYmluL2VwbSIsICItLWluc2Ny
aXB0IiwgInBsYXkiLCAiLS1saXN0LWFsbCIgXSwgc3RkaW49c3VicHJvY2Vzcy5ERVZOVUxMLCBz
dGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBlbnY9cHJnX2VudikKICAgICAgICAgZm9yIGwgaW4gb3V0
LnN0ZG91dC5yZWFkbGluZXMoKToKICAgICAgICAgICAgIGQgPSByZS5tYXRjaCggIiAgKFxTKylc
cystICguKikiLCBsLmRlY29kZSgpLnJzdHJpcCgpICkKICAgICAgICAgICAgIGlmIGQ6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>