Paketbau firefox-esr: Python findet Shell nicht

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
hikaru
Moderator
Beiträge: 13591
Registriert: 09.04.2008 12:48:59

Paketbau firefox-esr: Python findet Shell nicht

Beitrag von hikaru » 05.02.2019 22:31:43

Hallo,

ich baue gerade testweise Debianfirefox-esr unter Stretch gemäß "7.14 How do I build binary packages from a source package?" aus dem Debian-Manual. [1] (Insbesondere habe ich mir natürlich die build-deps besorgt. Es ist auch nicht mein erster Paketbau.)
Trotzdem stoße ich auf das Problem, dass beim eigentlichen Paketbau mittels debuild Python nach der Shell sucht, diese aber nicht findet. Die Prüfung findet in process.py [2] statt und sieht so aus:

Code: Alles auswählen

# Perform detection of operating system environment. This is used by command
# execution. We only do this once to save redundancy. Yes, this can fail module
# loading. That is arguably OK.
if 'SHELL' in os.environ:
    _current_shell = os.environ['SHELL']
elif 'MOZILLABUILD' in os.environ:
    _current_shell = os.environ['MOZILLABUILD'] + '/msys/bin/sh.exe'
elif 'COMSPEC' in os.environ:
    _current_shell = os.environ['COMSPEC']
else:
    raise Exception('Could not detect environment shell!')
...und erzeugt dann dieses Ergebnis:

Code: Alles auswählen

Creating config.status
Traceback (most recent call last):
  File "../configure.py", line 127, in <module>
    sys.exit(main(sys.argv))
  File "../configure.py", line 34, in main
    return config_status(config)
  File "../configure.py", line 112, in config_status
    from mozbuild.config_status import config_status
  File "/media/hikaru/4d39be4c-c35d-4491-a323-e0bcb0e60ee0/ff/firefox-esr-60.5.0esr/build/mach_bootstrap.py", line 369, in __call__
    module = self._original_import(name, globals, locals, fromlist, level)
  File "/media/hikaru/4d39be4c-c35d-4491-a323-e0bcb0e60ee0/ff/firefox-esr-60.5.0esr/python/mozbuild/mozbuild/config_status.py", line 21, in <module>
    from mozbuild.base import MachCommandConditions
  File "/media/hikaru/4d39be4c-c35d-4491-a323-e0bcb0e60ee0/ff/firefox-esr-60.5.0esr/build/mach_bootstrap.py", line 369, in __call__
    module = self._original_import(name, globals, locals, fromlist, level)
  File "/media/hikaru/4d39be4c-c35d-4491-a323-e0bcb0e60ee0/ff/firefox-esr-60.5.0esr/python/mozbuild/mozbuild/base.py", line 16, in <module>
    from mach.mixin.process import ProcessExecutionMixin
  File "/media/hikaru/4d39be4c-c35d-4491-a323-e0bcb0e60ee0/ff/firefox-esr-60.5.0esr/build/mach_bootstrap.py", line 369, in __call__
    module = self._original_import(name, globals, locals, fromlist, level)
  File "/media/hikaru/4d39be4c-c35d-4491-a323-e0bcb0e60ee0/ff/firefox-esr-60.5.0esr/python/mach/mach/mixin/process.py", line 29, in <module>
    raise Exception('Could not detect environment shell!')
Exception: Could not detect environment shell!
Wenn ich im ziitierten Code die letzte Zeile mit der Exception gegen die harte Zuweisung von /bin/bash austausche, dann läuft der Paketbau an:

Code: Alles auswählen

_current_shell = '/bin/bash'
Das ist natürlich eine eher hässliche Lösung, funktioniert aber offenbar. $SHELL ist bei mir standardmäßig /bin/bash und das gilt auch für die Konsole aus der ich den Paketbau starte. Um ehrlich zu sein interessiert mich aber nur am Rande, warum die Shell nicht gefunden wird. Viel Interessanter finde ich die Frage, warum das Source-Paket in dem Zustand im Repo sein kann, wenn damit offenbar ohne Frickelei kein Binary-Paket gebaut werden kann. Oder übersehe ich hier was?


[1] https://www.debian.org/doc/manuals/debi ... cs.en.html
[2] https://sources.debian.org/src/firefox- ... rocess.py/

wanne
Moderator
Beiträge: 7464
Registriert: 24.05.2010 12:39:42

Re: Paketbau firefox-esr: Python findet Shell nicht

Beitrag von wanne » 06.02.2019 15:01:37

$SHELL ist bei mir standardmäßig /bin/bash
Debian nutzt per default /bin/dash
Könnte erklären, warum das noch keinem aufgefallen ist.
Die werden alle /bin/dash nutzen.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
hikaru
Moderator
Beiträge: 13591
Registriert: 09.04.2008 12:48:59

Re: Paketbau firefox-esr: Python findet Shell nicht

Beitrag von hikaru » 06.02.2019 19:00:12

wanne hat geschrieben: ↑ zum Beitrag ↑
06.02.2019 15:01:37
Debian nutzt per default /bin/dash
/bin/dash ist die nichtinteraktive Standardshell. Die interaktive Loginshell wird in /etc/passord für jeden User gesetzt und ist standardmäßig (Installer, adduser) /bin/bash. [1]
Ich hätte erwartet, dass Paketbau auch mit der Standardloginshell funktioniert.

Wie dem auch sei, mit /bin/dash als Loginshell und damit auch im aufrufenden Teminal ändert sich nichts. Das Python-Script findet nach wie vor keine Shell.


[1] https://wiki.debian.org/Shell

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Paketbau firefox-esr: Python findet Shell nicht

Beitrag von eggy » 06.02.2019 22:29:33

Mal probiert, was passiert, wenn du den Wert in der rules exportierst?
Falls Du nicht gleich nen Bugreport deswegen aufmachen willst, frag doch einfach mal in #debian-mentors

Benutzeravatar
hikaru
Moderator
Beiträge: 13591
Registriert: 09.04.2008 12:48:59

Re: Paketbau firefox-esr: Python findet Shell nicht

Beitrag von hikaru » 06.02.2019 23:40:31

eggy hat geschrieben: ↑ zum Beitrag ↑
06.02.2019 22:29:33
Mal probiert, was passiert, wenn du den Wert in der rules exportierst?
Das funktioniert. Danke!
eggy hat geschrieben: ↑ zum Beitrag ↑
06.02.2019 22:29:33
Falls Du nicht gleich nen Bugreport deswegen aufmachen willst, frag doch einfach mal in #debian-mentors
"#debian-mentors" ist IRC, oder?
Ich bin kein Chat-Fan. Da würde ich wohl eher einen Bugreport aufmachen.

Antworten