Problema creazione tgz R

Postate qui se avete consigli per migliorare i pacchetti disponibili in questo sito o se avete problemi con installazione, funzionamento o altro.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il nome del pacchetto.
2) Specificare se discussione/suggerimento o richiesta d'aiuto.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
giberg
Linux 4.x
Linux 4.x
Messaggi: 1282
Iscritto il: mer 21 set 2005, 17:28
Nome Cognome: Gianni
Slackware: current64
Kernel: 3.7.1
Desktop: 4.8.5
Località: S. Biagio di Callalta (TV)

Problema creazione tgz R

Messaggio da giberg »

Ciao

Sto cercando di crearmi un pacchetto precompilato di R-2.4.0 tramite SlackBuild.
Una volta installato il pacchetto e lanciato il programma mi restituisce un errore che mi fa capire che c'è un qualche path sballato che non ho dato correttamente allo SlackBuild o qualcosa che non quadra nel ./configure.

L'errore si verifica lanciando R:

Codice: Seleziona tutto

/usr/bin/R: line 164: /tmp/package-R/usr/lib/R/etc/ldpaths: No such file or directory
Come si vede, cerca ldpaths all'interno della directory temporanea di lavoro e non nel posto previsto una volta installato il software nel sistema.

Per avere un'idea delle opzioni passabili al configure (e quelle predefinite):

Codice: Seleziona tutto

./configure --help
`configure' configures R 2.4.0 to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print `checking...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for `--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or `..']

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc.  You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR           user executables [EPREFIX/bin]
  --sbindir=DIR          system admin executables [EPREFIX/sbin]
  --libexecdir=DIR       program executables [EPREFIX/libexec]
  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
  --libdir=DIR           object code libraries [EPREFIX/lib]
  --includedir=DIR       C header files [PREFIX/include]
  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
  --infodir=DIR          info documentation [PREFIX/info]
  --mandir=DIR           man documentation [PREFIX/man]

R installation directories:
  --libdir=DIR        R files to R_HOME=DIR/R [EPREFIX/$LIBnn]
    rdocdir=DIR       R doc files to DIR      [R_HOME/doc]
    rincludedir=DIR   R include files to DIR  [R_HOME/include]
    rsharedir=DIR     R share files to DIR    [R_HOME/share]

X features:
  --x-includes=DIR    X include files are in DIR
  --x-libraries=DIR   X library files are in DIR

System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]

Optional Features:
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --enable-R-profiling    attempt to compile support for Rprof() [yes]
  --enable-memory-profiling
                          attempt to compile support for Rmemprof(),
                          tracemem() [yes]
  --enable-R-framework[=DIR]
                          MacOS X only: build R framework (if possible), and
                          specify its installation prefix [yes,
                          /Library/Frameworks]
  --enable-R-shlib        build the shared/dynamic library 'libR' [no]
  --enable-BLAS-shlib     build BLAS into a shared library [perhaps]
  --enable-maintainer-mode
                          enable make rules and dependencies not useful (and
                          maybe confusing) to the casual installer [no]
  --enable-strict-barrier provoke compile error on write barrier violation
                          [no]
  --enable-mbcs           enable support for UTF-8 and other MBCS locales
                          [yes]
  --enable-static[=PKGS]
                          libtool: build static libraries [default=no]
  --enable-shared[=PKGS]
                          libtool: build shared libraries [default=yes]
  --enable-fast-install[=PKGS]
                          libtool: optimize for fast installation
                          [default=yes]
  --disable-libtool-lock  avoid locking (might break parallel builds)
  --disable-largefile     omit support for large files
  --disable-nls           do not use Native Language Support
  --disable-rpath         do not hardcode runtime library paths

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-blas             use BLAS library, or specify it [no]
  --with-lapack           use LAPACK library, or specify it [no]
  --with-readline         use readline library (if available) [yes]
  --with-aqua             MacOS X only: use Aqua (if available) [yes]
  --with-tcltk            use Tcl/Tk, or specify its library dir [yes]
  --with-tcl-config=TCL_CONFIG
                          specify location of tclConfig.sh []
  --with-tk-config=TK_CONFIG
                          specify location of tkConfig.sh []
  --with-libpng           use libpng library (if available) [yes]
  --with-jpeglib          use jpeglib library (if available) [yes]
  --with-system-zlib      use system zlib library (if available) [no]
  --with-system-bzlib     use system bzlib library (if available) [no]
  --with-system-pcre      use system PCRE library (if available) [no]
  --with-valgrind-instrumentation
                          Level of additional instrumentation for Valgrind
                          (0/1/2) [0]
  --with-recommended-packages
                          use/install recommended R packages (if available)
                          [yes]
  --with-gnu-ld           libtool: assume the C compiler uses GNU ld
                          [default=no]
  --with-pic              libtool: try to use only PIC/non-PIC objects
                          [default=use both]
  --with-tags[=TAGS]
                          libtool: include additional configurations
                          [automatic]
  --with-x                use the X Window System
  --with-gnu-ld           assume the C compiler uses GNU ld default=no
  --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
  --without-libiconv-prefix     don't search for libiconv in includedir and libdir
  --with-included-gettext use the GNU gettext library included here
  --with-libintl-prefix[=DIR]  search for libintl in DIR/include and DIR/lib
  --without-libintl-prefix     don't search for libintl in includedir and libdir

