devuan distro ids, derived, system base

This commit is contained in:
Harald Hope 2023-11-17 19:46:39 -08:00
parent 0b22951e48
commit f1fdbd0d60

50
pinxi
View file

@ -50,8 +50,8 @@ use POSIX qw(ceil uname strftime ttyname);
## INXI INFO ##
my $self_name='pinxi';
my $self_version='3.3.31';
my $self_date='2023-11-12';
my $self_patch='10';
my $self_date='2023-11-17';
my $self_patch='11';
## END INXI INFO ##
my ($b_pledge,@pledges);
@ -30952,7 +30952,8 @@ sub get_linux_distro {
my $osr_good = 'antergos|chakra|fedora|guix|mageia|manjaro|oracle|pclinuxos|';
$osr_good .= 'porteux|raspberry pi os|slint|zorin';
# Force use of pretty name because that's only location of derived distro name
my $osr_pretty = 'zinc';
# devuan should catch many devuans spins, which often put their names in pretty
my $osr_pretty = 'devuan|zinc';
my ($b_issue,$b_lsb,$b_osr_pretty,$b_skip_issue,$b_skip_osr);
my ($issue,$lsb_release) = ('/etc/issue','/etc/lsb-release');
# Note: OpenSuse Tumbleweed 2018-05 has made /etc/issue created by sym link to /run/issue
@ -31248,6 +31249,8 @@ sub system_base {
# detect debian steamos before arch steamos
my $base_osr_debian_version = '\belive|lmde|neptune|nitrux|parrot|pureos|';
$base_osr_debian_version .= 'rescatux|septor|sparky|steamos|tails';
my $base_osr_devuan_version = 'crowz|dowse|etertics|\bexe\b|fluxuan|gnuinos|';
$base_osr_devuan_version .= 'gobmis|heads|miyo|refracta|\bstar\b|virage';
# osr has base ids
my $base_default = 'antix-version|bodhi|mx-version';
# base only found in issue
@ -31299,6 +31302,9 @@ sub system_base {
elsif (grep {/($base_osr_debian_version)/i} @osr){
$system_base = debian_id();
}
elsif (grep {/($base_osr_devuan_version)/i} @osr){
$system_base = devuan_id();
}
elsif (grep {/($base_osr_redhat)/i} @osr){
$base_type = 'rhel';
}
@ -31524,6 +31530,9 @@ sub get_os_release {
elsif ($base_type eq 'debian' && $base_version){
$distro_osr = debian_id($base_version);
}
elsif ($base_type eq 'devuan' && $base_version){
$distro_osr = devuan_id($base_version);
}
}
eval $end if $b_log;
return $distro_osr;
@ -31604,6 +31613,41 @@ sub debian_id {
return $id;
}
# args: 0: optional: debian codename
sub devuan_id {
my ($codename) = @_;
my ($devuan_version,$id);
if (-r '/etc/devuan_version'){
$devuan_version = main::reader('/etc/devuan_version','strip',0);
}
$id = 'Devuan';
return if !$devuan_version && !$codename;
my %devuans = (
'1' => 'jesse', # jesse
'2' => 'ascii', # stretch
'3' => 'beowolf', # buster
'4' => 'chimaera', # bullseye
'5' => 'daedalus', # bookworm
'6' => 'excalibur',# trixie
'7' => 'freia', # forky
# '' => 'ceres', # sid/unstable
);
if (main::is_numeric($devuan_version)){
$id .= " $devuan_version " . $devuans{int($devuan_version)};
}
elsif ($codename){
my %by_value = reverse %devuans;
my $version = (main::is_numeric($devuan_version)) ? "$devuan_version $codename": $devuan_version;
$id .= " $version";
}
# like ceres/unstable
elsif ($devuan_version){
$id .= " $devuan_version";
}
eval $end if $b_log;
return $id;
}
# Note, these are only for matching distro/mint derived names.
# Update list as new names become available. While first Mint was 2006-08,
# this method depends on /etc/os-release which was introduced 2012-02.