Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Forum italiano (Italian) Forum di discussione italiano
  • Search

ebuild per sci-physics/root [risolto]

Tutte le discussioni direttamente correlabili all'informatica e/o a GNU/*nix.

Moderator: ago

Post Reply
  • Print view
Advanced search
20 posts • Page 1 of 1
Author
Message
cloc3
Advocate
Advocate
User avatar
Posts: 4840
Joined: Tue Jan 13, 2004 10:09 am
Location: http://www.gentoo-users.org/user/cloc3/
Contact:
Contact cloc3
Website

ebuild per sci-physics/root [risolto]

  • Quote

Post by cloc3 » Wed Nov 22, 2017 3:20 am

era: ebuild per sci-physics/root :access denied

a quanto pare, quancuno ha letto questo ebuild e ha prodotto un ebuild in portage che utilizza le osservaziono contenute sotto.
dunque il thread è risolto.

---
il thread che segue ha portato a scrivere l'ebuild qui sotto, che comincia ad essere abbastanza funzionale e che cercherò di aggiornare successivamente.
si raccomanda di farne uso con cautela.

Code: Select all

# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6

PYTHON_COMPAT=( python2_7 )

inherit cmake-utils elisp-common eutils fdo-mime fortran-2 multilib python-single-r1 \
        toolchain-funcs user versionator


DESCRIPTION="C++ data analysis framework and interpreter from CERN"
HOMEPAGE="https://root.cern.ch"
SRC_URI="
https://root.cern.ch/download/${PN}_v${PV}.source.tar.gz
"

SLOT="0/$(get_version_component_range 1-3 ${PV})"
LICENSE="LGPL-2.1 freedist MSttfEULA LGPL-3 libpng UoI-NCSA"
KEYWORDS="amd64 ~x86 ~amd64-linux ~x86-linux"

# options extracted from configure
options="
   afdsmgrd           \
   afs                \
   alien              \
   alloc              \
   +asimage            \
   +astiff             \
   bonjour            \
   -builtin_afterimage \
   -builtin_ftgl       \
   -builtin_freetype   \
   -builtin_gl2ps      \
   -builtin_glew       \
   -builtin_pcre       \
   -builtin_unuran     \
   -builtin_zlib       \
   -builtin_lzma       \
   -builtin_lz4        \
   -builtin_llvm       \
   +cxx14              \
   cxx17              \
   cxxmodules         \
   libcxx             \
   castor             \
   chirp              \
   cocoa              \
   davix              \
   dcache             \
   +explicitlink       \
   fink               \
   +fftw3              \
   +fitsio             \
   gviz               \
   +gdml               \
   +genvector          \
   geocad             \
   gfal               \
   glite              \
   globus             \
   +gsl_shared         \
   hdfs               \
   http               \
   imt                \
   krb5               \
   ldap               \
   +mathmore           \
   +memstat            \
   +minuit2            \
   monalisa           \
   +mysql              \
   odbc               \
   +opengl             \
   oracle             \
   pgsql              \
   pythia6            \
   +pythia8            \
   +python             \
   +qt                 \
   +qtgsi              \
   +roofit             \
   +r                  \
   ruby               \
   rfio               \
   +rpath              \
   search_usrlocal    \
   sapdb              \
   +shadowpw           \
   +shared             \
   +soversion          \
   sqlite             \
   srp                \
   +ssl                \
   +table              \
   tbb                \
   +tmva               \
   +unuran             \
   vc                 \
   -werror             \
   winrtdebug         \
   +x11                \
   +xft                \
   +xml                \
   +xrootd             \
"
options="${options} all gminimal minimal +root7"
options+=" $EXTRA_ECONF"

IUSE="${options}"
IUSE="${IUSE} +X doc emacs examples fits
        graphviz kerberos +math mpi openmp oracle postgres prefix 
        R +tiff xinetd zeroconf"

# TODO: patches and useflags tuning and testing are needed

CDEPEND="${CDEPEND}
        app-arch/xz-utils:0=
        >=dev-lang/cfortran-4.4-r2
        dev-libs/libpcre:3=
        media-fonts/dejavu
        media-libs/freetype:2=
        media-libs/libpng:0=
        >=sys-devel/clang-3.4:=
        sys-libs/ncurses:=
        sys-libs/zlib:0=
        X? (
                media-libs/ftgl:0=
                media-libs/glew:0=
                x11-libs/libX11:0=
                x11-libs/libXext:0=
                x11-libs/libXpm:0=
                        || (
                        media-libs/libafterimage[gif,jpeg,png,tiff?]
                        >=x11-wm/afterstep-2.2.11[gif,jpeg,png,tiff?]
                )
                opengl? ( virtual/opengl virtual/glu x11-libs/gl2ps:0= )
                x11-libs/libXft:0=
        )
        afs? ( net-fs/openafs )
        emacs? ( virtual/emacs )
        fits? ( sci-libs/cfitsio:0= )
        fftw3? ( sci-libs/fftw:3.0= )
        geocad? ( <sci-libs/opencascade-6.8.0:= )
        graphviz? ( media-gfx/graphviz:0= )
        http? ( dev-libs/fcgi:0= )
        kerberos? ( virtual/krb5 )
        ldap? ( net-nds/openldap:0= )
        math? (
                sci-libs/gsl:0=
                sci-mathematics/unuran:0=
                mpi? ( virtual/mpi )
        )
        mysql? ( virtual/mysql )
        odbc? ( || ( dev-db/libiodbc dev-db/unixODBC ) )
        oracle? ( dev-db/oracle-instantclient-basic:0= )
        postgres? ( dev-db/postgresql:= )
        pythia6? ( sci-physics/pythia:6= )
        pythia8? ( >=sci-physics/pythia-8.1.80:8= )
        python? ( ${PYTHON_DEPS} )
        R? ( dev-lang/R )
        shadowpw? ( virtual/shadow )
        sqlite? ( dev-db/sqlite:3= )
        ssl? ( dev-libs/openssl:0= )
        xml? ( dev-libs/libxml2:2= )
        xrootd? ( >=net-libs/xrootd-3.3.5:0= )
        zeroconf? ( net-dns/avahi:0= )
"
DEPEND="
        virtual/pkgconfig
"
RDEPEND="${CDEPEND}
   xinetd? ( sys-apps/xinetd )"

PDEPEND="doc? ( ~app-doc/root-docs-${PV}[http=,math=] )"

# install stuff in ${P} and not ${PF} for easier tracking in root-docs
DOC_DIR="/usr/share/doc/${P}"

OC_UNSUPPORTED="6.8.0"

die_compiler() {
   eerror "You are using a $(tc-getCXX)-$5 without C++$1 capabilities"
   die "Need one of the following C++$1 capable compilers:\n"\
      "    >=sys-devel/gcc[cxx]-$2\n"\
      "    >=sys-devel/clang-$3\n"\
      "    >=dev-lang/icc-$4"
}

# check compiler to satisfy minimal versions
# $1 - std version
# $2 - g++
# $3 - clang++
# $4 - icc/icpc
check_compiler() {
   local cur ver
   case "$(tc-getCXX)" in
      *clang++*)
         ver="$(best_version sys-devel/clang | sed 's:sys-devel/clang-::')"
         cur="$3"
      ;;
      *g++*)
         ver="$(gcc-version)"
         cur="$2"
      ;;
      *icc*|*icpc*)
         ver="$(best_version dev-lang/icc | sed 's:dev-lang/icc-::')"
         eerror "ROOT-6 is known not to build with ICC."
         eerror "Please report any issues upstream."
         cur="$4"
      ;;
      *)
         ewarn "You are using an unsupported compiler."
         ewarn "Please report any issues upstream."
         return 0
      ;;
   esac
   version_is_at_least "${cur}" "${ver}" || die_compiler "$1" "$2" "$3" "$4" "${ver}"
}

pkg_setup() {
   fortran-2_pkg_setup
   use python && python-single-r1_pkg_setup
   echo
   elog "There are extra options on packages not yet in Gentoo:"
   elog "Afdsmgrd, AliEn, castor, Chirp, dCache, gfal, Globus, gLite,"
   elog "HDFS, Monalisa, MaxDB/SapDB, SRP."
   elog "You can use the env variable EXTRA_ECONF variable for this."
   elog "For example, for SRP, you would set: "
   elog "EXTRA_ECONF=\"--enable-srp --with-srp-libdir=${EROOT%/}/usr/$(get_libdir)\""
   echo

   enewgroup rootd
   enewuser rootd -1 -1 /var/spool/rootd rootd

   if use math; then
      if use openmp; then
         if [[ "$(tc-getCXX)" == *g++* && "$(tc-getCXX)" != *clang++* ]] && ! tc-has-openmp; then
            ewarn "You are using a g++ without OpenMP capabilities"
            die "Need an OpenMP capable compiler"
         else
            export USE_OPENMP=1 USE_PARALLEL_MINUIT2=1
         fi
      elif use mpi; then
         export USE_MPI=1 USE_PARALLEL_MINUIT2=1
      fi
   fi

   # c++11 support is mandatory
   check_compiler "11" "4.8" "3.4" "13"

   # Active version of opencascade may be >= $OC_UNSUPPORTED,
   # so we need to eselect proper version (it must exist due to DEPEND requirement)
   if use geocad; then
      oc_current=$(eselect opencascade show)
      # Proceed only if active version is unsupported
      if version_is_at_least "${OC_UNSUPPORTED}" "${oc_current}"; then
         local -a vlist
         vlist=( $(version_sort $(eselect opencascade list | awk '/^ / { print $2 }')) )
         local i
         # search for higehr version < $OC_UNSUPPORTED
         # list is sorted acsending, so loop backwards
         for (( i=$(( ${#vlist[@]} -1 )); i>=0; i-- )); do
            version_is_at_least "${OC_UNSUPPORTED}" "${vlist[i]}" || break
         done
         [[ $i == "-1" ]] && die "No suitable opencascade eselect slot is available (<${OC_UNSUPPORTED})"

         einfo "Switching opencascade to supported slot: ${oc_current} -> ${vlist[i]}"
         eselect opencascade set ${vlist[i]} > /dev/null || die "eselect opencascade set ${vlist[i]} failed!"
      else
         # forget it, effectively disabling eselect cleanup
         unset oc_current
      fi
   fi
}

PATCHES=(
    "${FILESDIR}/${PN}-5.32.00-afs.patch" \
        "${FILESDIR}/${PN}-5.32.00-cfitsio.patch" \
        "${FILESDIR}/${PN}-5.28.00b-glibc212.patch" \
        "${FILESDIR}/${PN}-5.32.00-chklib64.patch" \
        "${FILESDIR}/${PN}-6.00.01-dotfont.patch" \
        "${FILESDIR}/${PN}-6.04.06-prop-flags.patch" \
)

PROPERTIES="interactive"

export CMAKE_BUILD_TYPE="Release"

src_prepare() {

        # make sure we use system libs and headers
        rm montecarlo/eg/inc/cfortran.h README/cfortran.doc || die
        LANG=C LC_ALL=C find core/zip -type f -name "[a-z]*" -print0 | \
                xargs -0 rm || die
        rm -r core/lzma/src/*.tar.gz || die
        sed -i -e 's/^GLLIBS *:= .* $(OPENGLLIB)/& -lgl2ps/' \
                graf3d/gl/Module.mk || die

        # In Gentoo, libPythia6 is called libpythia6
        # iodbc is in /usr/include/iodbc
        # pg_config.h is checked instead of libpq-fe.h
        sed -i \
                -e 's:libPythia6:libpythia6:g' \
                -e 's:$ODBCINCDIR:$ODBCINCDIR /usr/include/iodbc:' \
                -e 's:libpq-fe.h:pg_config.h:' \
                configure || die "adjusting configure for Gentoo failed"
        default
}

src_configure() {
local mycmakeargs=(
                                -DWITH_root7=ON \
                                -DWITH_cxx14=ON \
                                -DWITH_builtin_afterimage=OFF \
                                -DWITH_builtin_ftgl=OFF \
                                -DWITH_builtin_freetype=OFF \
                                -DWITH_builtin_glew=OFF \
                                -DWITH_builtin_lzma=OFF \
                                -DWITH_builtin_pcre=OFF \
                                -DWITH_builtin_zlib=OFF \
                                -DWITH_explicitlink=ON \
                                -DWITH_soversion=ON \
                                -DWITH_fail-on-missing=ON \

)
for i in ${options}; do {
        i=${i/-/}
        i=${i/+/}
        if use ${i}; then {
                echo ON $i
                mycmakeargs+="-DWITH_${i}=ON "
        }
        else {
                echo OFF $i
                mycmakeargs+="-DWITH_${i}=OFF "
        }
        fi
} done

        CMAKE_C_FLAGS="${CFLAGS}"
        CMAKE_CXX_FLAGS="${CXXFLAGS}"
        CMAKE_CXX_LINK_FLAGS=${LDFLAGS}
        CMAKE_Fortran_FLAGS="${FFLAGS}"
        CMAKE_INSTALL_TUTDIR="${EPREFIX%/}/${DOC_DIR}/examples/tutorials"
        CMAKE_INSTALL_TESTDIR="${EPREFIX%/}/${DOC_DIR}/examples/tests"
        CMAKE_INSTALL_ICONDIR="${EPREFIX%/}/usr/share/pixmaps"
        addwrite /dev/random
        cmake-utils_src_configure
}

daemon_install() {
   local daemons="rootd proofd"
   dodir /var/spool/rootd
   fowners rootd:rootd /var/spool/rootd
   dodir /var/spool/rootd/{pub,tmp}
   fperms 1777 /var/spool/rootd/{pub,tmp}

   local i
   for i in ${daemons}; do
      newinitd "${FILESDIR}"/${i}.initd ${i}
      newconfd "${FILESDIR}"/${i}.confd ${i}
   done
   if use xinetd; then
      insinto /etc/xinetd
          sed   -e 's|@bindir@|/usr/bin/|' \
                        -e 's|@prefix@|/usr|' \
          < ./config/rootd.xinetd.in > ${S}"/etc/daemons/rootd.xinetd"
          sed   -e 's|@bindir@|/usr/bin/|' \
                        -e 's|@prefix@|/usr|' \
          < ./config/proofd.xinetd.in > ${S}"/etc/daemons/proofd.xinetd"
      doins "${S}"/etc/daemons/{rootd,proofd}.xinetd
   fi
}

desktop_install() {
   cd "${S}"
   echo "Icon=root-system-bin" >> etc/root.desktop
   domenu etc/root.desktop
   doicon build/package/debian/root-system-bin.png

   insinto /usr/share/icons/hicolor/48x48/mimetypes
   doins build/package/debian/application-x-root.png

   insinto /usr/share/icons/hicolor/48x48/apps
   doicon build/package/debian/root-system-bin.xpm
}

cleanup_install() {
        rm "${D}"/usr/LICENSE
        rm "${D}"/usr/lib64/libGLEW.so
        rm "${D}"/usr/include/GL/glew.h
        rm "${D}"/usr/include/GL/glxew.h
}

src_install() {
        DOCS=($(find README/* -maxdepth 1 -type f))
        insinto "${DOC_DIR}"
        doins README.md

#       /bin/bash -i
        cmake-utils_src_install

        daemon_install
        desktop_install
        cleanup_install

        docompress -x "${DOC_DIR}"/{CREDITS,LICENSE,examples/tutorials}
        dosym "${ED}"usr/portage/licenses/LGPL-2.1 "${DOC_DIR}/LICENSE"
}
sto cercando di produrre un ebuild per sci-physics/root visto che quello attuale è obsoleto.

in linea di principio, non dovrebbe essere una impresa impossibile, perché il software è ottimamente documentato.
in effetti, le istruzioni sono più che sufficienti per concludere felicemente la compilazione manuale in una cartella dedicata, a patto di introdurre le opzioni -Droot7=ON -Dcxx14=ON, necessarie per una installazione con gcc-5 o superiore.

appena provo a lanciare la compilazione in un ebuild, tuttavia, ottengo questo stupido errore:

Code: Select all

Scanning dependencies of target hsimple
[ 89%] Generating tutorials/hsimple.root

Processing hsimple.C...
 * ACCESS DENIED:  open_wr:      /dev/random
open('/dev/random'): Permission denied

...

VERSION 1.0
FORMAT: F - Function called
FORMAT: S - Access Status
FORMAT: P - Path as passed to function
FORMAT: A - Absolute Path (not canonical)
FORMAT: R - Canonical Path
FORMAT: C - Command Line

F: open_wr
S: deny
P: /dev/random
A: /dev/random
R: /dev/random
C: /tmp/ramtmp/.lnv/portage/sci-physics/root-6.10.08/work/root-6.10.08_build/bin/root.exe -l -q -b -n -x hsimple.C -e return 
 * --------------------------------------------------------------------------------
è colpa di uno stupido demo (hsimple.C) che probabilmente non dovrebbe neppure essere lanciato, ma che non riesco a eliminare.
se commento la riga che lo lancia (con una patch), infatti, nascono altri errori.

che cosa si può fare, in questi casi?

aggiungo anche l'ebuild, del tutto maccheronico, che sto usando.
il fatto che sia maccheronico, tuttavia, non è probabilmente una concausa del problema che sto descrivendo.

Code: Select all

# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=5

PYTHON_COMPAT=( python2_7 )

inherit epatch cmake-utils

#elisp-common eutils fdo-mime fortran-2 multilib python-single-r1 \
#       toolchain-funcs user versionator

DESCRIPTION="C++ data analysis framework and interpreter from CERN"
HOMEPAGE="https://root.cern.ch"
SRC_URI="
https://root.cern.ch/download/root_v6.10.08.source.tar.gz
"
LICENSE="LGPL-2.1 freedist MSttfEULA LGPL-3 libpng UoI-NCSA"
KEYWORDS="amd64 ~x86 ~amd64-linux ~x86-linux"
IUSE=""

SLOT="0/$(get_version_component_range 1-3 ${PV})"
# TODO: ...

CDEPEND=""
DEPEND="${CDEPEND}
        virtual/pkgconfig"

RDEPEND="${CDEPEND}
"

#inherit eutils cmake-utils

export CMAKE_BUILD_TYPE="Release"

pkg_setup() {
        fortran-2_pkg_setup
}

src_prepare() {
        #epatch "${FILESDIR}"/root-6.10.08_exe.patch

        # In Gentoo, libPythia6 is called libpythia6
        # iodbc is in /usr/include/iodbc
        # pg_config.h is checked instead of libpq-fe.h
        sed -i \
                -e 's:libPythia6:libpythia6:g' \
                -e 's:$ODBCINCDIR:$ODBCINCDIR /usr/include/iodbc:' \
                -e 's:libpq-fe.h:pg_config.h:' \
                #configure || die "adjusting configure for Gentoo failed"
        #rm tutorials -rf || die
}

src_configure() {
        mkdir ../root-6.10.08_build
        cd ../root-6.10.08_build
        cmake -Droot7=ON -Dcxx14=ON ../root-6.10.08
}
Last edited by cloc3 on Sun Dec 24, 2017 8:13 am, edited 4 times in total.
vu vu vu
gentù
mi piaci tu
Top
fedeliallalinea
Administrator
Administrator
User avatar
Posts: 31984
Joined: Sat Mar 08, 2003 11:15 pm
Location: here
Contact:
Contact fedeliallalinea
Website

  • Quote

Post by fedeliallalinea » Wed Nov 22, 2017 8:43 am

Non so cosa sia l'errore che hai quindi ho cambiato approccio al problema, infatti ho copiato il vecchio ebuild e l'ho rinominato con la versione 6.10.08 ed ho iniziato a rimuovere le parti nell'ebuild che davano problemi (patch che non si applicano piu', qualche rm che falliva,...) e alla fine ho creato un ebuild che funziona (almeno alla compilazione e installazione)

Code: Select all

# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=5

PYTHON_COMPAT=( python2_7 )

inherit elisp-common eutils fdo-mime fortran-2 multilib python-single-r1 \
	toolchain-funcs user versionator

DESCRIPTION="C++ data analysis framework and interpreter from CERN"
HOMEPAGE="https://root.cern.ch"
SRC_URI="https://root.cern.ch/download/${PN}_v${PV}.source.tar.gz"

SLOT="0/$(get_version_component_range 1-3 ${PV})"
LICENSE="LGPL-2.1 freedist MSttfEULA LGPL-3 libpng UoI-NCSA"
KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
IUSE="+X afs doc emacs examples fits fftw gdml geocad
	graphviz http kerberos ldap +math +memstat mpi mysql odbc
	+opengl openmp oracle postgres prefix pythia6 pythia8
	python qt4 R shadow sqlite ssl table +tiff xinetd xml xrootd
	zeroconf"

# TODO: add support for: davix
# TODO: ROOT-6 supports x32 ABI, but half of its dependencies doesn't
# TODO: unbundle: cling
# vdt seems removed in version 6.10.08

REQUIRED_USE="
	!X? ( !opengl !qt4 !tiff )
	mpi? ( math !openmp )
	openmp? ( math !mpi )
	python? ( ${PYTHON_REQUIRED_USE} )
"

CDEPEND="
	app-arch/xz-utils:0=
	>=dev-lang/cfortran-4.4-r2
	dev-libs/libpcre:3=
	media-fonts/dejavu
	media-libs/freetype:2=
	media-libs/libpng:0=
	>=sys-devel/clang-3.4:=
	sys-libs/ncurses:=
	sys-libs/zlib:0=
	X? (
		media-libs/ftgl:0=
		media-libs/glew:0=
		x11-libs/libX11:0=
		x11-libs/libXext:0=
		x11-libs/libXpm:0=
		|| (
			media-libs/libafterimage[gif,jpeg,png,tiff?]
			>=x11-wm/afterstep-2.2.11[gif,jpeg,png,tiff?]
		)
		opengl? ( virtual/opengl virtual/glu x11-libs/gl2ps:0= )
		qt4? (
			dev-qt/qtgui:4=
			dev-qt/qtopengl:4=
			dev-qt/qt3support:4=
			dev-qt/qtsvg:4=
			dev-qt/qtwebkit:4=
			dev-qt/qtxmlpatterns:4=
		)
		x11-libs/libXft:0=
	)
	afs? ( net-fs/openafs )
	emacs? ( virtual/emacs )
	fits? ( sci-libs/cfitsio:0= )
	fftw? ( sci-libs/fftw:3.0= )
	geocad? ( <sci-libs/opencascade-6.8.0:= )
	graphviz? ( media-gfx/graphviz:0= )
	http? ( dev-libs/fcgi:0= )
	kerberos? ( virtual/krb5 )
	ldap? ( net-nds/openldap:0= )
	math? (
		sci-libs/gsl:0=
		sci-mathematics/unuran:0=
		mpi? ( virtual/mpi )
	)
	mysql? ( virtual/mysql )
	odbc? ( || ( dev-db/libiodbc dev-db/unixODBC ) )
	oracle? ( dev-db/oracle-instantclient-basic:0= )
	postgres? ( dev-db/postgresql:= )
	pythia6? ( sci-physics/pythia:6= )
	pythia8? ( >=sci-physics/pythia-8.1.80:8= )
	python? ( ${PYTHON_DEPS} )
	R? ( dev-lang/R )
	shadow? ( virtual/shadow )
	sqlite? ( dev-db/sqlite:3= )
	ssl? ( dev-libs/openssl:0= )
	xml? ( dev-libs/libxml2:2= )
	xrootd? ( >=net-libs/xrootd-3.3.5:0= )
	zeroconf? ( net-dns/avahi:0= )
"

# TODO: ruby is not yet ported to ROOT-6, reenable when (if?) ready
#		ruby? (
#			dev-lang/ruby:=
#			dev-ruby/rubygems:=
#		)

DEPEND="${CDEPEND}
	virtual/pkgconfig"

RDEPEND="${CDEPEND}
	xinetd? ( sys-apps/xinetd )"

PDEPEND="doc? ( ~app-doc/root-docs-${PV}[http=,math=] )"

# install stuff in ${P} and not ${PF} for easier tracking in root-docs
DOC_DIR="/usr/share/doc/${P}"

OC_UNSUPPORTED="6.8.0"

die_compiler() {
	eerror "You are using a $(tc-getCXX)-$5 without C++$1 capabilities"
	die "Need one of the following C++$1 capable compilers:\n"\
		"    >=sys-devel/gcc[cxx]-$2\n"\
		"    >=sys-devel/clang-$3\n"\
		"    >=dev-lang/icc-$4"
}

# check compiler to satisfy minimal versions
# $1 - std version
# $2 - g++
# $3 - clang++
# $4 - icc/icpc
check_compiler() {
	local cur ver
	case "$(tc-getCXX)" in
		*clang++*)
			ver="$(best_version sys-devel/clang | sed 's:sys-devel/clang-::')"
			cur="$3"
		;;
		*g++*)
			ver="$(gcc-version)"
			if version_is_at_least "5" "${ver}"; then
				eerror ""
				eerror "GCC-5 is not yet supported in ROOT-6."
				eerror "The code may build for you, but will have run-time failures."
				eerror "See the following bugs:"
				eerror "https://sft.its.cern.ch/jira/browse/ROOT-7285"
				eerror "https://sft.its.cern.ch/jira/browse/ROOT-7319"
				eerror "https://sft.its.cern.ch/jira/browse/ROOT-7654"
				eerror "https://sft.its.cern.ch/jira/browse/ROOT-7721"
				eerror "https://sft.its.cern.ch/jira/browse/ROOT-7818"
				eerror "https://sft.its.cern.ch/jira/browse/ROOT-7895"
				eerror "https://bugs.gentoo.org/show_bug.cgi?id=564306"
				eerror ""
				eerror "Please use GCC-4.9 for now."
				eerror ""
				die "gcc-5 is not yet supported"
			fi
			cur="$2"
		;;
		*icc*|*icpc*)
			ver="$(best_version dev-lang/icc | sed 's:dev-lang/icc-::')"
			eerror "ROOT-6 is known not to build with ICC."
			eerror "Please report any isuses upstream."
			cur="$4"
		;;
		*)
			ewarn "You are using an unsupported compiler."
			ewarn "Please report any issues upstream."
			return 0
		;;
	esac
	version_is_at_least "${cur}" "${ver}" || die_compiler "$1" "$2" "$3" "$4" "${ver}"
}

pkg_setup() {
	fortran-2_pkg_setup
	use python && python-single-r1_pkg_setup
	echo
	elog "There are extra options on packages not yet in Gentoo:"
	elog "Afdsmgrd, AliEn, castor, Chirp, dCache, gfal, Globus, gLite,"
	elog "HDFS, Monalisa, MaxDB/SapDB, SRP."
	elog "You can use the env variable EXTRA_ECONF variable for this."
	elog "For example, for SRP, you would set: "
	elog "EXTRA_ECONF=\"--enable-srp --with-srp-libdir=${EROOT%/}/usr/$(get_libdir)\""
	echo

	enewgroup rootd
	enewuser rootd -1 -1 /var/spool/rootd rootd

	if use math; then
		if use openmp; then
			if [[ "$(tc-getCXX)" == *g++* && "$(tc-getCXX)" != *clang++* ]] && ! tc-has-openmp; then
				ewarn "You are using a g++ without OpenMP capabilities"
				die "Need an OpenMP capable compiler"
			else
				export USE_OPENMP=1 USE_PARALLEL_MINUIT2=1
			fi
		elif use mpi; then
			export USE_MPI=1 USE_PARALLEL_MINUIT2=1
		fi
	fi

	# c++11 support is mandatory
	check_compiler "11" "4.8" "3.4" "13"

	# Active version of opencascade may be >= $OC_UNSUPPORTED,
	# so we need to eselect proper version (it must exist due to DEPEND requirement)
	if use geocad; then
		oc_current=$(eselect opencascade show)
		# Proceed only if active version is unsupported
		if version_is_at_least "${OC_UNSUPPORTED}" "${oc_current}"; then
			local -a vlist
			vlist=( $(version_sort $(eselect opencascade list | awk '/^ / { print $2 }')) )
			local i
			# search for higehr version < $OC_UNSUPPORTED
			# list is sorted acsending, so loop backwards
			for (( i=$(( ${#vlist[@]} -1 )); i>=0; i-- )); do
				version_is_at_least "${OC_UNSUPPORTED}" "${vlist[i]}" || break
			done
			[[ $i == "-1" ]] && die "No suitable opencascade eselect slot is available (<${OC_UNSUPPORTED})"

			einfo "Switching opencascade to supported slot: ${oc_current} -> ${vlist[i]}"
			eselect opencascade set ${vlist[i]} > /dev/null || die "eselect opencascade set ${vlist[i]} failed!"
		else
			# forget it, effectively disabling eselect cleanup
			unset oc_current
		fi
	fi
}

src_prepare() {
	# Second version of makepch is required in order to generate
	# PCH file appropriate for Gentoo include headers layout.
	# This can be done only at install stage, when files are placed
	# as appropriate. Premature modification of makepch.sh will
	# broke build process, however.
	#cp "etc/dictpch/makepch.sh" "etc/dictpch/makepch-gentoo.sh" || die

	epatch \
		"${FILESDIR}"/${PN}-5.28.00b-glibc212.patch \
		"${FILESDIR}"/${PN}-5.32.00-afs.patch \
		"${FILESDIR}"/${PN}-5.32.00-cfitsio.patch \
		"${FILESDIR}"/${PN}-5.32.00-chklib64.patch \
		"${FILESDIR}"/${PN}-6.00.01-dotfont.patch \
		"${FILESDIR}"/${PN}-6.04.06-prop-flags.patch
		# "${FILESDIR}"/${PN}-6.02.05-xrootd4.patch
		# "${FILESDIR}"/${PN}-6.02.05-dictpch.patch \

	# make sure we use system libs and headers
	rm montecarlo/eg/inc/cfortran.h README/cfortran.doc || die
	rm -r graf2d/asimage/src/libAfterImage || die
	rm -r graf3d/ftgl/{inc,src} || die
	rm -r graf2d/freetype/src || die
	rm -r graf3d/glew/{inc,src} || die
	rm -r core/pcre/src || die
	rm -r math/unuran/src/unuran-*.tar.gz || die
	LANG=C LC_ALL=C find core/zip -type f -name "[a-z]*" -print0 | \
		xargs -0 rm || die
	rm -r core/lzma/src/*.tar.gz || die
	sed -i -e 's/^GLLIBS *:= .* $(OPENGLLIB)/& -lgl2ps/' \
		graf3d/gl/Module.mk || die

	# In Gentoo, libPythia6 is called libpythia6
	# iodbc is in /usr/include/iodbc
	# pg_config.h is checked instead of libpq-fe.h
	sed -i \
		-e 's:libPythia6:libpythia6:g' \
		-e 's:$ODBCINCDIR:$ODBCINCDIR /usr/include/iodbc:' \
		-e 's:libpq-fe.h:pg_config.h:' \
		configure || die "adjusting configure for Gentoo failed"

	# prefixify the configure script
	sed -i \
		-e 's:/usr:${EPREFIX}/usr:g' \
		configure || die "prefixify configure failed"

	# CSS should use local images
	sed -i -e 's,http://.*/,,' etc/html/ROOT.css || die "html sed failed"

	# QTDIR only used for qt3 in gentoo, and configure looks for it.
	unset QTDIR
}

# NB: ROOT uses bundled LLVM, because it is patched and API-incompatible with
# system LLVM.
# NB: As of 6.00.0.1 cmake is not ready as it can't fully replace configure,
# e.g. for afs and geocad.

src_configure() {
	local -a myconf
	# Some compilers need special care
	case "$(tc-getCXX)" in
		*clang++*)
			myconf=(
				--with-clang
				--with-f77="$(tc-getFC)"
			)
		;;
		*icc*|*icpc*)
			# For icc we need to provide architecture manually
			# and not to tamper with tc-get*
			use x86 && myconf=( linuxicc )
			use amd64 && myconf=( linuxx8664icc )
		;;
		*)	# gcc goes here too
			myconf=(
				--with-cc="$(tc-getCC)"
				--with-cxx="$(tc-getCXX)"
				--with-f77="$(tc-getFC)"
				--with-ld="$(tc-getCXX)"
			)
		;;
	esac

	# the configure script is not the standard autotools
	myconf+=(
		--prefix="${EPREFIX}/usr"
		--etcdir="${EPREFIX}/etc/root"
		--libdir="${EPREFIX}/usr/$(get_libdir)/${PN}"
		--docdir="${EPREFIX}${DOC_DIR}"
		--tutdir="${EPREFIX}${DOC_DIR}/examples/tutorials"
		--testdir="${EPREFIX}${DOC_DIR}/examples/tests"
		--disable-builtin-afterimage
		--disable-builtin-ftgl
		--disable-builtin-freetype
		--disable-builtin-glew
		--disable-builtin-lzma
		--disable-builtin-pcre
		--disable-builtin-zlib
		--disable-werror
		--enable-explicitlink
		--enable-shared
		--enable-soversion
		--fail-on-missing
		--nohowto
		--with-afs-shared=yes
		--with-sys-iconpath="${EPREFIX}/usr/share/pixmaps"
		# Invalid option '-mtune=native'. Try ./configure --help
		# --cflags=\"${CFLAGS}\"
		# --cxxflags=\"${CXXFLAGS}\"
		$(use_enable X x11)
		$(use_enable X asimage)
		$(use_enable X xft)
		$(use_enable afs)
		$(use_enable fits fitsio)
		$(use_enable fftw fftw3)
		$(use_enable gdml)
		$(use_enable geocad)
		$(use_enable graphviz gviz)
		$(use_enable http)
		$(use_enable kerberos krb5)
		$(use_enable ldap)
		$(use_enable math genvector)
		$(use_enable math gsl-shared)
		$(use_enable math mathmore)
		$(use_enable math minuit2)
		$(use_enable math roofit)
		$(use_enable math tmva)
		$(use_enable math vc)
		$(use_enable math unuran)
		$(use_enable memstat)
		$(use_enable mysql)
		$(usex mysql "--with-mysql-incdir=${EPREFIX}/usr/include/mysql" "")
		$(use_enable odbc)
		$(use_enable opengl)
		$(use_enable oracle)
		$(use_enable postgres pgsql)
		$(use_enable prefix rpath)
		$(use_enable pythia6)
		$(use_enable pythia8)
		$(use_enable python)
		$(use_enable qt4 qt)
		$(use_enable qt4 qtgsi)
		$(use_enable R r)
		$(use_enable shadow shadowpw)
		$(use_enable sqlite)
		$(use_enable ssl)
		$(use_enable table)
		$(use_enable tiff astiff)
		$(use_enable xml)
		$(use_enable xrootd)
		$(use_enable zeroconf bonjour)
		${EXTRA_ECONF}
	)

	# usex can't be used here, because pg_config may be not
	# installed with USE="-postgres"
	use postgres && myconf+=( --with-pgsql-incdir=$(pg_config --includedir) )

	einfo "Configuring with ${myconf[@]}"
	./configure ${myconf[@]} || die "configure failed"
}

src_compile() {
	emake \
		OPT="${CXXFLAGS}" \
		F77OPT="${FFLAGS}" \
		ROOTSYS="${S}" \
		LD_LIBRARY_PATH="${S}/lib"
	use emacs && elisp-compile build/misc/*.el
}

daemon_install() {
	local daemons="rootd proofd"
	dodir /var/spool/rootd
	fowners rootd:rootd /var/spool/rootd
	dodir /var/spool/rootd/{pub,tmp}
	fperms 1777 /var/spool/rootd/{pub,tmp}

	local i
	for i in ${daemons}; do
		newinitd "${FILESDIR}"/${i}.initd ${i}
		newconfd "${FILESDIR}"/${i}.confd ${i}
	done
	if use xinetd; then
		insinto /etc/xinetd
		doins "${S}"/etc/daemons/{rootd,proofd}.xinetd
	fi
}

desktop_install() {
	cd "${S}"
	echo "Icon=root-system-bin" >> etc/root.desktop
	domenu etc/root.desktop
	doicon build/package/debian/root-system-bin.png

	insinto /usr/share/icons/hicolor/48x48/mimetypes
	doins build/package/debian/application-x-root.png

	insinto /usr/share/icons/hicolor/48x48/apps
	doicon build/package/debian/root-system-bin.xpm
}

cleanup_install() {
	# Cleanup of files either already distributed or unused on Gentoo
	pushd "${ED}" > /dev/null
	rm usr/share/root/fonts/LICENSE || die
	rm etc/root/proof/*.sample || die
	rm -r etc/root/daemons || die
	# these should be in PATH
	mv etc/root/proof/utils/pq2/pq2* usr/bin/ || die
	rm ${DOC_DIR#/}/INSTALL || die
	use examples || rm -r ${DOC_DIR#/}/examples || die

	# clean hardcoded sandbox paths
	#rm etc/root/dictpch/allCppflags.txt.tmp || die
	#sed -i "s|${S}/||" etc/root/cling/llvm/Config/llvm-config.h || die
	# regenerate pch for Gentoo headers layout
	#rm "etc/root/allDict.cxx.pch" || die
	#sed -i 's|etc/dictpch|etc/root/dictpch|' etc/root/dictpch/allLinkDefs.h || die
	#sed -i 's|etc/cling|etc/root/cling|' etc/root/dictpch/allHeaders.h || die
	#sed -i "s|ROOTDIR_TEMPLATE|${ED}|" etc/root/dictpch/makepch-gentoo.sh || die
	#etc/root/dictpch/makepch-gentoo.sh etc/root/allDict.cxx.pch || die "PCH generation failed"
}

src_install() {
	ROOTSYS="${S}" emake DESTDIR="${D}" install
	insinto "${DOC_DIR}"
	doins README.md

	echo "LDPATH=${EPREFIX%/}/usr/$(get_libdir)/root" > 99root
	use pythia8 && echo "PYTHIA8=${EPREFIX%/}/usr" >> 99root

	if use python; then
		echo "PYTHONPATH=${EPREFIX%/}/usr/$(get_libdir)/root" >> 99root
		python_optimize "${D}/usr/$(get_libdir)/root"
	fi
	use emacs && elisp-install ${PN} build/misc/*.{el,elc}
	doenvd 99root

	# The build system installs Emacs support unconditionally in the wrong
	# directory. Remove it and call elisp-install in case of USE=emacs.
	rm -r "${ED}"/usr/share/emacs || die

	daemon_install
	desktop_install
	cleanup_install

	# do not copress files used by ROOT's CLI (.credit, .demo, .license)
	docompress -x "${DOC_DIR}"/{CREDITS,examples/tutorials}
}

pkg_postinst() {
	fdo-mime_desktop_database_update

	# restort opencascade eselect slot
	if use geocad && [[ -n ${oc_current} ]]; then
		einfo "Switching to user set slot: $(eselect opencascade show) -> ${oc_current}"
		eselect opencascade set ${oc_current} > /dev/null || eerror "eselect opencascade set ${vlist[i]} failed!"
		unset oc_current
	fi
}

pkg_postrm() {
	fdo-mime_desktop_database_update
}
Ovviamente devi copiare anche la cartella files che si trova nel portage tree ufficiale., inoltre questa version compila con gcc5 o gcc6 senza bisogno di patch.
Questions are guaranteed in life; Answers aren't.

"Those who would give up essential liberty to purchase a little temporary safety,
deserve neither liberty nor safety."
- Ben Franklin
https://www.news.admin.ch/it/nsb?id=103968
Top
cloc3
Advocate
Advocate
User avatar
Posts: 4840
Joined: Tue Jan 13, 2004 10:09 am
Location: http://www.gentoo-users.org/user/cloc3/
Contact:
Contact cloc3
Website

  • Quote

Post by cloc3 » Wed Nov 22, 2017 1:36 pm

fedeliallalinea wrote:inoltre questa version compila con gcc5 o gcc6 senza bisogno di patch.
:?:

Code: Select all

 * 
 * GCC-5 is not yet supported in ROOT-6.
 * The code may build for you, but will have run-time failures.
 * See the following bugs:
 * https://sft.its.cern.ch/jira/browse/ROOT-7285
 * https://sft.its.cern.ch/jira/browse/ROOT-7319
 * https://sft.its.cern.ch/jira/browse/ROOT-7654
 * https://sft.its.cern.ch/jira/browse/ROOT-7721
 * https://sft.its.cern.ch/jira/browse/ROOT-7818
 * https://sft.its.cern.ch/jira/browse/ROOT-7895
 * https://bugs.gentoo.org/show_bug.cgi?id=564306
 * 
 * Please use GCC-4.9 for now.
 * 
 * ERROR: sci-physics/root-6.10.08-r1::localPortage failed (setup phase):
 *   gcc-5 is not yet supported
 * 
 * Call stack:
 *                ebuild.sh, line 115:  Called pkg_setup
 *   root-6.10.08-r1.ebuild, line 201:  Called check_compiler '11' '4.8' '3.4' '13'
 *   root-6.10.08-r1.ebuild, line 153:  Called die
 * The specific snippet of code:
 *               die "gcc-5 is not yet supported"
 * 
 * If you need support, post the output of `emerge --info '=sci-physics/root-6.10.08-r1::localPortage'`,
 * the complete build log and the output of `emerge -pqv '=sci-physics/root-6.10.08-r1::localPortage'`.
a me non risulta.
questo ebuild filtra all'origine la versione di gcc.
se si rimuovesse il filtro, la compilazione fallirebbe ugualmente, perché l'ebuild non seleziona l'opzione root7 e, di conseguenza, non supera i controlli originali del sorgente.

secondo me, ripartire dalla versione precedente è poco raccomandabile, perché la documentazione degli sviluppatori consiglia di usare cmake.
forse bisognerebbe provare un approccio intermedio, scrivendo un ebuild più articolato che permetta di lanciare un comando cmake simile a quello dell'ebuild precedente.
il guaio è che il tempo a disposizione è quello che è, e spesso le compilazioni falliscono al 92%...
il metodo sperimentale puro, di conseguenza, rischia davvero di risolversi in lacrime e sangue.
:)
vu vu vu
gentù
mi piaci tu
Top
fedeliallalinea
Administrator
Administrator
User avatar
Posts: 31984
Joined: Sat Mar 08, 2003 11:15 pm
Location: here
Contact:
Contact fedeliallalinea
Website

  • Quote

Post by fedeliallalinea » Wed Nov 22, 2017 2:02 pm

cloc3 wrote:a me non risulta.
questo ebuild filtra all'origine la versione di gcc.
se si rimuovesse il filtro, la compilazione fallirebbe ugualmente, perché l'ebuild non seleziona l'opzione root7 e, di conseguenza, non supera i controlli originali del sorgente.
Vero mi sono dimenticato che in env avevo abilitato clang per compilare questo pacchetto

Code: Select all

$ cat /etc/portage/env/compiler-clang 
CC="clang"
CXX="clang++"
$ cat /etc/portage/package.env
sci-physics/root compiler-clang
E in questo modo compila.
Scusa mi sono dimenticato che ho gia' affrontato il problema con questo pacchetto nel forum internazionale.

Ora sto vedendo di applicare la patch per farlo andare anche con gcc5
Questions are guaranteed in life; Answers aren't.

"Those who would give up essential liberty to purchase a little temporary safety,
deserve neither liberty nor safety."
- Ben Franklin
https://www.news.admin.ch/it/nsb?id=103968
Top
cloc3
Advocate
Advocate
User avatar
Posts: 4840
Joined: Tue Jan 13, 2004 10:09 am
Location: http://www.gentoo-users.org/user/cloc3/
Contact:
Contact cloc3
Website

  • Quote

Post by cloc3 » Wed Nov 22, 2017 6:27 pm

fedeliallalinea wrote: Ora sto vedendo di applicare la patch per farlo andare anche con gcc5
ne vale la pena?
tra qualche mese sarà stabilizzata la versione 7 di root, che sigla una cesura di retrocompatibilità con le versioni precedenti.

se un sistema è stato compilato con gcc5, il vecchio codice genera conflitti di ABI con le librerie di sistema che gli sviluppatori non hanno voluto deliberatamente coprire, ma che si possono evitare integralmente abilitando l'opzione root7.

secondo me, la cosa da fare, piuttosto, sarebbe allineare l'ebuild di gentoo alla documentazione ufficiale, che usa cmake, in modo da impostare un modello consistente e stabile nel tempo.
vu vu vu
gentù
mi piaci tu
Top
fedeliallalinea
Administrator
Administrator
User avatar
Posts: 31984
Joined: Sat Mar 08, 2003 11:15 pm
Location: here
Contact:
Contact fedeliallalinea
Website

  • Quote

Post by fedeliallalinea » Wed Nov 22, 2017 6:35 pm

Poi vedo che nel overlay sci esiste un ebuild per la versione live ma vedo che non usa ancora cmake.
Questions are guaranteed in life; Answers aren't.

"Those who would give up essential liberty to purchase a little temporary safety,
deserve neither liberty nor safety."
- Ben Franklin
https://www.news.admin.ch/it/nsb?id=103968
Top
cloc3
Advocate
Advocate
User avatar
Posts: 4840
Joined: Tue Jan 13, 2004 10:09 am
Location: http://www.gentoo-users.org/user/cloc3/
Contact:
Contact cloc3
Website

  • Quote

Post by cloc3 » Wed Nov 22, 2017 6:38 pm

fedeliallalinea wrote:Poi vedo che nel overlay sci esiste un ebuild per la versione live ma vedo che non usa ancora cmake.
e tantomeno root7 :roll: .

... :)

p.s.: quasi quasi decommento quella riga rm tutorials e vediamo come va.
vu vu vu
gentù
mi piaci tu
Top
cloc3
Advocate
Advocate
User avatar
Posts: 4840
Joined: Tue Jan 13, 2004 10:09 am
Location: http://www.gentoo-users.org/user/cloc3/
Contact:
Contact cloc3
Website

  • Quote

Post by cloc3 » Wed Nov 22, 2017 7:54 pm

cloc3 wrote: p.s.: quasi quasi decommento quella riga rm tutorials e vediamo come va.

Code: Select all

Scanning dependencies of target hsimple
[ 85%] Generating tutorials/hsimple.root
/bin/sh: riga 0: cd: /tmp/ramtmp/.lnv/portage/sci-physics/root-6.10.08-r1/work/root-6.10.08_build/tutorials: File o directory non esistente
make[2]: *** [CMakeFiles/hsimple.dir/build.make:67: tutorials/hsimple.root] Error 1
make[1]: *** [CMakeFiles/Makefile2:307: CMakeFiles/hsimple.dir/all] Error 2
make[1]: *** Attesa per i processi non terminati....
è deprimente.

possibile che tutto fallisca in quel modo per un tutorial di cui si potrebbe benissimo fare a meno?
vu vu vu
gentù
mi piaci tu
Top
fedeliallalinea
Administrator
Administrator
User avatar
Posts: 31984
Joined: Sat Mar 08, 2003 11:15 pm
Location: here
Contact:
Contact fedeliallalinea
Website

  • Quote

Post by fedeliallalinea » Wed Nov 22, 2017 8:20 pm

Allora prima di tutto io userei l'eclass cmake-utils.
Nel primo post hai detto che hai commentato la linea ma hai provato a commentare tutto questo pezzo in CMakeList.txt?

Code: Select all

#---hsimple.root---------(use the executable for clearer dependencies and proper return code)---
add_custom_target(hsimple ALL DEPENDS tutorials/hsimple.root)
add_dependencies(hsimple onepcm)
if(WIN32)
  add_custom_command(OUTPUT tutorials/hsimple.root
                     COMMAND set PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} &&
                             set ROOTIGNOREPREFIX=1 &&
                             $<TARGET_FILE:root.exe> -l -q -b -n -x hsimple.C -e return
                     WORKING_DIRECTORY tutorials
                     DEPENDS $<TARGET_FILE:root.exe> Cling Hist Tree Gpad Graf HistPainter move_artifacts)
else()
  add_custom_command(OUTPUT tutorials/hsimple.root
                     COMMAND ${ld_library_path}=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}:$ENV{${ld_library_path}}
                             ROOTIGNOREPREFIX=1
                             $<TARGET_FILE:root.exe> -l -q -b -n -x hsimple.C -e return
                     WORKING_DIRECTORY tutorials
                     DEPENDS $<TARGET_FILE:root.exe> Cling Hist Tree Gpad Graf HistPainter move_artifacts)
endif()
install(FILES ${CMAKE_BINARY_DIR}/tutorials/hsimple.root DESTINATION ${CMAKE_INSTALL_TUTDIR} COMPONENT tests)
Ma mi sembra un po' tirata come soluzione, non conosco il programma e, come gia' detto, cmake e' ancora un po' nebuloso per me.
Questions are guaranteed in life; Answers aren't.

"Those who would give up essential liberty to purchase a little temporary safety,
deserve neither liberty nor safety."
- Ben Franklin
https://www.news.admin.ch/it/nsb?id=103968
Top
cloc3
Advocate
Advocate
User avatar
Posts: 4840
Joined: Tue Jan 13, 2004 10:09 am
Location: http://www.gentoo-users.org/user/cloc3/
Contact:
Contact cloc3
Website

  • Quote

Post by cloc3 » Wed Nov 22, 2017 10:23 pm

benissimo.
con la patch che hai suggerito tu:

Code: Select all

diff -ruN root-6.10.08.orig/CMakeLists.txt root-6.10.08/CMakeLists.txt
--- root-6.10.08.orig/CMakeLists.txt    2017-10-16 18:28:58.000000000 +0200
+++ root-6.10.08/CMakeLists.txt 2017-11-22 22:15:58.753409708 +0100
@@ -302,8 +302,8 @@
 install(DIRECTORY ${CMAKE_BINARY_DIR}/etc/dictpch DESTINATION ${CMAKE_INSTALL_SYSCONFDIR})
 
 #---hsimple.root---------(use the executable for clearer dependencies and proper return code)---
-add_custom_target(hsimple ALL DEPENDS tutorials/hsimple.root)
-add_dependencies(hsimple onepcm)
+#add_custom_target(hsimple ALL DEPENDS tutorials/hsimple.root)
+#add_dependencies(hsimple onepcm)
 if(WIN32)
   add_custom_command(OUTPUT tutorials/hsimple.root
                      COMMAND set PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} &&
@@ -311,15 +311,15 @@
                              $<TARGET_FILE:root.exe> -l -q -b -n -x hsimple.C -e return
                      WORKING_DIRECTORY tutorials
                      DEPENDS $<TARGET_FILE:root.exe> Cling Hist Tree Gpad Graf HistPainter move_artifacts)
-else()
-  add_custom_command(OUTPUT tutorials/hsimple.root
-                     COMMAND ${ld_library_path}=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}:$ENV{${ld_library_path}}
-                             ROOTIGNOREPREFIX=1
-                             $<TARGET_FILE:root.exe> -l -q -b -n -x hsimple.C -e return
-                     WORKING_DIRECTORY tutorials
-                     DEPENDS $<TARGET_FILE:root.exe> Cling Hist Tree Gpad Graf HistPainter move_artifacts)
+#else()
+#  add_custom_command(OUTPUT tutorials/hsimple.root
+#                     COMMAND ${ld_library_path}=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}:$ENV{${ld_library_path}}
+#                             ROOTIGNOREPREFIX=1
+#                             $<TARGET_FILE:root.exe> -l -q -b -n -x hsimple.C -e return
+#                     WORKING_DIRECTORY tutorials
+#                     DEPENDS $<TARGET_FILE:root.exe> Cling Hist Tree Gpad Graf HistPainter move_artifacts)
 endif()
-install(FILES ${CMAKE_BINARY_DIR}/tutorials/hsimple.root DESTINATION ${CMAKE_INSTALL_TUTDIR} COMPONENT tests)
+#install(FILES ${CMAKE_BINARY_DIR}/tutorials/hsimple.root DESTINATION ${CMAKE_INSTALL_TUTDIR} COMPONENT tests)
 
 #---version--------------------------------------------------------------------------------------
 add_custom_target(version COMMAND ${CMAKE_SOURCE_DIR}/build/unix/makeversion.sh ${CMAKE_BINARY_DIR}
sono arrivato a questa versione che supera la fase di configure e di compile:

Code: Select all

# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=5
PYTHON_COMPAT=( python2_7 )

inherit cmake-utils

DESCRIPTION="C++ data analysis framework and interpreter from CERN"
HOMEPAGE="https://root.cern.ch"
SRC_URI="
https://root.cern.ch/download/root_v6.10.08.source.tar.gz
"

LICENSE="LGPL-2.1 freedist MSttfEULA LGPL-3 libpng UoI-NCSA"
KEYWORDS="amd64 ~x86 ~amd64-linux ~x86-linux"
IUSE="+root7 +cxx14"
SLOT="0/$(get_version_component_range 1-3 ${PV})"
# TODO: ...
CDEPEND=""
DEPEND="${CDEPEND}
        virtual/pkgconfig"

RDEPEND="${CDEPEND}
"

export CMAKE_BUILD_TYPE="Release"

src_prepare() {
        epatch "${FILESDIR}"/root-6.10.08-CMakeLists.txt.patch

        # In Gentoo, libPythia6 is called libpythia6
        # iodbc is in /usr/include/iodbc
        # pg_config.h is checked instead of libpq-fe.h
        sed -i \
                -e 's:libPythia6:libpythia6:g' \
                -e 's:$ODBCINCDIR:$ODBCINCDIR /usr/include/iodbc:' \
                -e 's:libpq-fe.h:pg_config.h:' \
                configure || die "adjusting configure for Gentoo failed"
}

src_configure() {
local mycmakeargs=(
                $(cmake-utils_use_with root7)
                $(cmake-utils_use_with cxx14)
        )
        cmake-utils_src_configure
}
purtroppo fallisce nell'install:

Code: Select all

...
-- Installing: /tmp/ramtmp/.lnv/portage/sci-physics/root-6.10.08-r1/image/usr/include/TMVA/BDT_Reg.h
-- Installing: /tmp/ramtmp/.lnv/portage/sci-physics/root-6.10.08-r1/image/usr/include/TMVA/BDTControlPlots.h
-- Installing: /tmp/ramtmp/.lnv/portage/sci-physics/root-6.10.08-r1/image/usr/include/TMVA/BDT.h
!!! dodoc: README is a directory
 * ERROR: sci-physics/root-6.10.08-r1::localPortage failed (install phase):
 *   dodoc failed
 *
adesso cercherò di rapinare qualche altro pezzo del vecchio ebuild.
vu vu vu
gentù
mi piaci tu
Top
fedeliallalinea
Administrator
Administrator
User avatar
Posts: 31984
Joined: Sat Mar 08, 2003 11:15 pm
Location: here
Contact:
Contact fedeliallalinea
Website

  • Quote

Post by fedeliallalinea » Thu Nov 23, 2017 7:12 am

Questo e' facilmente risolvibile o rimuovendo in src_prepare la cartella README o crendo una nuova src_install dove dopo avere fatto emake installi to la doc.
Praticamente succede perche' la src_install di default e' la seguente

Code: Select all

src_install() {
    if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]] ; then
        emake DESTDIR="${D}" install
    fi
    einstalldocs
}
e il tuo problema e' la funzione einstalldocs che se controlli ha il pezzo

Code: Select all

...
        if ! declare -p DOCS &>/dev/null ; then
                local d
                for d in README* ChangeLog AUTHORS NEWS TODO CHANGES \
                                THANKS BUGS FAQ CREDITS CHANGELOG ; do
                        if [[ -s ${d} ]] ; then
                                dodoc "${d}" || die
                        fi
                done
...
Il for cerca tutti i README e il tuo e' una cartella e quindi dodoc fallisce.

Un altro sistema e' anche dichiarare la variabile DOC all'inizio con tutti i file di doc che vuoi installare (vedi ad esempio dev-db/mysql-connector-c).
Questions are guaranteed in life; Answers aren't.

"Those who would give up essential liberty to purchase a little temporary safety,
deserve neither liberty nor safety."
- Ben Franklin
https://www.news.admin.ch/it/nsb?id=103968
Top
cloc3
Advocate
Advocate
User avatar
Posts: 4840
Joined: Tue Jan 13, 2004 10:09 am
Location: http://www.gentoo-users.org/user/cloc3/
Contact:
Contact cloc3
Website

  • Quote

Post by cloc3 » Thu Nov 23, 2017 9:20 am

fedeliallalinea wrote: Praticamente succede perche' la src_install di default e' la seguente

Code: Select all

src_install() {
    if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]] ; then
        emake DESTDIR="${D}" install
    fi
    einstalldocs
}
uffa. adesso ho girato l'ebuild in versione EAPI6 e ho preparato un src_install() un po' più intelligente.
mi sono anche accorto che il problema del ACCESS DENIED si può risolvere con l'istruzione addwrite /dev/random.
ma mi ha fatto questo:

Code: Select all


>>> Install root-6.10.08-r1 into /tmp/ramtmp/.lnv/portage/sci-physics/root-6.10.08-r1/image/ category sci-physics
make -j5 -s DESTDIR=/tmp/ramtmp/.lnv/portage/sci-physics/root-6.10.08-r1/image/ install 
Makefile:60: *** Please run ./configure first.  Arresto.
praticamente, lo sciocco si è dimenticato che ho impostato cmake-utils in inherit e ha cercato di installare il contenuto di work/root-6.10.08 e non quello di work/root-6.10.08_build.

forse dovrei aggiungere il comando cmake-utils_src_install.
ma mi viene un dubbio: devo aggiungere questo comando prima o dopo di aver eseguito l'installazione (quasi manuale) dei docs?
vu vu vu
gentù
mi piaci tu
Top
fedeliallalinea
Administrator
Administrator
User avatar
Posts: 31984
Joined: Sat Mar 08, 2003 11:15 pm
Location: here
Contact:
Contact fedeliallalinea
Website

  • Quote

Post by fedeliallalinea » Thu Nov 23, 2017 9:24 am

cloc3 wrote:forse dovrei aggiungere il comando cmake-utils_src_install.
ma mi viene un dubbio: devo aggiungere questo comando prima o dopo di aver eseguito l'installazione (quasi manuale) dei docs?
Di solito si mette prima
Questions are guaranteed in life; Answers aren't.

"Those who would give up essential liberty to purchase a little temporary safety,
deserve neither liberty nor safety."
- Ben Franklin
https://www.news.admin.ch/it/nsb?id=103968
Top
cloc3
Advocate
Advocate
User avatar
Posts: 4840
Joined: Tue Jan 13, 2004 10:09 am
Location: http://www.gentoo-users.org/user/cloc3/
Contact:
Contact cloc3
Website

  • Quote

Post by cloc3 » Mon Nov 27, 2017 8:18 am

sono arrivato a un ebuild che funzionicchia.
lo ho postato nel primo post in cima a questo thread.

l'ebuild rispetta le richieste che mi ero fissato:

- usa cmake, applicando (al meglio) la documentazione ufficiale;
- imposta di default la useflag root7 e la useflag cxx14;

inoltre, l'ebuild suggerisce un modo diverso di definire le useflag, evitando
l'uso estremo delle EXTRA_FLAGS suggerito dall'ebuild precedente.

io, infatti, ho costruito una variabile options che riporta esattamente
le flag contenute nel file configure del sorgente e quindi copre in modo
coerente e corretto le opzioni originarie.

per molti aspetti, tuttavia, mi restano dei dubbi.

- in certi punti ho emulato l'ebuild originario su aspetti che andrebbero
verificati e approfonditi meglio;
- sono riuscito a ottenere una compilazione completa, ma no ho potuto
verificare in modo esaustivo tutte le possibilità.

di conseguenza è ragionevole che il mio ebuild contenga dei bachi.
d'altra parte, sono sicuro che anche l'ebuild live contiene dei bachi (per
esempio, non compila con la useflag xinetd).

chissà, magari, se qualcuno ci dà un occhio, la cosa potrebbe tornare utile.
vu vu vu
gentù
mi piaci tu
Top
fedeliallalinea
Administrator
Administrator
User avatar
Posts: 31984
Joined: Sat Mar 08, 2003 11:15 pm
Location: here
Contact:
Contact fedeliallalinea
Website

  • Quote

Post by fedeliallalinea » Mon Nov 27, 2017 8:45 am

Come mai hai commentato l'ecalss cmake-utils?
Questions are guaranteed in life; Answers aren't.

"Those who would give up essential liberty to purchase a little temporary safety,
deserve neither liberty nor safety."
- Ben Franklin
https://www.news.admin.ch/it/nsb?id=103968
Top
cloc3
Advocate
Advocate
User avatar
Posts: 4840
Joined: Tue Jan 13, 2004 10:09 am
Location: http://www.gentoo-users.org/user/cloc3/
Contact:
Contact cloc3
Website

  • Quote

Post by cloc3 » Mon Nov 27, 2017 12:08 pm

fedeliallalinea wrote:Come mai hai commentato l'ecalss cmake-utils?
stai leggendo l'ebuild sbagliato.
quello era un lavoro iniziale.

in ogni caso, li è presente sia una riga con cmake-utils commentata (cioè un pasticcio), sia una riga cmake-utils non commentata (più sopra).

ho messo l'ebuild "vero" nel primissimo post del thread, in una finestra quote, in modo da lasciare sotto la discussione.
vu vu vu
gentù
mi piaci tu
Top
fedeliallalinea
Administrator
Administrator
User avatar
Posts: 31984
Joined: Sat Mar 08, 2003 11:15 pm
Location: here
Contact:
Contact fedeliallalinea
Website

  • Quote

Post by fedeliallalinea » Mon Nov 27, 2017 12:19 pm

cloc3 wrote:
fedeliallalinea wrote:Come mai hai commentato l'ecalss cmake-utils?
stai leggendo l'ebuild sbagliato.
Non l'ho visto perche' ha il tag quote. Potresti cambiarlo in code?
Questions are guaranteed in life; Answers aren't.

"Those who would give up essential liberty to purchase a little temporary safety,
deserve neither liberty nor safety."
- Ben Franklin
https://www.news.admin.ch/it/nsb?id=103968
Top
cloc3
Advocate
Advocate
User avatar
Posts: 4840
Joined: Tue Jan 13, 2004 10:09 am
Location: http://www.gentoo-users.org/user/cloc3/
Contact:
Contact cloc3
Website

  • Quote

Post by cloc3 » Mon Nov 27, 2017 2:11 pm

fedeliallalinea wrote:Potresti cambiarlo in code?
fatto.
ho anche eliminato due righe di debug che mi erano scappate.

grazie per l'attenzione.
vu vu vu
gentù
mi piaci tu
Top
cloc3
Advocate
Advocate
User avatar
Posts: 4840
Joined: Tue Jan 13, 2004 10:09 am
Location: http://www.gentoo-users.org/user/cloc3/
Contact:
Contact cloc3
Website

Re: ebuild per sci-physics/root

  • Quote

Post by cloc3 » Sun Dec 24, 2017 8:05 am

cloc3 wrote:era: ebuild per sci-physics/root :access denied
a quanto pare questo lungo thread è servito a qualcosa:
adesso è comparso un nuovo ebuild in github che tiene presente delle osservazioni fatte qui sotto.
se avete bisogno di compilare root non usate questi script ma cercate usate questo link:
ebuild per root.

---
il thread che segue ha portato a scrivere l'ebuild qui sotto, che comincia ad essere abbastanza funzionale e che cercherò di aggiornare successivamente.
si raccomanda di farne uso con cautela.

Code: Select all

# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6

PYTHON_COMPAT=( python2_7 )

inherit cmake-utils elisp-common eutils fdo-mime fortran-2 multilib python-single-r1 \
        toolchain-funcs user versionator


DESCRIPTION="C++ data analysis framework and interpreter from CERN"
HOMEPAGE="https://root.cern.ch"
SRC_URI="
https://root.cern.ch/download/${PN}_v${PV}.source.tar.gz
"

SLOT="0/$(get_version_component_range 1-3 ${PV})"
LICENSE="LGPL-2.1 freedist MSttfEULA LGPL-3 libpng UoI-NCSA"
KEYWORDS="amd64 ~x86 ~amd64-linux ~x86-linux"

# options extracted from configure
options="
   afdsmgrd           \
   afs                \
   alien              \
   alloc              \
   +asimage            \
   +astiff             \
   bonjour            \
   -builtin_afterimage \
   -builtin_ftgl       \
   -builtin_freetype   \
   -builtin_gl2ps      \
   -builtin_glew       \
   -builtin_pcre       \
   -builtin_unuran     \
   -builtin_zlib       \
   -builtin_lzma       \
   -builtin_lz4        \
   -builtin_llvm       \
   +cxx14              \
   cxx17              \
   cxxmodules         \
   libcxx             \
   castor             \
   chirp              \
   cocoa              \
   davix              \
   dcache             \
   +explicitlink       \
   fink               \
   +fftw3              \
   +fitsio             \
   gviz               \
   +gdml               \
   +genvector          \
   geocad             \
   gfal               \
   glite              \
   globus             \
   +gsl_shared         \
   hdfs               \
   http               \
   imt                \
   krb5               \
   ldap               \
   +mathmore           \
   +memstat            \
   +minuit2            \
   monalisa           \
   +mysql              \
   odbc               \
   +opengl             \
   oracle             \
   pgsql              \
   pythia6            \
   +pythia8            \
   +python             \
   +qt                 \
   +qtgsi              \
   +roofit             \
   +r                  \
   ruby               \
   rfio               \
   +rpath              \
   search_usrlocal    \
   sapdb              \
   +shadowpw           \
   +shared             \
   +soversion          \
   sqlite             \
   srp                \
   +ssl                \
   +table              \
   tbb                \
   +tmva               \
   +unuran             \
   vc                 \
   -werror             \
   winrtdebug         \
   +x11                \
   +xft                \
   +xml                \
   +xrootd             \
"
options="${options} all gminimal minimal +root7"
options+=" $EXTRA_ECONF"

IUSE="${options}"
IUSE="${IUSE} +X doc emacs examples fits
        graphviz kerberos +math mpi openmp oracle postgres prefix 
        R +tiff xinetd zeroconf"

# TODO: patches and useflags tuning and testing are needed

CDEPEND="${CDEPEND}
        app-arch/xz-utils:0=
        >=dev-lang/cfortran-4.4-r2
        dev-libs/libpcre:3=
        media-fonts/dejavu
        media-libs/freetype:2=
        media-libs/libpng:0=
        >=sys-devel/clang-3.4:=
        sys-libs/ncurses:=
        sys-libs/zlib:0=
        X? (
                media-libs/ftgl:0=
                media-libs/glew:0=
                x11-libs/libX11:0=
                x11-libs/libXext:0=
                x11-libs/libXpm:0=
                        || (
                        media-libs/libafterimage[gif,jpeg,png,tiff?]
                        >=x11-wm/afterstep-2.2.11[gif,jpeg,png,tiff?]
                )
                opengl? ( virtual/opengl virtual/glu x11-libs/gl2ps:0= )
                x11-libs/libXft:0=
        )
        afs? ( net-fs/openafs )
        emacs? ( virtual/emacs )
        fits? ( sci-libs/cfitsio:0= )
        fftw3? ( sci-libs/fftw:3.0= )
        geocad? ( <sci-libs/opencascade-6.8.0:= )
        graphviz? ( media-gfx/graphviz:0= )
        http? ( dev-libs/fcgi:0= )
        kerberos? ( virtual/krb5 )
        ldap? ( net-nds/openldap:0= )
        math? (
                sci-libs/gsl:0=
                sci-mathematics/unuran:0=
                mpi? ( virtual/mpi )
        )
        mysql? ( virtual/mysql )
        odbc? ( || ( dev-db/libiodbc dev-db/unixODBC ) )
        oracle? ( dev-db/oracle-instantclient-basic:0= )
        postgres? ( dev-db/postgresql:= )
        pythia6? ( sci-physics/pythia:6= )
        pythia8? ( >=sci-physics/pythia-8.1.80:8= )
        python? ( ${PYTHON_DEPS} )
        R? ( dev-lang/R )
        shadowpw? ( virtual/shadow )
        sqlite? ( dev-db/sqlite:3= )
        ssl? ( dev-libs/openssl:0= )
        xml? ( dev-libs/libxml2:2= )
        xrootd? ( >=net-libs/xrootd-3.3.5:0= )
        zeroconf? ( net-dns/avahi:0= )
"
DEPEND="
        virtual/pkgconfig
"
RDEPEND="${CDEPEND}
   xinetd? ( sys-apps/xinetd )"

PDEPEND="doc? ( ~app-doc/root-docs-${PV}[http=,math=] )"

# install stuff in ${P} and not ${PF} for easier tracking in root-docs
DOC_DIR="/usr/share/doc/${P}"

OC_UNSUPPORTED="6.8.0"

die_compiler() {
   eerror "You are using a $(tc-getCXX)-$5 without C++$1 capabilities"
   die "Need one of the following C++$1 capable compilers:\n"\
      "    >=sys-devel/gcc[cxx]-$2\n"\
      "    >=sys-devel/clang-$3\n"\
      "    >=dev-lang/icc-$4"
}

# check compiler to satisfy minimal versions
# $1 - std version
# $2 - g++
# $3 - clang++
# $4 - icc/icpc
check_compiler() {
   local cur ver
   case "$(tc-getCXX)" in
      *clang++*)
         ver="$(best_version sys-devel/clang | sed 's:sys-devel/clang-::')"
         cur="$3"
      ;;
      *g++*)
         ver="$(gcc-version)"
         cur="$2"
      ;;
      *icc*|*icpc*)
         ver="$(best_version dev-lang/icc | sed 's:dev-lang/icc-::')"
         eerror "ROOT-6 is known not to build with ICC."
         eerror "Please report any issues upstream."
         cur="$4"
      ;;
      *)
         ewarn "You are using an unsupported compiler."
         ewarn "Please report any issues upstream."
         return 0
      ;;
   esac
   version_is_at_least "${cur}" "${ver}" || die_compiler "$1" "$2" "$3" "$4" "${ver}"
}

pkg_setup() {
   fortran-2_pkg_setup
   use python && python-single-r1_pkg_setup
   echo
   elog "There are extra options on packages not yet in Gentoo:"
   elog "Afdsmgrd, AliEn, castor, Chirp, dCache, gfal, Globus, gLite,"
   elog "HDFS, Monalisa, MaxDB/SapDB, SRP."
   elog "You can use the env variable EXTRA_ECONF variable for this."
   elog "For example, for SRP, you would set: "
   elog "EXTRA_ECONF="--enable-srp --with-srp-libdir=${EROOT%/}/usr/$(get_libdir)""
   echo

   enewgroup rootd
   enewuser rootd -1 -1 /var/spool/rootd rootd

   if use math; then
      if use openmp; then
         if [[ "$(tc-getCXX)" == *g++* && "$(tc-getCXX)" != *clang++* ]] && ! tc-has-openmp; then
            ewarn "You are using a g++ without OpenMP capabilities"
            die "Need an OpenMP capable compiler"
         else
            export USE_OPENMP=1 USE_PARALLEL_MINUIT2=1
         fi
      elif use mpi; then
         export USE_MPI=1 USE_PARALLEL_MINUIT2=1
      fi
   fi

   # c++11 support is mandatory
   check_compiler "11" "4.8" "3.4" "13"

   # Active version of opencascade may be >= $OC_UNSUPPORTED,
   # so we need to eselect proper version (it must exist due to DEPEND requirement)
   if use geocad; then
      oc_current=$(eselect opencascade show)
      # Proceed only if active version is unsupported
      if version_is_at_least "${OC_UNSUPPORTED}" "${oc_current}"; then
         local -a vlist
         vlist=( $(version_sort $(eselect opencascade list | awk '/^ / { print $2 }')) )
         local i
         # search for higehr version < $OC_UNSUPPORTED
         # list is sorted acsending, so loop backwards
         for (( i=$(( ${#vlist[@]} -1 )); i>=0; i-- )); do
            version_is_at_least "${OC_UNSUPPORTED}" "${vlist[i]}" || break
         done
         [[ $i == "-1" ]] && die "No suitable opencascade eselect slot is available (<${OC_UNSUPPORTED})"

         einfo "Switching opencascade to supported slot: ${oc_current} -> ${vlist[i]}"
         eselect opencascade set ${vlist[i]} > /dev/null || die "eselect opencascade set ${vlist[i]} failed!"
      else
         # forget it, effectively disabling eselect cleanup
         unset oc_current
      fi
   fi
}

PATCHES=(
    "${FILESDIR}/${PN}-5.32.00-afs.patch" \
        "${FILESDIR}/${PN}-5.32.00-cfitsio.patch" \
        "${FILESDIR}/${PN}-5.28.00b-glibc212.patch" \
        "${FILESDIR}/${PN}-5.32.00-chklib64.patch" \
        "${FILESDIR}/${PN}-6.00.01-dotfont.patch" \
        "${FILESDIR}/${PN}-6.04.06-prop-flags.patch" \
)

PROPERTIES="interactive"

export CMAKE_BUILD_TYPE="Release"

src_prepare() {

        # make sure we use system libs and headers
        rm montecarlo/eg/inc/cfortran.h README/cfortran.doc || die
        LANG=C LC_ALL=C find core/zip -type f -name "[a-z]*" -print0 | \
                xargs -0 rm || die
        rm -r core/lzma/src/*.tar.gz || die
        sed -i -e 's/^GLLIBS *:= .* $(OPENGLLIB)/& -lgl2ps/' \
                graf3d/gl/Module.mk || die

        # In Gentoo, libPythia6 is called libpythia6
        # iodbc is in /usr/include/iodbc
        # pg_config.h is checked instead of libpq-fe.h
        sed -i \
                -e 's:libPythia6:libpythia6:g' \
                -e 's:$ODBCINCDIR:$ODBCINCDIR /usr/include/iodbc:' \
                -e 's:libpq-fe.h:pg_config.h:' \
                configure || die "adjusting configure for Gentoo failed"
        default
}

src_configure() {
local mycmakeargs=(
                                -DWITH_root7=ON \
                                -DWITH_cxx14=ON \
                                -DWITH_builtin_afterimage=OFF \
                                -DWITH_builtin_ftgl=OFF \
                                -DWITH_builtin_freetype=OFF \
                                -DWITH_builtin_glew=OFF \
                                -DWITH_builtin_lzma=OFF \
                                -DWITH_builtin_pcre=OFF \
                                -DWITH_builtin_zlib=OFF \
                                -DWITH_explicitlink=ON \
                                -DWITH_soversion=ON \
                                -DWITH_fail-on-missing=ON \

)
for i in ${options}; do {
        i=${i/-/}
        i=${i/+/}
        if use ${i}; then {
                echo ON $i
                mycmakeargs+="-DWITH_${i}=ON "
        }
        else {
                echo OFF $i
                mycmakeargs+="-DWITH_${i}=OFF "
        }
        fi
} done

        CMAKE_C_FLAGS="${CFLAGS}"
        CMAKE_CXX_FLAGS="${CXXFLAGS}"
        CMAKE_CXX_LINK_FLAGS=${LDFLAGS}
        CMAKE_Fortran_FLAGS="${FFLAGS}"
        CMAKE_INSTALL_TUTDIR="${EPREFIX%/}/${DOC_DIR}/examples/tutorials"
        CMAKE_INSTALL_TESTDIR="${EPREFIX%/}/${DOC_DIR}/examples/tests"
        CMAKE_INSTALL_ICONDIR="${EPREFIX%/}/usr/share/pixmaps"
        addwrite /dev/random
        cmake-utils_src_configure
}

daemon_install() {
   local daemons="rootd proofd"
   dodir /var/spool/rootd
   fowners rootd:rootd /var/spool/rootd
   dodir /var/spool/rootd/{pub,tmp}
   fperms 1777 /var/spool/rootd/{pub,tmp}

   local i
   for i in ${daemons}; do
      newinitd "${FILESDIR}"/${i}.initd ${i}
      newconfd "${FILESDIR}"/${i}.confd ${i}
   done
   if use xinetd; then
      insinto /etc/xinetd
          sed   -e 's|@bindir@|/usr/bin/|' \
                        -e 's|@prefix@|/usr|' \
          < ./config/rootd.xinetd.in > ${S}"/etc/daemons/rootd.xinetd"
          sed   -e 's|@bindir@|/usr/bin/|' \
                        -e 's|@prefix@|/usr|' \
          < ./config/proofd.xinetd.in > ${S}"/etc/daemons/proofd.xinetd"
      doins "${S}"/etc/daemons/{rootd,proofd}.xinetd
   fi
}

desktop_install() {
   cd "${S}"
   echo "Icon=root-system-bin" >> etc/root.desktop
   domenu etc/root.desktop
   doicon build/package/debian/root-system-bin.png

   insinto /usr/share/icons/hicolor/48x48/mimetypes
   doins build/package/debian/application-x-root.png

   insinto /usr/share/icons/hicolor/48x48/apps
   doicon build/package/debian/root-system-bin.xpm
}

cleanup_install() {
        rm "${D}"/usr/LICENSE
        rm "${D}"/usr/lib64/libGLEW.so
        rm "${D}"/usr/include/GL/glew.h
        rm "${D}"/usr/include/GL/glxew.h
}

src_install() {
        DOCS=($(find README/* -maxdepth 1 -type f))
        insinto "${DOC_DIR}"
        doins README.md

#       /bin/bash -i
        cmake-utils_src_install

        daemon_install
        desktop_install
        cleanup_install

        docompress -x "${DOC_DIR}"/{CREDITS,LICENSE,examples/tutorials}
        dosym "${ED}"usr/portage/licenses/LGPL-2.1 "${DOC_DIR}/LICENSE"
}
sto cercando di produrre un ebuild per sci-physics/root visto che quello attuale è obsoleto.

in linea di principio, non dovrebbe essere una impresa impossibile, perché il software è ottimamente documentato.
in effetti, le istruzioni sono più che sufficienti per concludere felicemente la compilazione manuale in una cartella dedicata, a patto di introdurre le opzioni -Droot7=ON -Dcxx14=ON, necessarie per una installazione con gcc-5 o superiore.

appena provo a lanciare la compilazione in un ebuild, tuttavia, ottengo questo stupido errore:

Code: Select all

Scanning dependencies of target hsimple
[ 89%] Generating tutorials/hsimple.root

Processing hsimple.C...
 * ACCESS DENIED:  open_wr:      /dev/random
open('/dev/random'): Permission denied

...

VERSION 1.0
FORMAT: F - Function called
FORMAT: S - Access Status
FORMAT: P - Path as passed to function
FORMAT: A - Absolute Path (not canonical)
FORMAT: R - Canonical Path
FORMAT: C - Command Line

F: open_wr
S: deny
P: /dev/random
A: /dev/random
R: /dev/random
C: /tmp/ramtmp/.lnv/portage/sci-physics/root-6.10.08/work/root-6.10.08_build/bin/root.exe -l -q -b -n -x hsimple.C -e return 
 * --------------------------------------------------------------------------------
è colpa di uno stupido demo (hsimple.C) che probabilmente non dovrebbe neppure essere lanciato, ma che non riesco a eliminare.
se commento la riga che lo lancia (con una patch), infatti, nascono altri errori.

che cosa si può fare, in questi casi?

aggiungo anche l'ebuild, del tutto maccheronico, che sto usando.
il fatto che sia maccheronico, tuttavia, non è probabilmente una concausa del problema che sto descrivendo.

Code: Select all

# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=5

PYTHON_COMPAT=( python2_7 )

inherit epatch cmake-utils

#elisp-common eutils fdo-mime fortran-2 multilib python-single-r1 \
#       toolchain-funcs user versionator

DESCRIPTION="C++ data analysis framework and interpreter from CERN"
HOMEPAGE="https://root.cern.ch"
SRC_URI="
https://root.cern.ch/download/root_v6.10.08.source.tar.gz
"
LICENSE="LGPL-2.1 freedist MSttfEULA LGPL-3 libpng UoI-NCSA"
KEYWORDS="amd64 ~x86 ~amd64-linux ~x86-linux"
IUSE=""

SLOT="0/$(get_version_component_range 1-3 ${PV})"
# TODO: ...

CDEPEND=""
DEPEND="${CDEPEND}
        virtual/pkgconfig"

RDEPEND="${CDEPEND}
"

#inherit eutils cmake-utils

export CMAKE_BUILD_TYPE="Release"

pkg_setup() {
        fortran-2_pkg_setup
}

src_prepare() {
        #epatch "${FILESDIR}"/root-6.10.08_exe.patch

        # In Gentoo, libPythia6 is called libpythia6
        # iodbc is in /usr/include/iodbc
        # pg_config.h is checked instead of libpq-fe.h
        sed -i \
                -e 's:libPythia6:libpythia6:g' \
                -e 's:$ODBCINCDIR:$ODBCINCDIR /usr/include/iodbc:' \
                -e 's:libpq-fe.h:pg_config.h:' \
                #configure || die "adjusting configure for Gentoo failed"
        #rm tutorials -rf || die
}

src_configure() {
        mkdir ../root-6.10.08_build
        cd ../root-6.10.08_build
        cmake -Droot7=ON -Dcxx14=ON ../root-6.10.08
}
vu vu vu
gentù
mi piaci tu
Top
cloc3
Advocate
Advocate
User avatar
Posts: 4840
Joined: Tue Jan 13, 2004 10:09 am
Location: http://www.gentoo-users.org/user/cloc3/
Contact:
Contact cloc3
Website

  • Quote

Post by cloc3 » Sun Dec 24, 2017 8:08 am

meraviglioso :).

è comparso in github e in portage un ebuild che implementa le osservazioni contenute in questo thread in un modo molto migliore di quello che saprei fare io.

il nuovo ebuild usa le cmake-utils e introduce un modo di includere le useflag simile a quello che proponevo io.
c'è anche root7.
vu vu vu
gentù
mi piaci tu
Top
Post Reply
  • Print view

20 posts • Page 1 of 1

Return to “Forum di discussione italiano”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy