diff options
Diffstat (limited to 'repo/lshw')
-rw-r--r-- | repo/lshw/15565229509455527de9ce7cbb9530e2b31d043b.patch | 59 | ||||
-rw-r--r-- | repo/lshw/2b1c730b493d647bbab4854713571458e82a81e7.patch | 46 | ||||
-rw-r--r-- | repo/lshw/fix-musl-sc_long_bit.patch | 14 | ||||
-rw-r--r-- | repo/lshw/lshw.xibuild | 34 | ||||
-rw-r--r-- | repo/lshw/wrapper-for-basename.patch | 107 |
5 files changed, 260 insertions, 0 deletions
diff --git a/repo/lshw/15565229509455527de9ce7cbb9530e2b31d043b.patch b/repo/lshw/15565229509455527de9ce7cbb9530e2b31d043b.patch new file mode 100644 index 0000000..0d9c65d --- /dev/null +++ b/repo/lshw/15565229509455527de9ce7cbb9530e2b31d043b.patch @@ -0,0 +1,59 @@ +From 15565229509455527de9ce7cbb9530e2b31d043b Mon Sep 17 00:00:00 2001 +From: Lyonel Vincent <lyonel@ezix.org> +Date: Wed, 27 May 2020 01:07:16 +0200 +Subject: [PATCH] clean-up JSON output + +--- + src/core/hw.cc | 29 +++++++++++++++++++++++++---- + 1 file changed, 25 insertions(+), 4 deletions(-) + +diff --git a/src/core/hw.cc b/src/core/hw.cc +index ab345fe..6aea7cf 100644 +--- a/src/core/hw.cc ++++ b/src/core/hw.cc +@@ -1650,13 +1650,20 @@ string hwNode::asJSON(unsigned level) + resources.clear(); + } + +- for (unsigned int i = 0; i < countChildren(); i++) ++ if(!::enabled("output:list") && countChildren()>0) + { +- out << getChild(i)->asJSON(visible(getClassName()) ? level + 2 : 1); +- if (visible(getChild(i)->getClassName())) ++ out << "," << endl; ++ out << spaces(2*level+2); ++ out << "\"children\" : ["; ++ for (unsigned int i = 0; i < countChildren(); i++) + { +- out << "," << endl; ++ out << getChild(i)->asJSON(visible(getClassName()) ? level + 2 : 1); ++ if (visible(getChild(i)->getClassName()) && i<countChildren()-1) ++ { ++ out << "," << endl; ++ } + } ++ out << "]"; + } + + if(visible(getClassName())) +@@ -1665,6 +1672,20 @@ string hwNode::asJSON(unsigned level) + out << "}"; + } + ++ if(::enabled("output:list") && countChildren()>0) ++ { ++ bool needcomma = visible(getClassName()); ++ for (unsigned int i = 0; i < countChildren(); i++) ++ { ++ string json = getChild(i)->asJSON(visible(getClassName()) ? level + 2 : 1); ++ ++ if(needcomma && strip(json)!="") ++ out << "," << endl; ++ out << getChild(i)->asJSON(visible(getClassName()) ? level + 2 : 1); ++ needcomma |= strip(json)!=""; ++ } ++ } ++ + if (::enabled("output:list") && level == 0) + { + out << endl << "]" << endl; diff --git a/repo/lshw/2b1c730b493d647bbab4854713571458e82a81e7.patch b/repo/lshw/2b1c730b493d647bbab4854713571458e82a81e7.patch new file mode 100644 index 0000000..57dccb5 --- /dev/null +++ b/repo/lshw/2b1c730b493d647bbab4854713571458e82a81e7.patch @@ -0,0 +1,46 @@ +From 2b1c730b493d647bbab4854713571458e82a81e7 Mon Sep 17 00:00:00 2001 +From: Lyonel Vincent <lyonel@ezix.org> +Date: Tue, 26 May 2020 01:00:37 +0200 +Subject: [PATCH] JSON output clean-up (list/object) + +--- + src/core/hw.cc | 5 ++--- + src/lshw.cc | 1 + + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/core/hw.cc b/src/core/hw.cc +index aca424c..ab345fe 100644 +--- a/src/core/hw.cc ++++ b/src/core/hw.cc +@@ -1400,7 +1400,7 @@ string hwNode::asJSON(unsigned level) + config = getConfigKeys(); + resources = getResources("\" value=\""); + +- if (level == 0) ++ if (::enabled("output:list") && level == 0) + { + out << "[" << endl; + } +@@ -1665,9 +1665,8 @@ string hwNode::asJSON(unsigned level) + out << "}"; + } + +- if (level == 0) ++ if (::enabled("output:list") && level == 0) + { +- out.seekp(-2, std::ios_base::end); + out << endl << "]" << endl; + } + +diff --git a/src/lshw.cc b/src/lshw.cc +index 219a008..571b1c3 100644 +--- a/src/lshw.cc ++++ b/src/lshw.cc +@@ -84,6 +84,7 @@ char **argv) + + disable("isapnp"); + ++ disable("output:list"); + disable("output:json"); + disable("output:db"); + disable("output:xml"); diff --git a/repo/lshw/fix-musl-sc_long_bit.patch b/repo/lshw/fix-musl-sc_long_bit.patch new file mode 100644 index 0000000..b409dfe --- /dev/null +++ b/repo/lshw/fix-musl-sc_long_bit.patch @@ -0,0 +1,14 @@ +--- a/src/core/abi.cc ++++ b/src/core/abi.cc +@@ -21,7 +21,11 @@ + { + // are we compiled as 32- or 64-bit process ? + long sc = sysconf(LONG_BIT); ++#ifdef _SC_LONG_BIT + if(sc==-1) sc = sysconf(_SC_LONG_BIT); ++#else ++ if(sc==-1) sc = (CHAR_BIT * sizeof(long)); ++#endif + if(sc!=-1) system.setWidth(sc); + + pushd(PROC_SYS); diff --git a/repo/lshw/lshw.xibuild b/repo/lshw/lshw.xibuild new file mode 100644 index 0000000..9316489 --- /dev/null +++ b/repo/lshw/lshw.xibuild @@ -0,0 +1,34 @@ +#!/bin/sh + +NAME="lshw" +DESC="Hardware Lister" + +MAKEDEPS="sqlite3 linux-headers" + +PKG_VER=B.02.19.2 +SOURCE="https://ezix.org/software/files/lshw-$PKG_VER.tar.gz" + +ADDITIONAL=" +15565229509455527de9ce7cbb9530e2b31d043b.patch +2b1c730b493d647bbab4854713571458e82a81e7.patch +fix-musl-sc_long_bit.patch +wrapper-for-basename.patch +" + +prepare () { + apply_patches + sed -i 's/install -p/install/' src/Makefile +} + +build() { + make RPM_OPT_FLAGS=-DNONLS +} + +check() { + ./src/lshw -version +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/lshw/wrapper-for-basename.patch b/repo/lshw/wrapper-for-basename.patch new file mode 100644 index 0000000..dabfa79 --- /dev/null +++ b/repo/lshw/wrapper-for-basename.patch @@ -0,0 +1,107 @@ +From 49a2c103c7d1127045ced8e8c887279a36a3f357 Mon Sep 17 00:00:00 2001 +From: Felix Janda <felix.janda@posteo.de> +Date: Wed, 12 Apr 2017 21:29:11 -0400 +Subject: [PATCH 1/2] Add wrapper for basename + +basename comes in two variants. A GNU and a POSIX version. Currently, +the GNU version is mostly used, but this breaks compilation on systems +without glibc. + +Switch to the portable version. Because this variant modifies its +argument, similarly to dirname, a wrapper is needed. +--- + src/core/osutils.cc | 10 ++++++++++ + src/core/osutils.h | 1 + + src/core/pci.cc | 4 ++-- + src/core/sysfs.cc | 8 ++++---- + 5 files changed, 19 insertions(+), 8 deletions(-) + +diff --git a/src/core/osutils.cc b/src/core/osutils.cc +index e93b79e..1624ab1 100644 +--- a/src/core/osutils.cc ++++ b/src/core/osutils.cc +@@ -426,6 +426,16 @@ string dirname(const string & path) + return result; + } + ++string basename(const string & path) ++{ ++ size_t len = path.length(); ++ char *buffer = new char[len + 1]; ++ path.copy(buffer, len); ++ buffer[len] = '\0'; ++ string result = basename(buffer); ++ delete[] buffer; ++ return result; ++} + + string spaces(unsigned int count, const string & space) + { +diff --git a/src/core/osutils.h b/src/core/osutils.h +index 549258e..55f5548 100644 +--- a/src/core/osutils.h ++++ b/src/core/osutils.h +@@ -15,6 +15,7 @@ bool samefile(const std::string & path1, const std::string & path2); + std::string readlink(const std::string & path); + std::string realpath(const std::string & path); + std::string dirname(const std::string & path); ++std::string basename(const std::string & path); + bool loadfile(const std::string & file, std::vector < std::string > &lines); + + size_t splitlines(const std::string & s, +diff --git a/src/core/pci.cc b/src/core/pci.cc +index d1625cf..1163ad2 100644 +--- a/src/core/pci.cc ++++ b/src/core/pci.cc +@@ -1131,9 +1131,9 @@ bool scan_pci(hwNode & n) + string drivername = readlink(string(devices[i]->d_name)+"/driver"); + string modulename = readlink(string(devices[i]->d_name)+"/driver/module"); + +- device->setConfig("driver", basename(const_cast<char *>(drivername.c_str()))); ++ device->setConfig("driver", basename(drivername)); + if(exists(modulename)) +- device->setConfig("module", basename(const_cast<char *>(modulename.c_str()))); ++ device->setConfig("module", basename(modulename)); + + if(exists(string(devices[i]->d_name)+"/rom")) + { +diff --git a/src/core/sysfs.cc b/src/core/sysfs.cc +index 97dbab5..0fc4855 100644 +--- a/src/core/sysfs.cc ++++ b/src/core/sysfs.cc +@@ -99,7 +99,7 @@ static string sysfs_getbustype(const string & path) + { + devname = + string(fs.path + "/bus/") + string(namelist[i]->d_name) + +- "/devices/" + basename(path.c_str()); ++ "/devices/" + basename(path); + + if (samefile(devname, path)) + return string(namelist[i]->d_name); +@@ -139,7 +139,7 @@ static string sysfstobusinfo(const string & path) + + if (bustype == "virtio") + { +- string name = basename(path.c_str()); ++ string name = basename(path); + if (name.compare(0, 6, "virtio") == 0) + return "virtio@" + name.substr(6); + else +@@ -207,7 +207,7 @@ string entry::driver() const + string driverlink = This->devpath + "/driver"; + if (!exists(driverlink)) + return ""; +- return basename(readlink(driverlink).c_str()); ++ return basename(readlink(driverlink)); + } + + +@@ -288,7 +288,7 @@ string entry::name_in_class(const string & classname) const + + string entry::name() const + { +- return basename(This->devpath.c_str()); ++ return basename(This->devpath); + } + + |