om-bug-report 0.1-1 (x86_64;znver1;aarch64) 2024-17783
0

Status rejected
Submitter rugyada [@T] gmail.com
Platform rolling
Repository main
URL https://abf.openmandriva.org/build_lists/435081
Packages
om-bug-report-0.1-1.x86_64.source
om-bug-report-0.1-1.x86_64.binary
om-bug-report-0.1-1.znver1.source
om-bug-report-0.1-1.znver1.binary
om-bug-report-0.1-1.aarch64.source
om-bug-report-0.1-1.aarch64.binary
Build Date 2024-08-10 08:34:29 +0000 UTC
Last Updated 2024-08-11 09:50:02.196771965 +0000 UTC
$ git show --format=fuller --patch-with-stat --summary 86f430817c8b1abde4efb1c5fe84b8718b3fdc3b

commit 86f430817c8b1abde4efb1c5fe84b8718b3fdc3b
Author:     rugyada <rugyada@gmail.com>
AuthorDate: Wed Aug 7 11:19:16 2024 +0200
Commit:     rugyada <rugyada@gmail.com>
CommitDate: Wed Aug 7 11:19:16 2024 +0200

    add files
---
 om-bug-report.sh   | 529 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 om-bug-report.spec |  40 ++++
 2 files changed, 569 insertions(+)
 create mode 100755 om-bug-report.sh
 create mode 100644 om-bug-report.spec

diff --git a/om-bug-report.sh b/om-bug-report.sh
new file mode 100755
index 0000000..eaa1e99
--- /dev/null
+++ b/om-bug-report.sh
@@ -0,0 +1,529 @@
+#!/bin/sh
+# Based on nvidia-bug-report
+# Adapted and modified for OpenMandriva
+# by TPG (tpgxyz@gmail.com)
+# www.openmandriva.org
+
+BASE_LOG_FILENAME="om-bug-report-$(date +%Y%m%d%H%M%S).log"
+COMP_CMD="cat"
+
+set_filename() {
+    LOG_FILENAME=$BASE_LOG_FILENAME
+    OLD_LOG_FILENAME="$BASE_LOG_FILENAME.old"
+}
+
+usage_bug_report_message() {
+    printf '%s\n' "Please include the '$LOG_FILENAME' file when reporting"
+    printf '%s\n' "your bug via the https://issues.openmandriva.org ."
+}
+
+usage() {
+    printf '%s\n' ""
+    printf '%s\n' "$(basename $0): OpenMandriva bug reporting shell script."
+    printf '%s\n' ""
+    usage_bug_report_message
+    printf '%s\n' ""
+    printf '%s\n' "$(basename $0) [OPTION]..."
+    printf '%s\n' "    -h / --help"
+    printf '%s\n' "        Print this help output and exit."
+    printf '%s\n' "    -o / --output-file <file>"
+    printf '%s\n' "        Write output to <file>."
+    printf '%s\n' "        Default: write to om-bug-report.log(.zst)."
+    printf '%s\n' "    -c / --compress"
+    printf '%s\n' "        If zstd is available, the output file"
+    printf '%s\n' "        will be automatically compressed, and \".zst\" "
+    printf '%s\n' "        will be appended to the filename."
+    printf '%s\n' "    -u / --user"
+    printf '%s\n' "        Make the file owned by the given user and put it"
+    printf '%s\n' "        in the user's home directory unless -o was given"
+    printf '%s\n' "        with an absolute path"
+    printf '%s\n' ""
+}
+
+OMDV_BUG_REPORT_CHANGE='$Change: 004 $'
+OMDV_BUG_REPORT_VERSION="$(printf '%s\n' "$OMDV_BUG_REPORT_CHANGE" | tr -c -d "[:digit:]")"
+
+# Set the default filename so that it won't be empty in the usage message
+set_filename
+
+# Parse arguments: Optionally set output file, or printf help
+SAVED_FLAGS=$@
+while [ "$1" != "" ]; do
+    case $1 in
+        -o | --output-file )    if [ -z $2 ]; then
+                                    usage
+                                    exit 1
+                                elif [ "$(printf '%s\n' "$2" | cut -c 1)" = "-" ]; then
+                                    printf '%s\n' "Warning: Questionable filename"\
+                                         "\"$2\": possible missing argument?"
+                                fi
+                                BASE_LOG_FILENAME="$2"
+                                if [ -n "$PW_DIR" -a "$(echo $BASE_LOG_FILENAME |cut -b1)" != "/" ]; then
+                                    BASE_LOG_FILENAME="$PW_DIR/$BASE_LOG_FILENAME"
+                                fi
+                                # override the default filename
+                                set_filename
+                                shift
+                                ;;
+        -c | --compress )       if ! command -v zstd 2>&1 > /dev/null ; then
+                                    printf '%s\n' "zstd compression program is missing."
+                                    printf '%s\n' "zstd compression program is missing."
+                                else
+                                    COMP_CMD="zstd -15 -T0 -c"
+                                    LOG_FILENAME="$BASE_LOG_FILENAME.zst"
+                                    OLD_LOG_FILENAME="$BASE_LOG_FILENAME.old.zst"
+                                fi
+                                ;;
+        -h | --help )           usage
+                                exit
+                                ;;
+        -u | --user )           USERNAME="$2"
+                                shift
+                                P="$(grep "^$USERNAME:" /etc/passwd)"
+                                if [ "$?" != "0" ]; then
+                                    echo "No such user $USERNAME"
+                                    exit 1
+                                fi
+                                PW_UID="$(echo $P |cut -d: -f3)"
+                                PW_GID="$(echo $P |cut -d: -f4)"
+                                PW_DIR="$(echo $P |cut -d: -f6)"
+                                if [ -n "$BASE_LOG_FILENAME" -a "$(echo $BASE_LOG_FILENAME |cut -b1)" != "/" ]; then
+                                    BASE_LOG_FILENAME="$PW_DIR/$BASE_LOG_FILENAME"
+                                    set_filename
+                                fi
+                                ;;
+        * )                     usage
+                                exit 1
+    esac
+    shift
+done
+
+#
+# echo_metadata() - echo metadata of specified file
+#
+
+echo_metadata() {
+    printf "*** ls: "
+    /bin/ls -l --full-time "$1" 2> /dev/null
+
+    if [ $? -ne 0 ]; then
+        # Run dumb ls -l. We might not get one-second mtime granularity, but
+        # that is probably okay.
+        ls -l "$1"
+    fi
+}
+
+#
+# append() - append the contents of the specified file to the log
+#
+
+append() {
+    (
+        printf '%s\n' "____________________________________________"
+        printf '%s\n' ""
+
+        if [ ! -f "$1" ]; then
+            printf '%s\n' "*** $1 does not exist"
+        elif [ ! -r "$1" ]; then
+            printf '%s\n' "*** $1 is not readable"
+        else
+            printf '%s\n' "*** $1"
+            echo_metadata "$1"
+            cat  "$1"
+        fi
+        printf '%s\n' ""
+    ) | $COMP_CMD >> $LOG_FILENAME
+}
+
+#
+# append_silent() - same as append(), but don't printf anything
+# if the file does not exist
+#
+
+append_silent() {
+    (
+        if [ -f "$1" ] && [ -r "$1" ]; then
+            printf '%s\n' "____________________________________________"
+            printf '%s\n' ""
+            printf '%s\n' "*** $1"
+            echo_metadata "$1"
+            cat  "$1"
+            printf '%s\n' ""
+        fi
+    ) | $COMP_CMD >> $LOG_FILENAME
+}
+
+#
+# append_glob() - use the shell to expand a list of files, and invoke
+# append() for each of them
+#
+
+append_glob() {
+    for i in $(ls $1 2> /dev/null;); do
+        append "$i"
+    done
+}
+
+#
+# append_file_or_dir_silent() - if $1 is a regular file, append it; otherwise,
+# if $1 is a directory, append all files under it.  Don't printf anything if the
+# file does not exist.
+#
+
+append_file_or_dir_silent() {
+    if [ -f "$1" ]; then
+        append "$1"
+    elif [ -d "$1" ]; then
+        append_glob "$1/*"
+    fi
+}
+
+#
+# append_binary_file() - Encode a binary file into a ascii string format
+# using 'base64' and append the contents output to the log file
+#
+
+append_binary_file() {
+    (
+        base64="$(command -v base64)"
+
+        if [ -n "$base64" ] && [ -x "$base64" ]; then
+                if [ -f "$1" ] && [ -r "$1" ]; then
+                    printf '%s\n' "____________________________________________"
+                    printf '%s\n' ""
+                    printf '%s\n' "base64 \"$1\""
+                    printf '%s\n' ""
+                    base64 "$1" 2> /dev/null
+                    printf '%s\n' ""
+                fi
+        else
+            printf '%s\n' "Skipping $1 output (base64 not found)"
+            printf '%s\n' ""
+        fi
+
+    ) | $COMP_CMD >> $LOG_FILENAME
+}
+
+#
+# Start of script
+#
+
+# check that we are root (needed for `lspci -vxxx` and potentially for
+# accessing kernel log files)
+
+if [ "$(id -u)" -ne 0 ]; then
+    printf '%s\n' "ERROR: Please run $(basename $0) as root."
+    exit 1
+fi
+
+# move any old log file (zipped) out of the way
+
+if [ -f $LOG_FILENAME ]; then
+    mv $LOG_FILENAME $OLD_LOG_FILENAME
+fi
+
+# make sure what we can write to the log file
+
+touch $LOG_FILENAME 2> /dev/null
+
+if [ $? -ne 0 ]; then
+    printf '%s\n' ""
+    printf '%s\n' "ERROR: Working directory is not writable; please cd to a directory"
+    printf '%s\n' "       where you have write permission so that the $LOG_FILENAME"
+    printf '%s\n' "       file can be written."
+    printf '%s\n' ""
+    exit 1
+fi
+
+# printf a start message to stdout
+
+printf '%s\n' ""
+printf '%s\n' "om-bug-report.sh will now collect information about your"
+printf '%s\n' "system and create the file '$LOG_FILENAME'."
+printf '%s\n' "It may take several seconds to run."
+printf '%s\n' ""
+printf '%s\n' "Running $(basename $0)...";
+
+# printf prologue to the log file
+
+(
+    printf '%s\n' "____________________________________________"
+    printf '%s\n' ""
+    printf '%s\n' "Start of OpenMandriva bug report log file.  Please include this file, along"
+    printf '%s\n' "with a detailed description of your problem, when reporting a bug"
+    printf '%s\n' "via the https://issues.openmandriva.org ."
+    printf '%s\n' ""
+    printf '%s\n' "om-bug-report.sh Version: $OMDV_BUG_REPORT_VERSION"
+    printf '%s\n' ""
+    printf '%s\n' "Generation date: $(date)"
+    printf '%s\n' "uname: $(uname -a)"
+    printf '%s\n' "command line flags: $SAVED_FLAGS"
+    printf '%s\n' ""
+) | $COMP_CMD >> $LOG_FILENAME
+
+# hostnamectl information
+
+(
+    printf '%s\n' ""
+    printf '%s\n' "____________________________________________"
+    printf '%s\n' ""
+    printf '%s\n' "System host infrmation:"
+    printf '%s\n' ""
+    hostnamectl 2> /dev/null
+    printf '%s\n' ""
+) | $COMP_CMD >> $LOG_FILENAME
+
+# append useful files
+append "/etc/system-release"
+append_silent "/etc/os-release"
+
+# append environment output
+
+(
+    printf '%s\n' ""
+    printf '%s\n' "____________________________________________"
+    printf '%s\n' ""
+    printf '%s\n' "Environment settings:"
+    printf '%s\n' ""
+    systemctl show-environment 2> /dev/null
+    printf '%s\n' ""
+) | $COMP_CMD >> $LOG_FILENAME
+
+append_silent "/etc/vconsole.conf"
+append_silent "/etc/default/grub"
+
+# append useful /proc files
+append "/proc/uptime"
+append "/proc/cmdline"
+append "/proc/cpuinfo"
+append "/proc/interrupts"
+append "/proc/meminfo"
+append "/proc/modules"
+append "/proc/version"
+append "/proc/asound/cards"
+append "/proc/asound/pcm"
+append "/proc/asound/modules"
+append "/proc/asound/devices"
+append "/proc/asound/version"
+append "/proc/asound/timers"
+append "/proc/asound/hwdep"
+
+for CARD in /proc/asound/card[0-9]*; do
+    for CODEC in $CARD/codec*; do
+        [ -d $CODEC ] && append_glob "$CODEC/*"
+        [ -f $CODEC ] && append "$CODEC"
+    done
+    for ELD in $CARD/eld*; do
+        [ -f $ELD ] && append "$ELD"
+    done
+done
+
+# lspci information
+
+(
+    printf '%s\n' "____________________________________________"
+    printf '%s\n' ""
+
+    lspci="$(command -v lspci)"
+
+    if [ -n "$lspci" ] && [ -x "$lspci" ]; then
+        printf '%s\n' "$lspci"
+        printf '%s\n' ""
+        $lspci -v 2> /dev/null
+        printf '%s\n' ""
+    else
+        printf '%s\n' "Skipping lspci output (lspci not found)"
+        printf '%s\n' ""
+    fi
+) | $COMP_CMD >> $LOG_FILENAME
+
+# lsusb information
+
+(
+    printf '%s\n' "____________________________________________"
+    printf '%s\n' ""
+
+    lsusb="$(command -v lsusb)"
+
+    if [ -n "$lsusb" ] && [ -x "$lsusb" ]; then
+        printf '%s\n' "$lsusb"
+        printf '%s\n' ""
+        $lsusb 2> /dev/null
+        printf '%s\n' ""
+    else
+        printf '%s\n' "Skipping lsusb output (lsusb not found)"
+        printf '%s\n' ""
+    fi
+) | $COMP_CMD >> $LOG_FILENAME
+
+# dmidecode
+
+(
+    printf '%s\n' "____________________________________________"
+    printf '%s\n' ""
+
+    dmidecode="$(command -v dmidecode)"
+
+    if [ -n "$dmidecode" ] && [ -x "$dmidecode" ]; then
+        printf '%s\n' "$dmidecode"
+        printf '%s\n' ""
+        $dmidecode 2> /dev/null
+        printf '%s\n' ""
+    else
+        printf '%s\n' "Skipping dmidecode output (dmidecode not found)"
+        printf '%s\n' ""
+    fi
+) | $COMP_CMD >> $LOG_FILENAME
+
+# append coredumpctl --list output
+
+(
+    printf '%s\n' ""
+    printf '%s\n' "____________________________________________"
+    printf '%s\n' ""
+    printf '%s\n' "List available coredumps:"
+    printf '%s\n' ""
+    coredumpctl list 2> /dev/null
+    printf '%s\n' ""
+) | $COMP_CMD >> $LOG_FILENAME
+
+# append systemctl --failed output
+
+(
+    printf '%s\n' ""
+    printf '%s\n' "____________________________________________"
+    printf '%s\n' ""
+    printf '%s\n' "Systemd failed units:"
+    printf '%s\n' ""
+    systemctl --no-pager --failed 2> /dev/null
+    printf '%s\n' ""
+) | $COMP_CMD >> $LOG_FILENAME
+
+# append systemctl unit files with theirs statuses
+
+(
+    printf '%s\n' ""
+    printf '%s\n' "____________________________________________"
+    printf '%s\n' ""
+    printf '%s\n' "Systemd units files:"
+    printf '%s\n' ""
+    systemctl --no-pager list-unit-files 2> /dev/null
+    printf '%s\n' ""
+) | $COMP_CMD >> $LOG_FILENAME
+
+# printf cc & c++ and ld version info
+
+(
+    if [ -n "$(command -v cc)" ]; then
+        printf '%s\n' "____________________________________________"
+        printf '%s\n' ""
+        cc -v 2>&1
+    fi
+
+    if [ -n "$(command -v c++)" ]; then
+        printf '%s\n' "____________________________________________"
+        printf '%s\n' ""
+        c++ -v 2>&1
+    fi
+
+    if [ -n "$(command -v ld)" ]; then
+        printf '%s\n' "____________________________________________"
+        printf '%s\n' ""
+        ld -v 2>&1
+    fi
+    printf '%s\n' ""
+) | $COMP_CMD >> $LOG_FILENAME
+
+# append journalctl output
+
+(
+    printf '%s\n' ""
+    printf '%s\n' "____________________________________________"
+    printf '%s\n' ""
+    printf '%s\n' "Systemd boot log:"
+    printf '%s\n' ""
+    journalctl --no-hostname -b 2> /dev/null
+    printf '%s\n' ""
+) | $COMP_CMD >> $LOG_FILENAME
+
+# Append any Xorg/Wayland logs found in home directories
+cat /etc/passwd \
+    | cut -d : -f 6 \
+    | sort | uniq \
+    | while read DIR; do
+	[ -e "$DIR/.xsession-errors" ] && append_silent "$DIR/.xsession-errors"
+	[ -e "$DIR/.local/share/sddm/wayland-session.log" ] && append_silent "$DIR/.local/share/sddm/wayland-session.log"
+	[ -e "$DIR/.local/share/sddm/xorg-session.log" ] && append_silent "$DIR/.local/share/sddm/xorg-session.log"
+    done
+
+xconfig_file_list=
+NEW_LINE="
+"
+
+for log_basename in /var/log/Xorg; do
+    for i in 0 1 2 3 4 5 6 7; do
+        for log_suffix in log ; do
+            log_filename="${log_basename}.${i}.${log_suffix}"
+            append_silent "${log_filename}"
+
+            # look for the X configuration files/directories referenced by this X log
+            if [ -f ${log_filename} ] && [ -r ${log_filename} ]; then
+                config_file="$(grep "Using config file" ${log_filename} | cut -f 2 -d \")"
+                config_dir="$(grep "Using config directory" ${log_filename} | cut -f 2 -d \")"
+                sys_config_dir="$(grep "Using system config directory" ${log_filename} | cut -f 2 -d \")"
+                for j in "$config_file" "$config_dir" "$sys_config_dir"; do
+                    if [ "$j" ]; then
+                        # multiple of the logs we find above might reference the
+                        # same X configuration file; keep a list of which X
+                        # configuration files we find, and only append X
+                        # configuration files we have not already appended
+                        printf '%s\n' "${xconfig_file_list}" | grep ":${j}:" > /dev/null
+                        if [ "$?" != '0' ]; then
+                            xconfig_file_list="${xconfig_file_list}:${j}:"
+                            if [ -d "$j" ]; then
+                                append_glob "$j/*.conf"
+                            else
+                                append "$j"
+                            fi
+                        fi
+                    fi
+                done
+            fi
+
+        done
+    done
+done
+
+# append installed rpm package list output
+
+(
+    printf '%s\n' ""
+    printf '%s\n' "____________________________________________"
+    printf '%s\n' ""
+    printf '%s\n' "Installed RPM packages:"
+    printf '%s\n' ""
+    rpm -qa | sort -u 2> /dev/null
+    printf '%s\n' ""
+) | $COMP_CMD >> $LOG_FILENAME
+
+sync > /dev/null 2>&1
+
+(
+    printf '%s\n' "____________________________________________"
+
+    # printf epilogue to log file
+
+    printf '%s\n' ""
+    printf '%s\n' "End of OpenMandriva bug report log file."
+) | $COMP_CMD >> $LOG_FILENAME
+
+# Done
+
+printf '%s\n' "... done."
+if [ -n "$PW_UID" -a -n "$PW_GID" ]; then
+    chown "$PW_UID:$PW_GID" "$LOG_FILENAME"
+fi
+usage_bug_report_message
+printf '%s\n' ""
+
+#EOF
diff --git a/om-bug-report.spec b/om-bug-report.spec
new file mode 100644
index 0000000..a98baea
--- /dev/null
+++ b/om-bug-report.spec
@@ -0,0 +1,40 @@
+Summary:	%{distribution} bug helper
+Name:		om-bug-report
+Version:	0.1
+Release:	1
+License:	GPLv3+
+Group:		System/Base
+Url:		%{disturl}
+Source0:	%{name}.sh
+BuildArch:	noarch
+%rename omv-bug-report
+%rename omdv-bug-report
+Requires:	/bin/sh
+Requires:	coreutils
+Requires:	systemd
+Requires:	system-release
+Requires:	pciutils
+Requires:	usbutils
+Requires:	dmidecode
+Requires:	systemd-coredump
+Requires:	setup
+Suggests:	zstd
+
+%description
+A simple tool to gather system information to ease bug resolve.
+
+%prep
+
+%build
+
+%install
+mkdir -p %{buildroot}%{_bindir}
+install -c -m755 %{SOURCE0} %{buildroot}%{_bindir}/%{name}
+ln -sf %{_bindir}/%{name} %{buildroot}%{_bindir}/%{name}.sh
+
+# (tpg) keep comapt with old name
+ln -sf %{_bindir}/%{name} %{buildroot}%{_bindir}/omv-bug-report.sh
+ln -sf %{_bindir}/%{name} %{buildroot}%{_bindir}/omv-bug-report
+
+%files
+%{_bindir}/*
Not Available

rugyada [@T] gmail.comNo Comment.102d 00hrs