Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
suche Kritik und Vorschläge für mein ebuild
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
Mr. Anderson
l33t
l33t


Joined: 22 Apr 2004
Posts: 756

PostPosted: Mon Feb 09, 2009 7:20 pm    Post subject: suche Kritik und Vorschläge für mein ebuild Reply with quote

So, mein erstes ebuild (sci-mathematics/isabelle-2008) ist in einer ersten Fassung fertig, eine Version 0.0. Da sicher noch einiges besser gemacht werden kann, würde ich mich über konstruktive Kommentare freuen. (Tests insbesondere auf anderen Architekturen als amd64 wären hilfreich.)

Code:
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI="2"

inherit eutils multilib

DESCRIPTION="Isabelle is a generic proof assistant"
HOMEPAGE="http://isabelle.in.tum.de/ http://www.cl.cam.ac.uk/research/hvg/Isabelle/"
SRC_URI="http://isabelle.in.tum.de/dist/Isabelle${PV}.tar.gz"

LICENSE="BSD"
SLOT="0"
KEYWORDS="~amd64"
IUSE="doc graphbrowsing +proofgeneral"


#upstream says
#bash 2.x/3.x, Poly/ML 5.x, Perl 5.x,
#for Proof General GNU Emacs 21/22, xemacs 21.4.x, NOT xemacs 21.5 beta
#for document preparation: complete LaTeX
DEPEND=">=app-shells/bash-3.0
   graphbrowsing? (
      virtual/jdk
   )"

#proofgeneral uses eclass elisp that depends on virtual/emacs-21
RDEPEND=">=dev-lang/polyml-5.2.1
   >=dev-lang/perl-5.8.8-r2
   doc? (
      virtual/latex-base
   )
   proofgeneral? (
      app-emacs/proofgeneral
   )
   ${DEPEND}"

S="${WORKDIR}"/Isabelle${PV}
TARGETDIR="/usr/share/Isabelle"${PV}
LIBDIR="/usr/"$(get_libdir)"/Isabelle"${PV}

pkg_setup() {
   if ! use proofgeneral
      then
      ewarn "You have deselected the Proof General interface."
      ewarn "Only a text terminal will be installed."
      ewarn "Emerge Isabelle with the proofgeneral USE flag enabled"
      ewarn "to get the common interface, that most people want."
   fi
}

src_prepare() {
   use proofgeneral && epatch ${FILESDIR}/isabelle-2008-proofgeneral-gentoo-path.patch
}

src_compile() {
   einfo "Building Isabelle logics. This may take some time."
   ./build -a -b || die "building logics failed"
   if use graphbrowsing
      then
      cd lib/browser
      emake clean || die "failed cleaning graph browser directory"
      emake || die "failed building the graph browser"
   fi
}

src_test() {
   einfo "Running tests. A test run can take up to several hours!"
   ./build -a -b -t
}

src_install() {
   exeinto ${TARGETDIR}/bin
   doexe bin/isabelle-interface bin/isabelle-process bin/isatool \
      || die "install failed"

   exeinto ${TARGETDIR}
   doexe build || die "install failed"

   insinto ${TARGETDIR}
   use doc && ( doins -r doc || die "install failed" )

   doins -r etc || die "install failed"
   dosym ${LIBDIR}/heaps ${TARGETDIR}/heaps

   insinto ${LIBDIR}
   doins -r heaps || die "install failed"

# use cp to keep file attributes
   cp -R lib ${D}${TARGETDIR} || die "install failed"

   bin/isatool install -d ${TARGETDIR} -p ${D}usr/bin
   newicon lib/icons/isabelle.xpm ${PN}.xpm
   make_desktop_entry Isabelle "Isabelle ${PV}" isabelle.xpm "Education;Math"
   dodoc ANNOUNCE CONTRIBUTORS INSTALL NEWS README \
      || die "dodoc failed"
}

pkg_postinst() {
   elog "You will need to re-emerge Isabelle after emerging polyml."
}


