add hwinfo package, it is a complete system hardware detection tool, similar to lshw but is written in C and has minimal dependencies. It is part of core SUSE Linux applications like Yast installer and system configurator tool so it's regularly maintained. Signed-off-by: Alberto Bursi <bobafetthotmail@gmail.com>lilik-openwrt-22.03
@ -0,0 +1,89 @@ | |||||
include $(TOPDIR)/rules.mk | |||||
PKG_NAME:=hwinfo | |||||
PKG_VERSION:=21.70 | |||||
PKG_RELEASE:=1 | |||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | |||||
PKG_SOURCE_URL:=https://codeload.github.com/openSUSE/hwinfo/tar.gz/$(PKG_VERSION)? | |||||
PKG_HASH:=bc3c4a4498e4abc32a54497ced715bbae5dfd19dd999da294bca6d69fea2db52 | |||||
PKG_LICENSE:=GPL-2.0-or-later | |||||
PKG_MAINTAINER:=Alberto Bursi <bobafetthotmail@gmail.com> | |||||
PKG_BUILD_DEPENDS:= hwinfo/host | |||||
include $(INCLUDE_DIR)/package.mk | |||||
include $(INCLUDE_DIR)/host-build.mk | |||||
# Execute in host build directory | |||||
HOST_MAKE_FLAGS += -C $(HOST_BUILD_DIR) | |||||
define Host/Configure | |||||
# copy uuid.h to another location in host build dir as that's where this package expects it | |||||
$(INSTALL_DIR) $(STAGING_DIR_HOST)/include/uuid/ | |||||
$(CP) $(STAGING_DIR_HOST)/include/e2fsprogs/uuid/uuid.h $(STAGING_DIR_HOST)/include/uuid/uuid.h | |||||
endef | |||||
define Host/Compile | |||||
# Build using host compiler and let it generate the files we need | |||||
# CFLAGS, CPPFLAGS & LDFLAGS need to be passed with CC because they are being ingored | |||||
CC="$(HOSTCC) $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(HOST_LDFLAGS)" $(MAKE) $(HOST_MAKE_FLAGS) | |||||
endef | |||||
define Host/Install | |||||
$(INSTALL_DIR) $(STAGING_DIR_HOST)/share/hwinfo | |||||
$(CP) $(HOST_BUILD_DIR)/src/isdn/cdb/isdn_cdb $(STAGING_DIR_HOST)/share/hwinfo/ | |||||
$(CP) $(HOST_BUILD_DIR)/src/isdn/cdb/mk_isdnhwdb $(STAGING_DIR_HOST)/share/hwinfo/ | |||||
$(CP) $(HOST_BUILD_DIR)/src/ids/check_hd $(STAGING_DIR_HOST)/share/hwinfo/ | |||||
endef | |||||
define Build/Configure | |||||
# Fetch prebuilt files from host build dir | |||||
$(INSTALL_DIR) $(PKG_BUILD_DIR)/src/isdn/cdb/ | |||||
$(CP) $(STAGING_DIR_HOST)/share/hwinfo/isdn_cdb $(PKG_BUILD_DIR)/src/isdn/cdb/ | |||||
$(CP) $(STAGING_DIR_HOST)/share/hwinfo/mk_isdnhwdb $(PKG_BUILD_DIR)/src/isdn/cdb/ | |||||
$(INSTALL_DIR) $(PKG_BUILD_DIR)/src/ids/ | |||||
$(CP) $(STAGING_DIR_HOST)/share/hwinfo/check_hd $(PKG_BUILD_DIR)/src/ids/ | |||||
# Set copied files modtime to one day in the future | |||||
# to prevent rebuilding them | |||||
perl -e 'utime(time() + 86400, time() + 86400, $$$$ARGV[0])' \ | |||||
$(PKG_BUILD_DIR)/src/isdn/cdb/isdn_cdb | |||||
perl -e 'utime(time() + 86400, time() + 86400, $$$$ARGV[0])' \ | |||||
$(PKG_BUILD_DIR)/src/isdn/cdb/mk_isdnhwdb | |||||
perl -e 'utime(time() + 86400, time() + 86400, $$$$ARGV[0])' \ | |||||
$(PKG_BUILD_DIR)/src/ids/check_hd | |||||
endef | |||||
define Package/hwinfo | |||||
SECTION:=utils | |||||
CATEGORY:=Utilities | |||||
TITLE:=probe the hardware present in the system | |||||
URL:=https://github.com/openSUSE/hwinfo | |||||
DEPENDS:= +libuuid | |||||
endef | |||||
define Package/hwinfo/description | |||||
hwinfo/libhd are used to probe for the hardware present in the system. | |||||
It can be used to generate a system overview log which can be later | |||||
used for support. | |||||
This project provides a hardware probing library libhd.so and a | |||||
command line tool hwinfo using it. A major project using this library | |||||
is YaST, the SUSE installation tool. | |||||
endef | |||||
define Package/hwinfo/install | |||||
$(INSTALL_DIR) $(1)/usr/bin | |||||
$(CP) $(PKG_BUILD_DIR)/hwinfo $(1)/usr/bin/ | |||||
$(INSTALL_DIR) $(1)/usr/lib | |||||
$(CP) $(PKG_BUILD_DIR)/src/libhd.so* $(1)/usr/lib/ | |||||
endef | |||||
$(eval $(call BuildPackage,hwinfo)) | |||||
$(eval $(call HostBuild)) |
@ -0,0 +1,19 @@ | |||||
hardcode version of hwinfo, this must be changed in sync | |||||
with hwinfo version changes when updating the package | |||||
--- a/Makefile | |||||
+++ b/Makefile | |||||
@@ -12,12 +12,8 @@ | |||||
GIT2LOG := $(shell if [ -x ./git2log ] ; then echo ./git2log --update ; else echo true ; fi) | |||||
GITDEPS := $(shell [ -d .git ] && echo .git/HEAD .git/refs/heads .git/refs/tags) | |||||
-BRANCH := $(shell [ -d .git ] && git branch | perl -ne 'print $$_ if s/^\*\s*//') | |||||
-ifdef HWINFO_VERSION | |||||
-VERSION := $(shell echo ${HWINFO_VERSION} > VERSION; cat VERSION) | |||||
-else | |||||
-VERSION := $(shell $(GIT2LOG) --version VERSION ; cat VERSION) | |||||
-endif | |||||
+BRANCH := master | |||||
+VERSION := $(shell echo 21.7 > VERSION; cat VERSION) | |||||
PREFIX := hwinfo-$(VERSION) | |||||
include Makefile.common |
@ -0,0 +1,68 @@ | |||||
the library libx86emu is used only for manipulating VBIOS | |||||
firmware to get some information from it. | |||||
Since it's not crucial for OpenWrt usecase and it's a pain | |||||
to compile this package with this dependency in OpenWrt due to | |||||
host builds and whatnot, we simply remove it and disable this | |||||
functionality in hwinfo. | |||||
This also saves some space. | |||||
--- a/Makefile | |||||
+++ b/Makefile | |||||
@@ -25,13 +25,14 @@ | |||||
endif | |||||
ULIBDIR = $(LIBDIR) | |||||
+# this library has been removed from the code, disabling it here too | |||||
# ia64 | |||||
-ifneq ($(filter i386 x86_64, $(ARCH)),) | |||||
-SLIBS += -lx86emu | |||||
-TLIBS += -lx86emu | |||||
-SO_LIBS += -lx86emu | |||||
-TSO_LIBS += -lx86emu | |||||
-endif | |||||
+#ifneq ($(filter i386 x86_64, $(ARCH)),) | |||||
+#SLIBS += -lx86emu | |||||
+#TLIBS += -lx86emu | |||||
+#SO_LIBS += -lx86emu | |||||
+#TSO_LIBS += -lx86emu | |||||
+#endif | |||||
SHARED_FLAGS = | |||||
OBJS_NO_TINY = names.o parallel.o modem.o | |||||
--- a/src/hd/bios.c | |||||
+++ b/src/hd/bios.c | |||||
@@ -447,9 +447,10 @@ | |||||
} | |||||
} | |||||
-#if defined(__i386__) || defined (__x86_64__) | |||||
- get_vbe_info(hd_data, vbe); | |||||
-#endif | |||||
+//disabled as we removed the library needed for this function | |||||
+//#if defined(__i386__) || defined (__x86_64__) | |||||
+// get_vbe_info(hd_data, vbe); | |||||
+//#endif | |||||
if(vbe->ok) { | |||||
bt->vbe_ver = vbe->version; | |||||
--- a/src/hd/bios.h | |||||
+++ b/src/hd/bios.h | |||||
@@ -5,4 +5,5 @@ | |||||
#define BIOS_RAM_SIZE 0x100 | |||||
void hd_scan_bios(hd_data_t *hd_data); | |||||
-void get_vbe_info(hd_data_t *hd_data, vbe_info_t *vbe); | |||||
+//disabled as we removed the lib needed by this function | |||||
+//void get_vbe_info(hd_data_t *hd_data, vbe_info_t *vbe); | |||||
--- a/src/hd/mdt.c | |||||
+++ b/src/hd/mdt.c | |||||
@@ -1,4 +1,6 @@ | |||||
-#if defined(__i386__) || defined (__x86_64__) | |||||
+//disabling this whole thing as it's using the lib we have removed | |||||
+//#if defined(__i386__) || defined (__x86_64__) | |||||
+#if defined(__disabled__) || defined (__disabled__) | |||||
#define _GNU_SOURCE | |||||
@ -0,0 +1,75 @@ | |||||
>>enable all IDs for hwinfo | |||||
>>changes to make it respect compile flags | |||||
>>disable the generation of "tiny hwinfo ID tables" because it is a long | |||||
process and has no purpose, it seems I cannot even build the "tiny" version of hwinfo | |||||
on my OpenSUSE system, so I guess that it is just legacy stuff that bitrotted. | |||||
--- a/src/ids/Makefile | |||||
+++ b/src/ids/Makefile | |||||
@@ -17,47 +17,47 @@ | |||||
src/usb src/usb2 src/isapnp src/monitor src/camera src/tv2 src/tv src/dvb2 src/dvb \ | |||||
src/chipcard src/modem src/pcmcia src/s390 src/sdio | |||||
-ifeq "$(ARCH)" "i386" | |||||
+#ifeq "$(ARCH)" "i386" | |||||
IDFILES += src/x11.i386 src/modem.i386 | |||||
-endif | |||||
+#endif | |||||
-ifeq "$(ARCH)" "ppc" | |||||
+#ifeq "$(ARCH)" "ppc" | |||||
IDFILES += src/x11.ppc src/x11.ppc.special | |||||
-endif | |||||
+#endif | |||||
-ifeq "$(ARCH)" "alpha" | |||||
+#ifeq "$(ARCH)" "alpha" | |||||
IDFILES += src/x11.axp | |||||
-endif | |||||
+#endif | |||||
-ifeq "$(ARCH)" "sparc" | |||||
+#ifeq "$(ARCH)" "sparc" | |||||
IDFILES += src/x11.sparc | |||||
-endif | |||||
+#endif | |||||
-ifeq "$(ARCH)" "sparc64" | |||||
+#ifeq "$(ARCH)" "sparc64" | |||||
IDFILES += src/x11.sparc | |||||
-endif | |||||
+#endif | |||||
-ifeq "$(ARCH)" "ia64" | |||||
+#ifeq "$(ARCH)" "ia64" | |||||
IDFILES += src/x11.ia64 | |||||
-endif | |||||
+#endif | |||||
-ifeq "$(ARCH)" "x86_64" | |||||
+#ifeq "$(ARCH)" "x86_64" | |||||
IDFILES += src/x11.amd64 | |||||
-endif | |||||
+#endif | |||||
IDFILES += src/pci src/storage src/sound src/mouse src/braille | |||||
$(LIBHD_D): hd_ids.o | |||||
- ar r $(LIBHD) $? | |||||
+ $(AR) r $(LIBHD) $? | |||||
check_hd: check_hd.c | |||||
- $(CC) $(CFLAGS) $< -o $@ | |||||
+ $(CC) $(LDFLAGS) $(CFLAGS) $< -o $@ | |||||
-hd_ids.c: hd_ids.h hd_ids_tiny.h | |||||
+hd_ids.c: hd_ids.h | |||||
hd_ids.h hd.ids: check_hd $(IDFILES) | |||||
./check_hd --check --sort --cfile hd_ids.h $(IDFILES) | |||||
-hd_ids_tiny.h: check_hd hd.ids | |||||
- ./check_hd --mini --cfile hd_ids_tiny.h --log=hd_tiny.log --out=hd_tiny.ids hd.ids | |||||
+#hd_ids_tiny.h: check_hd hd.ids | |||||
+# ./check_hd --mini --cfile hd_ids_tiny.h --log=hd_tiny.log --out=hd_tiny.ids hd.ids | |||||
@ -0,0 +1,197 @@ | |||||
Some makefile modifications to: | |||||
>>disable the logic that detects and sets architecture (it screws up cross-compiling) | |||||
>>disable some secondary build functions like creating changelogs or report files for other tools | |||||
>>disable the install functionality as we take the files we need with OpenWrt build system | |||||
>>changes to all makefiles to respect the compile flags | |||||
--- a/Makefile | |||||
+++ b/Makefile | |||||
@@ -1,6 +1,6 @@ | |||||
TOPDIR = $(CURDIR) | |||||
SUBDIRS = src | |||||
-TARGETS = hwinfo hwinfo.pc changelog | |||||
+TARGETS = hwinfo | |||||
CLEANFILES = hwinfo hwinfo.pc hwinfo.static hwscan hwscan.static hwscand hwscanqueue doc/libhd doc/*~ | |||||
LIBS = -lhd | |||||
SLIBS = -lhd -luuid | |||||
@@ -18,11 +18,11 @@ | |||||
include Makefile.common | |||||
-ifeq "$(ARCH)" "x86_64" | |||||
-LIBDIR ?= /usr/lib64 | |||||
-else | |||||
+#ifeq "$(ARCH)" "x86_64" | |||||
+#LIBDIR ?= /usr/lib64 | |||||
+#else | |||||
LIBDIR ?= /usr/lib | |||||
-endif | |||||
+#endif | |||||
ULIBDIR = $(LIBDIR) | |||||
# this library has been removed from the code, disabling it here too | |||||
@@ -39,13 +39,13 @@ | |||||
.PHONY: fullstatic static shared tiny doc diet tinydiet uc tinyuc | |||||
-ifdef HWINFO_VERSION | |||||
+#ifdef HWINFO_VERSION | |||||
changelog: | |||||
@true | |||||
-else | |||||
-changelog: $(GITDEPS) | |||||
- $(GIT2LOG) --changelog changelog | |||||
-endif | |||||
+#else | |||||
+#changelog: $(GITDEPS) | |||||
+# $(GIT2LOG) --changelog changelog | |||||
+#endif | |||||
hwscan: hwscan.o $(LIBHD) | |||||
$(CC) hwscan.o $(LDFLAGS) $(CFLAGS) $(LIBS) -o $@ | |||||
@@ -99,28 +99,29 @@ | |||||
@cd doc ; doxygen libhd.doxy | |||||
install: | |||||
- install -d -m 755 $(DESTDIR)/sbin $(DESTDIR)/usr/sbin $(DESTDIR)$(ULIBDIR) \ | |||||
- $(DESTDIR)$(ULIBDIR)/pkgconfig $(DESTDIR)/usr/include | |||||
- install -m 755 hwinfo $(DESTDIR)/usr/sbin | |||||
- install -m 755 src/ids/check_hd $(DESTDIR)/usr/sbin | |||||
- install -m 755 src/ids/convert_hd $(DESTDIR)/usr/sbin | |||||
- if [ -f $(LIBHD_SO) ] ; then \ | |||||
- install $(LIBHD_SO) $(DESTDIR)$(ULIBDIR) ; \ | |||||
- ln -snf $(LIBHD_NAME) $(DESTDIR)$(ULIBDIR)/$(LIBHD_SONAME) ; \ | |||||
- ln -snf $(LIBHD_SONAME) $(DESTDIR)$(ULIBDIR)/$(LIBHD_BASE).so ; \ | |||||
- else \ | |||||
- install -m 644 $(LIBHD) $(DESTDIR)$(ULIBDIR) ; \ | |||||
- fi | |||||
- install -m 644 hwinfo.pc $(DESTDIR)$(ULIBDIR)/pkgconfig | |||||
- install -m 644 src/hd/hd.h $(DESTDIR)/usr/include | |||||
- perl -pi -e "s/define\s+HD_VERSION\b.*/define HD_VERSION\t\t$(LIBHD_MAJOR_VERSION)/" $(DESTDIR)/usr/include/hd.h | |||||
- perl -pi -e "s/define\s+HD_MINOR_VERSION\b.*/define HD_MINOR_VERSION\t$(LIBHD_MINOR_VERSION)/" $(DESTDIR)/usr/include/hd.h | |||||
- install -m 755 getsysinfo $(DESTDIR)/usr/sbin | |||||
- install -m 755 src/isdn/cdb/mk_isdnhwdb $(DESTDIR)/usr/sbin | |||||
- install -d -m 755 $(DESTDIR)/usr/share/hwinfo | |||||
- install -d -m 755 $(DESTDIR)/var/lib/hardware/udi | |||||
- install -m 644 src/isdn/cdb/ISDN.CDB.txt $(DESTDIR)/usr/share/hwinfo | |||||
- install -m 644 src/isdn/cdb/ISDN.CDB.hwdb $(DESTDIR)/usr/share/hwinfo | |||||
+# install -d -m 755 $(DESTDIR)/sbin $(DESTDIR)/usr/sbin $(DESTDIR)$(ULIBDIR) \ | |||||
+# $(DESTDIR)$(ULIBDIR)/pkgconfig $(DESTDIR)/usr/include | |||||
+# install -m 755 hwinfo $(DESTDIR)/usr/sbin | |||||
+# install -m 755 src/ids/check_hd $(DESTDIR)/usr/sbin | |||||
+# install -m 755 src/ids/convert_hd $(DESTDIR)/usr/sbin | |||||
+# if [ -f $(LIBHD_SO) ] ; then \ | |||||
+# install $(LIBHD_SO) $(DESTDIR)$(ULIBDIR) ; \ | |||||
+# ln -snf $(LIBHD_NAME) $(DESTDIR)$(ULIBDIR)/$(LIBHD_SONAME) ; \ | |||||
+# ln -snf $(LIBHD_SONAME) $(DESTDIR)$(ULIBDIR)/$(LIBHD_BASE).so ; \ | |||||
+# else \ | |||||
+# install -m 644 $(LIBHD) $(DESTDIR)$(ULIBDIR) ; \ | |||||
+# fi | |||||
+# install -m 644 hwinfo.pc $(DESTDIR)$(ULIBDIR)/pkgconfig | |||||
+# install -m 644 src/hd/hd.h $(DESTDIR)/usr/include | |||||
+# perl -pi -e "s/define\s+HD_VERSION\b.*/define HD_VERSION\t\t$(LIBHD_MAJOR_VERSION)/" $(DESTDIR)/usr/include/hd.h | |||||
+# perl -pi -e "s/define\s+HD_MINOR_VERSION\b.*/define HD_MINOR_VERSION\t$(LIBHD_MINOR_VERSION)/" $(DESTDIR)/usr/include/hd.h | |||||
+# install -m 755 getsysinfo $(DESTDIR)/usr/sbin | |||||
+# install -m 755 src/isdn/cdb/mk_isdnhwdb $(DESTDIR)/usr/sbin | |||||
+# install -d -m 755 $(DESTDIR)/usr/share/hwinfo | |||||
+# install -d -m 755 $(DESTDIR)/var/lib/hardware/udi | |||||
+# install -m 644 src/isdn/cdb/ISDN.CDB.txt $(DESTDIR)/usr/share/hwinfo | |||||
+# install -m 644 src/isdn/cdb/ISDN.CDB.hwdb $(DESTDIR)/usr/share/hwinfo | |||||
+ @true | |||||
archive: changelog | |||||
@if [ ! -d .git ] ; then echo no git repo ; false ; fi | |||||
--- a/Makefile.common | |||||
+++ b/Makefile.common | |||||
@@ -1,28 +1,26 @@ | |||||
# libhd/Makefile.common | |||||
-ARCH := $(shell uname -m) | |||||
-ifeq "$(ARCH)" "i486" | |||||
-ARCH := i386 | |||||
-endif | |||||
-ifeq "$(ARCH)" "i586" | |||||
-ARCH := i386 | |||||
-endif | |||||
-ifeq "$(ARCH)" "i686" | |||||
-ARCH := i386 | |||||
-endif | |||||
-ifeq "$(ARCH)" "parisc" | |||||
-EXTRA_FLAGS := -fPIC $(EXTRA_FLAGS) | |||||
-endif | |||||
+#ARCH := $(shell uname -m) | |||||
+#ifeq "$(ARCH)" "i486" | |||||
+#ARCH := i386 | |||||
+#endif | |||||
+#ifeq "$(ARCH)" "i586" | |||||
+#ARCH := i386 | |||||
+#endif | |||||
+#ifeq "$(ARCH)" "i686" | |||||
+#ARCH := i386 | |||||
+#endif | |||||
+#ifeq "$(ARCH)" "parisc" | |||||
+#EXTRA_FLAGS := -fPIC $(EXTRA_FLAGS) | |||||
+#endif | |||||
LIBHD_VERSION := $(shell cat $(TOPDIR)/VERSION) | |||||
LIBHD_MINOR_VERSION := $(shell cut -d . -f 2 $(TOPDIR)/VERSION) | |||||
LIBHD_MAJOR_VERSION := $(shell cut -d . -f 1 $(TOPDIR)/VERSION) | |||||
-RPM_OPT_FLAGS ?= -O2 | |||||
- | |||||
CC ?= gcc | |||||
LD = ld | |||||
-CFLAGS += $(RPM_OPT_FLAGS) -Wall -Wno-pointer-sign -pipe -g $(SHARED_FLAGS) $(EXTRA_FLAGS) -I$(TOPDIR)/src/hd | |||||
+CFLAGS += -Wall -Wno-pointer-sign $(SHARED_FLAGS) $(EXTRA_FLAGS) -I$(TOPDIR)/src/hd | |||||
SHARED_FLAGS = -fPIC | |||||
LDFLAGS += -Lsrc | |||||
@@ -36,7 +34,7 @@ | |||||
LIBHD_SO = $(TOPDIR)/src/$(LIBHD_NAME) | |||||
LIBHD_D = $(TOPDIR)/src/.lib | |||||
-export CC TOPDIR CFLAGS LIBHD ARCH | |||||
+export CC TOPDIR CFLAGS LIBHD | |||||
.PHONY: all distclean clean install subdirs | |||||
--- a/src/Makefile | |||||
+++ b/src/Makefile | |||||
@@ -12,7 +12,7 @@ | |||||
#endif | |||||
$(LIBHD): $(OBJS) | |||||
- ar r $@ $? | |||||
+ $(AR) r $@ $? | |||||
@rm -f $(LIBHD_D) | |||||
ifdef SHARED_FLAGS | |||||
--- a/src/hd/Makefile | |||||
+++ b/src/hd/Makefile | |||||
@@ -12,4 +12,4 @@ | |||||
@perl -pi -e "s/define\s+HD_MINOR_VERSION\s+\d+/define HD_MINOR_VERSION\t$(LIBHD_MINOR_VERSION)/" $@ | |||||
$(LIBHD_D): $(OBJS) | |||||
- ar r $(LIBHD) $? | |||||
+ $(AR) r $(LIBHD) $? | |||||
--- a/src/isdn/Makefile | |||||
+++ b/src/isdn/Makefile | |||||
@@ -5,5 +5,5 @@ | |||||
include $(TOPDIR)/Makefile.common | |||||
$(LIBHD_D): $(OBJS) | |||||
- ar r $(LIBHD) $? | |||||
+ $(AR) r $(LIBHD) $? | |||||
--- a/src/smp/Makefile | |||||
+++ b/src/smp/Makefile | |||||
@@ -4,4 +4,4 @@ | |||||
include $(TOPDIR)/Makefile.common | |||||
$(LIBHD_D): $(OBJS) | |||||
- ar r $(LIBHD) $? | |||||
+ $(AR) r $(LIBHD) $? | |||||