| Server IP : 178.105.222.151 / Your IP : 216.73.216.38 Web Server : nginx/1.28.3 System : Linux MNK 7.0.0-15-generic #15-Ubuntu SMP PREEMPT_DYNAMIC Wed Apr 22 16:06:43 UTC 2026 x86_64 User : www-data ( 33) PHP Version : 8.5.4 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /etc/apport/ |
Upload File : |
"""map crash database names to CrashDatabase implementations and URLs"""
import datetime
import pathlib
import platform
# pylint: disable-next=invalid-name
default = "ubuntu"
def get_oem_project():
"""Determine OEM project name from Distribution Channel Descriptor
Return None if it cannot be determined or does not exist.
"""
try:
dcd = pathlib.Path("/var/lib/ubuntu_dist_channel").read_text(encoding="utf-8")
if dcd.startswith("canonical-oem-"):
return dcd.split("-")[2]
except IOError:
return None
return None
# pylint: disable-next=consider-using-namedtuple-or-dataclass
databases: dict[str, dict[str, str | list[str] | None]] = {
"ubuntu": {
"impl": "launchpad",
"bug_pattern_url": (
"http://people.canonical.com/~ubuntu-archive/bugpatterns/bugpatterns.xml"
),
"dupdb_url": "http://people.canonical.com/~ubuntu-archive/apport-duplicates",
"distro": "ubuntu",
"escalation_tag": "bugpattern-needed",
"escalated_tag": "bugpattern-written",
},
"canonical-oem": {
"impl": "launchpad",
"bug_pattern_url": (
"http://people.canonical.com/~ubuntu-archive/bugpatterns/bugpatterns.xml"
),
"project": get_oem_project(),
},
"snap-github": {
"impl": "github",
"repository_owner": None,
"repository_name": None,
"github_app_id": "bb74ee9268c04aeca4fa",
"labels": ["apport"],
},
"ubuntu-wsl": {
"impl": "github",
"repository_owner": "ubuntu",
"repository_name": "WSL",
"github_app_id": "bb74ee9268c04aeca4fa",
"labels": ["apport"],
},
"debug": {
# for debugging
"impl": "memory",
"bug_pattern_url": "file:///tmp/bugpatterns.xml",
"distro": "debug",
},
}
def _is_ubuntu_stable_release() -> bool:
"""Check if the running system is a stable Ubuntu release."""
info = platform.freedesktop_os_release()
codename = info.get("VERSION_CODENAME")
if info.get("ID") != "ubuntu" or codename is None:
return False
today = datetime.date.today()
try:
# pylint: disable-next=import-outside-toplevel
import distro_info
except ImportError:
return False
ubuntu_distro_info = distro_info.UbuntuDistroInfo()
stable_releases = {
d.series
for d in ubuntu_distro_info.get_all(result="object")
if d.release is not None and today >= d.release
}
return codename in stable_releases
if _is_ubuntu_stable_release():
databases["ubuntu"]["problem_types"] = ["Bug", "Package"]