Some influential environment variables:
  R_PRINTCMD  command used to spool PostScript files to the printer
  R_PAPERSIZE paper size for the local (PostScript) printer
  R_BATCHSAVE set default behavior of R when ending a session
  MAIN_CFLAGS additional CFLAGS used when compiling the main binary
  SHLIB_CFLAGS
              additional CFLAGS used when building shared libraries
  MAIN_FFLAGS additional FFLAGS used when compiling the main binary
  SHLIB_FFLAGS
              additional FFLAGS used when building shared libraries
  MAIN_LD     command used to link the main binary
  MAIN_LDFLAGS
              flags which are necessary for loading a main program which will
              load shared library modules (DLLs) at runtime
  CPICFLAGS   special flags for compiling C code to be turned into a shared
              library.
  FPICFLAGS   special flags for compiling Fortran code to be turned into a
              shared library.
  FCPICFLAGS  special flags for compiling Fortran 95 code to be turned into a
              shared library.
  SHLIB_LD    command for linking shared libraries which contain object files
              from a C or Fortran compiler only
  SHLIB_LDFLAGS
              special flags used by SHLIB_LD
  DYLIB_LD    command for linking dynamic libraries which contain object files
              from a C or Fortran compiler only
  DYLIB_LDFLAGS
              special flags used for make a dynamic library
  CXXPICFLAGS special flags for compiling C++ code to be turned into a shared
              library
  SHLIB_CXXLD command for linking shared libraries which contain object files
              from a C++ compiler
  SHLIB_CXXLDFLAGS
              special flags used by SHLIB_CXXLD
  SHLIB_FCD   command for linking shared libraries which contain object files
              from the Fortran 95 compiler
  SHLIB_FCLDFLAGS
              special flags used by SHLIB_FCLD
  TCLTK_LIBS  flags needed for linking against the Tcl and Tk libraries
  TCLTK_CPPFLAGS
              flags needed for finding the tcl.h and tk.h headers
  MAKE        Make command
  R_BROWSER   default browser
  BLAS_LIBS   flags needed for linking against external BLAS libraries
  LAPACK_LIBS flags needed for linking against external LAPACK libraries
  LIBnn       'lib' or 'lib64' for dynamic libraries
  SAFE_FFLAGS Safe Fortran 77 compiler flags for e.g. dlamc.f
  r_arch      Use architecture-dependent subdirs with this name
  DEFS        C defines for use when compiling R
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
              headers in a nonstandard directory <include dir>
  CPP         C preprocessor
  F77         Fortran 77 compiler command
  FFLAGS      Fortran 77 compiler flags
  CXX         C++ compiler command
  CXXFLAGS    C++ compiler flags
  CXXCPP      C++ preprocessor
  FC          Fortran compiler command
  FCFLAGS     Fortran compiler flags

Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
Lo SlackBuild è questo:

Codice: Seleziona tutto

#!/bin/sh
CWD=`pwd`
if [ "$TMP" = "" ]; then
  TMP=/tmp
fi
PKG=$TMP/package-R
NAME=R
VERSION=2.4.0
ARCH=i486
BUILD=2gb
if [ ! -d $TMP ]; then
  mkdir -p $TMP
fi
if [ ! -d $PKG ]; then
  mkdir -p $PKG
fi
echo "+===================================+"
echo "|  Start Slackbuild $NAME-$VERSION  |"
echo "+===================================+"
cd $TMP
tar zxvf $CWD/$NAME-$VERSION.tar.gz
cd $NAME-$VERSION
chown -R root:root .
find . -perm 777 -exec chmod 755 {} \;

CFLAGS="-O2 -march=i486 -mtune=i686" ./configure --prefix=/usr \
 --sysconfdir=/etc \
 --localstatedir=/var

make
make info
make prefix=$PKG/usr install
make check
make install prefix=$TMP/usr
make install-info
mkdir -p $PKG/usr/doc/$NAME-$VERSION
cp -a \
  COPYING ChangeLog INSTALL NEWS ONEWS OONEWS README SVN-REVISION VERSION \
  $PKG/usr/doc/$NAME-$VERSION
( cd $PKG
  find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . -type f -name "*.a" | xargs file | grep archive | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)
gzip -9 $PKG/usr/man/*/*
gzip -9 $PKG/usr/info/*
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

cd $PKG
makepkg -l y -c n $TMP/$NAME-$VERSION-$ARCH-$BUILD.tgz
if [ "$1" = "--cleanup" ]; then
  rm -rf \$TMP/\$NAME-\$VERSION
  rm -rf \$PKG
fi
Di cosa potrei essermi dimenticato?

Avatar utente
dapuzz
Linux 4.x
Linux 4.x
Messaggi: 1137
Iscritto il: mar 16 mag 2006, 11:09
Contatta:

Messaggio da dapuzz »

quando dai il comando make prefix=$PKG/usr install stai di fatto dicendogli che il programma sarà installato in $PKG/usr quindi è lì che il programma andrà a cercare i suoi file.
Lascia stare il prefix in fase di compilazione, anzi, mettilo vuoto così 'dovrebbe' installare in /urs e non in /usr/local (ma controlla prima, non vorrei farti spargere file dappertutto) e dai il parametro DESTDIR in fase di installazione.

Edit: scusa, non avevo letto bene, adesso ho chiara la situazione e mi sembra che ci sono troppi make

Codice: Seleziona tutto

./configure --prefix=/usr \ 
 --sysconfdir=/etc \ 
 --localstatedir=/var 
make 
make info 
make check 
make DESTDIR=$PKG install 
make DESTDIR=$PKG/doc install-info
o qualcosa del genere... in più la directory usr in $PKG te la crea da solo.

Avatar utente
giberg
Linux 4.x
Linux 4.x
Messaggi: 1282
Iscritto il: mer 21 set 2005, 17:28
Nome Cognome: Gianni
Slackware: current64
Kernel: 3.7.1
Desktop: 4.8.5
Località: S. Biagio di Callalta (TV)

Messaggio da giberg »

Lascia stare il prefix in fase di compilazione, anzi, mettilo vuoto così 'dovrebbe' installare in /urs e non in /usr/local (ma controlla prima, non vorrei farti spargere file dappertutto) e dai il parametro DESTDIR in fase di installazione.
Allora... /usr l'ho messo come indicato dalle guide presenti su Slacky.it per rispettare lo standard di Slackware. Se metto DESTDIR è sufficiente mettere DESTDIR=$PKG (quindi si indica un path con una directory "in meno" con il risultato comunque di finire in /tmp/package-R) da come ho capito.

Purtroppo il DESTDIR non funziona (avevo già provato con la versione precedente e senza lo SlackBuild). Infatti, dal manuale di amministrazione si legge:
make install

This will install to the following directories:

prefix/bin or bindir
the front-end shell script
prefix/man/man1 or mandir/man1
the man page
prefix/LIBnn/R or libdir/R
all the rest (libraries, on-line help system, ...). Here LIBnn is usually `lib', but may be `lib64' on some 64-bit Linux systems.

where prefix is determined during configuration (typically /usr/local) and can be set by running configure with the option --prefix, as in

./configure --prefix=/where/you/want/R/to/go

This causes make install to install the R executable to /where/you/want/R/to/go/bin, and so on. The prefix of the installation directories can be seen in the status message that is displayed at the end of configure. You can install into another directory tree by using

make prefix=/path/to/here install

at least with GNU make.
scusa, non avevo letto bene, adesso ho chiara la situazione e mi sembra che ci sono troppi make
Il make info crea il manuale info (in realtà potrei farne anche a meno visto che c'è già il man). E ho rinunciato a metterci pure il make per fare i manuali e pdf e dvi. Eventualmente proverò a fare un pacchetto solo per quelli. Il percorso dei manuali info va bene quello indicato dal configure.
Il make check esegue dei test per verificare il funzionamento corretto delle varie funzioni presenti nel software.

In definitiva DESTDIR non va bene (strano perché il prefix è deprecato. Vabbè ci penseranno gli sviluppatori). Per il resto non ho idea di dove sia l'intoppo. Forse le opzioni del configure sballano qualcosa...

Avatar utente
giberg
Linux 4.x
Linux 4.x
Messaggi: 1282
Iscritto il: mer 21 set 2005, 17:28
Nome Cognome: Gianni
Slackware: current64
Kernel: 3.7.1
Desktop: 4.8.5
Località: S. Biagio di Callalta (TV)

Messaggio da giberg »

Il percorso dei manuali info va bene quello indicato dal configure
Mi correggo... Giustamente devo dare un percorso anche al make install-info per forzare l'installazione nella directory /tmp/package-R (grazie che me lo hai fatto notare). Quindi diventerà make prefix=$PKG/ecc.ecc. install-info. Comunque il problema principale è l'altro.

Avatar utente
gohanz
Staff
Staff
Messaggi: 5832
Iscritto il: mar 30 nov 2004, 0:00

Messaggio da gohanz »

Ti conviene fare la compilazione non in /tmp ma direttamente nella directory /usr

CWD=`pwd`
if ["$TMP" = ""]; then
TMP=/usr/
fi

In questo modo dovrebbe creare i link simbolici non partendo da /tmp ma da /usr

Avatar utente
venerdi_12
Packager
Packager
Messaggi: 258
Iscritto il: sab 9 lug 2005, 0:00
Nome Cognome: Luciano Fattore
Kernel: 3.0
Desktop: kde-4.7.0
Distribuzione: archlinux
Località: Lusciano (Ce)

Messaggio da venerdi_12 »

R dovrebbe essere già pacchettizzato, ma non lo vedo ne repository probabilmente a causa dell'esordio della 11.0.
In ogni caso questo è il mio slackbuild (quello che genera il pacchetto che dovrebbe essere su Slacky.it

Codice: Seleziona tutto

#!/bin/sh
# Heavily based on the Slackware 10.2 SlackBuild and on crux port of R
# http://clc.morpheus.net/portdb/?command=viewfile&repo=yhafri&port=r&file=Pkgfile
# Requirements: readline, tcl, tk, zlib, libpng, libjpeg, libpcre, blas, lapack
# http://www.r-project.org/

NAME=R
VERSION=2.2.1
ARCH=${ARCH:-i486}
BUILD=1lu
SOURCE=http://cdn.mirror.garr.it/mirrors/CRAN/src/base/R-2/R-2.2.1.tar.gz
CWD=`pwd`

#wget -c $SOURCE

if ["$TMP" = ""]; then
 TMP=/tmp
fi

PKG=$TMP/package-$NAME

if [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2"
fi

if [ ! -d $TMP ]; then
 mkdir -p $TMP
fi
if [ ! -d $PKG ]; then
 mkdir -p $PKG
fi

mkdir -p $PKG/usr

cd $TMP

tar xzvf $CWD/$NAME-$VERSION.tar.gz

cd $NAME-$VERSION

chown -R root.root .

CFLAGS="$SLKCFLAGS" \
./configure --prefix=/usr \
	--enable-R-shlib \
	--enable-shared \
	--with-libpng \
	--with-jpeglib \
	--with-readline \
	--with-tcltk \
	--with-zlib \
	--with-blas \
	--with-lapack \
	--with-x

make

make prefix=$PKG/usr install

sed -i -e "s/R_HOME_DIR=.*$/R_HOME_DIR=\/usr\/lib\/R/" $PKG/usr/bin/R
sed -i "s|/tmp/package-R||g" $PKG/usr/bin/R
sed -i -e "s/R_HOME_DIR=.*$/R_HOME_DIR=\/usr\/lib\/R/" $PKG/usr/lib/R/bin/R

mkdir -p $PKG/usr/doc/$NAME-$VERSION

cp -a \
AUTHORS COPYING COPYING.LIB COPYRIGHTS FAQ INSTALL NEWS ONEWS OONEWS README \
	RESOURCES THANKS VERSION Y2K \
	$PKG/usr/doc/$NAME-$VERSION
 
( cd $PKG
  find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)

gzip -9 $PKG/usr/man/*/*

chown -R root.bin $PKG/usr/bin

chmod 755 $PKG/usr/bin/*

mkdir -p $PKG/install

cat $CWD/slack-desc > $PKG/install/slack-desc

cd $PKG

makepkg -l y -c n $TMP/$NAME-$VERSION-$ARCH-$BUILD.tgz

if [ "$1" = "--cleanup" ]; then
 rm -rf $TMP/$NAME-$VERSION
 rm -rf $PKG
fi

Avatar utente
giberg
Linux 4.x
Linux 4.x
Messaggi: 1282
Iscritto il: mer 21 set 2005, 17:28
Nome Cognome: Gianni
Slackware: current64
Kernel: 3.7.1
Desktop: 4.8.5
Località: S. Biagio di Callalta (TV)

Messaggio da giberg »

venerdi_12 ha scritto:R dovrebbe essere già pacchettizzato, ma non lo vedo ne repository probabilmente a causa dell'esordio della 11.0.
In ogni caso questo è il mio slackbuild (quello che genera il pacchetto che dovrebbe essere su Slacky.it
Sì l'avevo visto tempo fa. Solo che me ne ero dimenticato. Comunque me lo stavo creando per la versione 2.4.0.

Alcune opzioni che tu hai passato al configure non le ho messe perché mi pare fossero già inserite di default.

In aggiunta ho strippato anche i file *.a perché dopo la compilazione con un find ne avevo trovati alcuni. Ora lo confronto con calma con il mio per vedere dove ho sbagliato. Più che altro il mio è un esercizio sullo SlackBuild e quindi mi interessa verificarne la correttezza. Comunque grazie per avermi segnalato il tuo pacchetto. :)

Avatar utente
venerdi_12
Packager
Packager
Messaggi: 258
Iscritto il: sab 9 lug 2005, 0:00
Nome Cognome: Luciano Fattore
Kernel: 3.0
Desktop: kde-4.7.0
Distribuzione: archlinux
Località: Lusciano (Ce)

Messaggio da venerdi_12 »

Nel caso tu faccia modifiche consistenti e da te reputate migliorative (leggi lo strip di alcuni binari), postale a me o a Lorys così che vengano aggiunte allo slackbuild

Avatar utente
giberg
Linux 4.x
Linux 4.x
Messaggi: 1282
Iscritto il: mer 21 set 2005, 17:28
Nome Cognome: Gianni
Slackware: current64
Kernel: 3.7.1
Desktop: 4.8.5
Località: S. Biagio di Callalta (TV)

Messaggio da giberg »

venerdi_12 ha scritto:Nel caso tu faccia modifiche consistenti e da te reputate migliorative (leggi lo strip di alcuni binari), postale a me o a Lorys così che vengano aggiunte allo slackbuild
Non ho idea se siano migliorative o meno. E' il primo SlackBuild che faccio. Sto seguendo più o meno la guida di samiel per fare il pacchetto. Di diverso non ho fatto il chown -R root.bin perché dalla 11 Pat fa tutto con root.root. Poi ho trovato dei file con permessi 777 e ho modificato solo quelli in 755 (non ho trovato altri file con permessi anomali come indicato dalla guida). Poi ho provato a mettere quel --sysconfdir=/etc sempre per mantenere gli standard Slackware (poi non so se fosse realmente necessario. L'ho fatto perché nei sorgenti c'è una directory /etc e quindi faccio in modo che non vada in /usr/local/etc o qualcosa del genere). Le altre opzioni che hai messo tu non vorrei sbagliarmi ma sono già presenti di default e ho seguito quindi la compilazione indicata nella documentazione. Poi ho inserito il make check che dovrebbe verificare che tutte le funzioni lavorino correttamente tramite dei codici di test presenti nel pacchetto dei sorgenti.

Avatar utente
gohanz
Staff
Staff
Messaggi: 5832
Iscritto il: mar 30 nov 2004, 0:00

Messaggio da gohanz »

Ho visto che l'eseguibile R che viene installato in /usr/bin è uno script wrapper. Basta editarlo, modifiacndolo con i percorsi giusti! Magari poi si può automatizzare il tutto con uno script e con sed

Avatar utente
venerdi_12
Packager
Packager
Messaggi: 258
Iscritto il: sab 9 lug 2005, 0:00
Nome Cognome: Luciano Fattore
Kernel: 3.0
Desktop: kde-4.7.0
Distribuzione: archlinux
Località: Lusciano (Ce)

Messaggio da venerdi_12 »

È quello che fa il mio slackbuild... ;)

Avatar utente
giberg
Linux 4.x
Linux 4.x
Messaggi: 1282
Iscritto il: mer 21 set 2005, 17:28
Nome Cognome: Gianni
Slackware: current64
Kernel: 3.7.1
Desktop: 4.8.5
Località: S. Biagio di Callalta (TV)

Messaggio da giberg »

gohanz ha scritto:Ho visto che l'eseguibile R che viene installato in /usr/bin è uno script wrapper. Basta editarlo, modifiacndolo con i percorsi giusti! Magari poi si può automatizzare il tutto con uno script e con sed
Infatti me ne accorgo ora che è quello che ha fatto venerdi_12 nel suo SlackBuild.
Ecco le righe dello script wrapper incriminate:

Codice: Seleziona tutto

R_HOME_DIR=/tmp/pkg/usr/lib/R
if test -n "${R_HOME}" && \
   test "${R_HOME}" != "${R_HOME_DIR}"; then
  echo "WARNING: ignoring environment value of R_HOME"
fi
R_HOME="${R_HOME_DIR}"
export R_HOME
R_SHARE_DIR=/tmp/package-R/usr/lib/R/share
export R_SHARE_DIR
R_INCLUDE_DIR=/tmp/package-R/usr/lib/R/include
export R_INCLUDE_DIR
R_DOC_DIR=/tmp/package-R/usr/lib/R/doc
export R_DOC_DIR
Bene, così cerco di capire anche come funziona sed leggendo il codice di venerdi_12.

Avatar utente
giberg
Linux 4.x
Linux 4.x
Messaggi: 1282
Iscritto il: mer 21 set 2005, 17:28
Nome Cognome: Gianni
Slackware: current64
Kernel: 3.7.1
Desktop: 4.8.5
Località: S. Biagio di Callalta (TV)

Messaggio da giberg »

Per curiosità ho frugato tra i vari Makefile.in presenti nei sorgenti per cercare dove si formasse la variabile R_HOME. Credo sia qui:

Codice: Seleziona tutto

#
# ${R_HOME}/src/main/Makefile

VPATH = @srcdir@
srcdir = @srcdir@
top_srcdir = @top_srcdir@

top_builddir = ../..
subdir = src/main
# next is needed for shared BLAS
R_HOME=$(top_builddir)
Vabbè, non che sia fondamentale saperlo.

Grazie.
Vi faccio sapere se finalmente sarò riuscito a creare un pacchetto funzionante. Pensandoci bene quello che avevo fatto manualmente funzionava ma non avevo cancellato la directory dove l'avevo costruito, quindi non mi sono accorto del problema e senza saperlo lavoravo con i binari presenti in /tmp/ecc. e non con quelli installati.

Avatar utente
giberg
Linux 4.x
Linux 4.x
Messaggi: 1282
Iscritto il: mer 21 set 2005, 17:28
Nome Cognome: Gianni
Slackware: current64
Kernel: 3.7.1
Desktop: 4.8.5
Località: S. Biagio di Callalta (TV)

Messaggio da giberg »

giberg ha scritto:Le altre opzioni che hai messo tu non vorrei sbagliarmi ma sono già presenti di default
Non potevo dire una stupidaggine più grande! :lol: Mi sono sbagliato, non erano di default.

Avatar utente
giberg
Linux 4.x
Linux 4.x
Messaggi: 1282
Iscritto il: mer 21 set 2005, 17:28
Nome Cognome: Gianni
Slackware: current64
Kernel: 3.7.1
Desktop: 4.8.5
Località: S. Biagio di Callalta (TV)

Messaggio da giberg »

giberg ha scritto: In aggiunta ho strippato anche i file *.a perché dopo la compilazione con un find ne avevo trovati alcuni
Da quello che ho capito è perché ho compilato includendo librerie statiche.
Ultima modifica di giberg il dom 15 ott 2006, 15:11, modificato 1 volta in totale.

Rispondi