hwinfo: add new package 12227/head
authorAlberto Bursi <bobafetthotmail@gmail.com>
Mon, 1 Jun 2020 17:35:42 +0000 (19:35 +0200)
committerAlberto Bursi <bobafetthotmail@gmail.com>
Mon, 1 Jun 2020 17:35:42 +0000 (19:35 +0200)
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>
utils/hwinfo/Makefile [new file with mode: 0644]
utils/hwinfo/patches/0-hardcoding-version [new file with mode: 0644]
utils/hwinfo/patches/1-remove_libx8emu_dependency [new file with mode: 0644]
utils/hwinfo/patches/2-enable-hw-ids-and-disable-generation-of-tiny-hwinfo-headers [new file with mode: 0644]
utils/hwinfo/patches/3-assorted-Makefile-butchery [new file with mode: 0644]

diff --git a/utils/hwinfo/Makefile b/utils/hwinfo/Makefile
new file mode 100644 (file)
index 0000000..d99a053
--- /dev/null
@@ -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))
diff --git a/utils/hwinfo/patches/0-hardcoding-version b/utils/hwinfo/patches/0-hardcoding-version
new file mode 100644 (file)
index 0000000..cf98939
--- /dev/null
@@ -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
diff --git a/utils/hwinfo/patches/1-remove_libx8emu_dependency b/utils/hwinfo/patches/1-remove_libx8emu_dependency
new file mode 100644 (file)
index 0000000..b7c4eb4
--- /dev/null
@@ -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
diff --git a/utils/hwinfo/patches/2-enable-hw-ids-and-disable-generation-of-tiny-hwinfo-headers b/utils/hwinfo/patches/2-enable-hw-ids-and-disable-generation-of-tiny-hwinfo-headers
new file mode 100644 (file)
index 0000000..3eb8df9
--- /dev/null
@@ -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
diff --git a/utils/hwinfo/patches/3-assorted-Makefile-butchery b/utils/hwinfo/patches/3-assorted-Makefile-butchery
new file mode 100644 (file)
index 0000000..711c40b
--- /dev/null
@@ -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) $?
+