Patch ${FILESDIR}/isabelle-2008-proofgeneral-gentoo-path.patch
Code:
--- Isabelle/etc/settings.old   2009-02-06 21:18:36.000000000 +0100
+++ Isabelle/etc/settings       2009-02-06 21:17:15.000000000 +0100
@@ -195,6 +195,7 @@
   "/usr/share/ProofGeneral/isar/interface" \
   "/opt/ProofGeneral/isar/interface" \
   "/usr/share/emacs/ProofGeneral/isar/interface" \
+  "/usr/share/emacs/site-lisp/ProofGeneral/isar/interface" \
   "$ISABELLE_INTERFACE")

 PROOFGENERAL_OPTIONS=""

Auf längere Sicht hoffe ich, dass die Software in sunrise und schließlich in den regulären portage tree aufgenommen wird. :)


Last edited by Mr. Anderson on Thu Feb 26, 2009 7:03 pm; edited 9 times in total
Back to top
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: München (Germany)

PostPosted: Tue Feb 10, 2009 11:32 am    Post subject: Reply with quote

Hinweise:

  • du brauchst EAPI=1 für use-defaults
  • die auskommentierte IUSE-Zeile entfernen ;)
  • WORKDIR quoten (kann leerzeichen enthalten) (bei der S=... Zeile)
  • ich würde an deiner Stelle EAPI=2 nehmen und denn die src_unpack so aufteilen:
    Code:
    pkg_setup()
    {
        if ! use proofgeneral; then ....
    }

    src_prepare()
    {
       epatch ...
    }
    du brauchst denn auch kein src_unpack
  • 'emake || die failed cleaning graph browser directory ' <-- falsche die-msg
  • die dodir,cp-hölle so umschreiben:
    Code:

    insinto ${TARGETDIR}/bin
    doins bin/isabelle-interface || die ...
    ...
    - doins kannst du auch mehrere dateien auf einmal übergeben - und auch ein '-r'
  • warum installierst du überhaupt binarys und so in das share verzeichnis ... das wirkt komisch


/edit: Außerdem kann ich dir noch die Channels #gentoo-sunrise und #gentoo-dev-help empfehlen, wenn du deine Ebuilds reviewen lassen willst
/edit: Und ich schreib bei eben diesen Münchnern am Do ne Logik-Klausur ... *noch lernen muss* :(
_________________
Inter Deum Et Diabolum Semper Musica Est.
Back to top
View user's profile Send private message
Mr. Anderson
l33t
l33t


Joined: 22 Apr 2004
Posts: 756

PostPosted: Tue Feb 10, 2009 9:45 pm    Post subject: Reply with quote

Danke. Ist alles drin.

Necoro wrote:

warum installierst du überhaupt binarys und so in das share verzeichnis ... das wirkt komisch

Weil es nicht wirklich Binaries sind. Es sind bash-Skripte, die architektur-unabhängig funktionieren sollten. Ein anderer Grund ist, dass ich anderenfalls noch mehr hätte patchen müssen.


Quote:
/edit: Außerdem kann ich dir noch die Channels #gentoo-sunrise und #gentoo-dev-help empfehlen, wenn du deine Ebuilds reviewen lassen willst

IRC... ich meide ihn, wenn es geht :)

Quote:
/edit: Und ich schreib bei eben diesen Münchnern am Do ne Logik-Klausur ... *noch lernen muss* :(

viel Erfolg ^^

edit: ein cp habe ich wieder reingenommen, da in lib die Rechte ziemlich durcheinander sind.
Back to top
View user's profile Send private message
ocin
Guru
Guru


Joined: 01 Jan 2006
Posts: 500

PostPosted: Wed Feb 11, 2009 8:49 am    Post subject: Reply with quote

Necoro wrote:

  • du brauchst EAPI=1 für use-defaults

Nein.
Back to top
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: München (Germany)

PostPosted: Wed Feb 11, 2009 9:41 am    Post subject: Reply with quote

ocin wrote:
Necoro wrote:

  • du brauchst EAPI=1 für use-defaults

Nein.

äh - dir ist schon bewusst, dass die Tabelle, die du da quotest genau das sagt, was ich sagte und dir widerspricht?

Code:
EAPI Supports IUSE defaults?
0    No
1    Yes
2    Yes

_________________
Inter Deum Et Diabolum Semper Musica Est.
Back to top
View user's profile Send private message
ocin
Guru
Guru


Joined: 01 Jan 2006
Posts: 500

PostPosted: Wed Feb 11, 2009 10:48 am    Post subject: Reply with quote

Nein? Mit EAPI=2 geht es doch genau so. Wenn du deinem Satz ein "mindestens" hinzufügst dann stimmt es.
Back to top
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: München (Germany)

PostPosted: Wed Feb 11, 2009 11:00 am    Post subject: Reply with quote

ocin wrote:
Nein? Mit EAPI=2 geht es doch genau so. Wenn du deinem Satz ein "mindestens" hinzufügst dann stimmt es.

Oh - das "mindestens" war für mich implizit ;) - da es bis jetzt noch keine EAPI gab, die Features entfernt hat.
_________________
Inter Deum Et Diabolum Semper Musica Est.
Back to top
View user's profile Send private message
ocin
Guru
Guru


Joined: 01 Jan 2006
Posts: 500

PostPosted: Wed Feb 11, 2009 3:24 pm    Post subject: Reply with quote

Necoro wrote:
ocin wrote:
Nein? Mit EAPI=2 geht es doch genau so. Wenn du deinem Satz ein "mindestens" hinzufügst dann stimmt es.

Oh - das "mindestens" war für mich implizit ;) - da es bis jetzt noch keine EAPI gab, die Features entfernt hat.

Hörte sich für mich so an als ob es _nur_ mit EAPI=1 geht.
Back to top
View user's profile Send private message
Mr. Anderson
l33t
l33t


Joined: 22 Apr 2004
Posts: 756

PostPosted: Wed Feb 11, 2009 3:43 pm    Post subject: Reply with quote

ich hab das auch als "mindestens" gelesen :P

Können wir zum Thema zurückkehren? :)

Ich bin noch auf Probleme gestoßen, wenn man isabelle mehrfach emerged und wieder löscht. Muss das mal genauer unter die Lupe nehmen. Aber wahrscheinlich heute nicht mehr.
Back to top
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: München (Germany)

PostPosted: Thu Feb 12, 2009 10:07 am    Post subject: Reply with quote

Noch ein Hinweis: wenn du sachen wie if use flag; then do_something; fi hast (also das do_something nur eine Zeile ist), wird von den Devs folgende Schreibweise bevorzugt:
use flag && do_something

Außerdem gibt es noch die gentoo-devhelp@gentoo.org mailing liste. zugegebener maßen hab ich da bis jetzt noch nie wirklich was drauf gesehen - aber man kanns ja mal versuchen ;)
_________________
Inter Deum Et Diabolum Semper Musica Est.
Back to top
View user's profile Send private message
Mr. Anderson
l33t
l33t


Joined: 22 Apr 2004
Posts: 756

PostPosted: Thu Feb 12, 2009 12:06 pm    Post subject: Reply with quote

Ist drin. Und zwei andere Fehler sind auch behoben :). Logik-Klausur schon rum? ^^
Back to top
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: München (Germany)

PostPosted: Thu Feb 12, 2009 12:20 pm    Post subject: Reply with quote

Mr. Anderson wrote:
Logik-Klausur schon rum? ^^

Nope - startet erst in 40 Minuten ;)

Mir ist noch was aufgefallen -> die "use bla && do_sth || die" Combo funktioniert nicht ...

Beispiel:
Code:
> false && true || echo "muh"
muh


Da das auch in vielen Ebuilds verwendet wird, sieht mir das nach ner großen Bugquelle aus ... :)

/edit: also das richtige ist: "use bla && { do_sth || die; }"
_________________
Inter Deum Et Diabolum Semper Musica Est.
Back to top
View user's profile Send private message
Mr. Anderson
l33t
l33t


Joined: 22 Apr 2004
Posts: 756

PostPosted: Thu Feb 12, 2009 1:00 pm    Post subject: Reply with quote

lol

