FYI, this ebuild may need to be cleaned up, since this is my first attempt at making an ebuild. It does work, however. Reproducible: Always Steps to Reproduce: 1. 2. 3. Actual Results: Properly emerges icc 8.0. Note, however, that the directory structure has changed a lot from 6.x, 7.x.
Created attachment 22031 [details] dev-lang/icc-8.0.055.ebuild
Created attachment 22032 [details] /usr/portage/dev-lang/icc/files/8.0.055/05icc-ifc
Created attachment 22033 [details] /usr/portage/dev-lang/icc/files/8.0.055/icc
Comment on attachment 22031 [details] dev-lang/icc-8.0.055.ebuild ># Copyright 1999-2003 Gentoo Technologies, Inc. ># Distributed under the terms of the GNU General Public License v2 ># $Header: /home/cvsroot/gentoo-x86/dev-lang/icc/icc-7.0.065.ebuild,v 1.7 2003/11/15 03:22:26 seemant Exp $ > >S=${WORKDIR} > >DESCRIPTION="Intel C++ Compiler - The Pentium optimized compiler for Linux" > >SRC_URI1="ftp://download.intel.com/software/products/compilers/downloads/l_cc_p_8.0.055.tar.gz" >SRC_URI2="ftp://download.intel.co.jp/software/products/compilers/downloads/l_cc_p_8.0.055.tar.gz" >SRC_URI="${SRC_URI1} ${SRC_URI2}" > >HOMEPAGE="http://www.intel.com/software/products/compilers/clin/" > >LICENSE="icc-8.0" > >DEPEND="virtual/linux-sources > >=sys-libs/glibc-2.2.4 > app-arch/cpio > app-arch/rpm" > >RDEPEND="virtual/linux-sources > >=sys-libs/glibc-2.2.4" > >SLOT="8" >KEYWORDS="-* ~x86" >IUSE="" > >src_compile() { > # Keep disk space to a minimum > cd l_cc_p_8.0.055 > rm -f intel-*.ia64.rpm > rm -f intel-ii*.rpm > rm -f intel-isu*.rpm > mkdir opt > > for x in intel-*.i386.rpm > do > einfo "Extracting: ${x}" > rpm2cpio ${x} | cpio --extract --make-directories --unconditional > done > > # From UNTAG_CFG_FILES in 'install' > SD=${S}/l_cc_p_8.0.055/opt/intel_cc_80 # Build DESTINATION > RD=/opt/intel_cc_80 # Real DESTINATION > for FILE in $(find $SD/bin/ -regex '.*[ei][cf]p?c$\|.*cfg$\|.*pcl$\|.*vars[^/]*.c?sh$' 2>/dev/null) > do > sed s@\<INSTALLDIR\>@$RD@g ${FILE} > ${FILE}.abs > mv -f ${FILE}.abs ${FILE} > chmod 755 ${FILE} > done > > # From UNTAG_SUPPORT in 'install' > #eval `grep "^[ ]*COMBOPACKAGEID=" install` > > for SUPPORTFILE in ${SD}/doc/*support > do > einfo "Untagging: ${SUPPORTFILE}" > sed s@\<INSTALLTIMECOMBOPACKAGEID\>@$COMBOPACKAGEID@g $SUPPORTFILE > $SUPPORTFILE.abs > mv $SUPPORTFILE.abs $SUPPORTFILE > chmod 644 $SUPPORTFILE > done >} > >src_install () { > dodoc ${SD}/licenses/lgpltext > dodoc ${SD}/licenses/clicense > cp -a l_cc_p_8.0.055/opt ${D} > > # icc enviroment > insinto /etc/env.d > doins ${FILESDIR}/${PVR}/05icc-ifc > # fix the issue with the primary icc executable > exeinto /opt/intel/compiler80/ia32/bin > doexe ${FILESDIR}/${PVR}/icc >} > >pkg_postinst () { > einfo > einfo "http://www.intel.com/software/products/compilers/clin/noncom.htm" > einfo "From the above url you can get a free, non-commercial" > einfo "license to use the Intel C++ Compiler emailed to you." > einfo "You cannot run icc without this license file." > einfo "Read the website for more information on this license." > einfo > einfo "Documentation can be found in /opt/intel/compiler70/docs/" > einfo > einfo "You will need to place your license in /opt/intel/licenses/" > einfo > if [ -d /opt/intel/compiler?0 ] > then > ewarn > ewarn "Packages compiled with older versions of icc will need" > ewarn "to be recompiled. Until you do that, old packages will" > ewarn "work if you edit /etc/ld.so.conf and change 'compiler70'" > ewarn "to 'compiler60' and run 'ldconfig.' Note that this edit" > ewarn "won't persist and will require you to re-edit after each" > ewarn "package you re-install." > fi > ewarn "If 'icc' breaks, use 'iccbin' instead and report a bug." > ewarn "NOTE: Before compiling important applications that your system" > ewarn "depends on, read the warning above. This could potentially" > ewarn "render your system unusable. This is a problem with Intel's" > ewarn "software, _not_ with Gentoo." >}
Comment #4 is a change to the build which marks it as ~x86. I forgot it in the original.
In the einfo part of the ebuild you refer to "compiler70", I suppose you meant to refer to /opt/intel_cc_80/doc/... Nice job, but why do you move the executable to /opt/intel/compiler80 ??
Doh. Need to fix that. As for moving it to "compiler80", whenever I try to rename the directory from its default during the emerge, I get a sandbox violation. Any idea on how to move it to a different directory?
Created attachment 22042 [details] Revised ICC ebuild
Created attachment 22043 [details] /usr/portage/dev-lang/icc/files/8.0.055/05icc-ifc Revised to fix dual paths of IFC & ICC
Created attachment 22044 [details] /usr/portage/dev-lang/icc/files/8.0.055/icc Revised icc script
Revised files should fix most problems; however, I still can't get the ebuild to play nice and put the files into /opt/intel/compiler80 because the original RPM files no longer use that path.
Created attachment 22051 [details] Fix for old environment variable file
Created attachment 22169 [details] Updated ICC Ebuild for 8.0.55 Now fixes the path of the compiler to /opt/intel/compiler80 like it should.
Created attachment 22170 [details] 05icc-ifc env.d file
Created attachment 22171 [details] icc file fix for command line
New ebuild fixes the path to /opt/intel/compiler80. It is also now marked ~x86, and the text of the header and finishing text has been changed to reflect the new build.
Created attachment 22172 [details] Minor patch for previous ebuild Fixes placement of icc script file to correct location.
Created attachment 22178 [details] /usr/portage/dev-lang/icc/files/8.0.055/05icc-ifc
Created attachment 22180 [details] /usr/portage/dev-lang/icc/files/8.0.055/icc Fixes yet another path typo.
Created attachment 22310 [details] Ebuild for ICC 8.0.055, accounts for fixed icpc script The previous build was not fixing the script for icpc. Though not serious, this ebuild and the accompanying icpc file fix the problem.
Created attachment 22311 [details] /usr/portage/dev-lang/icc/files/8.0.055/icpc
Created attachment 22351 [details] ICC 8.0.055 Ebuild with new conf.d configuration file support This ebuild now installs into /etc/conf.d a file called "iccifc" which contains global variables which can be used in ebuilds for configuring ICC and IFC.
Created attachment 22352 [details] /usr/portage/dev-lang/icc/files/8.0.055/iccifc This file goes into /etc/conf.d and contains compiler flags and settings for the ICC and IFC compilers.
/etc/conf.d is specifically for init scripts. You may want to look into moving that to /etc/env.d. (FYI - ebrostig is picking up ICC maintainership soon and will get this bug.)
*** This bug has been marked as a duplicate of 35578 ***
Reopening this one since it has an ebuild attached.
*** Bug 35578 has been marked as a duplicate of this bug. ***
With respect to the env.d / conf.d issue: The iccifc file is not something I want called by env-update. Should I make a directory in env.d called iccifc and put the file in there instead, similar to the gcc directory that currently exists?
That'd work, but how about just a /etc/icc.conf or something along those lines? You've done some pretty impressive work on this. If ebrostig's okay with it, after my Christmas break I'd like to pair you up with him and set you up with a developer account for ICC ebuild maintainance, and perhaps you two can work together on clean Portage integration.
No problems from my side.
Created attachment 22413 [details] /usr/portage/dev-lang/icc/files/8.0.055/iccifc.conf This file replaces the old iccifc file which went into /etc/conf.d. It now goes into /etc as iccifc.conf.
Created attachment 22414 [details] ICC 8.0.055 Ebuild with modified configuration file Just moves the iccifc file to /etc/iccifc.conf
As for the developer account - I'm flattered, to say the least. :)
Created attachment 22443 [details] New 8.0.055 ebuild that keeps the debugger and preserves ia64 This is the ebuild I wrote (modified 7.1... ebuild) that keeps the debugger (still 7.3) from the 8.0.055 package in /opt/intel/compiler80/bin and preserves the ia64 bits as much as possible. I have also changed the directory structure to leave out the ia32 and ia64 bits because they can coexist in /opt/intel/compiler80/. I actually created the same icc and icpc scripts in the files dir as listed above because the original ones were incorrectly changing the command line parameters with and could ruin the binary or the source file name under compile. I hope this helps.
Another change that should be done is to change the glibc prereq to 2.3.2. The 2.2.4+ req is from 7.0. There are a number of (very minor) problems with glibc 2.2.4 and 2.2.5 that prevent some things being built with icc >= 7.0; I have some trivial patches for them and even submitted some eons ago, but as 2.3.2-r(something) is now the 'stable' version it's probably not worth dealing with.
Created attachment 22559 [details, diff] trivial diff to update glibc-2.3.2 req
unfortunately the ebuild fails on me. dawikidnezz Documenten # ACCEPT_KEYWORDS="~x86" emerge icc Calculating dependencies ...done! >>> emerge (1 of 1) dev-lang/icc-8.0.055 to / >>> md5 src_uri ;-) l_cc_p_8.0.055.tar.gz >>> Unpacking source... >>> Unpacking l_cc_p_8.0.055.tar.gz to /var/tmp/portage/icc-8.0.055/work >>> Source unpacked. * Untagging: /var/tmp/portage/icc-8.0.055/work/opt/intel_cc_80/doc/csupport * Untagging: /var/tmp/portage/icc-8.0.055/work/opt/intel_idb_73/doc/idbsupport >>> Install icc-8.0.055 into /var/tmp/portage/icc-8.0.055/image/ category dev-lang cp: cannot stat `/home/dabooty/portage_overlay/dev-lang/icc/files/8.0.055/05icc-ifc-ia32': Onbekend bestand of map install: cannot stat `/var/tmp/portage/icc-8.0.055/temp/05icc-ifc': Onbekend bestand of map !!! ERROR: dev-lang/icc-8.0.055 failed. !!! Function src_install, Line 98, Exitcode 1 !!! (no error message)
the ebuild from comment 32 works fine though
Created attachment 22940 [details] ebuild See the attachment. The diff is below. Mainly this fixes the /etc/iccifc.conf installation as the line was wrong for it in the ebuild. I bumped the dependency of glibc to 2.3.2 per Garen's suggestion as well. Also fixed the blurb at the end that tells the user about /etc/iccifc.conf --- icc-8.0.055.ebuild.old 2003-12-31 22:46:15.000000000 -0600 +++ icc-8.0.055.ebuild 2003-12-31 22:23:48.000000000 -0600 @@ -15,12 +15,12 @@ LICENSE="icc-8.0" DEPEND="virtual/linux-sources - >=sys-libs/glibc-2.2.4 + >=sys-libs/glibc-2.3.2 app-arch/cpio app-arch/rpm" RDEPEND="virtual/linux-sources - >=sys-libs/glibc-2.2.4" + >=sys-libs/glibc-2.3.2" SLOT="8" KEYWORDS="-* x86" @@ -78,7 +78,7 @@ doexe ${FILESDIR}/${PVR}/icc doexe ${FILESDIR}/${PVR}/icpc insinto /etc - doins #{FILESDIR}/{$PVR}/iccifc.conf + doins ${FILESDIR}/${PVR}/iccifc.conf } pkg_postinst () { @@ -110,7 +110,7 @@ ewarn "software, _not_ with Gentoo." ewarn einfo - einfo "Compiler flags and settings can be changed in /etc/conf.d/iccifc" + einfo "Compiler flags and settings can be changed in /etc/iccifc.conf" einfo }
Created attachment 22941 [details] ebuild arr. Seems to be a bug in bugzilla when you use an apostrophe in the file description. I hope it works this time.
I notices that some of the file permissions in /opt/intel/compiler80/bin are wrong. Errormatch.txt is executable for instance. This is not very serious of course but what about changing the following lines of code > for FILE in $(find $SD/bin/ -regex '.*[ei][cf]p?c$\|.*cfg$\|.*pcl$\|.*vars[^/]*.c?sh$' 2>/dev/null) > do > sed s@\<INSTALLDIR\>@$RD@g ${FILE} > ${FILE}.abs > mv -f ${FILE}.abs ${FILE} > chmod 755 ${FILE} > done to > for FILE in $(grep -l '<INSTALLDIR>') > do > sed s@\<INSTALLDIR\>@$RD@g ${FILE} > ${FILE}.abs > chmod --reference=${FILE} ${FILE}.abs > mv ${FILE}.abs ${FILE} > done ?
Created attachment 23739 [details] ebuild Made the change I mentioned above. If a anybody doesn't like this please (point out why and) revert/delete
Created attachment 23741 [details] ebuild Corrected formatting error. Also, in Comment #41 there is a typo. it should be > for FILE in $(grep -l "<INSTALLDIR>" *) ^ of course
Created attachment 24020 [details] ebuild - cleaned up the ebuild - fixed some `untagging` related stuff - removed dependency on virtual/linux-sources still wondering if their should be a seperate ebuild for the intel debugger since it is also contained in the ifc/ifort tarball. currently the debugger is not installed at all.
regarding /etc/iccifc.conf... wouldn't it be most convenient to have two files /etc/icc.conf and /etc/ifc.conf which redfine compilation related environment variables like > #/etc/icc.conf > > CC="icc" > CFLAGS="-fast -xNW -tpp7" > LD="xild" > ... so that these files can simply be sourced from the ebuild: > #/usr/portage/category/application/version.ebuild > ... > use icc && source /etc/icc.conf > use ifc && source /etc/ifc.conf The ifc use flag does not yet exist of course. I guess it won't be used very often anyway...
ICC integration is going to be handled through Portage, not in individual ebuilds.
Great, I'm looking forward to see how that will work out.
Also -- I agree that ICC and IFC should probably use different config files so they aren't tripping over each other.
BTW, the env.d files are currently overwriting each other, which breaks things if different major versions of ifc/icc are installed.
By now, we already have an ebuild for 8.0.055 in the tree. If there are issues with it, please open a fresh bug about it. I consider this request fulfilled by our current offering.