Git Product home page Git Product logo

brother-overlay's People

Contributors

2xsaiko avatar anard avatar automorphism88 avatar evasdk avatar fonic avatar fordfrog avatar gsurbey avatar hjudt avatar hoefling avatar internethering avatar irichter avatar jamescherti avatar janp avatar jason-oliveira avatar jlachowski avatar laurantino avatar maurerpe avatar mehw avatar mrduartept avatar nikosalexandris avatar np-hardass avatar nvinson avatar osirisinferi avatar rpimonitrbtch avatar sbraz avatar sergeygalkin avatar stefan-langenmaier avatar sveyret avatar ulziibuyan avatar yurijmikhalevich avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

brother-overlay's Issues

eclass for shared code

As suggested in the comments on this PR, it might be useful to create an eclass to share code between ebuilds for different printers. Specifically, I think the following could be shared:

  • Common dependencies (i.e. cups for net-print ebuilds, sane for media-gfx ebuilds)
  • Any necessary settings of RESTRICT or other global variables
  • Inherit linux-info and multilib eclasses to use in a shared pkg_setup phase function
  • Inherit rpm eclass to use in a shared src_unpack phase function
  • Low level functions to fix paths, extract PPD, etc.
  • Possibly shared src_prepare and src_install phase functions using the above low-level functions

I'm willing to help in creating this eclass, and think much of the code could be copy/pasted from my net-print/brother-mfc7460dn-bin ebuild, with appropriate adaptation. However, before actually creating the eclass, I thought it'd be useful to discuss what exactly it should do, to maximize its usefulness. The drivers for different models are similar enough that I envision the possibility of individual ebuilds not having to do much more than inherit a common eclass.

Brother MFC-6490CW CUPS and LPR support

Hi!

The printer-drivers overlay had been recently removed from repositories.xml.

I do have a Brother MFC-6490CW printer/scanner (inherited from my grandpa), and I'm happy to see that brother-overlay provides a way to install the scanner driver.

What about CUPS and LPR drivers...?

Is it possible/useful to add them to brother-overlay?

Also, MFC-6490CW isn't listed in the Gentoo's Brother networked printer guide.

A quick CUPS/LPR drivers fix is to add the printer-drivers overlay back via a layman's overlay xml file:

/etc/layman/overlays/printer-drivers.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE repositories SYSTEM "/dtd/repositories.dtd">
<repositories xmlns="" version="1.0">
  <repo quality="experimental" status="unofficial">
    <name>printer-drivers</name>
    <description lang="en">User-submitted ebuilds for printer drivers</description>
    <homepage>https://cgit.gentoo.org/proj/printer-drivers.git/</homepage>
    <owner type="project">
      <email>[email protected]</email>
      <name>Gentoo printing team</name>
    </owner>
    <source type="git">https://anongit.gentoo.org/git/proj/printer-drivers.git</source>
    <source type="git">git://anongit.gentoo.org/proj/printer-drivers.git</source>
    <source type="git">git+ssh://[email protected]/proj/printer-drivers.git</source>
    <feed>https://cgit.gentoo.org/proj/printer-drivers.git/atom/</feed>
    <!-- <feed>https://cgit.gentoo.org/proj/printer-drivers.git/rss/</feed> -->
  </repo>
</repositories>

Another way explained in brother-overlay's README.md is via a portage's ebuild repository:

/etc/portage/repos.conf/printer-drivers.conf

[printer-drivers]
location = /usr/local/portage/overlays/printer-drivers
sync-type = git
sync-uri = https://anongit.gentoo.org/git/proj/printer-drivers.git
auto-sync = yes

What do you think? Should the Brother MFC-6490CW's CUPS and LPR drivers be added to brother-overlay?

eutils: EAPI 5 not supported

     Reading category 135|187 ( 72): net-print... * ERROR: net-print/brother-dcp9020cdw-bin-1.1.2-r1::brother-overlay failed (depend phase):
 *   eutils: EAPI 5 not supported
     Reading category 135|187 ( 72): net-print... * ERROR: net-print/brother-dcp9022cdw-bin-1.1.3::brother-overlay failed (depend phase):
 *   eutils: EAPI 5 not supported
     Reading category 135|187 ( 72): net-print... * ERROR: net-print/brother-dcp9055cdn-bin-1.1.1::brother-overlay failed (depend phase):
 *   eutils: EAPI 5 not supported
     Reading category 135|187 ( 72): net-print... * ERROR: net-print/brother-dcpj715w-bin-1.1.3::brother-overlay failed (depend phase):
 *   eutils: EAPI 5 not supported
     Reading category 135|187 ( 72): net-print... * ERROR: net-print/brother-mfc9340cdw-bin-1.1.2::brother-overlay failed (depend phase):
 *   epatch: EAPI 5 not supported

Merge packages into brother-genml1-bin

Some packages are a duplication of the generic printer driver. This causes conflicts in their installation and is duplication of effort.

  • Find a way to merge them nicely into the this driver.
  • Can there be something done with the naming as it might not be easy to find this driver with its current name?

Brother-hl1118 support.

Hello,

Please, may you consider add in an ebuild for Brother HL-11xx series?

This one support: Brother HL-1110, HL-1110R, HL-1111, HL-1112, HL-1112R, HL-1118.

There is a PKGBUILD on Arch Linux AUR.

Thank you!

>=app-text/qpdf-11.0.0 breaks brgenml1 (prob others too)

Since the overlay isn't in gentoo and it's not considered official I'll file here. It looks like unless there's a workaround you'll need to throw a dependency to pull a qpdf-10.x version or cups-filters will crash.

Part of log that's probably relevant:

D [23/Sep/2022:17:38:07 -0400] [Job 262] pdftopdf: Last filter determined by the PPD: -; FINAL_CONTENT_TYPE: application/pdf => pdftopdf will log pages in page_log.
D [23/Sep/2022:17:38:07 -0400] [Job 262] PDF template file doesn\'t have form. It\'s okay.
D [23/Sep/2022:17:38:07 -0400] [Job 262] terminate called after throwing an instance of \'std::logic_error\'
D [23/Sep/2022:17:38:07 -0400] [Job 262] what():  QPDFCryptoProvider: request to set default provider to unknown implementation \"OPENSSL\"
D [23/Sep/2022:17:38:07 -0400] [Job 262] PID 29698 (/usr/libexec/cups/filter/bannertopdf) crashed on signal 6.
D [23/Sep/2022:17:38:07 -0400] [Job 262] Hint: Try setting the LogLevel to "debug" to find out more.
D [23/Sep/2022:17:38:07 -0400] [Job 262] Input is empty, outputting empty file.
D [23/Sep/2022:17:38:07 -0400] [Job 262] PID 29699 (/usr/libexec/cups/filter/pdftopdf) exited with no errors.

Rebuilding everything was no good, I have ssl and openssl flags enabled wherever I could to rule that out. Eventually trying the downgrade to <app-text/qpdf-11.0.0 worked.

media-gfx/brother-scan4-bin loses its sane config when reinstalled

Hi,
Currently the ebuild makes /etc/opt/brother/scanner/brscan4//brsanenetdevice4.cfg point to ../../../../../opt/brother/scanner/brscan4/brsanenetdevice4.cfg (that is /opt/brother/scanner/brscan4/brsanenetdevice4.cfg).
The latter file is not protected so every time the package is installed, I lose the sane config that I added by calling brsaneconfig4.

I think that we should protect the file, hopefully this is the right way to do it (feel free to pick this diff if you want to commit it):

--- brother-scan4-bin-0.4.6-r1.ebuild   2018-12-30 23:32:08.752459425 +0100
+++ brother-scan4-bin-0.4.6-r2.ebuild   2019-04-28 23:20:24.423364830 +0200
@@ -61,6 +61,9 @@
        echo "brother4" > brscan4.conf || die
        insinto etc/sane.d/dll.d
        doins brscan4.conf
+
+       echo 'CONFIG_PROTECT="/opt/brother/scanner/brscan4/brsanenetdevice4.cfg"' > "${T}/50brscan4" || die
+       doenvd "${T}/50brscan4"
 }

 pkg_postinst() {

net-print/brother-hll8350cdw-bin : duplexing on hll8250cdn does not work

I have a Brother HL-L8250CDN. There is no net-print/brother-hll8250cdn-bin driver. The brother-hll8350cdw-bin driver WORKS with this printer except for one detail: it refuses to print duplexed from Linux no matter how it is told to, even if duplexing is enabled on the printer by default, even with HP LaserJet emulation enabled on the printer. Duplex printing of the exact same document/page from Windows 10 works just fine.

Is there any way to resolve this?

32-bit libraries for brother-genml1-bin

Hello some time (over a year) ago after an upgrade of some sort, printing just stopped working. As I don't print often I could not narrow down which update broke the system.

Every print ended with frustration, asking a Windows user to print, and hoping to get to the bottom of it. Eventually, I was able to sort this out

The error log was reporting

W [Job 69] Grayscale/monochrome printing requested for this job but Poppler is not able to convert to grayscale/monochrome PostScript.
W [Job 69] Use \"pdftops-renderer\" option (see cups-filters README file) to use Ghostscript or MuPDF for the PDF -> PostScript conversion.

But this was not the true error. In the end, it turned out that the filter/backend was failing because it couldn't load the 32-bit libraries.

This issue is referred to here (https://wiki.gentoo.org/wiki/Brother_networked_printer#Generic_LPR_printer_driver_on_amd64_no-multilib), but I do have a multi-lib profile selected: default/linux/amd64/17.1/desktop/plasma

In essence, I did not have to install the 32-bit glibc, but I did have to modify the lpdfilter and cupswrapper file as specified in the Wiki. However I used instead the line:

$ENV{LD_LIBRARY_PATH} = "/lib";

In the files:

  • /opt/brother/Printers/BrGenML1/lpd/filter_BrGenML1
  • /opt/brother/Printers/BrGenML1/cupswrapper/brother_lpdwrapper_BrGenML1

I would suggest it would be great if the ebuild sorted this out automatically

My printer is the Brother MFC-7065dn, however it appears both these files belong to net-print/brother-genml1-bin so a single fix should address all printers

On a separate note, this printer does not appear to support IPP Everywhere, does anyone have any expectation as to what the future will hold?

Add einfo to tell user that scanner user need to be in scanner group

For at least all ebuild media-gfx/brother-*-bin depending on media-gfx/brother-scan4-bin add in the ebuild:

einfo "- scanner users need to be in scanner group in order to be able to scan: "usermod -a -G scanner $USER"

I don't know if it's needed for scan2 or scan3 binaries...

[problem] DCP-7040 + system-config-printer

hi,

So i'm using gentoo but on arch i have no problem.

My problem is when i launch system-config-printer, it shows my Brother-DCP-7040 on the first window but when i have to choose the model, it doesn't shows it, i only see classic models:

2018-03-23-192427_601x539_scrot

i installed
brother-dcp7040-bin
brscan3
brscan-skey (if needed)

do you know how to manage to display my printer model ?

edit: after i try hard i finally fix my problem

brscan4-0.4.8-1.x86_64.rpm not found

╰─ wget http://download.brother.com/welcome/dlf006648/brscan4-0.4.8-1.x86_64.rpm
--2021-08-09 08:19:15--  http://download.brother.com/welcome/dlf006648/brscan4-0.4.8-1.x86_64.rpm
Resolving download.brother.com... 104.85.0.235
Connecting to download.brother.com|104.85.0.235|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2021-08-09 08:19:16 ERROR 404: Not Found.

HL-3140CW print jobs are misaligned on A4 paper

HL-3140CW prints misaligned pages, with the top cropped by 13mm and the left side shifted to the left by 7mm, when selecting A4 page size. The reason seems to be that cups cannot alter the page size from 'Letter' to 'A4'.

I noticed each time I modify a printer using the cups http GUI, the corresponding ppd file default settings are messed up. In particular, DefaultImageableArea and DefaultPaperDimension are reset to Letter for some reason:

grep Default /etc/cups/ppd/HL-3140CW.ppd
*DefaultColorSpace: Gray
*DefaultPageSize: A4
*DefaultPageRegion: A4
*DefaultImageableArea: Letter <==
*DefaultPaperDimension: Letter <==
*DefaultResolution: 300dpi

Going back into ''Administration/Set Default Options' in cups and (re)selecting A4 restores the
correct setttings:

grep Default /etc/cups/ppd/HL-3140CW.ppd
*DefaultColorSpace: Gray
*DefaultPageSize: A4
*DefaultPageRegion: A4
*DefaultImageableArea: A4
*DefaultPaperDimension: A4
*DefaultResolution: 300dpi

Nevertheless, these page settings are not respected by the driver, which always submits print jobs in 'Letter' page size.

The brother-overlay ebuild for HL-3140CW installs among others two files:

/opt/brother/Printers/hl3140cw/inf/brhl3140cwfunc

where [Default] settings are specified and

/opt/brother/Printers/hl3140cw/inf/brhl3140cwrc

where printer specific [hl3140cw] settings are defined. I changed the setting to "PageSize=A4" in the second file and now pages are printed in A4 as they always used to. This does not address the underlying problem of cups not being able to set a default page size in a way that is respected by the printer, so it will require further investigation.

All default page settings in /opt/brother/Printers/hl3140cw/cupswrapper/brother_hl3140cw_printer_en.ppd are set to Letter, but I can't explain why cups does not set the correct for the OS page size the first time a printer is modified, while it apparently does so the second time.

Is it a coincidence that the file brother_lpdwrapper_hl3140cw configures an "ImagingArea" while ppd uses an "ImageableArea" and this is the same entry that settings go wrong in the ppd file above?

Can you please take a look at the respective files installed by the ebuild in case you can spot what causes this problem?

PS. I am currently running on gentoo with profile 17.0:

net-print/cups-2.2.6
net-print/cups-filters-1.18.0
net-print/brother-hl3140cw-bin-1.1.4

--
Kind regards,
Mick

media-gfx/brother-scan4-bin should depend on net-dns/avahi

when adding new scanner using brsaneconfig4 command, the command fails because it cannot find /usr/lib/libavahi-client.so.3. adding net-dns/avahi to RDEPEND should fix it. i have media-gfx/brother-scan4-bin-0.4.8 installed but i suppose other versions are affected aswell...

Cups-filter PDF

Hi,

This might be a strange question but i've used this overlay for my printer and it can't seem to print PDF files off the browser, the job log shows the following message:
"Use "pdftops-renderer" option (see cups-filters README file) to use Ghostscript or MuPDF for the PDF -> PostScript conversion."

I've found the following command:

lpstat -v
lpadmin -p <printer> -o pdftops-renderer-default=gs

I've tried gs and mupdf but gs gives an empty page while mupdf give an error "Level 3 PostScript not supported by mutool"

Any ideas?

RESTRICT=mirror appears to be unnecessary

I noticed that RESTRICT="mirror" is set for brother-overlay/net-print/brother-genml1-bin, and probably for other ebuilds as well. According to the Gentoo dev manual,

The RESTRICT="mirror" setting should be used if we cannot legally mirror certain files; files will still be downloaded from the original locations.

However, the "brother-eula" license (line 10 here) seems to explicitly allow redistribution, with or without modification:

Brother grants User a non-exclusive license: to reproduce and/or distribute (via Internet or in any other manner) the Software. Further, Brother grants User a non-exclusive license to modify, alter, translate or otherwise prepare derivative works of the Software and to reproduce and distribute (via Internet or in any other manner) such modification, alteration, translation or other derivative works for any purpose.

If in fact another license applies that does restrict mirroring, then the ebuild should be corrected to refer to it.

Please add an ebuild for brscan5

Hi :-)

It would be nice if, along with brscan2, 3 and 4, you would also add an ebuild for the brscan5 driver. In my case, I needed it to get a DS-640 to work. The brscan4 driver didn't work for this device (neither the one here, nor the one from portage).

I found some ebuild for brscan5 at https://github.com/qix67/gentoo-overlay , but this one doesn't seem to be as nice as the ones maintained here.

Before finding this here, I also added a version bump request for the in-tree brscan4 driver at https://bugs.gentoo.org/833603 – maybe, someone of you can comment this? Imo, at least the brscan drivers should be part of the official portage tree, in a meaningful way, as they are applicable for all kinds of Brother scanners. For the printer driver ebuilds, I see that it's meaningful to have them in a separate overlay.

Anyway, thanks for your work :-) And thanks in advance for adding support for brscan5!

Cheers, Tobias

ERROR: net-print/brother-genml1-bin-3.1.0-r1::brother-overlay failed (prepare phase):

I hope this is the right place to put this?

complete build.log
`^[[32;01m * ^[[39;49;00mPackage: net-print/brother-genml1-bin-3.1.0-r1
^[[32;01m * ^[[39;49;00mRepository: brother-overlay
^[[32;01m * ^[[39;49;00mUSE: amd64 elibc_glibc kernel_linux userland_GNU
^[[32;01m * ^[[39;49;00mFEATURES: preserve-libs sandbox userpriv usersandbox
^[[32;01m_^[[0m Determining the location of the kernel source code
^[[32;01m_^[[0m Found kernel source directory:
^[[32;01m_^[[0m /usr/src/linux
^[[32;01m_^[[0m Found kernel object directory:
^[[32;01m_^[[0m /lib/modules/4.5.2-1/build
^[[32;01m_^[[0m Found sources for kernel version:
^[[32;01m_^[[0m 4.5.2-1
^[[32;01m_^[[0m Checking for suitable kernel configuration options...
^[[A^[[74C ^[[34;01m[ ^[[32;01mok^[[34;01m ]^[[0m

Unpacking source...
Unpacking brgenml1lpr-3.1.0-1.i386.rpm to /var/tmp/portage/net-print/brother-genml1-bin-3.1.0-r1/work
Unpacking brgenml1cupswrapper-3.1.0-1.i386.rpm to /var/tmp/portage/net-print/brother-genml1-bin-3.1.0-r1/work
Source unpacked in /var/tmp/portage/net-print/brother-genml1-bin-3.1.0-r1/work
Preparing source in /var/tmp/portage/net-print/brother-genml1-bin-3.1.0-r1/work ...
^[[32;01m_^[[0m Applying brother_lpdwrapper_BrGenML1.patch ...
^[[A^[[74C ^[[34;01m[ ^[[32;01mok^[[34;01m ]^[[0m
^[[31;01m_^[[0m ERROR: net-print/brother-genml1-bin-3.1.0-r1::brother-overlay failed (prepare phase):
^[[31;01m_^[[0m eapply_user (or default) must be called in src_prepare()!
^[[31;01m_^[[0m
^[[31;01m_^[[0m Call stack:
^[[31;01m_^[[0m ebuild.sh, line 805: Called ebuild_main 'prepare'
^[[31;01m
^[[0m phase-functions.sh, line 974: Called dyn_prepare
^[[31;01m
^[[0m phase-functions.sh, line 380: Called die
^[[31;01m
^[[0m The specific snippet of code:
^[[31;01m
^[[0m die "eapply_user (or default) must be called in src_prepare()!"
^[[31;01m_^[[0m
^[[31;01m_^[[0m If you need support, post the output of emerge --info '=net-print/brother-genml1-bin-3.1.0-r1::brother-overlay',
^[[31;01m_^[[0m the complete build log and the output of emerge -pqv '=net-print/brother-genml1-bin-3.1.0-r1::brother-overlay'.
^[[31;01m_^[[0m The complete build log is located at '/var/tmp/portage/net-print/brother-genml1-bin-3.1.0-r1/temp/build.log'.
^[[31;01m_^[[0m The ebuild environment file is located at '/var/tmp/portage/net-print/brother-genml1-bin-3.1.0-r1/temp/environment'.
^[[31;01m_^[[0m Working directory: '/var/tmp/portage/net-print/brother-genml1-bin-3.1.0-r1/work'
^[[31;01m*^[[0m S: '/var/tmp/portage/net-print/brother-genml1-bin-3.1.0-r1/work'

`
ebuild environment

