Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
ebuild per sci-physics/root :access denied
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano
View previous topic :: View next topic  
Author Message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4644
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Wed Nov 22, 2017 3:20 am    Post subject: ebuild per sci-physics/root :access denied Reply with quote

era: ebuild per sci-physics/root :access denied
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:

# 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:

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:

# 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


Last edited by cloc3 on Mon Nov 27, 2017 2:09 pm; edited 3 times in total
Back to top
View user's profile Send private message
fedeliallalinea
Bodhisattva
Bodhisattva


Joined: 08 Mar 2003
Posts: 16928
Location: here

PostPosted: Wed Nov 22, 2017 8:43 am    Post subject: Reply with quote

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)
root-6.10.08.ebuild:
# 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.
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4644
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Wed Nov 22, 2017 1:36 pm    Post subject: Reply with quote

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

:?:
Code:

 *
 * 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
Back to top
View user's profile Send private message
fedeliallalinea
Bodhisattva
Bodhisattva


Joined: 08 Mar 2003
Posts: 16928
Location: here

PostPosted: Wed Nov 22, 2017 2:02 pm    Post subject: Reply with quote

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:
$ 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.
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4644
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Wed Nov 22, 2017 6:27 pm    Post subject: Reply with quote

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
Back to top
View user's profile Send private message
fedeliallalinea
Bodhisattva
Bodhisattva


Joined: 08 Mar 2003
Posts: 16928
Location: here

PostPosted: Wed Nov 22, 2017 6:35 pm    Post subject: Reply with quote

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.
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4644
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Wed Nov 22, 2017 6:38 pm    Post subject: Reply with quote

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
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4644
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Wed Nov 22, 2017 7:54 pm    Post subject: Reply with quote

cloc3 wrote:

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

Code:

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
Back to top
View user's profile Send private message
fedeliallalinea
Bodhisattva
Bodhisattva


Joined: 08 Mar 2003
Posts: 16928
Location: here

PostPosted: Wed Nov 22, 2017 8:20 pm    Post subject: Reply with quote

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:
#---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.
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4644
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Wed Nov 22, 2017 10:23 pm    Post subject: Reply with quote

benissimo.
con la patch che hai suggerito tu:
Code:

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:

# 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:

...
-- 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
Back to top
View user's profile Send private message
fedeliallalinea
Bodhisattva
Bodhisattva


Joined: 08 Mar 2003
Posts: 16928
Location: here

PostPosted: Thu Nov 23, 2017 7:12 am    Post subject: Reply with quote

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:
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:

...
        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.
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4644
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Thu Nov 23, 2017 9:20 am    Post subject: Reply with quote

[quote="fedeliallalinea"]
Praticamente succede perche' la src_install di default e' la seguente
Code:
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:


>>> 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
Back to top
View user's profile Send private message
fedeliallalinea
Bodhisattva
Bodhisattva


Joined: 08 Mar 2003
Posts: 16928
Location: here

PostPosted: Thu Nov 23, 2017 9:24 am    Post subject: Reply with quote

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.
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4644
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Mon Nov 27, 2017 8:18 am    Post subject: Reply with quote

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
Back to top
View user's profile Send private message
fedeliallalinea
Bodhisattva
Bodhisattva


Joined: 08 Mar 2003
Posts: 16928
Location: here

PostPosted: Mon Nov 27, 2017 8:45 am    Post subject: Reply with quote

Come mai hai commentato l'ecalss cmake-utils?
_________________
Questions are guaranteed in life; Answers aren't.
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4644
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Mon Nov 27, 2017 12:08 pm    Post subject: Reply with quote

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
Back to top
View user's profile Send private message
fedeliallalinea
Bodhisattva
Bodhisattva


Joined: 08 Mar 2003
Posts: 16928
Location: here

PostPosted: Mon Nov 27, 2017 12:19 pm    Post subject: Reply with quote

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.
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4644
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Mon Nov 27, 2017 2:11 pm    Post subject: Reply with quote

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
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum