View previous topic :: View next topic |
Author |
Message |
Fenril Apprentice
Joined: 16 May 2009 Posts: 209
|
Posted: Fri Oct 30, 2009 10:43 am Post subject: [ebuild] Création ebuild SAGA GIS 2.0.4 |
|
|
Bonjour,
J'ai trouvé un logiciel nommé SAGA GIS qui me sera très utile, disponible ici http://www.saga-gis.org/en/index.html et dont le wiki explique comment compiler sous Linux : http://sourceforge.net/apps/trac/saga-gis/wiki/Compiling%20a%20Linux%20Unicode%20version
J'ai cherché partout et je n'ai pas trouvé d'ebuild pour Gentoo (il n'est pas proposé dans l'overlay gentoo-gis), donc j'aimerai créer un ebuild pour avoir une install propre.
Si j'ai bien à peu près saisi la construction d'un ebuild grâce au guide, en revanche je cale complètement au sujet de l'installation du paquet compilé (c'est pourquoi la section est vide ) ; par exemple, je ne sais pas comment gérer où il s'installe, et copier l'icône pour qu'il apparaisse dans le menu de tous les DE classiques (Gnome, KDE, Xfce). Donc j'aimerai avoir votre aide pour réaliser mon premier ebuild de manière solide, et de devenir un bon constructeur d'ebuild pour me débrouiller ensuite
Voici donc mon ebuild pour l'instant :
Code: | Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sci-geosciences/saga-gis/saga-gis-2.0.4.ebuild,v 0.5 2009/10/20 15:51:03 Fenril Exp $
inherit eutils flag-o-matic versionator
DESCRIPTION="System for Automated Geoscientific Analyses"
HOMEPAGE="http://www.saga-gis.org/"
SRC_URI="http://download.sourceforge.net/saga-gis/saga_${PV}_src_linux.tar.gz"
LICENSE="GPL-FOSS"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="debug"
RDEPEND="sci-libs/gdal
sci-libs/proj
sys-devel/automake
media-libs/sdl-ttf
media-libs/jasper
x11-libs/wxGTK"
MY_PV=$(get_version_component_range 1-2)
DIRSOURCE=${WORKDIR}/saga-${MY_PV}
src_unpack() {
unpack ${A} || die "unpack failed"
}
src_prepare() {
cd ${DIRSOURCE}
autoreconf -i
if use amd64 ; then
./configure --enable-unicode CC="gcc -arch x86_64 --enable-FEATURE=x86_64" "CFLAGS=${CFLAGS}" \
CXX="gcc -arch x86_64 --enable-FEATURE=x86_64" "CXXFLAGS=${CXXFLAGS}" || die "econf failed"
else
./configure --enable-unicode CC="gcc" "CFLAGS=${CFLAGS}" \
CXX="gcc" "CXXFLAGS=${CXXFLAGS}" || die "econf failed"
fi
}
src_compile() {
cd ${DIRSOURCE}
make || die "make failed"
}
src_install() {
cd ${DIRSOURCE}
einfo "Installing ${P}..."
make install || die "make install failed"
}
|
Merci d'avance.
Last edited by Fenril on Fri Oct 30, 2009 12:50 pm; edited 1 time in total |
|
Back to top |
|
|
Fenril Apprentice
Joined: 16 May 2009 Posts: 209
|
Posted: Fri Oct 30, 2009 3:58 pm Post subject: |
|
|
OK, bon la compilation (sur x86) se passe sans souci, mais ça échoue au "make install" et cela me retourne l'erreur suivante :
Code: | ACCESS DENIED open_wr: /usr/local/lib/libsaga_api.so.0.0.0
/usr/bin/install: cannot create regular file `/usr/local/lib/libsaga_api.so.0.0.0': Permission denied |
Le log sandbox :
Code: | --------------------------- ACCESS VIOLATION SUMMARY ---------------------------
LOG FILE "/var/log/sandbox/sandbox-8070.log"
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: /usr/local/lib/libsaga_api.so.0.0.0
A: /usr/local/lib/libsaga_api.so.0.0.0
R: /usr/local/lib/libsaga_api.so.0.0.0
C: /usr/bin/install -c .libs/libsaga_api.so.0.0.0 /usr/local/lib/libsaga_api.so.0.0.0
-------------------------------------------------------------------------------- |
Il cherche à installer en /usr/local/lib/, ce qui semble poser problème. Faut-il que je change le PREFIX ou le problème est ailleurs ? |
|
Back to top |
|
|
Fenril Apprentice
Joined: 16 May 2009 Posts: 209
|
Posted: Fri Oct 30, 2009 7:03 pm Post subject: |
|
|
Et si j'utilisais insinto, dolib ou autre à la place de "make install", cela me permettrait de rester dans le cadre de Portage et éviter d'alerter la sandbox ? Quelqu'un peut m'aider ? |
|
Back to top |
|
|
netfab Veteran
Joined: 03 Mar 2005 Posts: 1897 Location: 127.0.0.1
|
Posted: Fri Oct 30, 2009 7:23 pm Post subject: |
|
|
Non, tu dois probablement utiliser une variable du type DESTDIR, regarde le makefile au niveau de la phase install.
Code: |
emake DESTDIR="${D}" install
|
Pour utiliser un répertoire miroir et ne pas franchir les limites de la sandbox lors de l'installation. |
|
Back to top |
|
|
Fenril Apprentice
Joined: 16 May 2009 Posts: 209
|
Posted: Sat Oct 31, 2009 8:01 am Post subject: |
|
|
OK, c'est là où je me sens un peu perdu. Il y a tellement de variables. Serait-ce prefix ? pkgdatadir ? Je colle le Makefile créé et demande quelle est la valeur :
Code: | # Makefile.in generated by automake 1.10.2 from Makefile.am.
# Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
pkgdatadir = $(datadir)/saga
pkglibdir = $(libdir)/saga
pkgincludedir = $(includedir)/saga
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = i686-pc-linux-gnu
host_triplet = i686-pc-linux-gnu
subdir = .
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
config.guess config.sub depcomp install-sh ltmain.sh missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = ${SHELL} /var/tmp/portage/sci-geosciences/saga-gis-2.0.4/work/saga-2.0/missing --run aclocal-1.10
AMTAR = ${SHELL} /var/tmp/portage/sci-geosciences/saga-gis-2.0.4/work/saga-2.0/missing --run tar
AR = ar
AUTOCONF = ${SHELL} /var/tmp/portage/sci-geosciences/saga-gis-2.0.4/work/saga-2.0/missing --run autoconf
AUTOHEADER = ${SHELL} /var/tmp/portage/sci-geosciences/saga-gis-2.0.4/work/saga-2.0/missing --run autoheader
AUTOMAKE = ${SHELL} /var/tmp/portage/sci-geosciences/saga-gis-2.0.4/work/saga-2.0/missing --run automake-1.10
AWK = gawk
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -march=athlon-xp -O2 -pipe -fomit-frame-pointer
CPP = gcc -E
CPPFLAGS =
CXX = gcc
CXXCPP = gcc -E
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -march=athlon-xp -O2 -pipe -fomit-frame-pointer
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DSYMUTIL =
DUMPBIN =
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = /bin/grep -E
EXEEXT =
FGREP = /bin/grep -F
GREP = /bin/grep
INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
LD = /usr/i686-pc-linux-gnu/bin/ld
LDFLAGS = -Wl,-O1
LIBOBJS =
LIBS =
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LIPO =
LN_S = ln -s
LTLIBOBJS =
MAKEINFO = ${SHELL} /var/tmp/portage/sci-geosciences/saga-gis-2.0.4/work/saga-2.0/missing --run makeinfo
MKDIR_P = /bin/mkdir -p
NM = /usr/bin/nm -B
NMEDIT =
OBJDUMP = objdump
OBJEXT = o
OTOOL =
OTOOL64 =
PACKAGE = saga
PACKAGE_BUGREPORT = BUG-REPORT-ADDRESS
PACKAGE_NAME = saga
PACKAGE_STRING = saga 2.0
PACKAGE_TARNAME = saga
PACKAGE_VERSION = 2.0
PATH_SEPARATOR = :
POW_LIB =
RANLIB = ranlib
SED = /bin/sed
SET_MAKE =
SHELL = /bin/sh
STRIP = strip
VERSION = 2.0
abs_builddir = /var/tmp/portage/sci-geosciences/saga-gis-2.0.4/work/saga-2.0
abs_srcdir = /var/tmp/portage/sci-geosciences/saga-gis-2.0.4/work/saga-2.0
abs_top_builddir = /var/tmp/portage/sci-geosciences/saga-gis-2.0.4/work/saga-2.0
abs_top_srcdir = /var/tmp/portage/sci-geosciences/saga-gis-2.0.4/work/saga-2.0
ac_ct_CC = gcc
ac_ct_CXX =
ac_ct_DUMPBIN =
am__include = include
am__leading_dot = .
am__quote =
am__tar = tar --format=ustar -chf - "$$tardir"
am__untar = tar -xf -
bindir = ${exec_prefix}/bin
build = i686-pc-linux-gnu
build_alias =
build_cpu = i686
build_os = linux-gnu
build_vendor = pc
builddir = .
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
dvidir = ${docdir}
exec_prefix = ${prefix}
host = i686-pc-linux-gnu
host_alias =
host_cpu = i686
host_os = linux-gnu
host_vendor = pc
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = $(SHELL) /var/tmp/portage/sci-geosciences/saga-gis-2.0.4/work/saga-2.0/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
lt_ECHO = echo
mandir = ${datarootdir}/man
mkdir_p = /bin/mkdir -p
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
srcdir = .
sysconfdir = ${prefix}/etc
target_alias =
top_build_prefix =
top_builddir = .
top_srcdir = .
SUBDIRS = . src
#AM_CFLAGS = -g -DDEBUG
#AM_CXXFLAGS = -g -DDEBUG
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh:
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
cd $(srcdir) && $(AUTOMAKE) --gnu \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f config.h stamp-h1
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool config.lt
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(am__remove_distdir)
test -d $(distdir) || mkdir $(distdir)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
am__remove_distdir=: \
am__skip_length_check=: \
distdir) \
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-lzma: distdir
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \
unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile config.h
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr \
distclean-libtool distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am:
install-dvi: install-dvi-recursive
install-exec-am:
install-html: install-html-recursive
install-info: install-info-recursive
install-man:
install-pdf: install-pdf-recursive
install-ps: install-ps-recursive
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am:
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
install-strip
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am am--refresh check check-am clean clean-generic \
clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \
distclean distclean-generic distclean-hdr distclean-libtool \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs installdirs-am \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-recursive uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
|
Merci ! |
|
Back to top |
|
|
netfab Veteran
Joined: 03 Mar 2005 Posts: 1897 Location: 127.0.0.1
|
Posted: Sat Oct 31, 2009 8:42 am Post subject: |
|
|
Colle plutôt le Makefile.am ce sera probablement moins indigeste.
Mais à priori ce Makefile ne supporte pas la variable DESTDIR.
Donc soit tu modifies le Makefile.am pour réécrire la phase install et ajouter le DESTDIR, puis ensuite un petit coup d'automake pour régénérer les *.in
Soit tu fais comme tu as dit, tu installes manuellement les fichiers, mais :
- Faire attention à les installer au bon endroit, pour ne pas casser les liens (exécutables) et éventuellement les paths hardcodés.
- Tu es comdamné à chaque mise à jour à vérifier que tout ceci s'installe là où il faut.
Tou dépend du nombre de fichiers à installer, des types de fichiers, etc... à toi de voir. |
|
Back to top |
|
|
Fenril Apprentice
Joined: 16 May 2009 Posts: 209
|
Posted: Sat Oct 31, 2009 8:57 am Post subject: |
|
|
Le Makefile.am est quasi-vide, je le colle tout de même :
Code: | SUBDIRS = . src
if DEBUG
AM_CFLAGS = -g -DDEBUG
AM_CXXFLAGS = -g -DDEBUG
endif |
Ca ne me dérange pas de le faire manuellement, mais je préférai éviter, et encore faut-il que je connaisse là où s'installe tous les fichiers. |
|
Back to top |
|
|
Leander256 l33t
Joined: 05 Jul 2003 Posts: 910 Location: Singapour
|
Posted: Sat Oct 31, 2009 9:29 am Post subject: |
|
|
D'après le manuel du développeur:
Quote: | Sometimes this will end up installing a few things into strange places. If and only if this is the case, the einstall function can be used:
einstall || die "einstall failed" |
Dans l'autre page de la doc ils précisent d'essayer einstall si il y a des erreurs avec la sandbox. Sinon il faudra (faire) patcher le Makefile. |
|
Back to top |
|
|
Fenril Apprentice
Joined: 16 May 2009 Posts: 209
|
Posted: Sat Oct 31, 2009 9:48 am Post subject: |
|
|
OK je vais tester. Quelle est la différence entre un make install et einstall ? |
|
Back to top |
|
|
Fenril Apprentice
Joined: 16 May 2009 Posts: 209
|
Posted: Sat Oct 31, 2009 1:55 pm Post subject: |
|
|
einstall échoue. Voici l'erreur :
Code: | libtool: install: error: cannot install `libsaga_gdi.la' to a directory not ending in /usr/local/lib/saga
make[4]: *** [install-pkglibLTLIBRARIES] Erreur 1
make[4]: quittant le répertoire « /var/tmp/portage/sci-geosciences/saga-gis-2.0.4/work/saga-2.0/src/saga_core/saga_gdi »
make[3]: *** [install-am] Erreur 2
make[3]: quittant le répertoire « /var/tmp/portage/sci-geosciences/saga-gis-2.0.4/work/saga-2.0/src/saga_core/saga_gdi »
make[2]: *** [install-recursive] Erreur 1
make[2]: quittant le répertoire « /var/tmp/portage/sci-geosciences/saga-gis-2.0.4/work/saga-2.0/src/saga_core »
make[1]: *** [install-recursive] Erreur 1
make[1]: quittant le répertoire « /var/tmp/portage/sci-geosciences/saga-gis-2.0.4/work/saga-2.0/src »
make: *** [install-recursive] Erreur 1
*
* ERROR: sci-geosciences/saga-gis-2.0.4 failed.
* Call stack:
* ebuild.sh, line 49: Called src_install
* environment, line 2829: Called einstall
* ebuild.sh, line 576: Called die
* The specific snippet of code:
* ${MAKE:-make} prefix="${D}usr" \
* datadir="${D}usr/share" \
* infodir="${D}usr/share/info" \
* localstatedir="${D}var/lib" \
* mandir="${D}usr/share/man" \
* sysconfdir="${D}etc" \
* ${LOCAL_EXTRA_EINSTALL} \
* "$@" install || die "einstall failed"
* The die message:
* einstall failed
* |
Voilà ce que j'ai mis dans la procédure src_install :
Code: | src_install() {
cd ${DIRSOURCE}
einfo "Installing ${P}..."
einstall || die "make install failed"
} |
Je cale vraiment |
|
Back to top |
|
|
netfab Veteran
Joined: 03 Mar 2005 Posts: 1897 Location: 127.0.0.1
|
Posted: Sat Oct 31, 2009 2:39 pm Post subject: |
|
|
Regarde ici. Et là. L'overlay n'est pas à jour, l'ebuild non plus, mais il utilisait déjà DESTDIR pour l'installation. Quelle version essaies tu d'installer ?
Edit : tu disais que l'ebuild n'etait pas dans l'overlay gentoo-gis, mais il a pourtant l'air d'être sur leur svn. |
|
Back to top |
|
|
Fenril Apprentice
Joined: 16 May 2009 Posts: 209
|
Posted: Sat Oct 31, 2009 3:00 pm Post subject: |
|
|
C'est écrit dans mon titre, la 2.0.4 dont l'ebuild est réellement disponible nul part ; il y a des dépendances supplémentaires et différentes options dont je vais très probablement laisser la possibilité d'activer par des USE dans une future version d'ebuild. Dans les README et wiki pour Saga il n'y a pas mention sur DESTDIR, juste à propos de PREFIX. Mais j'ai un doute : la variable DESTDIR n'est-elle pas utilisé par l'eclass de base ? Je vais testé malgré tout voir si cela marche et m'inspirer de l'ebuild dont tu as fait lien |
|
Back to top |
|
|
Fenril Apprentice
Joined: 16 May 2009 Posts: 209
|
Posted: Sat Oct 31, 2009 4:51 pm Post subject: |
|
|
Rien à faire le DESTDIR est vide. Je crois que l'installation manuelle est obligatoire... |
|
Back to top |
|
|
netfab Veteran
Joined: 03 Mar 2005 Posts: 1897 Location: 127.0.0.1
|
Posted: Sat Oct 31, 2009 4:52 pm Post subject: |
|
|
Fenril wrote: | C'est écrit dans mon titre, la 2.0.4 |
Oups oui
Fenril wrote: | Dans les README et wiki pour Saga il n'y a pas mention sur DESTDIR, juste à propos de PREFIX.
Mais j'ai un doute : la variable DESTDIR n'est-elle pas utilisé par l'eclass de base ? |
Rien à voir avec PREFIX. La variable DESTDIR est définie dans le manuel d'automake et dans les GNU Coding Standards. Elle n'est pas obligatoire, mais dans ton cas serait fort utile
Si le makefile ne tient pas compte de cette variable au moment de l'installation/désinstallation (ce qui est le cas ici), on tombe sur des problèmes tels que le tiens.
D'ailleurs, en lisant l'ebuild et le Makefile de la version 2.0.1 je me demande comment elle pouvait être prise en compte.
Essaie de faire une installation dans un répertoire de ton ~ ou intégralement dans /tmp, en définissant les repertoires au moment du configure, et regarde ce qui est installé et de quelle manière.
Ensuite tu pourras soit patcher le Makefile.am pour être tranquille, soit faire une installation manuelle. |
|
Back to top |
|
|
Fenril Apprentice
Joined: 16 May 2009 Posts: 209
|
Posted: Sat Oct 31, 2009 5:55 pm Post subject: |
|
|
OK, merci beaucoup netfab ! J'apprend encore beaucoup de chose ! Je vais voir quelles sont les fichiers à installer en compilant entièrement à la mano.
J'ai suivi strictement les consignes de compilation indiquées dans le wiki, qui singale de faire un autoreconf (et donc un automake), avant de lancer la compilation. Il y aurait une possibilité d'insérer DESTDIR à ce niveau là ce qui simplifierait pas mal et m'éviterait de copier les fichiers. |
|
Back to top |
|
|
Fenril Apprentice
Joined: 16 May 2009 Posts: 209
|
Posted: Sat Oct 31, 2009 8:45 pm Post subject: |
|
|
Raaaaaaah pinaiz, c'est pas la première fois que j'ai la solution sous les yeux et que je continue à tourner en rond ! Ma dernière piste était la bonne, le problème se situait au niveau de l'autoreconf qui ne marchait pas correctement, et il suffit de faire comme indiqué dans le wiki :
Code: | [user@localhost ~]$ aclocal
[user@localhost ~]$ autoheader
[user@localhost ~]$ libtoolize
[user@localhost ~]$ automake --add-missing
[user@localhost ~]$ autoconf |
Et miracle, ça s'installe !! Bon sang ! L'avantage c'est que j'ai appris encore un peu plus grâce à toi netfab encore merci ! Quelle satisfaction d'avoir réaliser un ebuild, même si je sais qu'il y a bien plus complexe. Gentoo je t'aime ! Maintenant plus qu'à le rendre plus pro et plus propre Tous les conseils sont bienvenus ! Je vais probablement m'attaquer à du plus lourd : GRASS 6.4 !
P.S. : avis aux gentooistes géomaticiens s'il y 'en a qui traînent ici : je viens de le tester un peu, il dépote pas mal à première vue ! Lecture des shp sans problème, rapide, viewer 3D, modules de géostatistiques, gestion des TIN... |
|
Back to top |
|
|
Fenril Apprentice
Joined: 16 May 2009 Posts: 209
|
Posted: Tue Nov 10, 2009 11:58 pm Post subject: |
|
|
J'ai une petite question, peut-être idiote : est-ce que lorsque on désinstalle un logiciel compilé puis installé avec un ebuild personnel cela efface automatiquement tous les fichiers (librairies, exécutables...) ou bien il y a une règle importante à respecter lors de la construction de l'ebuild pour que tout s'efface proprement ? |
|
Back to top |
|
|
netfab Veteran
Joined: 03 Mar 2005 Posts: 1897 Location: 127.0.0.1
|
Posted: Wed Nov 11, 2009 8:38 am Post subject: |
|
|
Réponse courte : oui.
Que l'ebuild fasse partie de l'arbre officiel ou non n'a rien à voir avec la désinstallation du soft.
Pour chaque ebuild emergé, portage sait précisément quels fichiers ont été installés.
Regarde dans :
Code: | /var/db/pkg/${CATEGORY}/${P}/CONTENTS |
En revanche, il me semble que les fichiers modifiés manuellement (les fichiers dans /etc par exemple) ne sont pas effacés lors de la déinstallation. |
|
Back to top |
|
|
mrpouet Retired Dev
Joined: 29 Jul 2008 Posts: 87 Location: Bordeaux, France
|
Posted: Wed Nov 11, 2009 5:34 pm Post subject: |
|
|
Lis bien le devmanual que t'as passé Leander256, normalement tu as tout ce qu'il te faut dedans (appart le fait qu'il ne soit pas trés trés à jour, mais pour débuter c'est trés bien), en particulier, renseignes toi sur les commandes externes suivante (ebuild-helpers) :
- econf que tu dois utiliser à la place de ./configure (que tu ne dois pas appeler depuis src_prepare() )
- emake à la place de make
Ensuite renseignes toi sur eapi 2 (en rapport avec src_prepare() .. )
edit: petite spec, en général on utilise $S au lieu de $DIRSOURCE |
|
Back to top |
|
|
Fenril Apprentice
Joined: 16 May 2009 Posts: 209
|
Posted: Fri Nov 13, 2009 8:46 pm Post subject: |
|
|
Merci bien. J'épluche encore et encore les documents je vais j'espère devenir calé
Pour Saga-gis, il me semble qu'on ne doit pas modifier la variable $S, si on a besoin de changer le répertoire (comme ici), il faut créer une autre variable. Mais c'est vrai, le nom de ma variable est ambigüe, j'aurai pu l'appeler $MY_S, comme il est conseillé.
Sinon, j'ai remarqué que lorsqu'on compile des programme en dehors de l'arbre officiel, les librairies s'installent dans /usr/local/lib (pas toujours il est vrai). Est-il possible que la fonction get_libdir retourne cette valeur ou elle retourne celle par défaut du système, çàd /urs/lib/ ? |
|
Back to top |
|
|
mrpouet Retired Dev
Joined: 29 Jul 2008 Posts: 87 Location: Bordeaux, France
|
Posted: Fri Nov 13, 2009 10:20 pm Post subject: |
|
|
Fenril wrote: | Merci bien. J'épluche encore et encore les documents je vais j'espère devenir calé
Pour Saga-gis, il me semble qu'on ne doit pas modifier la variable $S, si on a besoin de changer le répertoire (comme ici), il faut créer une autre variable. Mais c'est vrai, le nom de ma variable est ambigüe, j'aurai pu l'appeler $MY_S, comme il est conseillé.
Sinon, j'ai remarqué que lorsqu'on compile des programme en dehors de l'arbre officiel, les librairies s'installent dans /usr/local/lib (pas toujours il est vrai). Est-il possible que la fonction get_libdir retourne cette valeur ou elle retourne celle par défaut du système, çàd /urs/lib/ ? |
econf fais tout, tout seul... (--prefix=/usr etc...) , pour avoir les libs installés dans /usr/lib, il faut "dire" au configure script d'utiliser le prefix=/usr (/usr/local par defaut) , voilà pourquoi je te parles de econf
Pour S, si le dossier sources n'est pas de la forme ${WORKDIR}/${PN}-${PV} (autrement dit ${P}) si tu as besoin de le modifier, regardes ton DIRSOURCE... tu as mis saga-${MY_PV} donc visiblement si |
|
Back to top |
|
|
Fenril Apprentice
Joined: 16 May 2009 Posts: 209
|
Posted: Fri Nov 13, 2009 10:30 pm Post subject: |
|
|
Je n'aime pas contredire les gens qui m'aident mais là je suis obligé
le nom du paquet est saga-2.0.4.tar.gz ou un truc comme ça, mais le nom du répertoire dans lequel il est décompressé est Saga 2.0 (et non pas Saga 2.0.4). Si j'utilise $S Portage s'emmêle les pinceaux et ne trouve pas où il est dépaqueté, et donc l'install s'échoue. C'était même une de mes premières difficultés puisque Portage échoue très tôt. ${PV} me retournerait 2.0.4 tandis que ${MY_PV} me permet de retourner 2.0 (ce que je veux).
Pour ma question, en fait ce n'est pas trop le répertoire d'installation que je veux changer, mais plutôt savoir où cela s'installe pour pouvoir modifier des fichiers après l'install dans mon ebuild. |
|
Back to top |
|
|
|
|
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
|
|