Summary: | net-print/cnijfilter-3.40-r2::bar failed to install on i686 | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Ted Marston <ted> |
Component: | Overlays | Assignee: | tokiclover <tokiclover> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | evert.gentoo, gentoo, ted |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | x86 | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: |
emerge --info '=net-print/cnijfilter-3.40-r2::bar'
ebuild environment for '=net-print:cnijfilter-3.40-r2::bar' emerge -v =net-print/cnijfilter-3.40-r2::bar log emerge --info for x86_64 host on profile 17 environment for failed build on x86_64 host on profile 17 emerge -pqv cnijfilter for x86_64 host on profile 17 Modified ecnij.eclass Modified net-print/cnijfilter/cnijfilter-3.40-r2 ebuild for Canon mg5100 printers Tar file containing 14 patches used by the modified cnijfilter-3.40-r2 ebuild Modified cnijfilter-3.70-6-headers.patch for cnijfilter-3.40 (probably 3.10..3.90) |
In the Bar overlay, the ecnij.eclass selects the sourced libs with the $abi_lib variable in ecnij_src_install() (line 273): dolib.so ${prid}/libs_bin${abi_lib}/*.so* That variable is set before with (line 255): local abi_libdir=/usr/$(get_libdir) p pr prid local abi_lib=${abi_libdir#*lib} So it looks like the get_libdir() function is not returning "lib32" here. Could you print add the result of emerge --info to your bug report, to have a look on your Portage environment ? @tokiclover: by the way, I don't understand what the "p pr prid" are doing here ? (In reply to gentoo from comment #1) > In the Bar overlay, the ecnij.eclass selects the sourced libs with the > $abi_lib variable in ecnij_src_install() (line 273): > dolib.so ${prid}/libs_bin${abi_lib}/*.so* > > That variable is set before with (line 255): > local abi_libdir=/usr/$(get_libdir) p pr prid > local abi_lib=${abi_libdir#*lib} > Good to have all that info handed down so I do not have to go dig out that gold. Thanks. > @tokiclover: by the way, I don't understand what the "p pr prid" are doing > here ? That's just a "local" variable declaration list, so the first is defined and the other are just declared. > So it looks like the get_libdir() function is not returning "lib32" here. > > Could you print add the result of emerge --info to your bug report, to have > a look on your Portage environment ? > And attach the environment file as well. Created attachment 497408 [details]
emerge --info '=net-print/cnijfilter-3.40-r2::bar'
Created attachment 497410 [details]
ebuild environment for '=net-print:cnijfilter-3.40-r2::bar'
Created attachment 497412 [details]
emerge -v =net-print/cnijfilter-3.40-r2::bar log
That emerge log was a text file when I uploaded, but my firefox browser complains that it cannot display its contents because its an application/octet-stream. However when I download it again, `file` claims it is UTF-8 Unicode text, with very long lines, with escape sequences. I think bugs.gentoo.org is lying about its content! Thanks for the additional information. In your case of a native x86_32 system, it looks to me that returning "lib" is a normal behaviour of the get_libdir() function, as multilib goes back to LIBDIR default on such system (= no need to build both 32 and 64 bits variants). So one should not rely on the target LIBDIR, but on the keywords to select between 32 or 64 bits prebuilt binaries. I propose to patch the ecnij.class (line 256) and set abi_lib like this: local abi_lib=$(usex amd64 64 32) As the package is keyworded only for x86 and amd64. (In reply to gentoo from comment #7) > Thanks for the additional information. In your case of a native x86_32 > system, it looks to me that returning "lib" is a normal behaviour of the > get_libdir() function, as multilib goes back to LIBDIR default on such > system (= no need to build both 32 and 64 bits variants). > > So one should not rely on the target LIBDIR, but on the keywords to select > between 32 or 64 bits prebuilt binaries. I propose to patch the ecnij.class > (line 256) and set abi_lib like this: > > local abi_lib=$(usex amd64 64 32) > > As the package is keyworded only for x86 and amd64. Let's use that then. There is the ABI that could be used as well. Thanks. Thanks guys, works fine for me. :) Good news :-) ! After a recent eix-sync, update of world and emerge -c, and changing my profile to default/linux/amd64/17.0, on both my i686 and x86_64 hosts, net-print/cnijfilter-3.40-r2::bar for an mg5100 printer now fails to build on the x86_64 host, although it still builds on the i686 host. Maybe the problem lies in ecnij.eclass because 64-bit, instead of 32-bit, libraries (supplied by cannon) are now being copied into image/usr/lib32 which triggers a multilib-strict check failure. The ebuild seemed to work on both hosts prior to the change from profile 13 to profile 17, although printing has only been tested on the i686 machine recently. The emerge --info, emerge environment, and emerge -pqv output will be uploaded for the failed x86_64 host. Created attachment 515374 [details]
emerge --info for x86_64 host on profile 17
Created attachment 515382 [details]
environment for failed build on x86_64 host on profile 17
Created attachment 515384 [details]
emerge -pqv cnijfilter for x86_64 host on profile 17
Created attachment 653436 [details]
Modified ecnij.eclass
This ecnij.eclass is modified from a version originally taken from the now defunct Bar overlay. It installs cnijfilter and other tools for the Canon mg5100 series printers in an amd64 cpu.
Created attachment 653438 [details]
Modified net-print/cnijfilter/cnijfilter-3.40-r2 ebuild for Canon mg5100 printers
This ebuild was modified from a version originally copied from the now defunct Bar overlay. It emerges cnijfilter and other tools needed for the Canon mg5100 printer on an amd64 cpu. The changes have only been tested on an mg5100 printer, although they may well work for other printers that the Bar overlay version of the ebuild catered for.
Created attachment 653444 [details, diff]
Tar file containing 14 patches used by the modified cnijfilter-3.40-r2 ebuild
These patches were collected from various sources including the now defunct Bar overlay. Four of them are my own. They enable cnijfilter-3.40-r2.ebuild to correctly build Canon's sources for their mg5100 printer using gcc:9.3.0 and glibc-2.30-r8 for cups-2.3.3-r1 on an amd64 cpu.
Created attachment 680158 [details, diff]
Modified cnijfilter-3.70-6-headers.patch for cnijfilter-3.40 (probably 3.10..3.90)
Replace sys/sysctl.h by linux/sysctl.h
Fixes compilation error: cnijnpr.c:36:10: fatal error: sys/sysctl.h: No such file or directory
|
I still use a Canon Pixma mg5150 on both CHOST="i686-pc-linux-gnu" and CHOST="x86_64-pc-linux-gnu" machines. net-print/cnijfilter-3.40-r2::bar currently builds on both the i686 and the x86_64 machine, but it fails to install on the i686 machine. The installation error on the i686 machine is: > !!! dolib: 373/libs_bin/*.so* does not exist > * ERROR: net-print/cnijfilter-3.40-r2::bar failed (install phase): > * dolib failed On the i686 the libraries were actually in 373/libs_bin32/ and libs_bin64/ at the end of the build.