From b053316c6417ee2313bf324020ef4de56ec3c333 Mon Sep 17 00:00:00 2001 From: Marek Szuba Date: Tue, 28 Apr 2020 10:31:40 +0100 Subject: 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 --- .../flashrom/files/flashrom-1.2_meson-fixes.patch | 263 +++++++++++++++++++++ sys-apps/flashrom/flashrom-1.2-r3.ebuild | 147 ++++++++++++ 2 files changed, 410 insertions(+) create mode 100644 sys-apps/flashrom/files/flashrom-1.2_meson-fixes.patch create mode 100644 sys-apps/flashrom/flashrom-1.2-r3.ebuild (limited to 'sys-apps/flashrom') 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 000000000000..84dec173676a --- /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 000000000000..7d87b5147714 --- /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 +} -- cgit v1.2.3-65-gdbad