ich hatte eben im www gesucht nach einer Tabelle der Präzedenzen der bash-Operatoren. Nachdem ich nicht schnell fündig wurde, beschloss ich, in anderen ebuilds nachzusehen. Nachdem ich über 10 ebuilds gefunden habe, in denen genau diese Konstruktion vorkommt (und keine andere mit Klammern), habe ich es genauso gemacht. Da dann ein probeweises emerge sauber durchgelaufen ist (aber mit USE="doc"), war das für mich erledigt. Ich hätte es ausprobieren sollen mit einem Beispiel wie Deinem, aber auf die einfachsten Lösungen komme ich manchmal nicht :-/. Ich schaue mir diese anderen ebuilds mal näher an...

edit: bisher sieht das alles in Ordnung aus in anderen ebuilds. Das hat überall etwas andere Effekte zur Folge.

Außerdem funktioniert meine Zeile ./build -a -b || die "building logics failed" nicht so wie sie soll. Wenn Fehler auftreten, wird der Ausdruck trotzdem zu true ausgewertet und nicht die ausgeführt.

Und nach einem Blick in man bash ersetze ich die geschweiften Klammern durch runde und verzichte auf ein Semikolon. :)
Back to top
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: München (Germany)

PostPosted: Thu Feb 12, 2009 4:15 pm    Post subject: Reply with quote

Mr. Anderson wrote:
Außerdem funktioniert meine Zeile ./build -a -b || die "building logics failed" nicht so wie sie soll. Wenn Fehler auftreten, wird der Ausdruck trotzdem zu true ausgewertet und nicht die ausgeführt.

Denn scheint das ./build komisch zu sein, und immer 0 zurück zu geben

Quote:
Und nach einem Blick in man bash ersetze ich die geschweiften Klammern durch runde und verzichte auf ein Semikolon. :)

Nope - runde Klammern öffnen eine Subshell, geschweifte definieren nur Blöcke. Und eine Subshell ist ein extra Prozess und damit unnötiger Ballast :)
_________________
Inter Deum Et Diabolum Semper Musica Est.
Back to top
View user's profile Send private message
Mr. Anderson
l33t
l33t


Joined: 22 Apr 2004
Posts: 756

PostPosted: Thu Feb 12, 2009 9:46 pm    Post subject: Reply with quote

Necoro wrote:
Denn scheint das ./build komisch zu sein, und immer 0 zurück zu geben

So meinte ich das auch. Lösen muss ich es trotzdem :)

Quote:
Nope - runde Klammern öffnen eine Subshell, geschweifte definieren nur Blöcke. Und eine Subshell ist ein extra Prozess und damit unnötiger Ballast :)

Hm... gutes Argument. Dann gibt's doch wieder geschweifte Klammern.
Back to top
View user's profile Send private message
mv
Advocate
Advocate


Joined: 20 Apr 2005
Posts: 4289

PostPosted: Thu Feb 12, 2009 10:32 pm    Post subject: Reply with quote

Mr. Anderson wrote:
ich hatte eben im www gesucht nach einer Tabelle der Präzedenzen der bash-Operatoren.

Such nicht nach bash, such nach dem Standard. Das wäre ja noch schöner, wenn die bash hier auch noch eine unnötige Extra-Wurst braten würde.
Quote:
The operators "&&" and "||" shall have equal precedence and shall be evaluated with left associativity
Das beschriebene Problem ist übrigens einer der beiden Gründe, weshalb die Konstruktion mit "if" oft doch sinnvoll ist (und genutzt wird):
Code:
a && b || c
ist weder äquivalent zu
Code:
if a; then b; else c; fi
noch zu
Code:
if a; then b || c; fi

Der andere Grund ist, dass
Code:
a && b
i.a. einen anderen return-code liefert als
Code:
if a; then b; fi
Back to top
View user's profile Send private message
Mr. Anderson
l33t
l33t


Joined: 22 Apr 2004
Posts: 756

PostPosted: Thu Feb 12, 2009 11:11 pm    Post subject: Reply with quote

An der bash hatte ich mich orientiert, da in der Dokumentation zu ebuilds am Anfang steht, dass ebuilds zu den bash-Skripten gehören. Aber sich am Standard zu orientieren, ist natürlich schon irgendwo sinnvoll. Asche auf mein Haupt.