declare -x ABI="amd64" declare -x ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel ice1724 intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" declare -x ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" declare -x APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" declare -x ARCH="amd64" declare -x ASFLAGS_x86="--32" declare -x BOOTSTRAP_USE="cxx unicode internal-glib python_targets_python3_4 python_targets_python2_7" declare -x CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" declare -x CAMERAS="ptp2" declare -x CBUILD="x86_64-pc-linux-gnu" declare -x CDEFINE_amd64="__x86_64__" declare -x CDEFINE_x86="__i386__" declare -x CFLAGS="-march=ivybridge -O2 -pipe" declare -x CFLAGS_default declare -x CFLAGS_x86="-m32" declare -x CHOST="x86_64-pc-linux-gnu" declare -x CHOST_amd64="x86_64-pc-linux-gnu" declare -x CHOST_default="x86_64-pc-linux-gnu" declare -x CHOST_x86="i686-pc-linux-gnu" declare -x COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" declare -- CONFIG_CHECK=" ~IA32_EMULATION" declare -x CPU_FLAGS_X86="avx mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" declare -x CTARGET_default="x86_64-pc-linux-gnu" declare -x CXXFLAGS="-march=ivybridge -O2 -pipe" declare -x DEBUGBUILD="1" declare -x DEFAULT_ABI="amd64" declare -x DEFINED_PHASES=" install postinst prepare setup unpack" declare DEPEND="net-print/cups avahi? ( net-dns/avahi sys-auth/nss-mdns ) >=app-arch/rpm2targz-9.0.0.3g" declare DESCRIPTION="Generic Brother printer driver" declare -x DESTTREE="/usr" declare -x DIROPTIONS="-m0755" declare -x EAPI="6" declare -x ELIBC="glibc" declare -- EPATCH_COMMON_OPTS="-g0 -E --no-backup-if-mismatch" declare -- EPATCH_EXCLUDE="" declare -- EPATCH_FORCE="no" declare -- EPATCH_MULTI_MSG="Applying various patches (bugfixes/updates) ..." declare -- EPATCH_OPTS="" declare -- EPATCH_SINGLE_MSG="" declare -- EPATCH_SOURCE="/var/tmp/portage/net-print/brother-genml1-bin-3.1.0-r1/work/patch" declare -- EPATCH_SUFFIX="patch.bz2" declare -x EXEOPTIONS="-m0755" declare -x FCFLAGS="-march=ivybridge -O2 -pipe" declare -x FETCHCOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\\${port:+-p\\\${port}} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\"" declare -x FFLAGS="-march=ivybridge -O2 -pipe" declare -x GCC_SPECS="" declare -x GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" declare -x GRUB_PLATFORMS="efi-64 pc" declare -x GSETTINGS_BACKEND="dconf" declare HDEPEND="" declare -x HG="/usr/bin/hg" declare HOMEPAGE="http://support.brother.com" declare -x INHERITED=" multilib toolchain-funcs eutils rpm versionator linux-info" declare -x INPUT_DEVICES="evdev synaptics" declare -x INSDESTTREE="" declare -x INSOPTIONS="-m0644" declare IUSE="avahi " declare -x IUSE_EFFECTIVE="alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 avahi elibc_AIX elibc_Cygwin elibc_Darwin elibc_DragonFly elibc_FreeBSD elibc_HPUX elibc_Interix elibc_NetBSD elibc_OpenBSD elibc_SunOS elibc_Winnt elibc_glibc elibc_mintlib elibc_musl elibc_uclibc hppa hppa-hpux ia64 ia64-hpux ia64-linux kernel_AIX kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux m68k m68k-mint mips nios2 ppc ppc-aix ppc-macos ppc-openbsd ppc64 ppc64-linux prefix prefix-guest riscv s390 sh sparc sparc-fbsd sparc-solaris sparc64-freebsd sparc64-solaris userland_BSD userland_GNU x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt" declare -x IUSE_IMPLICIT="prefix prefix-guest" declare -x KERNEL="linux" declare -x KERNEL_ABI="amd64" declare -- KERNEL_DIR="/usr/src/linux" declare -- KERNEL_MAKEFILE="/usr/src/linux/Makefile" declare -x KEYWORDS="amd64 x86" declare -- KV_DIR="/usr/src/linux" declare -- KV_EXTRA="-1" declare -- KV_FULL="4.5.2-1" declare -- KV_LOCAL="" declare -- KV_MAJOR="4" declare -- KV_MINOR="5" declare -- KV_OUT_DIR="/lib/modules/4.5.2-1/build" declare -- KV_PATCH="2" declare -x LANG="en_US.UTF-8" declare -x LANGUAGE="" declare -x LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" declare -x LC_COLLATE="C" declare -x LC_MESSAGES="C" declare -x LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed" declare -x LDFLAGS_default declare -x LDFLAGS_x86="-m elf_i386" declare -x LIBDIR_amd64="lib64" declare -x LIBDIR_amd64_fbsd="lib64" declare -x LIBDIR_default="lib" declare -x LIBDIR_ppc="lib32" declare -x LIBDIR_ppc64="lib64" declare -x LIBDIR_sparc32="lib32" declare -x LIBDIR_sparc64="lib64" declare -x LIBDIR_x86="lib32" declare -x LIBDIR_x86_fbsd="lib32" declare -x LIBOPTIONS="-m0644" declare -x LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" declare -x LICENSE="brother-eula GPL-2" declare -x LINUX_CONFIG_EXISTS_DONE="" declare -x MAIL="/var/mail/root" declare -x MAKEOPTS="-j9" declare -x MANPAGER="manpager" declare -x MULTILIB_ABIS="amd64 x86" declare -x MULTILIB_STRICT_DENY="64-bit.*shared object" declare -x MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib" declare -x MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage)" declare -x NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml" declare -x OFFICE_IMPLEMENTATION="libreoffice" declare -x OPENGL_PROFILE="xorg-x11" declare -x PATH="/usr/lib/portage/python2.7/ebuild-helpers/xattr:/usr/lib/portage/python2.7/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.9.3" declare PDEPEND="" declare -x PHP_TARGETS="php5-6" declare -a PORTAGE_DOCOMPRESS='([0]="/usr/share/doc" [1]="/usr/share/info" [2]="/usr/share/man")' declare -x PORTAGE_DOCOMPRESS_SIZE_LIMIT="128" declare -a PORTAGE_DOCOMPRESS_SKIP='([0]="/usr/share/doc/brother-genml1-bin-3.1.0-r1/html")' declare -x PROFILE_ONLY_VARIABLES="ARCH ELIBC IUSE_IMPLICIT KERNEL USERLAND USE_EXPAND_IMPLICIT USE_EXPAND_UNPREFIXED USE_EXPAND_VALUES_ARCH USE_EXPAND_VALUES_ELIBC USE_EXPAND_VALUES_KERNEL USE_EXPAND_VALUES_USERLAND" declare -x PROPERTIES="" declare -x PROVIDE="" declare -x PYTHONDONTWRITEBYTECODE="1" declare -x PYTHON_SINGLE_TARGET="python3_4" declare -x PYTHON_TARGETS="python2_7 python3_4" declare -x QEMU_SOFTMMU_TARGETS="i386 x86_64" declare -x QEMU_USER_TARGETS="i386 x86_64" declare -x QT_GRAPHICSSYSTEM="raster" declare -x QT_PLUGIN_PATH="/usr/lib64/kde4/plugins" declare RDEPEND="net-print/cups avahi? ( net-dns/avahi sys-auth/nss-mdns ) " declare REPOSITORY declare REQUIRED_USE="" declare -x RESTRICT="mirror strip" declare -x RESUMECOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\\${port:+-p\\\${port}} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\"" declare -x RUBY_TARGETS="ruby20 ruby21 ruby22" declare -x R_HOME="/usr/lib64/R" declare -x S="/var/tmp/portage/net-print/brother-genml1-bin-3.1.0-r1/work" declare -x SANDBOX_DEBUG="0" declare -x SANDBOX_DENY="" declare -x SANDBOX_PREDICT="/var/tmp/portage/net-print/brother-genml1-bin-3.1.0-r1/homedir:/dev/crypto:/var/cache/fontconfig" declare -x SANDBOX_READ="/:/var/tmp" declare -x SANDBOX_VERBOSE="1" declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/full:/dev/null:/dev/ptmx:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp:/var/tmp/:/var/tmp/portage/net-print/brother-genml1-bin-3.1.0-r1/homedir/.bash_history" declare -x SHELL="/bin/bash" declare -x SLOT="0" declare SRC_URI="http://download.brother.com/welcome/dlf101124/brgenml1lpr-3.1.0-1.i386.rpm http://download.brother.com/welcome/dlf101126/brgenml1cupswrapper-3.1.0-1.i386.rpm" declare -x STAGE1_USE="multilib nptl nptlonly unicode" declare -x SUDO_COMMAND="/usr/bin/emerge --ask net-print/brother-genml1-bin" declare -x SUDO_GID="100" declare -x SUDO_UID="1000" declare -x SUDO_USER="dad" declare -x SYMLINK_LIB="yes" declare -x USE="amd64 elibc_glibc kernel_linux userland_GNU" declare -x USERLAND="GNU" declare -x USERNAME="root" declare -x USE_EXPAND_IMPLICIT="ARCH ELIBC KERNEL USERLAND" declare -x USE_EXPAND_UNPREFIXED="ARCH" declare -x USE_EXPAND_VALUES_ARCH="alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 hppa hppa-hpux ia64 ia64-hpux ia64-linux m68k m68k-mint mips nios2 ppc ppc64 ppc64-linux ppc-aix ppc-macos ppc-openbsd riscv s390 sh sparc sparc64-freebsd sparc64-solaris sparc-fbsd sparc-solaris x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt" declare -x USE_EXPAND_VALUES_ELIBC="AIX Cygwin Darwin DragonFly FreeBSD glibc HPUX Interix mintlib musl NetBSD OpenBSD SunOS uclibc Winnt" declare -x USE_EXPAND_VALUES_KERNEL="AIX Darwin FreeBSD freemint HPUX linux NetBSD OpenBSD SunOS Winnt" declare -x USE_EXPAND_VALUES_USERLAND="BSD GNU" declare -x VBOX_APP_HOME="/usr/lib64/virtualbox" declare -x VIDEO_CARDS="intel i965" declare -x XDG_CONFIG_DIRS="/etc/xdg" declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share" declare -x XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" declare -- _EUTILS_ECLASS="1" declare -- _EUTILS_ECLASSDIR_LOCAL="/usr/portage/eclass" declare -x _E_DOCDESTTREE_="" declare -x _E_EXEDESTTREE_="" declare -x _LINUX_CONFIG_EXISTS_DONE="1" declare -- _MULTILIB_ECLASS="1" declare -- _TOOLCHAIN_FUNCS_ECLASS="1" declare -- _VERSIONATOR_ECLASS="1" declare -- conf="brother-genml1-bin-3.1.0-r1" declare -- get_version_warning_done="" declare -- phase_func __eapi6_src_install () { if [[ -f Makefile || -f GNUmakefile || -f makefile ]]; then emake DESTDIR="${D}" install; fi; einstalldocs } __eapi6_src_prepare () { if [[ $(declare -p PATCHES 2>/dev/null) == "declare -a"* ]]; then eapply "${PATCHES[@]}"; else if [[ -n ${PATCHES} ]]; then eapply ${PATCHES}; fi; fi; eapply_user } _eutils_eprefix_init () { has "${EAPI:-0}" 0 1 2 && : ${ED:=${D}} ${EPREFIX:=} ${EROOT:=${ROOT}} } _gcc-install-dir () { echo "$(LC_ALL=C $(tc-getCC) -print-search-dirs 2> /dev/null | awk '$1=="install:" {print $2}')" } _gcc-specs-directive_raw () { local cc=$(tc-getCC); local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}'); ${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 'BEGIN { pspec=""; spec=""; outside=1 } $1=="*"directive":" { pspec=spec; spec=""; outside=0; next } outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next } spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next } { spec=spec $0 } END { print spec }'; return 0 } _gcc-specs-exists () { [[ -f $(_gcc-install-dir)/$1 ]] } _gcc_fullversion () { local ver="$1"; shift; set --$(tc-getCPP "$@") -E -P - <<<"GNUC GNUC_MINOR GNUC_PATCHLEVEL"`;
eval echo "$ver"
}
iconins ()
{
( local funcname=$1;
shift;
local size dir;
local context=apps;
local theme=hicolor;
while [[ $# -gt 0 ]]; do
case $1 in
-s | --size)
if [[ ${2%%x
}x${2%%x_} == "$2" ]]; then
size=${2%%x*};
else
size=${2};
fi;
case ${size} in
16 | 22 | 24 | 32 | 36 | 48 | 64 | 72 | 96 | 128 | 192 | 256 | 512)
size=${size}x${size}
;;
scalable)

                ;;
                *)
                    eerror "${size} is an unsupported icon size!";
                    exit 1
                ;;
            esac;
            shift 2
        ;;
        -t | --theme)
            theme=${2};
            shift 2
        ;;
        -c | --context)
            context=${2};
            shift 2
        ;;
        *)
            if [[ -z ${size} ]]; then
                insinto /usr/share/pixmaps;
            else
                insinto /usr/share/icons/${theme}/${size}/${context};
            fi;
            if [[ ${funcname} == doicon ]]; then
                if [[ -f $1 ]]; then
                    doins "${1}";
                else
                    if [[ -d $1 ]]; then
                        shopt -s nullglob;
                        doins "${1}"/*.{png,svg};
                        shopt -u nullglob;
                    else
                        eerror "${1} is not a valid file/directory!";
                        exit 1;
                    fi;
                fi;
            else
                break;
            fi;
            shift 1
        ;;
    esac;
done;
if [[ ${funcname} == newicon ]]; then
    newins "$@";
fi ) || die

}
_tc-getPROG ()
{
local tuple=$1;
local v var vars=$2;
local prog=$3;
var=${vars%% };
for v in ${vars};
do
if [[ -n ${!v} ]]; then
export ${var}="${!v}";
echo "${!v}";
return 0;
fi;
done;
local search=;
[[ -n $4 ]] && search=$(type -p "$4-${prog}");
[[ -z ${search} && -n ${!tuple} ]] && search=$(type -p "${!tuple}-${prog}");
[[ -n ${search} ]] && prog=${search##
/};
export ${var}=${prog};
echo "${!var}"
}
built_with_use ()
{
_eutils_eprefix_init;
local hidden="no";
if [[ $1 == "--hidden" ]]; then
hidden="yes";
shift;
fi;
local missing_action="die";
if [[ $1 == "--missing" ]]; then
missing_action=$2;
shift;
shift;
case ${missing_action} in
true | false | die)

        ;;
        *)
            die "unknown action '${missing_action}'"
        ;;
    esac;
fi;
local opt=$1;
[[ ${opt:0:1} = "-" ]] && shift || opt="-a";
local PKG=$(best_version $1);
[[ -z ${PKG} ]] && die "Unable to resolve $1 to an installed package";
shift;
local USEFILE=${EROOT}/var/db/pkg/${PKG}/USE;
local IUSEFILE=${EROOT}/var/db/pkg/${PKG}/IUSE;
if [[ ! -e ${USEFILE} ]] || [[ ! -e ${IUSEFILE} && ${hidden} == "no" ]]; then
    case ${missing_action} in 
        true)
            return 0
        ;;
        false)
            return 1
        ;;
        die)
            die "Unable to determine what USE flags $PKG was built with"
        ;;
    esac;
fi;
if [[ ${hidden} == "no" ]]; then
    local IUSE_BUILT=($(<"${IUSEFILE}"));
    local expand;
    for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]');
    do
        if [[ $1 == ${expand}_* ]]; then
            expand="";
            break;
        fi;
    done;
    if [[ -n ${expand} ]]; then
        if ! has $1 ${IUSE_BUILT[@]#[-+]}; then
            case ${missing_action} in 
                true)
                    return 0
                ;;
                false)
                    return 1
                ;;
                die)
                    die "$PKG does not actually support the $1 USE flag!"
                ;;
            esac;
        fi;
    fi;
fi;
local USE_BUILT=$(<${USEFILE});
while [[ $# -gt 0 ]]; do
    if [[ ${opt} = "-o" ]]; then
        has $1 ${USE_BUILT} && return 0;
    else
        has $1 ${USE_BUILT} || return 1;
    fi;
    shift;
done;
[[ ${opt} = "-a" ]]

}
check_extra_config ()
{
local config negate die error reworkmodulenames;
local soft_errors_count=0 hard_errors_count=0 config_required=0;
local old_LINUX_CONFIG_EXISTS_DONE="${LINUX_CONFIG_EXISTS_DONE}";
linux-info_get_any_version;
for config in ${CONFIG_CHECK};
do
if [[ "${config:0:1}" != "" ]]; then
config_required=1;
break;
fi;
done;
if [[ ${config_required} == 0 ]]; then
if ! linux_config_exists; then
ewarn "Unable to check for the following kernel config options due";
ewarn "to absence of any configured kernel sources or compiled";
ewarn "config:";
for config in ${CONFIG_CHECK};
do
config=${config#
};
config=${config#!};
local_error="ERROR
${config}";
msg="${!local_error}";
if [[ -z ${msg} ]]; then
local_error="WARNING_${config}";
msg="${!local_error}";
fi;
ewarn " - ${config}${msg:+ - }${msg}";
done;
ewarn "You're on your own to make sure they are set if needed.";
export LINUX_CONFIG_EXISTS_DONE="${old_LINUX_CONFIG_EXISTS_DONE}";
return 0;
fi;
else
require_configured_kernel;
fi;
einfo "Checking for suitable kernel configuration options...";
for config in ${CONFIG_CHECK};
do
die=1;
error=0;
negate=0;
reworkmodulenames=0;
if [[ ${config:0:1} == "~" ]]; then
die=0;
config=${config:1};
else
if [[ ${config:0:1} == "@" ]]; then
die=0;
reworkmodulenames=1;
config=${config:1};
fi;
fi;
if [[ ${config:0:1} == "!" ]]; then
negate=1;
config=${config:1};
fi;
if [[ ${negate} == 1 ]]; then
linux_chkconfig_present ${config} && error=2;
else
if [[ ${reworkmodulenames} == 1 ]]; then
local temp_config="${config//:}" i n;
config="${config//:
}";
if linux_chkconfig_present ${config}; then
for i in ${MODULE_NAMES};
do
n="${i//${temp_config}}";
[[ -z ${n//(} ]] && MODULE_IGNORE="${MODULE_IGNORE} ${temp_config}";
done;
error=2;
fi;
else
linux_chkconfig_present ${config} || error=1;
fi;
fi;
if [[ ${error} > 0 ]]; then
local report_func="eerror" local_error;
local_error="ERROR
${config}";
local_error="${!local_error}";
if [[ -z "${local_error}" ]]; then
local_error="${config}ERROR";
local_error="${!local_error}";
fi;
if [[ ${die} == 0 && -z "${local_error}" ]]; then
local_error="WARNING
${config}";
local_error="${!local_error}";
if [[ -n "${local_error}" ]]; then
report_func="ewarn";
fi;
fi;
if [[ -z "${local_error}" ]]; then
[[ ${error} == 1 ]] && local_error="is not set when it should be." || local_error="should not be set. But it is.";
local_error="CONFIG_${config}:\t ${local_error}";
fi;
if [[ ${die} == 0 ]]; then
${report_func} " ${local_error}";
soft_errors_count=$[soft_errors_count + 1];
else
${report_func} " ${local_error}";
hard_errors_count=$[hard_errors_count + 1];
fi;
fi;
done;
if [[ ${hard_errors_count} > 0 ]]; then
eerror "Please check to make sure these options are set correctly.";
eerror "Failure to do so may cause unexpected problems.";
eerror "Once you have satisfied these options, please try merging";
eerror "this package again.";
export LINUX_CONFIG_EXISTS_DONE="${old_LINUX_CONFIG_EXISTS_DONE}";
die "Incorrect kernel configuration options";
else
if [[ ${soft_errors_count} > 0 ]]; then
ewarn "Please check to make sure these options are set correctly.";
ewarn "Failure to do so may cause unexpected problems.";
else
eend 0;
fi;
fi;
export LINUX_CONFIG_EXISTS_DONE="${old_LINUX_CONFIG_EXISTS_DONE}"
}
check_kernel_built ()
{
require_configured_kernel;
get_version;
local versionh_path;
if kernel_is -ge 3 7; then
versionh_path="include/generated/uapi/linux/version.h";
else
versionh_path="include/linux/version.h";
fi;
if [ ! -f "${KV_OUT_DIR}/${versionh_path}" ]; then
eerror "These sources have not yet been prepared.";
eerror "We cannot build against an unprepared tree.";
eerror "To resolve this, please type the following:";
eerror;
eerror "# cd ${KV_DIR}";
eerror "# make oldconfig";
eerror "# make modules_prepare";
eerror;
eerror "Then please try merging this module again.";
die "Kernel sources need compiling first";
fi
}
check_license ()
{
die "you no longer need this as portage supports ACCEPT_LICENSE itself"
}
check_modules_supported ()
{
require_configured_kernel;
get_version;
if ! linux_chkconfig_builtin "MODULES"; then
eerror "These sources do not support loading external modules.";
eerror "to be able to use this module please enable "Loadable modules support"";
eerror "in your kernel, recompile and then try merging this module again.";
die "No support for external modules in ${KV_FULL} config";
fi
}
check_zlibinflate ()
{
require_configured_kernel;
get_version;
local INFLATE;
local DEFLATE;
einfo "Determining the usability of ZLIB_INFLATE support in your kernel";
ebegin "checking ZLIB_INFLATE";
linux_chkconfig_builtin CONFIG_ZLIB_INFLATE;
eend $?;
[ "$?" != 0 ] && die;
ebegin "checking ZLIB_DEFLATE";
linux_chkconfig_builtin CONFIG_ZLIB_DEFLATE;
eend $?;
[ "$?" != 0 ] && die;
local LINENO_START;
local LINENO_END;
local SYMBOLS;
local x;
LINENO_END="$(grep -n 'CONFIG_ZLIB_INFLATE y' ${KV_DIR}/lib/Config.in | cut -d : -f 1)";
LINENO_START="$(head -n $LINENO_END ${KV_DIR}/lib/Config.in | grep -n 'if [' | tail -n 1 | cut -d : -f 1)";
(( LINENO_AMOUNT = $LINENO_END - $LINENO_START ));
(( LINENO_END = $LINENO_END - 1 ));
SYMBOLS="$(head -n $LINENO_END ${KV_DIR}/lib/Config.in | tail -n $LINENO_AMOUNT | sed -e 's/^.(CONFIG[^\" ])./\1/g;')";
for x in $SYMBOLS;
do
if [ "${!x}" = "y" ]; then
einfo "${x} ensures zlib is linked into your kernel - excellent";
return 0;
fi;
done;
eerror;
eerror "This kernel module requires ZLIB library support.";
eerror "You have enabled zlib support in your kernel, but haven't enabled";
eerror "enabled any option that will ensure that zlib is linked into your";
eerror "kernel.";
eerror;
eerror "Please ensure that you enable at least one of these options:";
eerror;
for x in $SYMBOLS;
do
eerror " * $x";
done;
eerror;
eerror "Please remember to recompile and install your kernel, and reboot";
eerror "into your new kernel before attempting to load this kernel module.";
die "Kernel doesn't include zlib support"
}
delete_all_version_separators ()
{
replace_all_version_separators "" "${1}"
}
delete_version_separator ()
{
replace_version_separator "${1}" "" "${2}"
}
doicon ()
{
iconins ${FUNCNAME} "$@"
}
domenu ()
{
( local i j ret=0;
insinto /usr/share/applications;
for i in "$@";
do
if [[ -f ${i} ]]; then
doins "${i}";
((ret+=$?));
else
if [[ -d ${i} ]]; then
for j in "${i}"/
.desktop;
do
doins "${j}";
((ret+=$?));
done;
else
((++ret));
fi;
fi;
done;
exit ${ret} )
}
eapply ()
{
local failed;
local -x LC_COLLATE=POSIX;
function eapply_patch ()
{
local f=${1};
local prefix=${2};
started_applying=1;
ebegin "${prefix:-Applying }${f##
/}";
patch -p1 -f -s -g0 --no-backup-if-mismatch "${patch_options[@]}" < "${f}";
failed=${?};
if ! eend "${failed}"; then
__helpers_die "patch -p1 ${patch_options[]} failed with ${f}";
fi
};
local patch_options=() files=();
local i found_doublehyphen;
for ((i = 1; i <= ${#@}; ++i ))
do
if [[ ${@:i:1} == -- ]]; then
patch_options=("${@:1:i-1}");
files=("${@:i+1}");
found_doublehyphen=1;
break;
fi;
done;
if [[ -z ${found_doublehyphen} ]]; then
for ((i = 1; i <= ${#@}; ++i ))
do
if [[ ${@:i:1} != -
]]; then
patch_options=("${@:1:i-1}");
files=("${@:i}");
break;
fi;
done;
for i in "${files[@]}";
do
if [[ ${i} == -* ]]; then
die "eapply: all options must be passed before non-options";
fi;
done;
fi;
if [[ -z ${files[@]} ]]; then
die "eapply: no files specified";
fi;
local f;
for f in "${files[@]}";
do
if [[ -d ${f} ]]; then
function eapply_get_files ()
{
local LC_ALL=POSIX;
local prev_shopt=$(shopt -p nullglob);
shopt -s nullglob;
local f;
for f in "${1}"/
;
do
if [[ ${f} == *.diff || ${f} == .patch ]]; then
files+=("${f}");
fi;
done;
${prev_shopt}
};
local files=();
eapply_get_files "${f}";
[[ -z ${files[@]} ]] && die "No *.{patch,diff} files in directory ${f}";
einfo "Applying patches from ${f} ...";
local f2;
for f2 in "${files[@]}";
do
eapply_patch "${f2}" ' ';
[[ ${failed} -ne 0 ]] && return "${failed}";
done;
else
eapply_patch "${f}";
[[ ${failed} -ne 0 ]] && return "${failed}";
fi;
done;
return 0
}
eapply_user ()
{
[[ ${EBUILD_PHASE} == prepare ]] || die "eapply_user() called during invalid phase: ${EBUILD_PHASE}";
local tagfile=${T}/.portage_user_patches_applied;
[[ -f ${tagfile} ]] && return;
>> "${tagfile}";
local basedir=${PORTAGE_CONFIGROOT%/}/etc/portage/patches;
local d applied;
for d in "${basedir}"/${CATEGORY}/{${P}-${PR},${P},${PN}}{,:${SLOT%/
}};
do
if [[ -d ${d} ]]; then
eapply "${d}";
applied=1;
fi;
done;
[[ -n ${applied} ]] && ewarn "User patches applied."
}
ebeep ()
{
ewarn "QA Notice: ebeep is not defined in EAPI=${EAPI}, please file a bug at https://bugs.gentoo.org"
}
econf_build ()
{
local CBUILD=${CBUILD:-${CHOST}};
tc-env_build econf --build=${CBUILD} --host=${CBUILD} "$@"
}
ecvs_clean ()
{
[[ $# -eq 0 ]] && set -- .;
find "$@" -type d -name 'CVS' -prune -print0 | xargs -0 rm -rf;
find "$@" -type f -name '.cvs
' -print0 | xargs -0 rm -rf
}
edos2unix ()
{
[[ $# -eq 0 ]] && return 0;
sed -i 's/\r$//' -- "$@" || die
}
egit_clean ()
{
[[ $# -eq 0 ]] && set -- .;
find "$@" -type d -name '.git
' -prune -print0 | xargs -0 rm -rf
}
einstalldocs ()
{
( if ! declare -p DOCS &> /dev/null; then
local d;
for d in README* ChangeLog AUTHORS NEWS TODO CHANGES THANKS BUGS FAQ CREDITS CHANGELOG;
do
[[ -s ${d} ]] && docinto / && dodoc "${d}";
done;
else
if [[ $(declare -p DOCS) == "declare -a"* ]]; then
[[ -n ${DOCS[@]} ]] && docinto / && dodoc -r "${DOCS[@]}";
else
[[ -n ${DOCS} ]] && docinto / && dodoc -r ${DOCS};
fi;
fi );
( if [[ $(declare -p HTML_DOCS 2>/dev/null) == "declare -a"* ]]; then
[[ -n ${HTML_DOCS[@]} ]] && docinto html && dodoc -r "${HTML_DOCS[@]}";
else
[[ -n ${HTML_DOCS} ]] && docinto html && dodoc -r ${HTML_DOCS};
fi )
}
emktemp ()
{
local exe="touch";
[[ $1 == -d ]] && exe="mkdir" && shift;
local topdir=$1;
if [[ -z ${topdir} ]]; then
[[ -z ${T} ]] && topdir="/tmp" || topdir=${T};
fi;
if ! type -P mktemp > /dev/null; then
local tmp=/;
while [[ -e ${tmp} ]]; do
tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM};
done;
${exe} "${tmp}" || ${exe} -p "${tmp}";
echo "${tmp}";
else
if [[ ${exe} == "touch" ]]; then
TMPDIR="${topdir}" mktemp -t tmp.XXXXXXXXXX;
else
TMPDIR="${topdir}" mktemp -dt tmp.XXXXXXXXXX;
fi;
fi
}
epatch ()
{
function epatch_draw_line ()
{
[[ -z $1 ]] && set "$(printf "%65s" '')";
echo "${1//?/=}"
};
unset P4CONFIG P4PORT P4USER;
local EPATCH_OPTS=(${EPATCH_OPTS[
]});
while [[ $# -gt 0 ]]; do
case $1 in
-)
EPATCH_OPTS+=("$1")
;;
)
break
;;
esac;
shift;
done;
if [[ $# -gt 1 ]]; then
local m;
for m in "$@";
do
epatch "${m}";
done;
return 0;
fi;
local SINGLE_PATCH="no";
[[ $# -eq 0 ]] && set -- "${EPATCH_SOURCE}";
if [[ -f $1 ]]; then
SINGLE_PATCH="yes";
set -- "$1";
local EPATCH_SUFFIX=$1;
else
if [[ -d $1 ]]; then
evar_push_set LC_COLLATE C;
set -- "$1"/
${EPATCH_SUFFIX:+."${EPATCH_SUFFIX}"};
evar_pop;
else
if [[ -f ${EPATCH_SOURCE}/$1 ]]; then
epatch "${EPATCH_SOURCE}/$1";
return $?;
else
[[ $# -ne 0 ]] && EPATCH_SOURCE=$1;
echo;
eerror "Cannot find $EPATCH_SOURCE! Value for $EPATCH_SOURCE is:";
eerror;
eerror " ${EPATCH_SOURCE}";
eerror " ( ${EPATCH_SOURCE##
/} )";
echo;
die "Cannot find $EPATCH_SOURCE!";
fi;
fi;
fi;
EPATCH_OPTS="${EPATCH_COMMON_OPTS} ${EPATCH_OPTS[_]}";
local PIPE_CMD;
case ${EPATCH_SUFFIX##
.} in
xz)
PIPE_CMD="xz -dc"
;;
lzma)
PIPE_CMD="lzma -dc"
;;
bz2)
PIPE_CMD="bzip2 -dc"
;;
gz | Z | z)
PIPE_CMD="gzip -dc"
;;
ZIP | zip)
PIPE_CMD="unzip -p"
;;
*)

    ;;
esac;
[[ ${SINGLE_PATCH} == "no" ]] && einfo "${EPATCH_MULTI_MSG}";
local x;
for x in "$@";
do
    [[ ! -f ${x} ]] && continue;
    local patchname=${x##*/};
    local a=${patchname#*_};
    a=${a%%_*};
    if ! [[ ${SINGLE_PATCH} == "yes" || ${EPATCH_FORCE} == "yes" || ${a} == all || ${a} == ${ARCH} ]]; then
        continue;
    fi;
    if [[ -n ${EPATCH_EXCLUDE}${EPATCH_USER_EXCLUDE} ]]; then
        eshopts_push -o noglob;
        local ex;
        for ex in ${EPATCH_EXCLUDE};
        do
            if [[ ${patchname} == ${ex} ]]; then
                einfo "  Skipping ${patchname} due to EPATCH_EXCLUDE ...";
                eshopts_pop;
                continue 2;
            fi;
        done;
        for ex in ${EPATCH_USER_EXCLUDE};
        do
            if [[ ${patchname} == ${ex} ]]; then
                einfo "  Skipping ${patchname} due to EPATCH_USER_EXCLUDE ...";
                eshopts_pop;
                continue 2;
            fi;
        done;
        eshopts_pop;
    fi;
    if [[ ${SINGLE_PATCH} == "yes" ]]; then
        if [[ -n ${EPATCH_SINGLE_MSG} ]]; then
            einfo "${EPATCH_SINGLE_MSG}";
        else
            einfo "Applying ${patchname} ...";
        fi;
    else
        einfo "  ${patchname} ...";
    fi;
    local patch="patch";
    eval $(alias patch 2>/dev/null | sed 's:^alias ::');
    local STDERR_TARGET="${T}/${patchname}.out";
    if [[ -e ${STDERR_TARGET} ]]; then
        STDERR_TARGET="${T}/${patchname}-$$.out";
    fi;
    printf "***** %s *****\nPWD: %s\nPATCH TOOL: %s -> %s\nVERSION INFO:\n%s\n\n" "${patchname}" "${PWD}" "${patch}" "$(type -P "${patch}")" "$(${patch} --version)" > "${STDERR_TARGET}";
    local count=0;
    local PATCH_TARGET;
    if [[ -n ${PIPE_CMD} ]]; then
        PATCH_TARGET="${T}/$$.patch";
        echo "PIPE_COMMAND:  ${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> "${STDERR_TARGET}";
        if ! ( ${PIPE_CMD} "${x}" > "${PATCH_TARGET}" ) >> "${STDERR_TARGET}" 2>&1; then
            echo;
            eerror "Could not extract patch!";
            count=5;
            break;
        fi;
    else
        PATCH_TARGET=${x};
    fi;
    local abs_paths=$(egrep -n '^[-+]{3} /' "${PATCH_TARGET}" | awk '$2 != "/dev/null" { print }');
    if [[ -n ${abs_paths} ]]; then
        count=1;
        printf "NOTE: skipping -p0 due to absolute paths in patch:\n%s\n" "${abs_paths}" >> "${STDERR_TARGET}";
    fi;
    local rel_paths=$(egrep -n '^[-+]{3} [^ ]*[.][.]/' "${PATCH_TARGET}");
    if [[ -n ${rel_paths} ]]; then
        echo;
        eerror "Rejected Patch: ${patchname} !";
        eerror " ( ${PATCH_TARGET} )";
        eerror;
        eerror "Your patch uses relative paths '../':";
        eerror "${rel_paths}";
        echo;
        die "you need to fix the relative paths in patch";
    fi;
    local patch_cmd;
    while [[ ${count} -lt 5 ]]; do
        patch_cmd="${patch} -p${count} ${EPATCH_OPTS}";
        ( _epatch_draw_line "***** ${patchname} *****";
        echo;
        echo "PATCH COMMAND:  ${patch_cmd} --dry-run -f < '${PATCH_TARGET}'";
        echo;
        _epatch_draw_line "***** ${patchname} *****";
        ${patch_cmd} --dry-run -f < "${PATCH_TARGET}" 2>&1;
        ret=$?;
        echo;
        echo "patch program exited with status ${ret}";
        exit ${ret} ) >> "${STDERR_TARGET}";
        if [ $? -eq 0 ]; then
            ( _epatch_draw_line "***** ${patchname} *****";
            echo;
            echo "ACTUALLY APPLYING ${patchname} ...";
            echo "PATCH COMMAND:  ${patch_cmd} < '${PATCH_TARGET}'";
            echo;
            _epatch_draw_line "***** ${patchname} *****";
            ${patch_cmd} < "${PATCH_TARGET}" 2>&1;
            ret=$?;
            echo;
            echo "patch program exited with status ${ret}";
            exit ${ret} ) >> "${STDERR_TARGET}";
            if [ $? -ne 0 ]; then
                echo;
                eerror "A dry-run of patch command succeeded, but actually";
                eerror "applying the patch failed!";
                count=5;
            fi;
            break;
        fi;
        : $(( count++ ));
    done;
    if [[ -n ${PIPE_CMD} ]]; then
        rm -f "${PATCH_TARGET}";
    fi;
    if [[ ${count} -ge 5 ]]; then
        echo;
        eerror "Failed Patch: ${patchname} !";
        eerror " ( ${PATCH_TARGET} )";
        eerror;
        eerror "Include in your bugreport the contents of:";
        eerror;
        eerror "  ${STDERR_TARGET}";
        echo;
        die "Failed Patch: ${patchname}!";
    fi;
    rm -f "${STDERR_TARGET}";
    cat >> "${T}/epatch.log"  <<-EOF

PATCH: ${x}
CMD: ${patch_cmd}
PWD: ${PWD}

EOF

    eend 0;
done;
[[ ${SINGLE_PATCH} == "no" ]] && einfo "Done with patching";
:

}
epause ()
{
ewarn "QA Notice: epause is not defined in EAPI=${EAPI}, please file a bug at https://bugs.gentoo.org"
}
epunt_cxx ()
{
local dir=$1;
[[ -z ${dir} ]] && dir=${S};
ebegin "Removing useless C++ checks";
local f p any_found;
while IFS= read -r -d '' f; do
for p in "$(eutils_elt_patch_dir)"/nocxx/.patch;
do
if patch --no-backup-if-mismatch -p1 "${f}" "${p}" > /dev/null; then
any_found=1;
break;
fi;
done;
done < <(find "${dir}" -name configure -print0);
if [[ -z ${any_found} ]]; then
eqawarn "epunt_cxx called unnecessarily (no C++ checks to punt).";
fi;
eend 0
}
eshopts_pop ()
{
local s;
estack_pop eshopts s || die "${FUNCNAME}: unbalanced push";
if [[ ${s} == "shopt -"
]]; then
eval "${s}" || die "${FUNCNAME}: sanity: invalid shopt options: ${s}";
else
set +$- || die "${FUNCNAME}: sanity: invalid shell settings: $-";
set -${s} || die "${FUNCNAME}: sanity: unable to restore saved shell settings: ${s}";
fi
}
eshopts_push ()
{
if [[ $1 == -[su] ]]; then
estack_push eshopts "$(shopt -p)";
[[ $# -eq 0 ]] && return 0;
shopt "$@" || die "${FUNCNAME}: bad options to shopt: $";
else
estack_push eshopts $-;
[[ $# -eq 0 ]] && return 0;
set "$@" || die "${FUNCNAME}: bad options to set: $
";
fi
}
estack_pop ()
{
[[ $# -eq 0 || $# -gt 2 ]] && die "estack_pop: incorrect # of arguments";
local estack_name="ESTACK$1";
shift;
local _estack_retvar=$1;
shift;
eval local _estack_i=${#${_estack_name}[@]};
[[ $(( --_estack_i )) -eq -1 ]] && return 1;
if [[ -n ${_estack_retvar} ]]; then
eval ${_estack_retvar}="${${_estack_name}[${_estack_i}]}";
fi;
eval unset "${estack_name}[${estack_i}]"
}
estack_push ()
{
[[ $# -eq 0 ]] && die "estack_push: incorrect # of arguments";
local stack_name="ESTACK$1
";
shift;
eval ${stack_name}+=( "$@" )
}
esvn_clean ()
{
[[ $# -eq 0 ]] && set -- .;
find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
}
eumask_pop ()
{
[[ $# -eq 0 ]] || die "${FUNCNAME}: we take no options";
local s;
estack_pop eumask s || die "${FUNCNAME}: unbalanced push";
umask ${s} || die "${FUNCNAME}: sanity: could not restore umask: ${s}"
}
eumask_push ()
{
estack_push eumask "$(umask)";
umask "$@" || die "${FUNCNAME}: bad options to umask: $
"
}
eutils_elt_patch_dir ()
{
local d="${ECLASSDIR}/ELT-patches";
if [[ ! -d ${d} ]]; then
d="${EUTILS_ECLASSDIR_LOCAL}/ELT-patches";
fi;
echo "${d}"
}
evar_pop ()
{
local cnt=${1:-bad};
case $# in
0)
cnt=1
;;
1)
isdigit "${cnt}" || die "${FUNCNAME}: first arg must be a number: $
"
;;
)
die "${FUNCNAME}: only accepts one arg: $
"
;;
esac;
local var val;
while (( cnt-- )); do
estack_pop evar val || die "${FUNCNAME}: unbalanced push";
estack_pop evar var || die "${FUNCNAME}: unbalanced push";
[[ ${val} == "unset_76fc3c462065bb4ca959f939e6793f94" ]] && unset ${var} || printf -v "${var}" '%s' "${val}";
done
}
evar_push ()
{
local var val;
for var in "$@";
do
[[ ${!var+set} == "set" ]] && val=${!var} || val="unset_76fc3c462065bb4ca959f939e6793f94";
estack_push evar "${var}" "${val}";
done
}
evar_push_set ()
{
local var=$1;
evar_push ${var};
case $# in
1)
unset ${var}
;;
2)
printf -v "${var}" '%s' "$2"
;;
)
die "${FUNCNAME}: incorrect # of args: $
"
;;
esac
}
gcc-fullversion ()
{
_gcc_fullversion '$1.$2.$3' "$@"
}
gcc-major-version ()
{
_gcc_fullversion '$1' "$@"
}
gcc-micro-version ()
{
_gcc_fullversion '$3' "$@"
}
gcc-minor-version ()
{
gcc_fullversion '$2' "$@"
}
gcc-specs-directive ()
{
local directive subdname subdirective;
directive="$(gcc-specs-directive_raw $1)";
while [[ ${directive} == %()* ]]; do
subdname=${directive/
%(};
subdname=${subdname/)
};
subdirective="$(_gcc-specs-directive_raw ${subdname})";
directive="${directive//%(${subdname})/${subdirective}}";
done;
echo "${directive}";
return 0
}
gcc-specs-nostrict ()
{
local directive;
directive=$(gcc-specs-directive cc1);
[[ "${directive/{!fstrict-overflow:}" != "${directive}" ]]
}
gcc-specs-now ()
{
local directive;
directive=$(gcc-specs-directive link_command);
[[ "${directive/{!nonow:}" != "${directive}" ]]
}
gcc-specs-pie ()
{
local directive;
directive=$(gcc-specs-directive cc1);
[[ "${directive/{!nopie:}" != "${directive}" ]]
}
gcc-specs-relro ()
{
local directive;
directive=$(gcc-specs-directive link_command);
[[ "${directive/{!norelro:}" != "${directive}" ]]
}
gcc-specs-ssp ()
{
local directive;
directive=$(gcc-specs-directive cc1);
[[ "${directive/{!fno-stack-protector:}" != "${directive}" ]]
}
gcc-specs-ssp-to-all ()
{
local directive;
directive=$(gcc-specs-directive cc1);
[[ "${directive/{!fno-stack-protector-all:}" != "${directive}" ]]
}
gcc-specs-stack-check ()
{
local directive;
directive=$(gcc-specs-directive cc1);
[[ "${directive/{!fno-stack-check:}" != "${directive}" ]]
}
gcc-version ()
{
_gcc_fullversion '$1.$2' "$@"
}
gen_usr_ldscript ()
{
local lib libdir=$(get_libdir) output_format="" auto=false suffix=$(get_libname);
[[ -z ${ED+set} ]] && local ED=${D%/}${EPREFIX}/;
tc-is-static-only && return;
if [[ $(type -t multilib_is_native_abi) == "function" ]]; then
multilib_is_native_abi || return 0;
fi;
case ${CTARGET:-${CHOST}} in
-darwin)

    ;;
    *-android*)
        return 0
    ;;
    *linux* | *-freebsd* | *-openbsd* | *-netbsd*)
        use prefix && return 0
    ;;
    *)
        return 0
    ;;
esac;
dodir /usr/${libdir};
if [[ $1 == "-a" ]]; then
    auto=true;
    shift;
    dodir /${libdir};
fi;
local flags=(${CFLAGS} ${LDFLAGS} -Wl,--verbose);
if $(tc-getLD) --version | grep -q 'GNU gold'; then
    local d="${T}/bfd-linker";
    mkdir -p "${d}";
    ln -sf $(which ${CHOST}-ld.bfd) "${d}"/ld;
    flags+=(-B"${d}");
fi;
output_format=$($(tc-getCC) "${flags[@]}" 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p');
[[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )";
for lib in "$@";
do
    local tlib;
    if ${auto}; then
        lib="lib${lib}${suffix}";
    else
        [[ -r ${ED}/${libdir}/${lib} ]] || continue;
    fi;
    case ${CTARGET:-${CHOST}} in 
        *-darwin*)
            if ${auto}; then
                tlib=$(scanmacho -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
            else
                tlib=$(scanmacho -qF'%S#F' "${ED}"/${libdir}/${lib});
            fi;
            [[ -z ${tlib} ]] && die "unable to read install_name from ${lib}";
            tlib=${tlib##*/};
            if ${auto}; then
                mv "${ED}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
                if [[ ${tlib} != ${lib%${suffix}}.*${suffix#.} ]]; then
                    mv "${ED}"/usr/${libdir}/${tlib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
                fi;
                rm -f "${ED}"/${libdir}/${lib};
            fi;
            if [[ ! -w "${ED}/${libdir}/${tlib}" ]]; then
                chmod u+w "${ED}${libdir}/${tlib}";
                local nowrite=yes;
            fi;
            install_name_tool -id "${EPREFIX}"/${libdir}/${tlib} "${ED}"/${libdir}/${tlib} || die "install_name_tool failed";
            [[ -n ${nowrite} ]] && chmod u-w "${ED}${libdir}/${tlib}";
            pushd "${ED}/usr/${libdir}" > /dev/null;
            ln -snf "../../${libdir}/${tlib}" "${lib}";
            popd > /dev/null
        ;;
        *)
            if ${auto}; then
                tlib=$(scanelf -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
                [[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}";
                mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
                if [[ ${tlib} != ${lib}* ]]; then
                    mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die;
                fi;
                rm -f "${ED}"/${libdir}/${lib};
            else
                tlib=${lib};
            fi;
            cat > "${ED}/usr/${libdir}/${lib}"  <<-END_LDSCRIPT

/* GNU ld script
Since Gentoo has critical dynamic libraries in /lib, and the static versions
in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we
run into linking problems. This "fake" dynamic lib is a linker script that
redirects the linker to the real lib. And yes, this works in the cross-
compiling scenario as the sysroot-ed linker will prepend the real path.

See bug https://bugs.gentoo.org/4411 for more info.
*/
${output_format}
GROUP ( ${EPREFIX}/${libdir}/${tlib} )
END_LDSCRIPT

        ;;
    esac
    fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}";
done

}
get_abi_CFLAGS ()
{
get_abi_var CFLAGS "$@"
}
get_abi_CHOST ()
{
get_abi_var CHOST "$@"
}
get_abi_CTARGET ()
{
get_abi_var CTARGET "$@"
}
get_abi_FAKE_TARGETS ()
{
get_abi_var FAKE_TARGETS "$@"
}
get_abi_LDFLAGS ()
{
get_abi_var LDFLAGS "$@"
}
get_abi_LIBDIR ()
{
get_abi_var LIBDIR "$@"
}
get_abi_var ()
{
local flag=$1;
local abi=${2:-${ABI:-${DEFAULT_ABI:-default}}};
local var="${flag}${abi}";
echo ${!var}
}
get_after_major_version ()
{
echo $(get_version_component_range 2- "${1:-${PV}}")
}
get_all_abis ()
{
local x order="" mvar dvar;
mvar="MULTILIB_ABIS";
dvar="DEFAULT_ABI";
if [[ -n $1 ]]; then
mvar="$1
${mvar}";
dvar="$1_${dvar}";
fi;
if [[ -z ${!mvar} ]]; then
echo "default";
return 0;
fi;
for x in ${!mvar};
do
if [[ ${x} != ${!dvar} ]]; then
order="${order:+${order} }${x}";
fi;
done;
order="${order:+${order} }${!dvar}";
echo ${order};
return 0
}
get_all_libdirs ()
{
local libdirs abi;
for abi in ${MULTILIB_ABIS};
do
libdirs+=" $(get_abi_LIBDIR ${abi})";
done;
[[ " ${libdirs} " != " lib " ]] && libdirs+=" lib";
echo "${libdirs}"
}
get_all_version_components ()
{
eshopts_push -s extglob;
local ver_str=${1:-${PV}} result;
result=();
if [[ ${VERSIONATOR_CACHE_VER_STR} == ${ver_str} ]]; then
echo ${VERSIONATOR_CACHE_RESULT};
eshopts_pop;
return;
fi;
export VERSIONATOR_CACHE_VER_STR=${ver_str};
while [[ -n $ver_str ]]; do
case "${ver_str::1}" in
[[:digit:]])
result+=("${ver_str%%[^[:digit:]]}");
ver_str=${ver_str##+([[:digit:]])}
;;
[-
.])
result+=("${ver_str::1}");
ver_str=${ver_str:1}
;;
[[:alpha:]])
local not_match=${ver_str##+([[:alpha:]])([[:digit:]])};
result+=("${ver_str::${#ver_str} - ${#not_match}}");
ver_str=${not_match}
;;
)
result+=("${ver_str::1}");
ver_str=${ver_str:1}
;;
esac;
done;
export VERSIONATOR_CACHE_RESULT=${result[
]};
echo ${result[@]};
eshopts_pop
}
get_install_abis ()
{
local x order="";
if [[ -z ${MULTILIB_ABIS} ]]; then
echo "default";
return 0;
fi;
if [[ ${EMULTILIB_PKG} == "true" ]]; then
for x in ${MULTILIB_ABIS};
do
if [[ ${x} != "${DEFAULT_ABI}" ]]; then
has ${x} ${ABI_DENY} || order="${order} ${x}";
fi;
done;
has ${DEFAULT_ABI} ${ABI_DENY} || order="${order} ${DEFAULT_ABI}";
if [[ -n ${ABI_ALLOW} ]]; then
local ordera="";
for x in ${order};
do
if has ${x} ${ABI_ALLOW}; then
ordera="${ordera} ${x}";
fi;
done;
order=${ordera};
fi;
else
order=${DEFAULT_ABI};
fi;
if [[ -z ${order} ]]; then
die "The ABI list is empty. Are you using a proper multilib profile? Perhaps your USE flags or MULTILIB_ABIS are too restrictive for this package.";
fi;
echo ${order};
return 0
}
get_last_version_component_index ()
{
echo $(($(get_version_component_count "${1:-${PV}}" ) - 1))
}
get_libdir ()
{
local libdir_var="LIBDIR
${ABI}";
local libdir="lib";
[[ -n ${ABI} && -n ${!libdir_var} ]] && libdir=${!libdir_var};
echo "${libdir}"
}
get_libname ()
{
local libname;
local ver=$1;
case ${CHOST} in
-cygwin)
libname="dll.a"
;;
mingw* | -mingw)
libname="dll"
;;
-darwin)
libname="dylib"
;;
-mint)
libname="irrelevant"
;;
hppa_-hpux_)
libname="sl"
;;
)
libname="so"
;;
esac;
if [[ -z $
]]; then
echo ".${libname}";
else
for ver in "$@";
do
case ${CHOST} in
-cygwin)
echo ".${ver}.${libname}"
;;
-darwin)
echo ".${ver}.${libname}"
;;
-mint)
echo ".${libname}"
;;
)
echo ".${libname}.${ver}"
;;
esac;
done;
fi
}
get_localversion ()
{
local lv_list i x;
for i in $(ls ${1}/localversion
2>/dev/null);
do
[[ -n ${i//~} ]] && lv_list="${lv_list} ${i}";
done;
for i in ${lv_list};
do
x="${x}$(<${i})";
done;
x=${x/ /};
echo ${x}
}
get_major_version ()
{
local c=($(get_all_version_components "${1:-${PV}}"));
echo ${c[0]}
}
get_makefile_extract_function ()
{
local a='' b='' mkfunc='getfilevar';
a="$(getfilevar VERSION ${KERNEL_MAKEFILE})";
b="$(getfilevar_noexec VERSION ${KERNEL_MAKEFILE})";
[[ "${a}" != "${b}" ]] && mkfunc='getfilevar_noexec';
echo "${mkfunc}"
}
get_modname ()
{
local modname;
local ver=$1;
case ${CHOST} in
-darwin)
modname="bundle"
;;
)
modname="so"
;;
esac;
echo ".${modname}"
}
get_running_version ()
{
KV_FULL=$(uname -r);
if [[ -f ${ROOT}/lib/modules/${KV_FULL}/source/Makefile && -f ${ROOT}/lib/modules/${KV_FULL}/build/Makefile ]]; then
KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/source);
KBUILD_OUTPUT=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/build);
unset KV_FULL;
get_version;
return $?;
else
if [[ -f ${ROOT}/lib/modules/${KV_FULL}/source/Makefile ]]; then
KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/source);
unset KV_FULL;
get_version;
return $?;
else
if [[ -f ${ROOT}/lib/modules/${KV_FULL}/build/Makefile ]]; then
KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/build);
unset KV_FULL;
get_version;
return $?;
else
local kv_full=${KV_FULL//[-+
]};
KV_MAJOR=$(get_version_component_range 1 ${kv_full});
KV_MINOR=$(get_version_component_range 2 ${kv_full});
KV_PATCH=$(get_version_component_range 3 ${kv_full});
KV_EXTRA="${KV_FULL#${KV_MAJOR}.${KV_MINOR}${KV_PATCH:+.${KV_PATCH}}}";
: ${KV_PATCH:=0};
fi;
fi;
fi;
return 0
}
get_version ()
{
local tmplocal;
[ -n "${KV_FULL}" ] && return 0;
unset KV_DIR;
[ -z "${get_version_warning_done}" ] && qeinfo "Determining the location of the kernel source code";
[ -h "${KERNEL_DIR}" ] && KV_DIR="$(readlink -f ${KERNEL_DIR})";
[ -d "${KERNEL_DIR}" ] && KV_DIR="${KERNEL_DIR}";
if [ -z "${KV_DIR}" ]; then
if [ -z "${get_version_warning_done}" ]; then
get_version_warning_done=1;
qewarn "Unable to find kernel sources at ${KERNEL_DIR}";
if [ "${KERNEL_DIR}" == "/usr/src/linux" ]; then
qeinfo "Please make sure that ${KERNEL_DIR} points at your running kernel, ";
qeinfo "(or the kernel you wish to build against).";
qeinfo "Alternatively, set the KERNEL_DIR environment variable to the kernel sources location";
else
qeinfo "Please ensure that the KERNEL_DIR environment variable points at full Linux sources of the kernel you wish to compile against.";
fi;
fi;
return 1;
fi;
if [ -z "${KBUILD_OUTPUT}" -a -L "${KERNEL_DIR}/source" ]; then
KBUILD_OUTPUT=${KERNEL_DIR};
KERNEL_DIR=$(readlink -f "${KERNEL_DIR}/source");
KV_DIR=${KERNEL_DIR};
fi;
if [ -z "${get_version_warning_done}" ]; then
qeinfo "Found kernel source directory:";
qeinfo " ${KV_DIR}";
fi;
if [ ! -s "${KV_DIR}/Makefile" ]; then
if [ -z "${get_version_warning_done}" ]; then
get_version_warning_done=1;
qeerror "Could not find a Makefile in the kernel source directory.";
qeerror "Please ensure that ${KERNEL_DIR} points to a complete set of Linux sources";
fi;
return 1;
fi;
local OUTPUT_DIR=${KBUILD_OUTPUT};
KERNEL_MAKEFILE="${KV_DIR}/Makefile";
if [[ -z ${OUTPUT_DIR} ]]; then
local mkfunc=$(get_makefile_extract_function "${KERNEL_MAKEFILE}");
OUTPUT_DIR=$(${mkfunc} KBUILD_OUTPUT "${KERNEL_MAKEFILE}");
fi;
KV_MAJOR=$(getfilevar_noexec VERSION "${KERNEL_MAKEFILE}");
KV_MINOR=$(getfilevar_noexec PATCHLEVEL "${KERNEL_MAKEFILE}");
KV_PATCH=$(getfilevar_noexec SUBLEVEL "${KERNEL_MAKEFILE}");
KV_EXTRA=$(getfilevar_noexec EXTRAVERSION "${KERNEL_MAKEFILE}");
if [ -z "${KV_MAJOR}" -o -z "${KV_MINOR}" -o -z "${KV_PATCH}" ]; then
if [ -z "${get_version_warning_done}" ]; then
get_version_warning_done=1;
qeerror "Could not detect kernel version.";
qeerror "Please ensure that ${KERNEL_DIR} points to a complete set of Linux sources.";
fi;
return 1;
fi;
if [[ -z ${OUTPUT_DIR} ]]; then
for OUTPUT_DIR in "${SYSROOT}" "${ROOT}" "";
do
OUTPUT_DIR+="/lib/modules/${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}/build";
if [[ -e ${OUTPUT_DIR} ]]; then
break;
fi;
done;
fi;
[ -h "${OUTPUT_DIR}" ] && KV_OUT_DIR="$(readlink -f ${OUTPUT_DIR})";
[ -d "${OUTPUT_DIR}" ] && KV_OUT_DIR="${OUTPUT_DIR}";
if [ -n "${KV_OUT_DIR}" ]; then
qeinfo "Found kernel object directory:";
qeinfo " ${KV_OUT_DIR}";
fi;
KV_OUT_DIR="${KV_OUT_DIR:-${KV_DIR}}";
if [ -s "${KV_OUT_DIR}"/include/config/kernel.release ]; then
KV_LOCAL=$(<"${KV_OUT_DIR}"/include/config/kernel.release);
else
if [ -s "${KV_OUT_DIR}"/.kernelrelease ]; then
KV_LOCAL=$(<"${KV_OUT_DIR}"/.kernelrelease);
else
KV_LOCAL=;
fi;
fi;
tmplocal=${KV_LOCAL#${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}};
if [ "$KV_LOCAL" = "$tmplocal" ]; then
KV_LOCAL=;
else
KV_LOCAL=$tmplocal;
fi;
KV_FULL="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}${KV_LOCAL}";
qeinfo "Found sources for kernel version:";
qeinfo " ${KV_FULL}";
return 0
}
get_version_component_count ()
{
local a=($(get_version_components "${1:-${PV}}"));
echo ${#a[@]}
}
get_version_component_range ()
{
eshopts_push -s extglob;
local c v="${2:-${PV}}" range="${1}" range_start range_end;
local -i i=-1 j=0;
c=($(get_all_version_components "${v}"));
range_start=${range%-
};
range_start=${range_start:-1};
range_end=${range#-};
range_end=${range_end:-${#c[@]}};
while ((j < range_start)); do
i+=1;
((i > ${#c[@]})) && eshopts_pop && return;
[[ -n "${c[i]//[-.
]}" ]] && j+=1;
done;
while ((j <= range_end)); do
echo -n ${c[i]};
((i > ${#c[@]})) && eshopts_pop && return;
[[ -n "${c[i]//[-.]}" ]] && j+=1;
i+=1;
done;
eshopts_pop
}
get_version_components ()
{
local c=$(get_all_version_components "${1:-${PV}}");
echo ${c//[-.
]/ }
}
getfilevar ()
{
local ERROR basefname basedname myARCH="${ARCH}" M="${S}";
ERROR=0;
[ -z "${1}" ] && ERROR=1;
[ ! -f "${2}" ] && ERROR=1;
if [ "${ERROR}" = 1 ]; then
echo -e "\n";
eerror "getfilevar requires 2 variables, with the second a valid file.";
eerror " getfilevar ";
else
basefname="$(basename ${2})";
basedname="$(dirname ${2})";
unset ARCH;
[[ ${EAPI:-0} == [0123] ]] && function nonfatal ()
{
"$@"
};
case ${EBUILD_PHASE_FUNC} in
pkg_info | pkg_nofetch | pkg_pretend)
M="${T}"
;;
esac;
echo -e "e:\n\t@echo $(${1})\ninclude ${basefname}" | nonfatal emake -C "${basedname}" M="${M}" ${BUILD_FIXES} -s -f - 2> /dev/null;
ARCH=${myARCH};
fi
}
getfilevar_noexec ()
{
local ERROR basefname basedname mycat myARCH="${ARCH}";
ERROR=0;
mycat='cat';
[ -z "${1}" ] && ERROR=1;
[ ! -f "${2}" ] && ERROR=1;
[ "${2%.gz}" != "${2}" ] && mycat='zcat';
if [ "${ERROR}" = 1 ]; then
echo -e "\n";
eerror "getfilevar_noexec requires 2 variables, with the second a valid file.";
eerror " getfilevar_noexec ";
else
${mycat} "${2}" | sed -n -e "/^[[:space:]]${1}[[:space:]]:?=[[:space:]](.)$/{
s,^[^=][[:space:]]=[[:space:]],,g ;
s,[[:space:]]
$,,g ;
p
}";
fi
}
has_multilib_profile ()
{
[ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ]
}
in_iuse ()
{
local use=${1};
if [[ -z "${use}" ]]; then
echo "!!! in_iuse() called without a parameter." 1>&2;
echo "!!! in_iuse " 1>&2;
die "in_iuse() called without a parameter";
fi;
local liuse=(${IUSE_EFFECTIVE});
has "${use}" "${liuse[@]#[+-]}"
}
is_final_abi ()
{
has_multilib_profile || return 0;
set -- $(get_install_abis);
local LAST_ABI=$#;
[[ ${!LAST_ABI} == ${ABI} ]]
}
isdigit ()
{
local d;
for d in "$@";
do
[[ ${d:-bad} == [!0-9] ]] && return 1;
done;
return 0
}
kernel_is ()
{
linux-info_get_any_version;
local operator test value;
case ${1#-} in
lt)
operator="-lt";
shift
;;
gt)
operator="-gt";
shift
;;
le)
operator="-le";
shift
;;
ge)
operator="-ge";
shift
;;
eq)
operator="-eq";
shift
;;
*)
operator="-eq"
;;
esac;
[[ $# -gt 3 ]] && die "Error in kernel-2_kernel_is(): too many parameters";
: $(( test = (KV_MAJOR << 16) + (KV_MINOR << 8) + KV_PATCH ));
: $(( value = (${1:-${KV_MAJOR}} << 16) + (${2:-${KV_MINOR}} << 8) + ${3:-${KV_PATCH}} ));
[ ${test} ${operator} ${value} ]
}
linux-info_get_any_version ()
{
get_version;
if [[ $? -ne 0 ]]; then
ewarn "Unable to calculate Linux Kernel version for build, attempting to use running version";
get_running_version;
fi
}
linux-info_pkg_setup ()
{
linux-info_get_any_version;
if kernel_is 2 4; then
if [ "$( gcc-major-version )" -eq "4" ]; then
echo;
ewarn "Be warned !! >=sys-devel/gcc-4.0.0 isn't supported with";
ewarn "linux-2.4 (or modules building against a linux-2.4 kernel)!";
echo;
ewarn "Either switch to another gcc-version (via gcc-config) or use a";
ewarn "newer kernel that supports gcc-4.";
echo;
ewarn "Also be aware that bugreports about gcc-4 not working";
ewarn "with linux-2.4 based ebuilds will be closed as INVALID!";
echo;
epause 10;
fi;
fi;
[ -n "${CONFIG_CHECK}" ] && check_extra_config
}
linux_chkconfig_builtin ()
{
linux_config_qa_check linux_chkconfig_builtin;
[[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == y ]]
}
linux_chkconfig_module ()
{
linux_config_qa_check linux_chkconfig_module;
[[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == m ]]
}
linux_chkconfig_present ()
{
linux_config_qa_check linux_chkconfig_present;
[[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == [my] ]]
}
linux_chkconfig_string ()
{
linux_config_qa_check linux_chkconfig_string;
getfilevar_noexec "CONFIG_$1" "$(linux_config_path)"
}
linux_config_bin_exists ()
{
export LINUX_CONFIG_EXISTS_DONE=1;
[[ -s /proc/config.gz ]]
}
linux_config_exists ()
{
linux_config_src_exists || linux_config_bin_exists
}
linux_config_path ()
{
if linux_config_src_exists; then
echo "${KV_OUT_DIR}/.config";
else
if linux_config_bin_exists; then
echo "/proc/config.gz";
else
return 1;
fi;
fi
}
linux_config_qa_check ()
{
local f="$1";
if [ -z "${LINUX_CONFIG_EXISTS_DONE}" ]; then
ewarn "QA: You called $f before any linux_config_exists!";
ewarn "QA: The return value of $f will NOT guaranteed later!";
fi
}
linux_config_src_exists ()
{
export LINUX_CONFIG_EXISTS_DONE=1;
[[ -n ${KV_OUT_DIR} && -s ${KV_OUT_DIR}/.config ]]
}
make_desktop_entry ()
{
[[ -z $1 ]] && die "make_desktop_entry: You must specify the executable";
local exec=${1};
local name=${2:-${PN}};
local icon=${3:-${PN}};
local type=${4};
local fields=${5};
if [[ -z ${type} ]]; then
local catmaj=${CATEGORY%%-
};
local catmin=${CATEGORY##
-};
case ${catmaj} in
app)
case ${catmin} in
accessibility)
type="Utility;Accessibility"
;;
admin)
type=System
;;
antivirus)
type=System
;;
arch)
type="Utility;Archiving"
;;
backup)
type="Utility;Archiving"
;;
cdr)
type="AudioVideo;DiscBurning"
;;
dicts)
type="Office;Dictionary"
;;
doc)
type=Documentation
;;
editors)
type="Utility;TextEditor"
;;
emacs)
type="Development;TextEditor"
;;
emulation)
type="System;Emulator"
;;
laptop)
type="Settings;HardwareSettings"
;;
office)
type=Office
;;
pda)
type="Office;PDA"
;;
vim)
type="Development;TextEditor"
;;
xemacs)
type="Development;TextEditor"
;;
esac
;;
dev)
type="Development"
;;
games)
case ${catmin} in
action | fps)
type=ActionGame
;;
arcade)
type=ArcadeGame
;;
board)
type=BoardGame
;;
emulation)
type=Emulator
;;
kids)
type=KidsGame
;;
puzzle)
type=LogicGame
;;
roguelike)
type=RolePlaying
;;
rpg)
type=RolePlaying
;;
simulation)
type=Simulation
;;
sports)
type=SportsGame
;;
strategy)
type=StrategyGame
;;
esac;
type="Game;${type}"
;;
gnome)
type="Gnome;GTK"
;;
kde)
type="KDE;Qt"
;;
mail)
type="Network;Email"
;;
media)
case ${catmin} in
gfx)
type=Graphics
;;
)
case ${catmin} in
radio)
type=Tuner
;;
sound)
type=Audio
;;
tv)
type=TV
;;
video)
type=Video
;;
esac;
type="AudioVideo;${type}"
;;
esac
;;
net)
case ${catmin} in
dialup)
type=Dialup
;;
ftp)
type=FileTransfer
;;
im)
type=InstantMessaging
;;
irc)
type=IRCClient
;;
mail)
type=Email
;;
news)
type=News
;;
nntp)
type=News
;;
p2p)
type=FileTransfer
;;
voip)
type=Telephony
;;
esac;
type="Network;${type}"
;;
sci)
case ${catmin} in
astro
)
type=Astronomy
;;
bio
)
type=Biology
;;
calc_)
type=Calculator
;;
chem_)
type=Chemistry
;;
elec_)
type=Electronics
;;
geo_)
type=Geology
;;
math_)
type=Math
;;
physics)
type=Physics
;;
visual_)
type=DataVisualization
;;
esac;
type="Education;Science;${type}"
;;
sys)
type="System"
;;
www)
case ${catmin} in
client)
type=WebBrowser
;;
esac;
type="Network;${type}"
;;
*)
type=
;;
esac;
fi;
local slot=${SLOT%/};
if [[ ${slot} == "0" ]]; then
local desktop_name="${PN}";
else
local desktop_name="${PN}-${slot}";
fi;
local desktop="${T}/$(echo ${exec} | sed 's:[[:space:]/:]:
:g')-${desktop_name}.desktop";
type=${type%;}${type:+;};
eshopts_push -s extglob;
if [[ -n ${icon} && ${icon} != /* ]] && [[ ${icon} == *.xpm || ${icon} == *.png || ${icon} == *.svg ]]; then
ewarn "As described in the Icon Theme Specification, icon file extensions are not";
ewarn "allowed in .desktop files if the value is not an absolute path.";
icon=${icon%.@(xpm|png|svg)};
fi;
eshopts_pop;
cat > "${desktop}" <<-EOF
[Desktop Entry]
Name=${name}
Type=Application
Comment=${DESCRIPTION}
Exec=${exec}
TryExec=${exec%% *}
Icon=${icon}
Categories=${type}
EOF

if [[ ${fields:-=} != *=* ]]; then
    ewarn "make_desktop_entry: update your 5th arg to read Path=${fields}";
    fields="Path=${fields}";
fi;
[[ -n ${fields} ]] && printf '%b\n' "${fields}" >> "${desktop}";
( insinto /usr/share/applications;
doins "${desktop}" ) || die "installing desktop file failed"

}
make_session_desktop ()
{
[[ -z $1 ]] && eerror "$0: You must specify the title" && return 1;
[[ -z $2 ]] && eerror "$0: You must specify the command" && return 1;
local title=$1;
local command=$2;
local desktop=${T}/${wm:-${PN}}.desktop;
shift 2;
cat > "${desktop}" <<-EOF
[Desktop Entry]
Name=${title}
Comment=This session logs you into ${title}
Exec=${command} $*
TryExec=${command}
Type=XSession
EOF

( insinto /usr/share/xsessions;
doins "${desktop}" )

}
make_wrapper ()
{
_eutils_eprefix_init;
local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5;
local tmpwrapper=$(emktemp);
( echo '#!/bin/sh';
[[ -n ${chdir} ]] && printf 'cd "%s"\n' "${EPREFIX}${chdir}";
if [[ -n ${libdir} ]]; then
local var;
if [[ ${CHOST} == -darwin ]]; then
var=DYLD_LIBRARY_PATH;
else
var=LD_LIBRARY_PATH;
fi;
cat <<-EOF
if [ "${${var}+set}" = "set" ] ; then
export ${var}="${${var}}:${EPREFIX}${libdir}"
else
export ${var}="${EPREFIX}${libdir}"
fi
EOF

fi
printf 'exec %s "$@"\n' "${bin/#\//${EPREFIX}/}" ) > "${tmpwrapper}";
chmod go+rx "${tmpwrapper}";
if [[ -n ${path} ]]; then
    ( exeinto "${path}";
    newexe "${tmpwrapper}" "${wrapper}" ) || die;
else
    newbin "${tmpwrapper}" "${wrapper}" || die;
fi

}
multilib_env ()
{
local CTARGET=${1:-${CTARGET}};
local cpu=${CTARGET%%-};
case ${cpu} in
aarch64
)
export CFLAGS_arm=${CFLAGS_arm-};
case ${cpu} in
aarch64_be)
export CHOST_arm="armv8b-${CTARGET#-}"
;;
)
export CHOST_arm="armv8l-${CTARGET#
-}"
;;
esac;
CHOST_arm=${CHOST_arm/%-gnu/-gnueabi};
export CTARGET_arm=${CHOST_arm};
export LIBDIR_arm="lib";
export CFLAGS_arm64=${CFLAGS_arm64-};
export CHOST_arm64=${CTARGET};
export CTARGET_arm64=${CHOST_arm64};
export LIBDIR_arm64="lib64";
: ${MULTILIB_ABIS=arm64};
: ${DEFAULT_ABI=arm64}
;;
x86_64
)
export CFLAGS_x86=${CFLAGS_x86--m32};
export CHOST_x86=${CTARGET/x86_64/i686};
CHOST_x86=${CHOST_x86/%-gnux32/-gnu};
export CTARGET_x86=${CHOST_x86};
if [[ ${SYMLINK_LIB} == "yes" ]]; then
export LIBDIR_x86="lib32";
else
export LIBDIR_x86="lib";
fi;
export CFLAGS_amd64=${CFLAGS_amd64--m64};
export CHOST_amd64=${CTARGET/%-gnux32/-gnu};
export CTARGET_amd64=${CHOST_amd64};
export LIBDIR_amd64="lib64";
export CFLAGS_x32=${CFLAGS_x32--mx32};
export CHOST_x32=${CTARGET/%-gnu/-gnux32};
export CTARGET_x32=${CHOST_x32};
export LIBDIR_x32="libx32";
case ${CTARGET} in
*-gnux32)
: ${MULTILIB_ABIS=x32 amd64 x86};
: ${DEFAULT_ABI=x32}
;;
*)
: ${MULTILIB_ABIS=amd64 x86};
: ${DEFAULT_ABI=amd64}
;;
esac
;;
mips64_)
export CFLAGS_o32=${CFLAGS_o32--mabi=32};
export CHOST_o32=${CTARGET/mips64/mips};
export CTARGET_o32=${CHOST_o32};
export LIBDIR_o32="lib";
export CFLAGS_n32=${CFLAGS_n32--mabi=n32};
export CHOST_n32=${CTARGET};
export CTARGET_n32=${CHOST_n32};
export LIBDIR_n32="lib32";
export CFLAGS_n64=${CFLAGS_n64--mabi=64};
export CHOST_n64=${CTARGET};
export CTARGET_n64=${CHOST_n64};
export LIBDIR_n64="lib64";
: ${MULTILIB_ABIS=n64 n32 o32};
: ${DEFAULT_ABI=n32}
;;
powerpc64_)
export CFLAGS_ppc=${CFLAGS_ppc--m32};
export CHOST_ppc=${CTARGET/powerpc64/powerpc};
export CTARGET_ppc=${CHOST_ppc};
export LIBDIR_ppc="lib";
export CFLAGS_ppc64=${CFLAGS_ppc64--m64};
export CHOST_ppc64=${CTARGET};
export CTARGET_ppc64=${CHOST_ppc64};
export LIBDIR_ppc64="lib64";
: ${MULTILIB_ABIS=ppc64 ppc};
: ${DEFAULT_ABI=ppc64}
;;
s390x_)
export CFLAGS_s390=${CFLAGS_s390--m31};
export CHOST_s390=${CTARGET/s390x/s390};
export CTARGET_s390=${CHOST_s390};
export LIBDIR_s390="lib";
export CFLAGS_s390x=${CFLAGS_s390x--m64};
export CHOST_s390x=${CTARGET};
export CTARGET_s390x=${CHOST_s390x};
export LIBDIR_s390x="lib64";
: ${MULTILIB_ABIS=s390x s390};
: ${DEFAULT_ABI=s390x}
;;
sparc64_)
export CFLAGS_sparc32=${CFLAGS_sparc32--m32};
export CHOST_sparc32=${CTARGET/sparc64/sparc};
export CTARGET_sparc32=${CHOST_sparc32};
export LIBDIR_sparc32="lib";
export CFLAGS_sparc64=${CFLAGS_sparc64--m64};
export CHOST_sparc64=${CTARGET};
export CTARGET_sparc64=${CHOST_sparc64};
export LIBDIR_sparc64="lib64";
: ${MULTILIB_ABIS=sparc64 sparc32};
: ${DEFAULT_ABI=sparc64}
;;
)
: ${MULTILIB_ABIS=default};
: ${DEFAULT_ABI=default}
;;
esac;
export MULTILIB_ABIS DEFAULT_ABI
}
multilib_toolchain_setup ()
{
local v vv;
export ABI=$1;
if [[ ${DEFAULT_ABI_SAVED} == "true" ]]; then
for v in CHOST CBUILD AS CC CXX F77 FC LD PKG_CONFIG
{LIBDIR,PATH};
do
vv="abi_saved${v}";
[[ ${!vv+set} == "set" ]] && export ${v}="${!vv}" || unset ${v};
unset ${vv};
done;
unset DEFAULT_ABI_SAVED;
fi;
if [[ ${ABI} != ${DEFAULT_ABI} ]]; then
for v in CHOST CBUILD AS CC CXX F77 FC LD PKG_CONFIG
{LIBDIR,PATH};
do
vv="abi_saved${v}";
[[ ${!v+set} == "set" ]] && export ${vv}="${!v}" || unset ${vv};
done;
export DEFAULT_ABI_SAVED="true";
export CHOST=$(get_abi_CHOST ${DEFAULT_ABI});
export CC="$(tc-getCC) $(get_abi_CFLAGS)";
export CXX="$(tc-getCXX) $(get_abi_CFLAGS)";
export F77="$(tc-getF77) $(get_abi_CFLAGS)";
export FC="$(tc-getFC) $(get_abi_CFLAGS)";
export LD="$(tc-getLD) $(get_abi_LDFLAGS)";
export CHOST=$(get_abi_CHOST $1);
export CBUILD=$(get_abi_CHOST $1);
export PKG_CONFIG_LIBDIR=${EPREFIX}/usr/$(get_libdir)/pkgconfig;
export PKG_CONFIG_PATH=${EPREFIX}/usr/share/pkgconfig;
fi
}
newicon ()
{
iconins ${FUNCNAME} "$@"
}
newmenu ()
{
( insinto /usr/share/applications;
newins "$@" )
}
number_abis ()
{
set -- get_install_abis;
echo $#
}
optfeature ()
{
debug-print-function ${FUNCNAME} "$@";
local i j msg;
local desc=$1;
local flag=0;
shift;
for i in "$@";
do
for j in ${i};
do
if has_version "${j}"; then
flag=1;
else
flag=0;
break;
fi;
done;
if [[ ${flag} -eq 1 ]]; then
break;
fi;
done;
if [[ ${flag} -eq 0 ]]; then
for i in "$@";
do
msg=" ";
for j in ${i};
do
msg+=" ${j} and";
done;
msg="${msg:0: -4} for ${desc}";
elog "${msg}";
done;
fi
}
path_exists ()
{
local opt=$1;
[[ ${opt} == -[ao] ]] && shift || opt="-a";
[[ $# -eq 0 ]] && return 1;
local p r=0;
for p in "$@";
do
[[ -e ${p} ]];
: $(( r += $? ));
done;
case ${opt} in
-a)
return $(( r != 0 ))
;;
-o)
return $(( r == $# ))
;;
esac
}
pkg_nofetch ()
{
default
}
pkg_postinst ()
{
einfo "If you don't use avahi with nss-mdns you have to use a static IP addresss in your printer confiugration";
einfo "If you want to use a broadcasted name add .local to it";
einfo "You can test if it's working with ping printername.local"
}
pkg_setup ()
{
CONFIG_CHECK="";
if use amd64; then
CONFIG_CHECK="${CONFIG_CHECK} ~IA32_EMULATION";
if ! has_multilib_profile; then
die "This package CANNOT be installed on pure 64-bit system. You need multilib enabled.";
fi;
fi;
linux-info_pkg_setup
}
preserve_old_lib ()
{
eutils_eprefix_init;
if [[ ${EBUILD_PHASE} != "preinst" ]]; then
eerror "preserve_old_lib() must be called from pkg_preinst() only";
die "Invalid preserve_old_lib() usage";
fi;
[[ -z $1 ]] && die "Usage: preserve_old_lib [more libraries to preserve]";
has preserve-libs ${FEATURES} && return 0;
local lib dir;
for lib in "$@";
do
[[ -e ${EROOT}/${lib} ]] || continue;
dir=${lib%/
};
dodir ${dir} || die "dodir ${dir} failed";
cp "${EROOT}"/${lib} "${ED}"/${lib} || die "cp ${lib} failed";
touch "${ED}"/${lib};
done
}
preserve_old_lib_notify ()
{
if [[ ${EBUILD_PHASE} != "postinst" ]]; then
eerror "preserve_old_lib_notify() must be called from pkg_postinst() only";
die "Invalid preserve_old_lib_notify() usage";
fi;
has preserve-libs ${FEATURES} && return 0;
eutils_eprefix_init;
local lib notice=0;
for lib in "$@";
do
[[ -e ${EROOT}/${lib} ]] || continue;
if [[ ${notice} -eq 0 ]]; then
notice=1;
ewarn "Old versions of installed libraries were detected on your system.";
ewarn "In order to avoid breaking packages that depend on these old libs,";
ewarn "the libraries are not being removed. You need to run revdep-rebuild";
ewarn "in order to remove these old dependencies. If you do not have this";
ewarn "helper program, simply emerge the 'gentoolkit' package.";
ewarn;
fi;
ewarn " # revdep-rebuild --library '${lib}' && rm '${lib}'";
done
}
prune_libtool_files ()
{
debug-print-function ${FUNCNAME} "$@";
local removing_all removing_modules opt;
eutils_eprefix_init;
for opt in "$@";
do
case "${opt}" in
--all)
removing_all=1;
removing_modules=1
;;
--modules)
removing_modules=1
;;
)
die "Invalid argument to ${FUNCNAME}(): ${opt}"
;;
esac;
done;
local f;
local queue=();
while IFS= read -r -d '' f; do
local archivefile=${f/%.la/.a};
if ! sed -n -e '/^# Generated by .libtool/q0;4q1' "${f}"; then
continue;
fi;
[[ ${f} != ${archivefile} ]] || die 'regex sanity check failed';
local reason= pkgconfig_scanned=;
local snotlink=$(sed -n -e 's:^shouldnotlink=::p' "${f}");
if [[ ${snotlink} == yes ]]; then
if [[ -f ${archivefile} ]]; then
einfo "Removing unnecessary ${archivefile#${D%/}} (static plugin)";
queue+=("${archivefile}");
fi;
if [[ -n ${removing_modules} ]]; then
reason='module';
fi;
else
if [[ -n ${removing_all} ]]; then
reason='requested';
else
if [[ ! -f ${archivefile} ]]; then
reason='no static archive';
else
if [[ ! -n $(sed -nre "s/^(dependency_libs|inherited_linker_flags)='(.
)'$/\2/p" "${f}") ]]; then
reason='no libs & flags';
else
if [[ ! -n ${pkgconfig_scanned} ]]; then
local pc_libs=();
if [[ ! -n ${removing_all} ]]; then
local pc;
local tf=${T}/prune-lt-files.pc;
local pkgconf=$(tc-getPKG_CONFIG);
while IFS= read -r -d '' pc; do
local arg libs;
if ${pkgconf} --exists "${pc}" &> /dev/null; then
sed -e '/^Requires:/d' "${pc}" > "${tf}";
libs=$(${pkgconf} --libs "${tf}");
else
libs=$(sed -ne 's/^Libs://p' "${pc}");
fi;
for arg in ${libs};
do
if [[ ${arg} == -l
]]; then
if [[ ${arg} == '
$
' ]]; then
eqawarn "${FUNCNAME}: variable substitution likely failed in ${pc}";
eqawarn "(arg: ${arg})";
eqawarn "Most likely, you need to add virtual/pkgconfig to DEPEND.";
fi;
pc_libs+=(lib${arg#-l}.la);
fi;
done;
done < <(find "${D}" -type f -name '
.pc' -print0);
rm -f "${tf}";
fi;
pkgconfig_scanned=1;
fi;
has "${f##
/}" "${pc_libs[@]}" && reason='covered by .pc';
fi;
fi;
fi;
fi;
if [[ -n ${reason} ]]; then
einfo "Removing unnecessary ${f#${D%/}} (${reason})";
queue+=("${f}");
fi;
done < <(find "${ED}" -xtype f -name '
.la' -print0);
if [[ -n ${queue[@]} ]]; then
rm -f "${queue[@]}";
fi
}
qeerror ()
{
qout eerror "${@}"
}
qeinfo ()
{
qout einfo "${@}"
}
qewarn ()
{
qout ewarn "${@}"
}
qout ()
{
local outputmsg type;
type=${1};
shift;
outputmsg="${@}";
case "${EBUILD_PHASE}" in
depend)
unset outputmsg
;;
clean)
unset outputmsg
;;
preinst)
unset outputmsg
;;
esac;
[ -n "${outputmsg}" ] && ${type} "${outputmsg}"
}
replace_all_version_separators ()
{
local c=($(get_all_version_components "${2:-${PV}}"));
c=${c[@]//[-.]/$1};
echo ${c// }
}
replace_version_separator ()
{
eshopts_push -s extglob;
local w c v="${3:-${PV}}";
declare -i i found=0;
w=${1:-1};
c=($(get_all_version_components ${v}));
if [[ ${w} != [[:digit:]] ]]; then
for ((i = 0; i < ${#c[@]}; i++))
do
if [[ ${c[i]} == ${w} ]]; then
c[i]=${2};
break;
fi;
done;
else
for ((i = 0; i < ${#c[@]}; i++))
do
if [[ -n "${c[i]//[^-._]}" ]]; then
found+=1;
if ((found == w)); then
c[i]=${2};
break;
fi;
fi;
done;
fi;
c=${c[
]};
echo ${c// };
eshopts_pop
}
require_configured_kernel ()
{
if ! linux_config_src_exists; then
qeerror "Could not find a usable .config in the kernel source directory.";
qeerror "Please ensure that ${KERNEL_DIR} points to a configured set of Linux sources.";
qeerror "If you are using KBUILD_OUTPUT, please set the environment var so that";
qeerror "it points to the necessary object directory so that it might find .config.";
die "Kernel not configured; no .config found in ${KV_OUT_DIR}";
fi
}
rpm_spec_epatch ()
{
local p spec=$1;
local dir;
if [[ -z ${spec} ]]; then
for spec in "${PWD}" "${S}" "${WORKDIR}";
do
spec+="/${PN}.spec";
[[ -e ${spec} ]] && break;
done;
fi;
[[ ${spec} == /_ ]] && dir=${spec%/} || dir=;
ebegin "Applying patches from ${spec}";
grep '^%patch' "${spec}" | while read line; do
set -- ${line};
p=$1;
shift;
local arg;
EPATCH_OPTS=;
for arg in "$@";
do
case ${arg} in
-b)
EPATCH_OPTS+=" --suffix"
;;
*)
EPATCH_OPTS+=" ${arg}"
;;
esac;
done;
set -- $(grep "^P${p#%p}: " "${spec}");
shift;
epatch "${dir:+${dir}/}$
";
done;
eend
}
rpm_src_unpack ()
{
local a;
for a in ${A};
do
case ${a} in
.rpm)
srcrpm_unpack "${a}"
;;
*)
unpack "${a}"
;;
esac;
done
}
rpm_unpack ()
{
[[ $# -eq 0 ]] && set -- ${A};
local a;
for a in "$@";
do
echo ">>> Unpacking ${a} to ${PWD}";
if [[ ${a} == ./
]]; then
: nothing to do -- path is local;
else
if [[ ${a} == ${DISTDIR}/* ]]; then
ewarn 'QA: do not use ${DISTDIR} with rpm_unpack -- it is added for you';
else
if [[ ${a} == /* ]]; then
ewarn 'QA: do not use full paths with rpm_unpack -- use ./ paths instead';
else
a="${DISTDIR}/${a}";
fi;
fi;
fi;
rpm2tar -O "${a}" | tar xf - || die "failure unpacking ${a}";
done
}
set_arch_to_kernel ()
{
export ARCH=$(tc-arch-kernel)
}
set_arch_to_portage ()
{
export ARCH=$(tc-arch)
}
src_compile ()
{
default
}
src_configure ()
{
default
}
src_install ()
{
cp -r var "${D}" || die;
cp -r opt "${D}" || die;
cp -r etc "${D}" || die;
mkdir -p "${D}/usr/libexec/cups/filter" || die;
( cd "${D}/usr/libexec/cups/filter/" && ln -s ../../../../opt/brother/Printers/BrGenML1/cupswrapper/brother_lpdwrapper_BrGenML1 ) || die;
mkdir -p "${D}/usr/share/cups/model" || die;
( cd "${D}/usr/share/cups/model" && ln -s ../../../../opt/brother/Printers/BrGenML1/cupswrapper/brother-BrGenML1-cups-en.ppd ) || die
}
src_prepare ()
{
epatch "${FILESDIR}/brother_lpdwrapper_BrGenML1.patch"
}
src_test ()
{
default
}
src_unpack ()
{
rpm_unpack ${A}
}
srcrpm_unpack ()
{
[[ $# -eq 0 ]] && set -- ${A};
rpm_unpack "$@";
[[ "$* " != ".src.rpm " ]] && return 0;
eshopts_push -s nullglob;
local a;
for a in *.tar.{gz,bz2,xz} *.t{gz,bz2,xz,pxz} *.zip *.ZIP;
do
unpack "./${a}";
rm -f "${a}";
done;
eshopts_pop;
return 0
}
strip-linguas ()
{
local ls newls nols;
if [[ $1 == "-i" ]] || [[ $1 == "-u" ]]; then
local op=$1;
shift;
ls=$(find "$1" -name '
.po' -exec basename {} .po ';');
shift;
local d f;
for d in "$@";
do
if [[ ${op} == "-u" ]]; then
newls=${ls};
else
newls="";
fi;
for f in $(find "$d" -name '.po' -exec basename {} .po ';');
do
if [[ ${op} == "-i" ]]; then
has ${f} ${ls} && newls="${newls} ${f}";
else
has ${f} ${ls} || newls="${newls} ${f}";
fi;
done;
ls=${newls};
done;
else
ls="$@";
fi;
nols="";
newls="";
for f in ${LINGUAS};
do
if has ${f} ${ls}; then
newls="${newls} ${f}";
else
nols="${nols} ${f}";
fi;
done;
[[ -n ${nols} ]] && einfo "Sorry, but ${PN} does not support the LINGUAS:" ${nols};
export LINGUAS=${newls:1}
}
tc-arch ()
{
tc-ninja_magic_to_arch portage "$@"
}
tc-arch-kernel ()
{
tc-ninja_magic_to_arch kern "$@"
}
tc-endian ()
{
local host=$1;
[[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
host=${host%%-
};
case ${host} in
aarch64_be)
echo big
;;
aarch64)
echo little
;;
alpha_)
echo big
;;
arm_b_)
echo big
;;
arm_)
echo little
;;
cris_)
echo little
;;
hppa_)
echo big
;;
i?86_)
echo little
;;
ia64_)
echo little
;;
m68_)
echo big
;;
mips_l_)
echo little
;;
mips_)
echo big
;;
powerpc_le)
echo little
;;
powerpc_)
echo big
;;
s390_)
echo big
;;
sh_b_)
echo big
;;
sh_)
echo little
;;
sparc_)
echo big
;;
x86_64
)
echo little
;;
*)
echo wtf
;;
esac
}
tc-env_build ()
{
tc-export_build_env;
CFLAGS=${BUILD_CFLAGS} CXXFLAGS=${BUILD_CXXFLAGS} CPPFLAGS=${BUILD_CPPFLAGS} LDFLAGS=${BUILD_LDFLAGS} AR=$(tc-getBUILD_AR) AS=$(tc-getBUILD_AS) CC=$(tc-getBUILD_CC) CPP=$(tc-getBUILD_CPP) CXX=$(tc-getBUILD_CXX) LD=$(tc-getBUILD_LD) NM=$(tc-getBUILD_NM) PKG_CONFIG=$(tc-getBUILD_PKG_CONFIG) RANLIB=$(tc-getBUILD_RANLIB) "$@"
}
tc-export ()
{
local var;
for var in "$@";
do
[[ $(type -t tc-get${var}) != "function" ]] && die "tc-export: invalid export variable '${var}'";
eval tc-get${var} > /dev/null;
done
}
tc-export_build_env ()
{
tc-export "$@";
: ${BUILD_CFLAGS:=-O1 -pipe};
: ${BUILD_CXXFLAGS:=-O1 -pipe};
: ${BUILD_CPPFLAGS:= };
: ${BUILD_LDFLAGS:= };
export BUILD_{C,CXX,CPP,LD}FLAGS;
local v;
for v in BUILD_{C,CXX,CPP,LD}FLAGS;
do
export ${v#BUILD_}_FOR_BUILD="${!v}";
done
}
tc-getAR ()
{
tc-getPROG AR ar "$@"
}
tc-getAS ()
{
tc-getPROG AS as "$@"
}
tc-getBUILD_AR ()
{
tc-getBUILD_PROG AR ar "$@"
}
tc-getBUILD_AS ()
{
tc-getBUILD_PROG AS as "$@"
}
tc-getBUILD_CC ()
{
tc-getBUILD_PROG CC gcc "$@"
}
tc-getBUILD_CPP ()
{
tc-getBUILD_PROG CPP cpp "$@"
}
tc-getBUILD_CXX ()
{
tc-getBUILD_PROG CXX g++ "$@"
}
tc-getBUILD_LD ()
{
tc-getBUILD_PROG LD ld "$@"
}
tc-getBUILD_NM ()
{
tc-getBUILD_PROG NM nm "$@"
}
tc-getBUILD_OBJCOPY ()
{
tc-getBUILD_PROG OBJCOPY objcopy "$@"
}
tc-getBUILD_PKG_CONFIG ()
{
tc-getBUILD_PROG PKG_CONFIG pkg-config "$@"
}
tc-getBUILD_PROG ()
{
tc-getPROG CBUILD "BUILD$1 $1_FOR_BUILD HOST$1" "${@:2}"
}
tc-getBUILD_RANLIB ()
{
tc-getBUILD_PROG RANLIB ranlib "$@"
}
tc-getBUILD_STRIP ()
{
tc-getBUILD_PROG STRIP strip "$@"
}
tc-getCC ()
{
tc-getPROG CC gcc "$@"
}
tc-getCPP ()
{
tc-getPROG CPP cpp "$@"
}
tc-getCXX ()
{
tc-getPROG CXX g++ "$@"
}
tc-getDLLWRAP ()
{
tc-getPROG DLLWRAP dllwrap "$@"
}
tc-getF77 ()
{
tc-getPROG F77 gfortran "$@"
}
tc-getFC ()
{
tc-getPROG FC gfortran "$@"
}
tc-getGCJ ()
{
tc-getPROG GCJ gcj "$@"
}
tc-getGO ()
{
tc-getPROG GO gccgo "$@"
}
tc-getLD ()
{
tc-getPROG LD ld "$@"
}
tc-getNM ()
{
tc-getPROG NM nm "$@"
}
tc-getOBJCOPY ()
{
tc-getPROG OBJCOPY objcopy "$@"
}
tc-getOBJDUMP ()
{
tc-getPROG OBJDUMP objdump "$@"
}
tc-getPKG_CONFIG ()
{
tc-getPROG PKG_CONFIG pkg-config "$@"
}
tc-getPROG ()
{
_tc-getPROG CHOST "$@"
}
tc-getRANLIB ()
{
tc-getPROG RANLIB ranlib "$@"
}
tc-getRC ()
{
tc-getPROG RC windres "$@"
}
tc-getSTRIP ()
{
tc-getPROG STRIP strip "$@"
}
tc-has-openmp ()
{
local base="${T}/test-tc-openmp";
cat > "${base}.c" <<-EOF

include <omp.h>

int main() {
int nthreads, tid, ret = 0;

pragma omp parallel private(nthreads, tid)

{
tid = omp_get_thread_num();
nthreads = omp_get_num_threads(); ret += tid + nthreads;
}
return ret;
}
EOF

$(tc-getCC "$@") -fopenmp "${base}.c" -o "${base}" &> /dev/null;
local ret=$?;
rm -f "${base}"*;
return ${ret}

}
tc-has-tls ()
{
local base="${T}/test-tc-tls";
cat > "${base}.c" <<-EOF
int foo(int *i) {
static __thread int j = 0;
return *i ? j : *i;
}
EOF

local flags;
case $1 in 
    -s)
        flags="-S"
    ;;
    -c)
        flags="-c"
    ;;
    -l)

    ;;
    -*)
        die "Usage: tc-has-tls [-c|-l] [toolchain prefix]"
    ;;
esac;
: ${flags:=-fPIC -shared -Wl,-z,defs};
[[ $1 == -* ]] && shift;
$(tc-getCC "$@") ${flags} "${base}.c" -o "${base}" &> /dev/null;
local ret=$?;
rm -f "${base}"*;
return ${ret}

}
tc-is-cross-compiler ()
{
[[ ${CBUILD:-${CHOST}} != ${CHOST} ]]
}
tc-is-softfloat ()
{
local CTARGET=${CTARGET:-${CHOST}};
case ${CTARGET} in
bfin* | h8300_)
echo "only"
;;
*)
if [[ ${CTARGET///-} == *-softfloat- ]]; then
echo "yes";
else
if [[ ${CTARGET//_/-} == -softfp- ]]; then
echo "softfp";
else
echo "no";
fi;
fi
;;
esac
}
tc-is-static-only ()
{
local host=${CTARGET:-${CHOST}};
[[ ${host} == -mint ]]
}
tc-ld-disable-gold ()
{
if ! tc-ld-is-gold "$@"; then
return;
fi;
ewarn "Forcing usage of the BFD linker instead of GOLD";
local ld=$(tc-getLD "$@");
local bfd_ld="${ld%% }.bfd";
local path_ld=$(which "${bfd_ld}" 2>/dev/null);
[[ -e ${path_ld} ]] && export LD=${bfd_ld};
local major=$(gcc-major-version "$@");
local minor=$(gcc-minor-version "$@");
if [[ ${major} -lt 4 ]] || [[ ${major} -eq 4 && ${minor} -lt 8 ]]; then
if [[ -e ${path_ld} ]]; then
local d="${T}/bfd-linker";
mkdir -p "${d}";
ln -sf "${path_ld}" "${d}"/ld;
export LDFLAGS="${LDFLAGS} -B${d}";
else
die "unable to locate a BFD linker to bypass gold";
fi;
else
export LDFLAGS="${LDFLAGS} -fuse-ld=bfd";
fi
}
tc-ld-is-gold ()
{
local out;
out=$($(tc-getLD "$@") --version 2>&1);
if [[ ${out} == *"GNU gold"
]]; then
return 0;
fi;
local base="${T}/test-tc-gold";
cat > "${base}.c" <<-EOF
int main() { return 0; }
EOF

out=$($(tc-getCC "$@") ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -Wl,--version "${base}.c" -o "${base}" 2>&1);
rm -f "${base}"*;
if [[ ${out} == *"GNU gold"* ]]; then
    return 0;
fi;
return 1

}
tc-ninja_magic_to_arch ()
{
function ninj ()
{
[[ ${type} == "kern" ]] && echo $1 || echo $2
};
local type=$1;
local host=$2;
[[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
local KV=${KV:-${KV_FULL}};
[[ ${type} == "kern" ]] && [[ -z ${KV} ]] && ewarn "QA: Kernel version could not be determined, please inherit kernel-2 or linux-info";
case ${host} in
aarch64_)
echo arm64
;;
alpha_)
echo alpha
;;
arm_)
echo arm
;;
avr_)
ninj avr32 avr
;;
bfin_)
ninj blackfin bfin
;;
c6x_)
echo c6x
;;
cris_)
echo cris
;;
frv_)
echo frv
;;
hexagon_)
echo hexagon
;;
hppa_)
ninj parisc hppa
;;
i?86_)
if [[ ${type} == "kern" ]] &amp;&amp; [[ $(KV_to_int ${KV}) -lt $(KV_to_int 2.6.24) || ${host} == *freebsd_ ]]; then
echo i386;
else
echo x86;
fi
;;
ia64_)
echo ia64
;;
m68_)
echo m68k
;;
metag_)
echo metag
;;
microblaze_)
echo microblaze
;;
mips_)
echo mips
;;
nios2_)
echo nios2
;;
nios_)
echo nios
;;
or32_)
echo openrisc
;;
powerpc_)
if [[ ${type} == "kern" ]] &amp;&amp; [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.16) ]]; then
echo powerpc;
else
if [[ ${type} == "kern" ]] &amp;&amp; [[ $(KV_to_int ${KV}) -eq $(KV_to_int 2.6.15) ]]; then
if [[ ${host} == powerpc64_ ]] || [[ ${PROFILE_ARCH} == "ppc64" ]]; then
echo powerpc;
else
echo ppc;
fi;
else
if [[ ${host} == powerpc64* ]]; then
echo ppc64;
else
if [[ ${PROFILE_ARCH} == "ppc64" ]]; then
ninj ppc64 ppc;
else
echo ppc;
fi;
fi;
fi;
fi
;;
riscv_)
echo riscv
;;
s390_)
echo s390
;;
score_)
echo score
;;
sh64_)
ninj sh64 sh
;;
sh_)
echo sh
;;
sparc64_)
ninj sparc64 sparc
;;
sparc_)
[[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc
;;
tile_)
echo tile
;;
vax_)
echo vax
;;
x86_64_freebsd_)
echo amd64
;;
x86_64_)
if [[ ${type} == "kern" ]] &amp;&amp; [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.24) ]]; then
echo x86;
else
ninj x86_64 amd64;
fi
;;
xtensa_)
echo xtensa
;;
*)
echo unknown
;;
esac
}
use_if_iuse ()
{
in_iuse $1 || return 1;
use $1
}
validate_desktop_entries ()
{
eutils_eprefix_init;
if [[ -x "${EPREFIX}"/usr/bin/desktop-file-validate ]]; then
einfo "Checking desktop entry validity";
local directories="";
for d in /usr/share/applications $@;
do
[[ -d ${ED}${d} ]] && directories="${directories} ${ED}${d}";
done;
if [[ -n ${directories} ]]; then
for FILE in $(find ${directories} -name "
.desktop" -not -path '.hidden' | sort -u 2>/dev/null);
do
local temp=$(desktop-file-validate ${FILE} | grep -v "warning:" | sed -e "s|error: ||" -e "s|${FILE}:|--|g" );
[[ -n $temp ]] &amp;&amp; elog ${temp/--/${FILE/${ED}/}:};
done;
fi;
echo "";
else
einfo "Passing desktop entry validity check. Install dev-util/desktop-file-utils, if you want to help to improve Gentoo.";
fi
}
version_compare ()
{
eshopts_push -s extglob;
local ver_a=${1} ver_b=${2} parts_a parts_b;
local cur_tok_a cur_tok_b num_part_a num_part_b;
local -i cur_idx_a=0 cur_idx_b=0 prev_idx_a prev_idx_b;
parts_a=($(get_all_version_components "${ver_a}" ));
parts_b=($(get_all_version_components "${ver_b}" ));
local -i inf_loop=0;
while true; do
inf_loop+=1;
((inf_loop > 20)) && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]";
prev_idx_a=cur_idx_a;
prev_idx_b=cur_idx_b;
cur_tok_a=${parts_a[cur_idx_a]};
cur_tok_b=${parts_b[cur_idx_b]};
if [[ -n ${cur_tok_a} ]] && [[ -z ${cur_tok_a//[[:digit:]]} ]]; then
cur_idx_a+=1;
[[ ${parts_a[cur_idx_a]} == . ]] && cur_idx_a+=1;
else
cur_tok_a=;
fi;
if [[ -n ${cur_tok_b} ]] && [[ -z ${cur_tok_b//[[:digit:]]} ]]; then
cur_idx_b+=1;
[[ ${parts_b[cur_idx_b]} == . ]] && cur_idx_b+=1;
else
cur_tok_b=;
fi;
[[ -z ${cur_tok_a} && -z ${cur_tok_b} ]] && break;
[[ -z ${cur_tok_a} ]] && eshopts_pop && return 1;
[[ -z ${cur_tok_b} ]] && eshopts_pop && return 3;
if (( prev_idx_a != 0 && prev_idx_b != 0 )) && [[ ${cur_tok_a} == 0* || ${cur_tok_b} == 0* ]]; then
cur_tok_a=${cur_tok_a%%+(0)};
cur_tok_b=${cur_tok_b%%+(0)};
[[ ${cur_tok_a} < ${cur_tok_b} ]] && eshopts_pop && return 1;
[[ ${cur_tok_a} > ${cur_tok_b} ]] && eshopts_pop && return 3;
else
cur_tok_a=${cur_tok_a##+(0)};
cur_tok_b=${cur_tok_b##+(0)};
: ${cur_tok_a:=0};
: ${cur_tok_b:=0};
((cur_tok_a < cur_tok_b)) && eshopts_pop && return 1;
((cur_tok_a > cur_tok_b)) && eshopts_pop && return 3;
fi;
done;
local letter_a=;
letter_a=${parts_a[cur_idx_a]};
if [[ ${#letter_a} -eq 1 && -z ${letter_a/[a-z]} ]]; then
cur_idx_a+=1;
else
letter_a=@;
fi;
local letter_b=;
letter_b=${parts_b[cur_idx_b]};
if [[ ${#letter_b} -eq 1 && -z ${letter_b/[a-z]} ]]; then
cur_idx_b+=1;
else
letter_b=@;
fi;
[[ ${letter_a} < ${letter_b} ]] && eshopts_pop && return 1;
[[ ${letter_a} > ${letter_b} ]] && eshopts_pop && return 3;
inf_loop=0;
while true; do
inf_loop+=1;
((inf_loop > 20)) && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]";
[[ ${parts_a[cur_idx_a]} == _ ]] && ((cur_idx_a++));
[[ ${parts_b[cur_idx_b]} == _ ]] && ((cur_idx_b++));
cur_tok_a=${parts_a[cur_idx_a]};
cur_tok_b=${parts_b[cur_idx_b]};
num_part_a=0;
num_part_b=0;
if has ${cur_tok_a%%+([0-9])} "alpha" "beta" "pre" "rc" "p"; then
cur_idx_a+=1;
num_part_a=${cur_tok_a##+([a-z])};
num_part_a=${num_part_a##+(0)};
: ${num_part_a:=0};
cur_tok_a=${cur_tok_a%%+([0-9])};
else
cur_tok_a=;
fi;
if has ${cur_tok_b%%+([0-9])} alpha beta pre rc p; then
cur_idx_b+=1;
num_part_b=${cur_tok_b##+([a-z])};
num_part_b=${num_part_b##+(0)};
: ${num_part_b:=0};
cur_tok_b=${cur_tok_b%%+([0-9])};
else
cur_tok_b=;
fi;
if [[ ${cur_tok_a} != ${cur_tok_b} ]]; then
local suffix;
for suffix in alpha beta pre rc "" p;
do
[[ ${cur_tok_a} == ${suffix} ]] && eshopts_pop && return 1;
[[ ${cur_tok_b} == ${suffix} ]] && eshopts_pop && return 3;
done;
else
if [[ -z ${cur_tok_a} && -z ${cur_tok_b} ]]; then
break;
else
((num_part_a < num_part_b)) && eshopts_pop && return 1;
((num_part_a > num_part_b)) && eshopts_pop && return 3;
fi;
fi;
done;
[[ ${parts_a[cur_idx_a]} == - ]] && ((cur_idx_a++));
[[ ${parts_b[cur_idx_b]} == - ]] && ((cur_idx_b++));
if [[ -n ${parts_a[cur_idx_a]/r+([0-9])} || -n ${parts_b[cur_idx_b]/r+([0-9])} ]]; then
die "versionator compare bug [revisions, ${ver_a}, ${ver_b}]";
fi;
num_part_a=${parts_a[cur_idx_a]#r};
num_part_a=${num_part_a##+(0)};
: ${num_part_a:=0};
num_part_b=${parts_b[cur_idx_b]#r};
num_part_b=${num_part_b##+(0)};
: ${num_part_b:=0};
((num_part_a < num_part_b)) && eshopts_pop && return 1;
((num_part_a > num_part_b)) && eshopts_pop && return 3;
eshopts_pop;
return 2
}
version_format_string ()
{
local fstr=$1;
shift;
set -- $(get_version_components "$@");
eval echo "${fstr}"
}
version_is_at_least ()
{
local want_s="$1" have_s="${2:-${PVR}}" r;
version_compare "${want_s}" "${have_s}";
r=$?;
case $r in
1 | 2)
return 0
;;
3)
return 1
;;
*)
die "versionator compare bug [atleast, ${want_s}, ${have_s}, ${r}]"
;;
esac
}
version_sort ()
{
eshopts_push -s extglob;
local items=;
local -i left=0;
items=("$@");
while ((left < ${#items[@]})); do
local -i lowest_idx=left;
local -i idx=lowest_idx+1;
while ((idx < ${#items[@]})); do
version_compare "${items[lowest_idx]}" "${items[idx]}";
[[ $? -eq 3 ]] && lowest_idx=idx;
idx+=1;
done;
local tmp=${items[lowest_idx]};
items[lowest_idx]=${items[left]};
items[left]=${tmp};
left+=1;
done;
echo ${items[@]};
eshopts_pop
}
`
emerge --info =net-print/brother-genml1-bin-3.1.0-r1::brother-overlay

`Portage 2.2.26 (python 2.7.11-final-0, funtoo/1.0/linux-gnu/arch/x86-64bit, gcc-4.9.3, glibc-2.21, 4.5.2-1 x86_64)

                     System Settings

System uname: Linux-4.5.2-1-x86_64-Intel-R-_Core-TM-i7-3630QM_CPU@_2.40GHz-with-gentoo-2.2.0
KiB Mem: 16325156 total, 14239856 free
KiB Swap: 16383996 total, 16383996 free
sh bash 4.3_p42
ld GNU ld (Funtoo 2.25) 2.25.0
app-shells/bash: 4.3_p42::gentoo
dev-lang/perl: 5.22.2::gentoo
dev-lang/python: 2.7.11-r2::gentoo, 3.4.3-r7::gentoo
dev-util/cmake: 3.5.2::gentoo
sys-apps/baselayout: 2.2.0-r6::gentoo
sys-apps/openrc: 0.18.3-r2::gentoo
sys-apps/sandbox: 2.10-r2::gentoo
sys-devel/autoconf: 2.13::gentoo, 2.69-r2::gentoo
sys-devel/automake: 1.13.4-r1::gentoo, 1.14.1-r1::gentoo, 1.15-r2::gentoo
sys-devel/binutils: 2.25-r2::gentoo
sys-devel/gcc: 4.9.3-r3::gentoo
sys-devel/gcc-config: 1.8-r1::gentoo
sys-devel/libtool: 2.4.6-r2::gentoo
sys-devel/make: 4.1-r1::gentoo
sys-kernel/linux-headers: 4.3::gentoo (virtual/os-headers)
sys-libs/glibc: 2.21::gentoo
Repositories:

gentoo
location: /usr/portage
sync-type: git
sync-uri: git://github.com/funtoo/ports-2012.git
priority: -1000

brother-overlay
location: /var/lib/layman/brother-overlay
sync-type: git
sync-uri: https://github.com/stefan-langenmaier/brother-overlay.git
masters: gentoo
priority: 50

ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=ivybridge -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-march=ivybridge -O2 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-march=ivybridge -O2 -pipe"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
LANG="en_US.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed"
MAKEOPTS="-j9"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_TMPDIR="/var/tmp"
USE="X a52 aac acl alsa amd64 apng berkdb bluray bzip2 cdda cddb cdio cdr consolekit cracklib crypt cups cxx dbus declarative dri dts dvd dvdr dvdread encode exif faac faad ffmpeg flac gdbm gif gpm ico iconv icu ieee1394 introspection ios ipod ipv6 jpeg jpeg2k kde kipi lame libass libguess libmpeg2 mad matroska mjpeg mmx modules mp3 mpeg mtp mudflap multilib ncurses networkmanager nls nptl nsplugin ogg opengl openmp pam pcre pdf phonon plasma png policykit postproc pppd pulseaudio python qml qt4 qt5 quicktime readline resolvconf samba semantic-desktop sndfile sse sse2 ssl svg taglib tcpd theora tiff truetype twolame udev unicode v4l vala vorbis vpx wav wavpack webp widgets win32codecs wmf x264 x265 xattr xcomposite xinerama xml xscreensaver xvid zlib" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel ice1724 intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias authn_core authz_core socache_shmcb unixd" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="avx mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="efi-64 pc" INPUT_DEVICES="evdev synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-6 php5-5" PYTHON_SINGLE_TARGET="python3_4" PYTHON_TARGETS="python2_7 python3_4" QEMU_SOFTMMU_TARGETS="i386 x86_64" QEMU_USER_TARGETS="i386 x86_64" RUBY_TARGETS="ruby20 ruby21 ruby22" USERLAND="GNU" VIDEO_CARDS="intel i965" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS

`

emerge -pqv '=net-print/brother-genml1-bin-3.1.0-r1::brother-overlay

[ebuild N ] net-print/brother-genml1-bin-3.1.0-r1 USE="-avahi"

Make repoman happy

The current travis script is not up-to-date and ebuilds have changed.
Do a small cleanup and make the travis build stricter.

media-gfx/brscan4: consolidation request / differences?

Hello,

It seems that there are a lot of shared efforts under media-gfx/brother-scan4-bin in this repository & gentoo's official media-gfx/brscan4.

What are the differences between the two? Different approaches taken in this repository's? Gentoo's seems relatively recent, so there might be some stuff it could learn from the ebuilds in this repository (eg sane-backends[usb])

Gentoo's seems to be maintained by @ulm currently. Is there any way forward for consolidated efforts?

Thanks,
-- Marco Sirabella

brother-dcp9055cdn-bin fails to install

I don't know if this is a general issue or specific to this ebuild. When I emerge it, I get the following output:

>>> Install brother-dcp9055cdn-bin-1.1.1 into /var/tmp/portage/net-print/brother-dcp9055cdn-bin-1.1.1/image/ category net-print
 * ACCESS DENIED:  unlinkat:     /usr/share/cups/model/brdcp9055cdn.ppd
rm: cannot remove '/usr/share/cups/model/brdcp9055cdn.ppd': Permission denied
 * ACCESS DENIED:  open_wr:      /usr/share/cups/model/brdcp9055cdn.ppd
cp: cannot create regular file '/usr/share/cups/model/brdcp9055cdn.ppd': Permission denied
 * ACCESS DENIED:  fchmodat:     /usr/share/cups/model/brdcp9055cdn.ppd
chmod: changing permissions of '/usr/share/cups/model/brdcp9055cdn.ppd': Permission denied
 * ACCESS DENIED:  open_wr:      /usr/share/ppd/brdcp9055cdn.ppd
cp: cannot create regular file '/usr/share/ppd/brdcp9055cdn.ppd': Permission denied
 * ACCESS DENIED:  fchmodat:     /usr/share/ppd/brdcp9055cdn.ppd
chmod: changing permissions of '/usr/share/ppd/brdcp9055cdn.ppd': Permission denied
 * ACCESS DENIED:  fchmodat:     /usr/local/Brother/Printer/dcp9055cdn/inf/brdcp9055cdnrc
chmod: changing permissions of '/usr/local/Brother/Printer/dcp9055cdn/inf/brdcp9055cdnrc': Permission denied
 * ACCESS DENIED:  fchmodat:     /usr/local/Brother/Printer/dcp9055cdn/inf
chmod: changing permissions of '/usr/local/Brother/Printer/dcp9055cdn/inf': Permission denied
ln: failed to create symbolic link '/var/tmp/portage/net-print/brother-dcp9055cdn-bin-1.1.1/image//usr/libexec/cups/filter/brlpdwrapperdcp9055cdn': No such file or directory

I think the cupswrapper script is run, a new brother printer is added, but the installation is not complete. In the end I had to add a symlink to /usr/local/Brother/Printer/dcp9055cdn/lpd/filterdcp9055cdn from /usr/libexec/cups/filter/brlpdwrapperdcp9055cdn

see also my story here:
https://forums.gentoo.org/viewtopic-p-8030842.html#8030842

I found suggestions to run emerge with FEATURES="-sandbox", but htat did not help.

net-print/brother-genml1-bin should require multilib

I run pure 64-bit. This package will not work here, and printing will seem like it's working but silently fail to end user. (even if 32-bit emulation support is there, still missing some lib)

Maybe ebuild should have dependency or some other sort of warning.

I spent some hours trying to figure out why it was silently failing on my system and this was why. At least the scanning tool works, but I have to use cups generic PCL driver for printer (works pretty ok)

MFC-L8690CDW

hi

Possible to add support for MFC-L8690CDW?

The supplied drivers from Brother worked fine when I installed on a laptop running Mint, but not having luck with my Gentoo box. Cups thinks it is installed okay and I can send stuff to the printer, but it disappears into some black hole somewhere.

I ran the install script from Brother before I actually got the printer (to see if I was going to have issues...), don't know if that screwed something up or what.

I think there are other model numbers which are similar/compatible, if I remember correctly from some of the brochures I saw.
I tried adding it directly via CUPS but also no joy.

Thanks, Ian

Errors when using brscanconfig4 to query for printers

I'm trying to get my Brother DCP-7065DN working as a scanner. When I try to add the device, I get no errors, but when I try querying to see if it was added I get some errors and nothing more:

# brsaneconfig4 -q
sh: /opt/brother/scanner/brscan4/brscan_gnetconfig: No such file or directory
sh: /opt/brother/scanner/brscan4/brscan_cnetconfig: No such file or directory
sh: /opt/brother/scanner/brscan4/brscan_gnetconfig: No such file or directory
sh: /opt/brother/scanner/brscan4/brscan_cnetconfig: No such file or directory

It looks like a couple files are missing, but I don't know where they should come from?

Installed verisons:

yeager ~ # eix -A media-gfx/brother-dcp7065dn-bin
[I] media-gfx/brother-dcp7065dn-bin [1]
     Available versions:  1.0
     Installed versions:  1.0(kl. 10.03 +0100 29. okt. 2019)
     Homepage:            http://support.brother.com
     Description:         Scanner driver for Brother DCP-7065DN (brscan4)

[1] "brother-overlay" /var/lib/layman/brother-overlay
yeager ~ # eix -A media-gfx/brother-scan4-bin
[I] media-gfx/brother-scan4-bin [1]
     Available versions:  0.4.4-r3^ms 0.4.4-r4^ms (~)0.4.4-r5^ms (~)0.4.6-r1^ms (~)0.4.6-r2^ms (~)0.4.8^ms {usb}
     Installed versions:  0.4.8^ms(kl. 10.04 +0100 29. okt. 2019)(-usb)
     Homepage:            http://support.brother.com/g/s/id/linux/en/index.html
     Description:         Brother scanner tool version 4

[1] "brother-overlay" /var/lib/layman/brother-overlay

If I try adding it again I get an error about it already being registered, so I guess it worked to add it. If nothing else, it would be nice to find a way to silence those errors to avoid confusing the user.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.