Received: by mail.netbsd.org (Postfix, from userid 605) id 36E0984E93; Wed, 25 Jul 2018 02:05:29 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by mail.netbsd.org (Postfix) with ESMTP id 77A9A84D41 for ; Wed, 25 Jul 2018 02:05:28 +0000 (UTC) X-Virus-Scanned: amavisd-new at netbsd.org Received: from mail.netbsd.org ([127.0.0.1]) by localhost (mail.netbsd.org [127.0.0.1]) (amavisd-new, port 10025) with ESMTP id 21Zq3JQ6YLP9 for ; Wed, 25 Jul 2018 02:05:27 +0000 (UTC) Received: from cvs.NetBSD.org (ivanova.NetBSD.org [IPv6:2001:470:a085:999:28c:faff:fe03:5984]) by mail.netbsd.org (Postfix) with ESMTP id 019AD84CFC for ; Wed, 25 Jul 2018 02:05:26 +0000 (UTC) Received: by cvs.NetBSD.org (Postfix, from userid 500) id EB7DAFBEC; Wed, 25 Jul 2018 02:05:26 +0000 (UTC) Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_1532484326106420" MIME-Version: 1.0 Date: Wed, 25 Jul 2018 02:05:26 +0000 From: "Paul Goyette" Subject: CVS commit: pkgsrc/sysutils/decode-dimms To: pkgsrc-changes@NetBSD.org Reply-To: pgoyette@netbsd.org X-Mailer: log_accum Message-Id: <20180725020526.EB7DAFBEC@cvs.NetBSD.org> Sender: pkgsrc-changes-owner@NetBSD.org List-Id: pkgsrc-changes.NetBSD.org Precedence: bulk List-Unsubscribe: This is a multi-part message in MIME format. --_----------=_1532484326106420 Content-Disposition: inline Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII" Module Name: pkgsrc Committed By: pgoyette Date: Wed Jul 25 02:05:26 UTC 2018 Added Files: pkgsrc/sysutils/decode-dimms: DESCR Makefile PLIST distinfo pkgsrc/sysutils/decode-dimms/patches: patch-decode-dimms patch-decode-dimms.1 Log Message: Re-add the decode-dimms package after resolving the various issues related to packaging. Many thanks to maya@ for her extensive help in getting this to work! To generate a diff of this commit: cvs rdiff -u -r0 -r1.3 pkgsrc/sysutils/decode-dimms/DESCR \ pkgsrc/sysutils/decode-dimms/Makefile pkgsrc/sysutils/decode-dimms/PLIST cvs rdiff -u -r0 -r1.5 pkgsrc/sysutils/decode-dimms/distinfo cvs rdiff -u -r0 -r1.4 \ pkgsrc/sysutils/decode-dimms/patches/patch-decode-dimms cvs rdiff -u -r0 -r1.1 \ pkgsrc/sysutils/decode-dimms/patches/patch-decode-dimms.1 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. --_----------=_1532484326106420 Content-Disposition: inline Content-Length: 9464 Content-Transfer-Encoding: binary Content-Type: text/x-diff; charset=us-ascii Added files: Index: pkgsrc/sysutils/decode-dimms/DESCR diff -u /dev/null pkgsrc/sysutils/decode-dimms/DESCR:1.3 --- /dev/null Wed Jul 25 02:05:26 2018 +++ pkgsrc/sysutils/decode-dimms/DESCR Wed Jul 25 02:05:26 2018 @@ -0,0 +1,7 @@ +decode-dimms is a small utility that displays the contents of DIMM memory +SPD ROMs in human-readable form. (It is part of a larger collection of +https://git.kernel.org/pub/scm/utils/i2c-tools - most of which is very +Linux-specific.) + +This version of decode-dimms can even directly read the SPD ROM data from +the sysctl variables created by NetBSD's spdmem(4) device driver. Index: pkgsrc/sysutils/decode-dimms/Makefile diff -u /dev/null pkgsrc/sysutils/decode-dimms/Makefile:1.3 --- /dev/null Wed Jul 25 02:05:26 2018 +++ pkgsrc/sysutils/decode-dimms/Makefile Wed Jul 25 02:05:26 2018 @@ -0,0 +1,36 @@ +# $NetBSD: Makefile,v 1.3 2018/07/25 02:05:26 pgoyette Exp $ + +# no Release yet +GIT_COMMIT= 84da8192c7c409f37c1906b60ef166c58aafc847 +DISTNAME= i2c-tools-${GIT_COMMIT} +PKGNAME= decode-dimms-0.0.20181205 +CATEGORIES= sysutils + +MASTER_SITES= https://git.kernel.org/pub/scm/utils/i2c-tools/i2c-tools.git/snapshot/ + +EXTRACT_SUFX= .tar.gz + +MAINTAINER= pkgsrc-users@NetBSD.org +HOMEPAGE= https://git.kernel.org/pub/scm/utils/i2c-tools/ +COMMENT= Decode memory DIMM SPD ROM info +LICENSE= gnu-gpl-v2 + +REPLACE_PERL+= eeprom/decode-dimms + +NO_BUILD= yes + +USE_LANGUAGES= # empty + +ONLY_FOR_PLATFORM= NetBSD-*-* + +INSTALLATION_DIRS= bin ${PKGMANDIR}/man1 +do-install: + ${INSTALL_SCRIPT} ${WRKSRC}/eeprom/decode-dimms \ + ${DESTDIR}${PREFIX}/bin/decode-dimms + ${INSTALL_MAN} ${WRKSRC}/eeprom/decode-dimms.1 \ + ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1/decode-dimms.1 + +.include "../../lang/perl5/module.mk" +.include "../../mk/bsd.pkg.mk" + + Index: pkgsrc/sysutils/decode-dimms/PLIST diff -u /dev/null pkgsrc/sysutils/decode-dimms/PLIST:1.3 --- /dev/null Wed Jul 25 02:05:26 2018 +++ pkgsrc/sysutils/decode-dimms/PLIST Wed Jul 25 02:05:26 2018 @@ -0,0 +1,3 @@ +@comment $NetBSD: PLIST,v 1.3 2018/07/25 02:05:26 pgoyette Exp $ +bin/decode-dimms +man/man1/decode-dimms.1 Index: pkgsrc/sysutils/decode-dimms/distinfo diff -u /dev/null pkgsrc/sysutils/decode-dimms/distinfo:1.5 --- /dev/null Wed Jul 25 02:05:26 2018 +++ pkgsrc/sysutils/decode-dimms/distinfo Wed Jul 25 02:05:26 2018 @@ -0,0 +1,8 @@ +$NetBSD: distinfo,v 1.5 2018/07/25 02:05:26 pgoyette Exp $ + +SHA1 (i2c-tools-84da8192c7c409f37c1906b60ef166c58aafc847.tar.gz) = 0765225f1f7ee63d0ebb3a3881ad819fa9d48d9e +RMD160 (i2c-tools-84da8192c7c409f37c1906b60ef166c58aafc847.tar.gz) = 0e1f9c86e5005bf8534789e4dea532bc8dda522a +SHA512 (i2c-tools-84da8192c7c409f37c1906b60ef166c58aafc847.tar.gz) = 4cd57f6cc4424888fe4e7bede28b7a5e15e7f658b57fa4df528cc3636cd5124036a69492de9636d81478e58b660275df2dee239999bd5ea0bec13313b240b352 +Size (i2c-tools-84da8192c7c409f37c1906b60ef166c58aafc847.tar.gz) = 95860 bytes +SHA1 (patch-decode-dimms) = a64426b096120f225a55793afde9ef720fd8b15b +SHA1 (patch-decode-dimms.1) = c1c1444a73fa848eda0223e2c176819d4ded6641 Index: pkgsrc/sysutils/decode-dimms/patches/patch-decode-dimms diff -u /dev/null pkgsrc/sysutils/decode-dimms/patches/patch-decode-dimms:1.4 --- /dev/null Wed Jul 25 02:05:26 2018 +++ pkgsrc/sysutils/decode-dimms/patches/patch-decode-dimms Wed Jul 25 02:05:26 2018 @@ -0,0 +1,141 @@ +$NetBSD: patch-decode-dimms,v 1.4 2018/07/25 02:05:26 pgoyette Exp $ + +Add NetBSD-specific ability to use spdmem(4)'s sysctl values as +input. + +--- eeprom/decode-dimms.orig 2018-05-31 13:53:29.771907986 +0800 ++++ eeprom/decode-dimms 2018-03-03 13:20:15.572272632 +0800 +@@ -1,4 +1,4 @@ +-#!/usr/bin/perl -w ++#!/usr/pkg/bin/perl -w + # + # EEPROM data decoder for SDRAM DIMM modules + # +@@ -42,15 +42,14 @@ + use Fcntl qw(:DEFAULT :seek); + use File::Basename; + use vars qw($opt_html $opt_bodyonly $opt_side_by_side $opt_merge +- $opt_igncheck $use_sysfs $use_hexdump $sbs_col_width +- @vendors %decode_callback $revision @dimm $current %hexdump_cache); ++ $opt_igncheck $use_sysfs $use_hexdump $use_sysctl $sbs_col_width ++ @vendors %decode_callback $revision @dimm $current %hexdump_cache ++ %sysctl_cache); + + use constant LITTLEENDIAN => "little-endian"; + use constant BIGENDIAN => "big-endian"; + +-$revision = '$Revision: 1.4 $ ($Date: 2018/07/25 02:05:26 $)'; +-$revision =~ s/\$\w+: (.*?) \$/$1/g; +-$revision =~ s/ \([^()]*\)//; ++$revision = '20171205'; + + @vendors = ( + ["AMD", "AMI", "Fairchild", "Fujitsu", +@@ -341,6 +340,7 @@ + ); + + $use_sysfs = -d '/sys/bus'; ++$use_sysctl = 0; + + # We consider that no data was written to this area of the SPD EEPROM if + # all bytes read 0x00 or all bytes read 0xff +@@ -2252,6 +2252,26 @@ + } + } + ++# read data from a NetBSD (or equivalent) sysctl variable ++ ++sub read_sysctl($) ++{ ++ ++ # Look in the cache first ++ return @{$sysctl_cache{$_[0]}} if exists $sysctl_cache{$_[0]}; ++ ++ my $sysctl_var = sprintf("hw.%s.spd_data", $_[0]); ++ open(PIPE, "-|", "sysctl -r $sysctl_var") ++ or die "Cannot read sysctl variable $sysctl_var"; ++ sysread(PIPE, my $eeprom, 512); # XXX Assumed maximum size! XXX ++ close PIPE or die "sysctl returned $?"; ++ my @bytes = unpack("C*", $eeprom); ++ ++ # Cache the data for later use ++ $hexdump_cache{$_[0]} = \@bytes; ++ return @bytes; ++} ++ + # Read bytes from SPD-EEPROM + # Note: offset must be a multiple of 16! + sub readspd($$$) +@@ -2261,6 +2281,9 @@ + if ($use_hexdump) { + @bytes = read_hexdump($dimm_i); + return @bytes[$offset..($offset + $size - 1)]; ++ } elsif ($use_sysctl) { ++ @bytes = read_sysctl($dimm_i); ++ return @bytes[$offset..($offset + $size - 1)]; + } elsif ($use_sysfs) { + # Kernel 2.6 with sysfs + sysopen(HANDLE, "$dimm_i/eeprom", O_RDONLY) +@@ -2337,7 +2360,7 @@ + # Parse command-line + foreach (@ARGV) { + if ($_ eq '-h' || $_ eq '--help') { +- print "Usage: $0 [-c] [-f [-b]] [-x|-X file [files..]]\n", ++ print "Usage: $0 [-c] [-f [-b]] [-x|-X|-s file [files..]]\n", + " $0 -h\n\n", + " -f, --format Print nice html output\n", + " -b, --bodyonly Don't print html header\n", +@@ -2351,6 +2374,8 @@ + " -x, Read data from hexdump files\n", + " -X, Same as -x except treat multibyte hex\n", + " data as little endian\n", ++ " -s, Use NetBSD-compatible sysctl(8) to obtain\n", ++ " EEPROM data\n", + " -h, --help Display this usage summary\n"; + print <<"EOF"; + +@@ -2395,13 +2420,20 @@ + $use_hexdump = LITTLEENDIAN; + next; + } ++ if ($_ eq '-s') { ++ if (-x "/sbin/sysctl") { ++ $use_sysctl = 1; ++ } else { die "No /sbin/sysctl available for -s"; } ++ next; ++ } + + if (m/^-/) { + print STDERR "Unrecognized option $_\n"; + exit; + } + +- push @dimm, { eeprom => basename($_), file => $_ } if $use_hexdump; ++ push @dimm, { eeprom => basename($_), file => $_ } ++ if ($use_sysctl || $use_hexdump); + } + + # Default values +@@ -2479,7 +2511,7 @@ + # * chk_spd: The checksum or CRC value found in the EEPROM + # * chk_calc: The checksum or CRC computed from the EEPROM data + # Keys are added over time. +-@dimm = get_dimm_list() unless $use_hexdump; ++@dimm = get_dimm_list() unless ($use_sysctl || $use_hexdump); + + for my $i (0 .. $#dimm) { + my @bytes = readspd(0, 128, $dimm[$i]->{file}); +@@ -2531,7 +2563,7 @@ + printl("Decoding EEPROM", $dimm[$current]->{eeprom}); + } + +- if (!$use_hexdump) { ++ if (!$use_hexdump && !$use_sysctl) { + if ($dimm[$current]->{file} =~ /-([\da-f]+)$/i) { + my $dimm_num = hex($1) - 0x50 + 1; + if ($dimm_num >= 1 && $dimm_num <= 8) { +@@ -2737,3 +2769,4 @@ + printl2("\n\nNumber of SDRAM DIMMs detected and decoded", scalar @dimm); + + print "\n" if ($opt_html && !$opt_bodyonly); ++ Index: pkgsrc/sysutils/decode-dimms/patches/patch-decode-dimms.1 diff -u /dev/null pkgsrc/sysutils/decode-dimms/patches/patch-decode-dimms.1:1.1 --- /dev/null Wed Jul 25 02:05:26 2018 +++ pkgsrc/sysutils/decode-dimms/patches/patch-decode-dimms.1 Wed Jul 25 02:05:26 2018 @@ -0,0 +1,39 @@ +$NetBSD: patch-decode-dimms.1,v 1.1 2018/07/25 02:05:26 pgoyette Exp $ + +Document the -s option (use spdmem(4)'s sysctl for input) + +--- eeprom/decode-dimms.1.orig 2018-07-25 07:26:21.321627123 +0800 ++++ eeprom/decode-dimms.1 2018-07-25 07:26:56.967194551 +0800 +@@ -22,7 +22,7 @@ + decode-dimms \- decode the information found in memory module SPD EEPROMs + .SH SYNOPSIS + .B decode-dimms +-[-c] [-f [-b]] [-x|-X file [files..]] ++[-c] [-f [-b]] [-x|-X|-s file [files..]] + .br + .B decode-dimms + -h +@@ -32,8 +32,7 @@ + .B decode-dimms + tool is to decode the information found in memory module SPD EEPROMs. + The SPD data is read either from the running system or dump files. +-In the former case, the tool requires a kernel module to be loaded: +-eeprom, at24 or ee1004 (for DDR4 SDRAM.) ++In the former case, the tool requires the spdmem kernel module to be loaded. + .SH PARAMETERS + .TP + .B \-f, --format +@@ -60,9 +59,11 @@ + .B \-X + Same as -x except treat multibyte hex data as little endian + .TP ++.B \-s ++Read the SPD data from the sysctl (9) node hw..spd_data instead of ++from a file. ++.TP + .B \-h, --help + Display the usage summary +-.SH SEE ALSO +-.BR decode-vaio (1) + .SH AUTHORS + Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner, Jean Delvare --_----------=_1532484326106420--