commit:     b053316c6417ee2313bf324020ef4de56ec3c333
Author:     Marek Szuba <marecki <AT> gentoo <DOT> org>
AuthorDate: Tue Apr 28 09:31:40 2020 +0000
Commit:     Marek Szuba <marecki <AT> gentoo <DOT> org>
CommitDate: Mon Nov  9 16:18:42 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b053316c

sys-apps/flashrom: reintroduce a meson-based 1.2 ebuild

Still doesn't work with most, if not all, non-x86 arches - but if the
alternative is messing with the upstream Makefile in order to address
problems such as Bug #753383, I would rather work on fixing Meson
scripts.

Signed-off-by: Marek Szuba <marecki <AT> gentoo.org>

 .../flashrom/files/flashrom-1.2_meson-fixes.patch  | 263 +++++++++++++++++++++
 sys-apps/flashrom/flashrom-1.2-r3.ebuild           | 147 ++++++++++++
 2 files changed, 410 insertions(+)

diff --git a/sys-apps/flashrom/files/flashrom-1.2_meson-fixes.patch 
b/sys-apps/flashrom/files/flashrom-1.2_meson-fixes.patch
new file mode 100644
index 00000000000..84dec173676
--- /dev/null
+++ b/sys-apps/flashrom/files/flashrom-1.2_meson-fixes.patch
@@ -0,0 +1,263 @@
+--- a/meson.build
++++ b/meson.build
+@@ -44,6 +44,7 @@
+ config_gfxnvidia = get_option('config_gfxnvidia')
+ config_internal = get_option('config_internal')
+ config_it8212 = get_option('config_it8212')
++config_jlink_spi = get_option('config_jlink_spi')
+ config_linux_mtd = get_option('config_linux_mtd')
+ config_linux_spi = get_option('config_linux_spi')
+ config_mstarddc_spi = get_option('config_mstarddc_spi')
+@@ -67,6 +68,9 @@
+ deps = []
+ srcs = []
+ 
++need_libftdi = false
++need_libpci = false
++need_libusb = false
+ need_raw_access = false
+ need_serial = false
+ 
+@@ -81,24 +85,24 @@
+   add_project_arguments('-DHAVE_UTSNAME=1', language : 'c')
+ endif
+ 
+-# some programmers require libusb
+-if get_option('usb')
+-  srcs += 'usbdev.c'
+-  deps += dependency('libusb-1.0')
+-else
++if get_option('no_libftdi_programmers')
++  message('Disabling ALL libftdi-based programmers')
++  config_ft2232_spi = false
++  config_usbblaster_spi = false
++endif
++
++if get_option('no_libusb_programmers')
++  message('Disabling ALL libusb-based programmers')
+   config_ch341a_spi = false
+   config_dediprog = false
+-  config_digilent_spi = false
+   config_developerbox_spi = false
++  config_digilent_spi = false
+   config_pickit2_spi = false
++  config_stlinkv3_spi = false
+ endif
+ 
+-# some programmers require libpci
+-if get_option('pciutils')
+-  srcs += 'pcidev.c'
+-  deps += dependency('libpci')
+-  cargs += '-DNEED_PCI=1'
+-else
++if get_option('no_libpci_programmers')
++  message('Disabling ALL libpci-based programmers')
+   config_atahpt = false
+   config_atapromise = false
+   config_atavia = false
+@@ -121,14 +125,17 @@
+ # set defines for configured programmers
+ if config_atahpt
+   srcs += 'atahpt.c'
++  need_libpci = true
+   cargs += '-DCONFIG_ATAHPT=1'
+ endif
+ if config_atapromise
+   srcs += 'atapromise.c'
++  need_libpci = true
+   cargs += '-DCONFIG_ATAPROMISE=1'
+ endif
+ if config_atavia
+   srcs += 'atavia.c'
++  need_libpci = true
+   cargs += '-DCONFIG_ATAVIA=1'
+ endif
+ if config_buspirate_spi
+@@ -138,22 +145,27 @@
+ endif
+ if config_ch341a_spi
+   srcs += 'ch341a_spi.c'
++  need_libusb = true
+   cargs += '-DCONFIG_CH341A_SPI=1'
+ endif
+ if config_dediprog
+   srcs += 'dediprog.c'
++  need_libusb = true
+   cargs += '-DCONFIG_DEDIPROG=1'
+ endif
+ if config_developerbox_spi
+   srcs += 'developerbox_spi.c'
++  need_libusb = true
+   cargs += '-DCONFIG_DEVELOPERBOX_SPI=1'
+ endif
+ if config_digilent_spi
+   srcs += 'digilent_spi.c'
++  need_libusb = true
+   cargs += '-DCONFIG_DIGILENT_SPI=1'
+ endif
+ if config_drkaiser
+   srcs += 'drkaiser.c'
++  need_libpci = true
+   cargs += '-DCONFIG_DRKAISER=1'
+ endif
+ if config_dummy
+@@ -162,12 +174,13 @@
+ endif
+ if config_ft2232_spi
+   srcs += 'ft2232_spi.c'
++  need_libftdi = true
+   cargs += '-DCONFIG_FT2232_SPI=1'
+-  deps += dependency('libftdi1')
+   cargs += '-DHAVE_FT232H=1'
+ endif
+ if config_gfxnvidia
+   srcs += 'gfxnvidia.c'
++  need_libpci = true
+   cargs += '-DCONFIG_GFXNVIDIA=1'
+ endif
+ if config_internal
+@@ -186,6 +199,7 @@
+     srcs += 'sb600spi.c'
+     srcs += 'wbsio_spi.c'
+   endif
++  need_libpci = true
+   config_bitbang_spi = true
+   cargs += '-DCONFIG_INTERNAL=1'
+   if get_option('config_internal_dmi')
+@@ -195,6 +209,7 @@
+ endif
+ if config_it8212
+   srcs += 'it8212.c'
++  need_libpci = true
+   cargs += '-DCONFIG_IT8212=1'
+ endif
+ if config_linux_mtd
+@@ -211,36 +226,44 @@
+ endif
+ if config_nic3com
+   srcs += 'nic3com.c'
++  need_libpci = true
+   cargs += '-DCONFIG_NIC3COM=1'
+ endif
+ if config_nicintel
+   srcs += 'nicintel.c'
++  need_libpci = true
+   cargs += '-DCONFIG_NICINTEL=1'
+ endif
+ if config_nicintel_eeprom
+   srcs += 'nicintel_eeprom.c'
++  need_libpci = true
+   cargs += '-DCONFIG_NICINTEL_EEPROM=1'
+ endif
+ if config_nicintel_spi
+   srcs += 'nicintel_spi.c'
++  need_libpci = true
+   config_bitbang_spi = true
+   cargs += '-DCONFIG_NICINTEL_SPI=1'
+ endif
+ if config_nicnatsemi
+   srcs += 'nicnatsemi.c'
++  need_libpci = true
+   cargs += '-DCONFIG_NICNATSEMI=1'
+ endif
+ if config_nicrealtek
+   srcs += 'nicrealtek.c'
++  need_libpci = true
+   cargs += '-DCONFIG_NICREALTEK=1'
+ endif
+ if config_ogp_spi
+   config_bitbang_spi = true
+   srcs += 'ogp_spi.c'
++  need_libpci = true
+   cargs += '-DCONFIG_OGP_SPI=1'
+ endif
+ if config_pickit2_spi
+   srcs += 'pickit2_spi.c'
++  need_libusb = true
+   cargs += '-DCONFIG_PICKIT2_SPI=1'
+ endif
+ if config_pony_spi
+@@ -252,15 +275,18 @@
+ if config_rayer_spi
+   srcs += 'rayer_spi.c'
+   config_bitbang_spi = true
++  need_libpci = true
+   need_raw_access = true
+   cargs += '-DCONFIG_RAYER_SPI=1'
+ endif
+ if config_satamv
+   srcs += 'satamv.c'
++  need_libpci = true
+   cargs += '-DCONFIG_SATAMV=1'
+ endif
+ if config_satasii
+   srcs += 'satasii.c'
++  need_libpci = true
+   cargs += '-DCONFIG_SATASII=1'
+ endif
+ if config_serprog
+@@ -270,12 +296,19 @@
+ endif
+ if config_usbblaster_spi
+   srcs += 'usbblaster_spi.c'
++  need_libftdi = true
+   cargs += '-DCONFIG_USBBLASTER_SPI=1'
+ endif
+ if config_stlinkv3_spi
+   srcs += 'stlinkv3_spi.c'
++  need_libusb = true
+   cargs += '-DCONFIG_STLINKV3_SPI=1'
+ endif
++if config_jlink_spi
++  srcs += 'jlink_spi.c'
++  cargs += '-DCONFIG_JLINK_SPI=1'
++  deps += dependency('libjaylink')
++endif
+ 
+ # bitbanging SPI infrastructure
+ if config_bitbang_spi
+@@ -296,6 +329,25 @@
+   srcs += 'serial.c'
+ endif
+ 
++# some programmers require libftdi
++if need_libftdi
++  deps += dependency('libftdi1')
++endif
++
++# some programmers require libpci
++if need_libpci
++  srcs += 'pcidev.c'
++  deps += dependency('libpci')
++  cargs += '-DNEED_PCI=1'
++endif
++
++# some programmers require libusb
++if need_libusb
++  srcs += 'usbdev.c'
++  deps += dependency('libusb-1.0')
++endif
++
++
+ prefix = get_option('prefix')
+ sbindir = join_paths(prefix, get_option('sbindir'))
+ libdir = join_paths(prefix, get_option('libdir'))
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -1,5 +1,6 @@
+-option('pciutils', type : 'boolean', value : true, description : 'use 
pciutils')
+-option('usb', type : 'boolean', value : true, description : 'use libusb1')
++option('no_libftdi_programmers', type : 'boolean', value : false, description 
: 'disable all programmers depending on libftdi')
++option('no_libpci_programmers', type : 'boolean', value : false, description 
: 'disable all programmers depending on libpci')
++option('no_libusb_programmers', type : 'boolean', value : false, description 
: 'disable all programmers depending on libusb')
+ 
+ option('config_atahpt', type : 'boolean', value : false, description : 
'Highpoint (HPT) ATA/RAID controllers')
+ option('config_atapromise', type : 'boolean', value : false, description : 
'Promise ATA controller')
+@@ -16,6 +17,7 @@
+ option('config_internal', type : 'boolean', value : true, description : 
'internal/onboard')
+ option('config_internal_dmi', type : 'boolean', value : true, description : 
'Use internal DMI parser')
+ option('config_it8212', type : 'boolean', value : true, description : 'ITE 
IT8212F PATA')
++option('config_jlink_spi', type : 'boolean', value : false, description : 
'SEGGER J-Link and compatible')
+ option('config_linux_mtd', type : 'boolean', value : true, description : 
'Linux MTD interfaces')
+ option('config_linux_spi', type : 'boolean', value : true, description : 
'Linux spidev interfaces')
+ option('config_mstarddc_spi', type : 'boolean', value : false, description : 
'MSTAR DDC support')

diff --git a/sys-apps/flashrom/flashrom-1.2-r3.ebuild 
b/sys-apps/flashrom/flashrom-1.2-r3.ebuild
new file mode 100644
index 00000000000..7d87b514771
--- /dev/null
+++ b/sys-apps/flashrom/flashrom-1.2-r3.ebuild
@@ -0,0 +1,147 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit meson
+
+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 meson_options.txt.
+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 tools"
+
+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="${LIB_DEPEND//\[static-libs(+)]}"
+DEPEND="${RDEPEND}
+       sys-apps/diffutils"
+RDEPEND+=" !internal-dmi? ( sys-apps/dmidecode )"
+
+DOCS=( README Documentation/ )
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-1.2_meson-fixes.patch
+)
+
+src_configure() {
+       local emesonargs=(
+               $(meson_use atahpt config_atahpt)
+               $(meson_use atapromise config_atapromise)
+               $(meson_use atavia config_atavia)
+               $(meson_use buspirate-spi config_buspirate_spi)
+               $(meson_use ch341a-spi config_ch341a_spi)
+               $(meson_use dediprog config_dediprog)
+               $(meson_use developerbox-spi config_developerbox_spi)
+               $(meson_use digilent-spi config_digilent_spi)
+               $(meson_use drkaiser config_drkaiser)
+               $(meson_use dummy config_dummy)
+               $(meson_use ft2232-spi config_ft2232_spi)
+               $(meson_use gfxnvidia config_gfxnvidia)
+               $(meson_use internal config_internal)
+               $(meson_use internal-dmi config_internal_dmi)
+               $(meson_use it8212 config_it8212)
+               $(meson_use jlink-spi config_jlink_spi)
+               $(meson_use linux-mtd config_linux_mtd)
+               $(meson_use linux-spi config_linux_spi)
+               $(meson_use mstarddc-spi config_mstarddc_spi)
+               $(meson_use nic3com config_nic3com)
+               $(meson_use nicintel-eeprom config_nicintel_eeprom)
+               $(meson_use nicintel-spi config_nicintel_spi)
+               $(meson_use nicintel config_nicintel)
+               $(meson_use nicnatsemi config_nicnatsemi)
+               $(meson_use nicrealtek config_nicrealtek)
+               $(meson_use ogp-spi config_ogp_spi)
+               $(meson_use pickit2-spi config_pickit2_spi)
+               $(meson_use pony-spi config_pony_spi)
+               $(meson_use rayer-spi config_rayer_spi)
+               $(meson_use satasii config_satamv)
+               $(meson_use satamv config_satasii)
+               $(meson_use stlinkv3-spi config_stlinkv3_spi)
+               $(meson_use serprog config_serprog)
+               $(meson_use usbblaster-spi config_usbblaster_spi)
+       )
+       meson_src_configure
+}
+
+src_install() {
+       meson_src_install
+
+       if use tools; then
+               dosbin 
"${BUILD_DIR}"/util/ich_descriptors_tool/ich_descriptors_tool
+       fi
+}

Reply via email to