From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 56DB6138359 for ; Tue, 28 Jul 2020 22:14:47 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 77BFBE0CBF; Tue, 28 Jul 2020 22:14:46 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 48B2CE0CBF for ; Tue, 28 Jul 2020 22:14:46 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 9C7D034EDA4 for ; Tue, 28 Jul 2020 22:14:44 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 8FB48274 for ; Tue, 28 Jul 2020 22:14:42 +0000 (UTC) From: "Marek Szuba" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Marek Szuba" Message-ID: <1595974401.c6600e403c0fc58fc168d7f3b2d0b911ed836fca.marecki@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: sys-apps/flashrom/, sys-apps/flashrom/files/ X-VCS-Repository: repo/gentoo X-VCS-Files: sys-apps/flashrom/files/flashrom-1.2_make-libflashrom-usable.patch sys-apps/flashrom/flashrom-1.2-r2.ebuild X-VCS-Directories: sys-apps/flashrom/ sys-apps/flashrom/files/ X-VCS-Committer: marecki X-VCS-Committer-Name: Marek Szuba X-VCS-Revision: c6600e403c0fc58fc168d7f3b2d0b911ed836fca X-VCS-Branch: master Date: Tue, 28 Jul 2020 22:14:42 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 6a81f79b-a6da-4791-a806-e633f3764900 X-Archives-Hash: 6769f66a458e6666744c37286e840177 commit: c6600e403c0fc58fc168d7f3b2d0b911ed836fca Author: Marek Szuba gentoo org> AuthorDate: Tue Jul 28 22:09:18 2020 +0000 Commit: Marek Szuba gentoo org> CommitDate: Tue Jul 28 22:13:21 2020 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c6600e40 sys-apps/flashrom: try making libflashrom usable for sys-apps/fwupd Create a pkgconfig file so that fwupd can actually find this library, and fix a makefile bug which left the symbol 'boards_known' undefined in the library. Signed-off-by: Marek Szuba gentoo.org> .../flashrom-1.2_make-libflashrom-usable.patch | 70 ++++++++ sys-apps/flashrom/flashrom-1.2-r2.ebuild | 180 +++++++++++++++++++++ 2 files changed, 250 insertions(+) diff --git a/sys-apps/flashrom/files/flashrom-1.2_make-libflashrom-usable.patch b/sys-apps/flashrom/files/flashrom-1.2_make-libflashrom-usable.patch new file mode 100644 index 00000000000..ea15a423059 --- /dev/null +++ b/sys-apps/flashrom/files/flashrom-1.2_make-libflashrom-usable.patch @@ -0,0 +1,70 @@ +1. Add an (extremely primitive) rule for generating a pkgconfig file + for libflashrom, as fwupd cannot find it without one. Note that this + rule depends on several variables to be passed to make, see ebuilds + using this patch for details; +2. Tweak the way library dependencies are passed around a bit to make it + easier to inject them into said pkgconfig file; +3. Move print.o from CLI_OBJS to LIB_OBJS - it contains the array + 'boards_known' which is used in library code. Upstream have already + fixed this in Meson files but not in the Makefile. + +diff -urN a/flashrom.pc.in b/flashrom.pc.in +--- a/flashrom.pc.in 1970-01-01 01:00:00.000000000 +0100 ++++ b/flashrom.pc.in 2020-07-28 22:47:01.928679346 +0200 +@@ -0,0 +1,9 @@ ++prefix=@PREFIX@ ++libdir=${prefix}/@LIBDIR@ ++includedir=${prefix}/@INCLUDEDIR@ ++ ++Name: libflashrom ++Description: library to interact with flashrom ++Version: @VERSION@ ++Libs: -L${libdir} -lflashrom @LIBS@ ++Cflags: -I${includedir} +diff -urN a/Makefile b/Makefile +--- a/Makefile 2019-12-31 18:25:41.000000000 +0100 ++++ b/Makefile 2020-07-28 23:18:41.019492448 +0200 +@@ -570,12 +570,12 @@ + ############################################################################### + # Library code. + +-LIB_OBJS = libflashrom.o layout.o flashrom.o udelay.o programmer.o helpers.o ich_descriptors.o fmap.o ++LIB_OBJS = libflashrom.o layout.o flashrom.o udelay.o programmer.o helpers.o ich_descriptors.o fmap.o print.o + + ############################################################################### + # Frontend related stuff. + +-CLI_OBJS = cli_classic.o cli_output.o cli_common.o print.o ++CLI_OBJS = cli_classic.o cli_output.o cli_common.o + + # versioninfo.inc stores metadata required to build a packaged flashrom. It is generated by the export rule and + # imported below. If versioninfo.inc is not found and the variables are not defined by the user, the info will +@@ -1130,11 +1130,16 @@ + @+$(MAKE) -C util/ich_descriptors_tool/ TARGET_OS=$(TARGET_OS) EXEC_SUFFIX=$(EXEC_SUFFIX) + endif + ++ALL_LIBS = $(LIBS) $(PCILIBS) $(FEATURE_LIBS) $(USBLIBS) $(USB1LIBS) $(JAYLINKLIBS) $(NI845X_LIBS) ++ ++flashrom.pc: ++ sed -e "s#@PREFIX@#$(PREFIX)#" -e "s#@LIBDIR@#$(LIBDIR)#" -e "s#@INCLUDEDIR@#$(INCLUDEDIR)#" -e "s#@VERSION@#$(VERSION)#" -e "s#@LIBS@#$(ALL_LIBS)#" < $@.in > $@.tmp && mv $@.tmp $@ ++ + $(PROGRAM)$(EXEC_SUFFIX): $(OBJS) +- $(CC) $(LDFLAGS) -o $(PROGRAM)$(EXEC_SUFFIX) $(OBJS) $(LIBS) $(PCILIBS) $(FEATURE_LIBS) $(USBLIBS) $(USB1LIBS) $(JAYLINKLIBS) $(NI845X_LIBS) ++ $(CC) $(LDFLAGS) -o $(PROGRAM)$(EXEC_SUFFIX) $(OBJS) $(ALL_LIBS) + +-libflashrom.a: $(LIBFLASHROM_OBJS) +- $(AR) rcs $@ $^ ++libflashrom.a: $(LIBFLASHROM_OBJS) flashrom.pc ++ $(AR) rcs $@ $(LIBFLASHROM_OBJS) + $(RANLIB) $@ + + # TAROPTIONS reduces information leakage from the packager's system. +@@ -1149,7 +1154,7 @@ + # This includes all frontends and libflashrom. + # We don't use EXEC_SUFFIX here because we want to clean everything. + clean: +- rm -f $(PROGRAM) $(PROGRAM).exe libflashrom.a *.o *.d $(PROGRAM).8 $(PROGRAM).8.html $(BUILD_DETAILS_FILE) ++ rm -f $(PROGRAM) $(PROGRAM).exe libflashrom.a flashrom.pc *.o *.d $(PROGRAM).8 $(PROGRAM).8.html $(BUILD_DETAILS_FILE) + @+$(MAKE) -C util/ich_descriptors_tool/ clean + + distclean: clean diff --git a/sys-apps/flashrom/flashrom-1.2-r2.ebuild b/sys-apps/flashrom/flashrom-1.2-r2.ebuild new file mode 100644 index 00000000000..ae710e47031 --- /dev/null +++ b/sys-apps/flashrom/flashrom-1.2-r2.ebuild @@ -0,0 +1,180 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit flag-o-matic toolchain-funcs + +if [[ ${PV} == "9999" ]] ; then + EGIT_REPO_URI="https://review.coreboot.org/flashrom.git" + inherit git-r3 +else + MY_P="${PN}-v${PV}" + SRC_URI="https://download.flashrom.org/releases/${MY_P}.tar.bz2" + KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~sparc ~x86" + S="${WORKDIR}/${MY_P}" +fi + +DESCRIPTION="Utility for reading, writing, erasing and verifying flash ROM chips" +HOMEPAGE="https://flashrom.org/" + +LICENSE="GPL-2" +SLOT="0" +# The defaults match the upstream Makefile. +# Note: Do not list bitbang_spi as it is not a programmer; it's a backend used +# by some other spi programmers. +IUSE_PROGRAMMERS=" + atahpt + +atapromise + +atavia + +buspirate-spi + +ch341a-spi + +dediprog + +developerbox-spi + +digilent-spi + +drkaiser + +dummy + +ft2232-spi + +gfxnvidia + +internal + +it8212 + jlink-spi + +linux-mtd + +linux-spi + mstarddc-spi + +nic3com + +nicintel + +nicintel-eeprom + +nicintel-spi + nicnatsemi + +nicrealtek + +ogp-spi + +pickit2-spi + +pony-spi + +rayer-spi + +satamv + +satasii + +serprog + stlinkv3-spi + +usbblaster-spi +" + +IUSE="${IUSE_PROGRAMMERS} +internal-dmi static tools +wiki" + +LIB_DEPEND=" + atahpt? ( sys-apps/pciutils[static-libs(+)] ) + atapromise? ( sys-apps/pciutils[static-libs(+)] ) + atavia? ( sys-apps/pciutils[static-libs(+)] ) + ch341a-spi? ( virtual/libusb:1[static-libs(+)] ) + dediprog? ( virtual/libusb:1[static-libs(+)] ) + developerbox-spi? ( virtual/libusb:1[static-libs(+)] ) + digilent-spi? ( virtual/libusb:1[static-libs(+)] ) + drkaiser? ( sys-apps/pciutils[static-libs(+)] ) + ft2232-spi? ( dev-embedded/libftdi:=[static-libs(+)] ) + gfxnvidia? ( sys-apps/pciutils[static-libs(+)] ) + internal? ( sys-apps/pciutils[static-libs(+)] ) + it8212? ( sys-apps/pciutils[static-libs(+)] ) + jlink-spi? ( dev-embedded/libjaylink[static-libs(+)] ) + nic3com? ( sys-apps/pciutils[static-libs(+)] ) + nicintel-eeprom? ( sys-apps/pciutils[static-libs(+)] ) + nicintel-spi? ( sys-apps/pciutils[static-libs(+)] ) + nicintel? ( sys-apps/pciutils[static-libs(+)] ) + nicnatsemi? ( sys-apps/pciutils[static-libs(+)] ) + nicrealtek? ( sys-apps/pciutils[static-libs(+)] ) + ogp-spi? ( sys-apps/pciutils[static-libs(+)] ) + pickit2-spi? ( virtual/libusb:0[static-libs(+)] ) + rayer-spi? ( sys-apps/pciutils[static-libs(+)] ) + satamv? ( sys-apps/pciutils[static-libs(+)] ) + satasii? ( sys-apps/pciutils[static-libs(+)] ) + stlinkv3-spi? ( virtual/libusb:1[static-libs(+)] ) + usbblaster-spi? ( dev-embedded/libftdi:=[static-libs(+)] ) +" +RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs(+)]} )" +DEPEND="${RDEPEND} + static? ( ${LIB_DEPEND} ) + sys-apps/diffutils" +RDEPEND+=" !internal-dmi? ( sys-apps/dmidecode )" + +PATCHES=( + "${FILESDIR}"/${PN}-1.2_make-libflashrom-usable.patch +) + +_flashrom_enable() { + local c="CONFIG_${2:-$(echo "$1" | tr '[:lower:]-' '[:upper:]_')}" + args+=( "${c}=$(usex $1 yes no)" ) +} +flashrom_enable() { + local u + for u ; do _flashrom_enable "${u}" ; done +} + +src_prepare() { + # To make libflashrom.a actually useful + append-flags -fPIC + + default +} + +src_compile() { + # Help keep things in sync. + local sprogs=$(echo $( + grep -o 'CONFIG_[A-Z0-9_]*' flashrom.c | \ + LC_ALL=C sort -u | \ + sed 's:^CONFIG_::' | \ + tr '[:upper:]_' '[:lower:]-' | \ + grep -v ni845x-spi)) + local eprogs=$(echo ${IUSE_PROGRAMMERS} | sed -E 's/\B[-+]\b//g') + if [[ ${sprogs} != "${eprogs}" ]] ; then + eerror "The ebuild needs to be kept in sync." + eerror "IUSE set to: ${eprogs}" + eerror "flashrom.c : ${sprogs}" + die "sync IUSE to the list of source programmers" + fi + + # Turn USE flags into CONFIG_xxx settings. + local args=() + flashrom_enable ${eprogs} + _flashrom_enable wiki PRINT_WIKI + _flashrom_enable static STATIC + + # You have to specify at least one programmer, and if you specify more than + # one programmer you have to include either dummy or internal in the list. + # We pick dummy as the default because internal requires libpci. + if ! use internal && ! use dummy ; then + if [[ ${#args[@]} -ne 1 ]] ; then + ewarn "You have to specify at least one programmer, and if you specify" + ewarn "more than one programmer, you have to enable either dummy or" + ewarn "internal as well. 'dummy' will be the default now." + args+=( CONFIG_DUMMY=yes ) + fi + fi + + tc-export AR CC PKG_CONFIG RANLIB + # PREFIX, INCLUDEDIR and LIBDIR are injected into the libflashrom pkgconfig + # file, which is why we pass them here even though src_install() puts all + # files in correct locations without employing make. + # VERSION too goes into the pkgconfig file, and we override the upstream + # value to get rid of the prefix 'v'. + emake \ + INCLUDEDIR="include" \ + LIBDIR="$(get_libdir)" \ + PREFIX="${EPREFIX}/usr" \ + VERSION="${PV}" \ + WARNERROR=no "${args[@]}" \ + all libflashrom.a +} + +src_install() { + dosbin flashrom + doman flashrom.8 + dodoc README Documentation/*.txt + dolib.a libflashrom.a + doheader libflashrom.h + + insinto /usr/$(get_libdir)/pkgconfig + doins ${PN}.pc + + if use tools; then + dosbin util/ich_descriptors_tool/ich_descriptors_tool + fi +}