Dass das nicht äquivalent ist, ist mir klar. Aber ich leg mich nicht mit den devs an, wenn sie das mit den Operatoren && und || so möchten. ;)
Back to top
View user's profile Send private message
mv
Advocate
Advocate


Joined: 20 Apr 2005
Posts: 4289

PostPosted: Fri Feb 13, 2009 7:03 am    Post subject: Reply with quote

Mr. Anderson wrote:
da in der Dokumentation zu ebuilds am Anfang steht, dass ebuilds zu den bash-Skripten gehören.

Ja, es ist explizit (leider) erlaubt, bashismen zu benutzen. Der vorgebliche Grund ist, dass viele Benutzer an bash gewöhnt sind, aber eben trotzdem schnell ein ebuild zusammenhacken können sollen.
Quote:
Aber ich leg mich nicht mit den devs an, wenn sie das mit den Operatoren && und || so möchten. ;)

Ich kann mir nicht vorstellen, dass jemand falschen Code will. In dem Moment, in dem es äquivalent ist, ist etwa
Code:
use bla && ein_kommando
bietet sich halt das "&&" an, einfach weil es kürzer ist. Falls ein "if" kürzer ist, würde es mich sehr wundern, wenn jemand etwas dagegen hätte. Solche Konstrukte wie
Code:
use bla && { a || die; }
findet man sicher manchmal, aber oft einfach, weil das "|| die" noch im Nachhinein eingefügt wurde.
Back to top
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: München (Germany)

PostPosted: Fri Feb 13, 2009 11:38 am    Post subject: Reply with quote

mv wrote:
Solche Konstrukte wie
Code:
use bla && { a || die; }
findet man sicher manchmal, aber oft einfach, weil das "|| die" noch im Nachhinein eingefügt wurde.

Die findet man recht häufig ;). Ich bin auch schon über sachen wie foo || bar && moep || die gestolpert - und das ist denn definitiv zu viel des Guten ;)
_________________
Inter Deum Et Diabolum Semper Musica Est.
Back to top
View user's profile Send private message
Mr. Anderson
l33t
l33t


Joined: 22 Apr 2004
Posts: 756

PostPosted: Fri Feb 13, 2009 9:10 pm    Post subject: Reply with quote

Code:
use bla && ein_kommando

Wirklich äquivalent ist es auch nicht, denn so weit ich das sehe, gibt z. B.
Code:
false && foo

ein false zurück, wohingegen ein
Code:
if false; then foo; fi

true zurückgibt.

Wie dem auch sei. So, wie die Zeile jetzt ist, ist sie korrekt, effizient, kurz und in der gewünschten Form.
Back to top
View user's profile Send private message
mv
Advocate
Advocate


Joined: 20 Apr 2005
Posts: 4289

PostPosted: Fri Feb 13, 2009 11:36 pm    Post subject: Reply with quote

Mr. Anderson wrote:
Wirklich äquivalent ist es auch nicht

Das hatte ich ja zuvor geschrieben (als "zweiten" Grund, weshalb "if" manchmal besser ist). Aber es passiert in der Praxis natürlich äußerst selten, dass der return-code eines if-Kommandos wichtig ist.
Back to top
View user's profile Send private message
Mr. Anderson
l33t
l33t


Joined: 22 Apr 2004
Posts: 756

PostPosted: Sat Feb 14, 2009 12:08 am    Post subject: Reply with quote

Ja, hattest Du geschrieben. Und ich hab's gelesen und wieder vergessen und nochmal festgestellt. :-/
Back to top
View user's profile Send private message
Mr. Anderson
l33t
l33t


Joined: 22 Apr 2004
Posts: 756

PostPosted: Tue Jan 24, 2012 2:30 am    Post subject: Reply with quote

Sowas. Da wollte ich eben mein isabelle-ebuild auf den neuesten Stand bringen, und nun sehe ich, dass jemand sich der Sache angenommen hat und ein aktuelles ebuild nun im Portage Tree liegt. Das spart mir ein paar Stunden Arbeit.

Siehe auch Bug 397995

Vielen Dank an Mark Wright für die geleistete Arbeit.

Thank you very much Mark Wright. You have saved me hours of work.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum 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