[Opencascade] Paquet orphelin ? (en cours)

Mise à jour / Création /debug de paquetages
Répondre
Archimage
Daikyu
Messages : 68
Inscription : lun. 27 sept. 2010, 16:53

[Opencascade] Paquet orphelin ? (en cours)

Message par Archimage »

Bonjour,

J'ai remarqué hier que le paquetage opencascade est à la version 6.3, alors qu'aujourd'hui il y a une version 6.5

Aujourd'hui il s'est marqué périmé, et je viens de constater que le paquet est orphelin.

Est-ce que ça signifie qu'il n'y a plus personne pour le mettre à jour ?

Je suis encore un débutant et je me suis dit que ce serait une bonne idée d'apprendre à le faire, est-ce que quelqu'un peut m'aider à le mettre à jour tout en me montrant la démarche à suivre pas à pas pour y parvenir ?

Merci beaucoup !
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Opencascade] Paquet orphelin ? (en cours)

Message par FoolEcho »

Archimage a écrit :Aujourd'hui il s'est marqué périmé, et je viens de constater que le paquet est orphelin.

Est-ce que ça signifie qu'il n'y a plus personne pour le mettre à jour ?
En effet.
Archimage a écrit :Je suis encore un débutant et je me suis dit que ce serait une bonne idée d'apprendre à le faire, est-ce que quelqu'un peut m'aider à le mettre à jour tout en me montrant la démarche à suivre pas à pas pour y parvenir ?
Lire la doc et bien comprendre ce que font PKGBUILD ainsi que les fichiers joints déjà... :rtfm:
Fonctionnement général (makepkg, pacman -U): https://wiki.archlinux.org/index.php/AU ... Guidelines
Description exhaustive du PKGBUILD: https://wiki.archlinux.org/index.php/PKGBUILD
Les conventions (ne pas mettre des fichiers n'importe où, n'importe comment): https://wiki.archlinux.org/index.php/Ar ... _Standards

Concrètement, tu peux déjà tenter de faire le paquet pour toi: récupérer PKGBUILD et les autres fichiers dans un répertoire prévu à cette effet.
Tu peux déjà commencer par modifier la 'source' pour récupérer la dernière version, modifier le md5sum en conséquence et modifier pkgver et pkgrel ...
La grosse difficulté ici réside en l'application des patchs: quels sont les apports de la nouvelle version (cf. README, changelog dans les sources que tu as récupéré) ? les patchs sont-ils toujours d'actualité ? si oui, qu'y-a-t-il éventuellement à modifier ? ... ... bien sûr, tu peux toujours tenter la compilation sauvagement :mrgreen: ...

Beaucoup de lecture, en somme. :wink:

(d'autant plus que ce paquet n'est sûrement pas le plus simple pour te faire la main, du fait des patchs...)
«The following statement is not true. The previous statement is true.» :nage:
Archimage
Daikyu
Messages : 68
Inscription : lun. 27 sept. 2010, 16:53

Re: [Opencascade] Paquet orphelin ? (en cours)

Message par Archimage »

Effectivement,

J'ai trouvé le lien du fichier à jour :

http://files.opencascade.com/OCCT/OCC_6 ... 650.tar.gz

J'ai essayé de suivre les démarches de compilation de la doc.

Ainsi qu'un lien expliquant comment c'est possible de le compiler sur debian :

https://mail.gna.org/public/pythonocc-u ... 00022.html

Ca fait des heures que j'essaie mais j'aboutis toujours sur des erreurs lors de la compilation...

../../../inc/Extrema_ELPCOfLocateExtPC2d.hxx:108:162: error: return-statement with a value, in function returning 'void'
make[3]: *** [Extrema_ELPCOfLocateExtPC2d_0.lo] Erreur 1
make[3]: quittant le répertoire « /home/omar/Téléchargements/opencascade/ros/adm/make/TKGeomBase »
make[2]: *** [all-recursive] Erreur 1

(En fait je me suis rendu compte que c'est difficile pour un débutant de faire ce paquet, mais c'est surtout parceque j'en ai besoin pour accompagner le paquet Freecad, j'imagine que la communauté d'architectes est très restreinte sur Arch personne ne s'est encore lancé dessus)
Archimage
Daikyu
Messages : 68
Inscription : lun. 27 sept. 2010, 16:53

Re: [Opencascade] Paquet orphelin ? (en cours)

Message par Archimage »

Bon, je sèche malgré la bonne volonté je n'ai pas les connaissances nécessaires :oops:

Si quelqu'un voit une solution je lui serai reconnaissant !
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Opencascade] Paquet orphelin ? (en cours)

Message par FoolEcho »

Oui, il y a des paquets plus simples à faire... :D

Désolé, j'étais en train de boucler le test en reprenant une compilation depuis le début (et à 1h30 la compilation complète... en dépit de mon valeureux i7 qui faisait d'autres trucs lourds en même temps...:mrgreen: ). 8)
Archimage a écrit :J'ai essayé de suivre les démarches de compilation de la doc.
J'ai été moins patient... mais ta démarche est la bonne. :chinois:

Bon.
J'ai adapté le PKGBUILD pour cadrer avec le src que tu as indiqué et avec ce qui suit, ça devrait compiler.

PKGBUILD:

Code : Tout sélectionner

# Maintainer: Michele Mocciola <mickele>
# Contributor: Brice Méalier <mealier_brice@yahoo.fr>
# Contributor: Giuseppe Borzi <gborzi>

pkgname=opencascade
pkgver=6.5.0
pkgrel=1
pkgdesc="Software development platform including components for 3D surface and solid modeling, visualization, data exchange and rapid application development."
url="http://www.opencascade.org"
license="custom"
depends=('tk' 'mesa' 'java-runtime' 'libxmu' 'ftgl')
makedepends=('java-environment')
arch=('i686' 'x86_64')
install=(opencascade.install)
source=(
	'http://files.opencascade.com/OCCT/OCC_6.5_release/OpenCASCADE650.tar.gz' 
	'env.sh' 
  	'opencascade.sh'
	'opencascade.conf')
md5sums=(
        'a885f4f4e08776718c8736a363f5a2ee'
        'acf8ad1e470cd7d1c2033954c1b0f03a'
        'd9368b8d348ced3ec4462012977552d2'
        '2924ecf57c95d25888f51071fdc72ad0')

# Installation dir
_installdir=/opt/opencascade

build() {
   cd "${srcdir}" 	|| return 1	    

   _svnmod="ftgl"
   _svntrunk="https://ftgl.svn.sourceforge.net/svnroot/ftgl/trunk"

  #some headers are not in the official package... o_O
  msg "Getting headers for ftgl..."
   if [ -d ${_svnmod}/.svn ]; then
    cd ${_svnmod} && svn up 
   else
    svn co ${_svntrunk} --config-dir ./ ${_svnmod}
  fi

   cd "${srcdir}/ros" || return 1

  # Set variables necessary to compile th package
  #it seems "configure --with-ftgl=/usr" doesn't work... CSF_FTGL_INCLUDES and CSF_FTGL_LIB are never set in the Makefile... so we must be sure to have the headers... o_O
  export CXXFLAGS=$CXXFLAGS" -ffriend-injection -fpermissive -I${srcdir}/${_svnmod}/src -I${srcdir}/${_svnmod}/src/FTFont -I${srcdir}/${_svnmod}/src/FTGL -I${srcdir}/${_svnmod}/src/FTGlyph -I${srcdir}/${_svnmod}/src/FTLayout "`pkg-config --cflags freetype2`

  export CASROOT="\"${srcdir}/${pkgname}-${pkgver}/ros\""

  rm env.sh env.csh || return 1
  source "${srcdir}/env.sh"

  # Adjusts reference to X11 libraries and headers
  for _FILE in `grep -R -l "/usr/X11R6/lib" src/*`
  do
    sed -e "s|/usr/X11R6/lib|/usr/lib/X11|g" -i $_FILE
  done
#useless yet, it seems
#  for _FILE in `grep -R -l "/usr/X11R6/include" src/*`
# do
#  sed -e "s|/usr/X11R6/include|/usr/include/X11|g" -i $_FILE
# done

  # Adjusts DESTDIR prefix in Makefile.am and reconfigures files
  sed -e "s| \$(prefix)| \$(DESTDIR)\$(prefix)|g" -i Makefile.am

  autoreconf -f -i

  # And now we can build our libraries...
  ./configure --with-ftgl=/usr --with-tcl=/usr/lib --with-tk=/usr/lib --disable-debug --enable-production --with-java-include=${JAVA_HOME}/include --prefix=${_installdir} || return 1

  make || return 1
}

package(){
   cd "${srcdir}/ros" || return 1

  make install DESTDIR="${pkgdir}" || return 1

  # I prefer having a link to a more standard dir
  ln -s ./inc "${pkgdir}${_installdir}/include" || return 1

  # Install a file containing instruction necessary to link against these libraries
  install -D -m644 "${srcdir}/opencascade.conf" "${pkgdir}/etc/ld.so.conf.d/opencascade.conf" || return 1

  # Copy the profile file
  install -D -m 755 "${srcdir}/opencascade.sh" "${pkgdir}/etc/profile.d/opencascade.sh" || return 1
  install -m 755 "${srcdir}/env.sh" "${pkgdir}${_installdir}" || return 1
  rm -f "${pkgdir}${_installdir}/env_DRAW.sh" || return 1

  # Copy the license files
   install -D -m 644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" || return 1
}
Anciens fichiers requis (aucune modification):
- PKGBUILD naturellement
- opencascade.install
- opencascade.conf
- opencascade.sh
- env.sh

J'ai juste testé un lancement de l'application:

Code : Tout sélectionner

source /etc/profile.d/opencascade.sh
/opt/opencascade/bin/DRAWEXE
, ça à l'air de marcher (en tous cas, y a un machin qui se lance :mrgreen: )... mais je n'ai pas été plus loin avec ce logiciel qui m'est totalement inconnu.

Dans les grandes lignes, il y a eu deux problèmes, réglés salement (je ne suis pas un expert en compilation c/c++):
- récupération de *tous* les headers ftgl via svn pour la compilation... (j'ai passé trois plombes avant de capter que ni ftgl, ni ftgl-svn ne donnaient tous les .h requis ( je ne me suis pas penché plus avant sur la question, mais je trouve ça TRES louche, pourquoi certains en-têtes seraient présents et pas d'autres ?)
- Certaines options n'avaient pas l'air de marcher côté du ./configure (à commencer par --with-ftgl... les chemins vers ftgl restaient vides...), donc j'ai passé les options de compilation comme une brute...

... c'est très laid... Pour faire plus propre, il faudrait commencer par rajouter un paquet ftgl-headers... et voir ce qui cloche avec le ./configure... et voir s'il faut construire plus ou moins de choses (je n'ai aucune idée de ce qu'il faut, j'ai repris les options de base du build précédent... plus la partie à compiler avec ftgl).

Par rapport à la version 6.3.0 Je n'ai pas cherché à inclure les deux patchs. Je serais surpris que le premier soit encore d'actualité (6.3.0 > 6.3.1 :non: ), par contre il faudrait vérifier si le second a été corrigé (le problème sur les numéros de version signalé dans le précédent PKGBUILD).

Voilà, sans plus de garantie. A tester. :chinois:
«The following statement is not true. The previous statement is true.» :nage:
Archimage
Daikyu
Messages : 68
Inscription : lun. 27 sept. 2010, 16:53

Re: [Opencascade] Paquet orphelin ? (en cours)

Message par Archimage »

Bravo ! Tu as toujours les bonnes réponses, et tu as réussi malgré tout le temps que ça prend... :bravo:

Ca marche chez moi aussi, je pense que j'aurais pu mettre beaucoup de temps pour y arriver, et encore je n'en suis pas sûr...

Tout se compile bien, cependant il y a un petit problème qui apparait lors de la compilation du paquetage d'utilisation finale

freecad-svn

Bon il n'est pas sans défauts, il faut faire une petite modification de pyqt en python-qt, mais ça va jusque là il se compilait avec opencascade 6.3.

Là je bute sur cette erreur quand il arrive à la construction de freecad :

libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -I/opt/opencascade/inc -I././inc/ -D_OCC64 -g -D_DEBUG -D_REENTRANT -Wall -Wno-sign-compare -Wno-switch -Wno-reorder -Wno-unused -Wno-parentheses -Wno-comment -march=x86-64 -mtune=generic -O2 -pipe -Wno-deprecated -frtti -MT SMESH_MeshEditor.lo -MD -MP -MF .deps/SMESH_MeshEditor.Tpo -c ././src/SMESH/SMESH_MeshEditor.cpp -fPIC -DPIC -o .libs/SMESH_MeshEditor.o
././src/SMESH/SMESH_MeshEditor.cpp: In function 'bool getClosestUV(Extrema_GenExtPS&, const gp_Pnt&, gp_XY&)':
././src/SMESH/SMESH_MeshEditor.cpp:2208:22: error: 'class Extrema_GenExtPS' has no member named 'Value'
././src/SMESH/SMESH_MeshEditor.cpp:2209:28: error: 'class Extrema_GenExtPS' has no member named 'Value'
make[4]: *** [SMESH_MeshEditor.lo] Erreur 1
make[4]: quittant le répertoire « /tmp/yaourt-tmp-user/aur-freecad-svn/src/freecad/src/3rdParty/salomesmesh »


Alors j'ai essayé de refléchir à ce que c'est, puis j'ai cherché dans le pkgbuild d'opencascade 6.3

et j'ai trouvé cette ligne qui contient des informations sur salome :

# Apply patch available on www.salome-platform.org for Service Pack 9
# applying this patch we should obtain something symilar to version 6.3.1
patch -Np1 -i "${srcdir}/opencascade-6.3.0sp9.diff" || return 1

Comme je n'ai pas les connaissances requises pour confirmer si le problème vient de là, ou pour fabriquer un patch, je m'en refère à ta bienveillance et ta sagacité ! :chinois:
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Opencascade] Paquet orphelin ? (en cours)

Message par FoolEcho »

En premier lieu faudrait déjà être savoir si freecad est compatible avec opencascade 6.5 (la doc indique >= 5.2 ... mais après ça dépend si opencascade a évolué fortement ).

Pour l'erreur de compilation, c'est pas impossible puisque la classe Extrema_GenExtPS vient d'opencascade... Faudrait voir les modifications qu'il y a eu au niveau de l'en-tête de la classe sur les versions précédentes.

... mais si patch cela nécessite ça sera au-delà de mes compétences.

Pour ma part, je n'arrive déjà pas à passer le configure... :evil:

Code : Tout sélectionner

checking for boost... configure: error: failed
J'ai bien installé "boost" (absent des dépendances alors qu'il est marqué comme pré-requis dans le svn de freecad... ... et je ne parle même pas du flou artistique sur python... ... m'enfin bref) et tenté de le passer au configure mais rien à faire... de toutes manières, au mieux je tomberai sur ton erreur.

... je verrais un peu mais je ne vais pas passer le week-end à chercher.


EDIT: j'ai quand même épluché un peu les sources.
Effectivement dans opencascade 6.5, la classe Extrema_GenExtPS n'a pas d'opération 'Value'... alors qu'elle existait dans la 6.3 ... ( 'tain les gars... et la compatibilité dans vos trucs ! :twisted: )... Bon, c'est au code de freecad de s'adapter. ...
j'ai mal à la tête :|

EDIT2:
Code d'opencascade 6.3:

Code : Tout sélectionner

Standard_Real Extrema_GenExtPS::Value (const Standard_Integer N) const
{
  if (!IsDone()) { StdFail_NotDone::Raise(); }
  return myF.Value(N);
}
Code d'opencascade 6.5:

Code : Tout sélectionner

Standard_Real Extrema_GenExtPS::SquareDistance (const Standard_Integer N) const
{
  if (!IsDone()) { StdFail_NotDone::Raise(); }
  return myF.SquareDistance(N);
}
A vérifier qu'elle font bien la même chose quand même, on n'ait jamais trop prudent... :mrgreen: ... mais un patch bien senti devrait convenir (attention quand même...): "Value" à remplacer par "SquareDistance".

j'ai encore mal à la tête... mais il y a au moins un peu d'espoir d'y arriver :)
Dernière modification par FoolEcho le sam. 12 mars 2011, 11:19, modifié 1 fois.
«The following statement is not true. The previous statement is true.» :nage:
Archimage
Daikyu
Messages : 68
Inscription : lun. 27 sept. 2010, 16:53

Re: [Opencascade] Paquet orphelin ? (en cours)

Message par Archimage »

Merci en tout cas pour ton aide précieuse !

En ce qui concerne Boost, j'avais repéré ce problème et signalé aux developpeurs de Freecad, en fait on est obligé de faire un downgrade à la 1.45 pour que ça marche.

Je les ai prévenus aussi du problème de compilation d'Opencascade.

Je pense effectivement qu'il ne faut pas passer des plombes à chercher la solution ça devient trop compliqué, ils arriveront avec des éléments de réponse et j'essaierai de rebondir dessus, dans tous les cas je laisse ce topic ouvert pour une éventuelle progression !

:copain:
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Opencascade] Paquet orphelin ? (en cours)

Message par FoolEcho »

Archimage a écrit :En ce qui concerne Boost, j'avais repéré ce problème et signalé aux developpeurs de Freecad, en fait on est obligé de faire un downgrade à la 1.45 pour que ça marche.
Bon à savoir, je n'aurais pas trouvé. :chinois:

Sinon, vois les edit que j'ai fait dans l'intervalle, ça avance. ;-)

Comme ça tu pourras signaler à freecad qu'ils mettent leur code à jour (ou faire le patch toi-même, c'est déjà un peu plus simple, là) :D
«The following statement is not true. The previous statement is true.» :nage:
Archimage
Daikyu
Messages : 68
Inscription : lun. 27 sept. 2010, 16:53

Re: [Opencascade] Paquet orphelin ? (en cours)

Message par Archimage »

Il y a du nouveau :

http://sourceforge.net/apps/phpbb/free- ... e&start=10

En fait un des developpeurs de Freecad a réussi à réussi à compiler Opencascade mais en utilisant cette source :

https://mail.gna.org/public/pythonocc-u ... 00022.html

C'est une version patchée telechargée via git depuis ce lien : git clone git://git.debian.org/debian-science/packages/opencascade.git qui résoud le problème Extrema que nous avons rencontré.

Y-a-t-il un moyen de fabriquer le patch à partir de la différence entre les 2 fichiers ? ou bien d'adapter le pkgbuild pour telecharger depuis git ?
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Opencascade] Paquet orphelin ? (en cours)

Message par FoolEcho »

Adapte le build pour récupèrer depuis le git (le fontionnement est similaire à svn) et voit si ça marche déjà.
Cf. le vieux wiki pour l'exemple de base: http://oldwiki.archlinux.fr/Arch/pkgbui ... on_version

Tu as aussi plein d'exemples sur Aur de paquet-git pour t'aider au besoin.

... ceci dit... n'en déplaise à freecad, si j'avais à le faire, c'est leur code que je patcherai, pas celui d'opencascade (... quand on se base sur un code tiers... même opensource... on doit s'adapter... ... c'est fastidieux, mais dans un bon environnement de développement ça ne doit pas poser beaucoup de problèmes). En plus, considère une utilisation du paquet opencascade pour d'autres applications, ça foutra le code des autres en l'air, c'est totalement illogique... ou alors faut faire un paquet freecad qui intègre leur propre version d'opencascade... ce qui signifie qu'elle reste bloquée sur une vieille version ou qu'il y a une version en parallèle... Pour la maintenance et l'évolution du code, c'est n'importe quoi (y a qu'à voir les builds qu'il faut pondre derrière...). :copain:
Bref: :aimepas: :mrgreen:

... *si* je trouve le temps (dans la semaine plutôt), je verrai si un patch de freecad est faisable vite fait bien fait (ça dépend si ça touche beaucoup de code ou non... l'idéal serait que ça ne concerne que la branche tiers...)...
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Opencascade] Paquet orphelin ? (en cours)

Message par FoolEcho »

(tant pis pour le double post... mais ça se justifie)

:marche:

Patch pour freecad-svn (opencascade reste le 6.5.0 présenté plus haut, non patché -- freecad reste le svn... sinon j'aurais mis -git ;-) ):
freecad.diff (à placer avec le PKGBUILD)

Code : Tout sélectionner

diff -cr old_src//freecad/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp new_src//freecad/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp
*** old_src//freecad/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp	2011-03-13 10:21:14.832281625 +0100
--- freecad/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp	2011-03-13 10:17:19.460595577 +0100
***************
*** 2205,2212 ****
    if ( projector.IsDone() ) {
      double u, v, minVal = DBL_MAX;
      for ( int i = projector.NbExt(); i > 0; i-- )
!       if ( projector.Value( i ) < minVal ) {
!         minVal = projector.Value( i );
          projector.Point( i ).Parameter( u, v );
        }
      result.SetCoord( u, v );
--- 2205,2212 ----
    if ( projector.IsDone() ) {
      double u, v, minVal = DBL_MAX;
      for ( int i = projector.NbExt(); i > 0; i-- )
!       if ( projector.SquareDistance( i ) < minVal ) {
!         minVal = projector.SquareDistance( i );
          projector.Point( i ).Parameter( u, v );
        }
      result.SetCoord( u, v );
diff -cr old_src//freecad/src/3rdParty/salomesmesh/src/SMESH/SMESH_Pattern.cpp new_src//freecad/src/3rdParty/salomesmesh/src/SMESH/SMESH_Pattern.cpp
*** old_src//freecad/src/3rdParty/salomesmesh/src/SMESH/SMESH_Pattern.cpp	2011-03-13 10:21:14.832281625 +0100
--- freecad/src/3rdParty/salomesmesh/src/SMESH/SMESH_Pattern.cpp	2011-03-13 11:05:38.320707860 +0100
***************
*** 436,443 ****
    }
    double u, v, minVal = DBL_MAX;
    for ( int i = theProjectorPS.NbExt(); i > 0; i-- )
!     if ( theProjectorPS.Value( i ) < minVal ) {
!       minVal = theProjectorPS.Value( i );
        theProjectorPS.Point( i ).Parameter( u, v );
      }
    return gp_XY( u, v );
--- 436,443 ----
    }
    double u, v, minVal = DBL_MAX;
    for ( int i = theProjectorPS.NbExt(); i > 0; i-- )
!     if ( theProjectorPS.SquareDistance( i ) < minVal ) {
!       minVal = theProjectorPS.SquareDistance( i );
        theProjectorPS.Point( i ).Parameter( u, v );
      }
    return gp_XY( u, v );

(*pfff* ... 2 pauvres classes à retoucher... même pas drôle... j'comprends qu'il préfère rester avec opencascade debian XD ... je blague hein, je ne sais pas ce qu'ils font)

Modifier le build de freecad-svn:

Code : Tout sélectionner

depends=('xerces-c' 'gts' 'opencascade' 'soqt' 'qt' 'opencv' 'boost'=1.45.0 'python2' 'curl' 'eigen' 'swig' 'python-qt' 'pivy-hg' 'gcc-fortran')
...
source=(
        "${pkgname}.desktop"
	"freecad.diff"
	)
md5sums=(
        '68651e7273e692b52ae78da474e97ba9'
	'2c62d0660d5956d74ea810819563573e')
...
build() {
...
  msg 'SVN checkout done or server timeout'

  cd ${srcdir}
  patch -p0 < ${srcdir}/freecad.diff || return 1
  cd ${_svnmod}

  ./autogen.sh

  ./configure \
    --prefix=/opt/freecad-svn \
    --with-qt4-dir=/usr/lib/qt/ \
    --with-qt4-bin=/usr/bin/ \
    --with-qt4-include=/usr/include/ \
    --with-qt4-lib=/usr/lib/qt/ \
    PYTHON=/usr/bin/python2 \
   --with-python-include=/usr/include/python2.7/ \
    --with-python-lib=/usr/lib/python2.7/ \
    --with-boost-include=/usr/include/boost \
    --with-boost-lib=/usr/lib \
    --with-occ-lib=/opt/opencascade/lib \
    --with-occ-include=/opt/opencascade/include  \
...
}
...
Tout compile (long encore une fois) et l'application se lance (bon, après encore une fois, à tester par un habitué... et/ou voir ce qu'apporte l'opencascade patché de debian):

Code : Tout sélectionner

/opt/freecad-svn/bin/FreeCAD 
Tant que j'y pense, il faudra retoucher la mise en paquet d'opencascade (le précédent mainteneur n'a pas fait la transition inc > include, du coup on se retrouve avec /opt/opencascade/inc et /opt/opencascade/include ).
Au niveau freecad-svn, spécifier que boost=1.45 dans les dépendances (après tant pis, c'est à l'utilisateur de récupèrer la version depuis ARM)... vérifier les dépendances d'ailleurs (j'ai juste mis les bons paquets python)...

Nettoyer donc... mais ça se rapproche de ce que tu voulais. Tu pourras peut-être bientôt reprendre les paquets en main.

(j'ai bien mérité du repos) :cocktail:
«The following statement is not true. The previous statement is true.» :nage:
Archimage
Daikyu
Messages : 68
Inscription : lun. 27 sept. 2010, 16:53

Re: [Opencascade] Paquet orphelin ? (en cours)

Message par Archimage »

Bravo ! :bravo:

Tu mérites une ovation :chinois:

Tout marche bien,

il reste quelques minuscules retouches pour que tout soit propre !

Je testerai ça pendant une semaine avant de prendre le paquet sous mon aile, enfin juste pour la forme parceque je sais qu'il y a encore bcp à apprendre !

En tout cas merci beaucoup !
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Opencascade] Paquet orphelin ? (en cours)

Message par FoolEcho »

Du bol que ça n'ait pas été plus tordu à patcher (l'avantage étant que le patch ne concernait qu'un module tiers). 8)
Reste à voir à l'usage. :chinois:

:cocktail:
«The following statement is not true. The previous statement is true.» :nage:
Archimage
Daikyu
Messages : 68
Inscription : lun. 27 sept. 2010, 16:53

Re: [Opencascade] Paquet orphelin ? (en cours)

Message par Archimage »

Au fait, comment tu as fait pour trouver le problème et déterminer le patch ? pour la méthodologie
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Opencascade] Paquet orphelin ? (en cours)

Message par FoolEcho »

Par l'erreur de compilation que tu as signalé plus tôt sur la classe SMESH_MeshEditor (avant que je ne puisse compiler du fait de boost): sur le fait que la fonction "Value" était inconnue pour la classe Extrema_GenExtPS d'opencascade 6.5.
Je me suis procuré la version d'opencascade 6.3 à partir du build resté sur Aur puisque tu disais que ça compilait encore avec. Un "diff" entre les deux versions de Extrema_GenExtPS.cpp pour voir qu'en fait la fonction semblait simplement avoir été renommée.

(j'fais du développement objet aussi, alors java ou c++ c'est kif-kif à lire pour moi)

Ensuite j'ai simplement fait une copie de travail du freecad-svn en m'attelant sur les classes qui plantaient lors des compilations successives: SMESH_MeshEditor et SMESH_Pattern. En cherchant sur quelle(s) fonction(s) de ces classes intervenait Extrema_GenExtPS (de façon à voir le nom de la variable puis à voir si "Value" intervenaient... ce qui revenait aux lignes sorties de la compilation... mais il pouvait y en avoir plus). Recherche un peu plus fine que de chercher partout où intervenait Extrema_GenExtPS.

"diff" récursif classique par la suite pour aboutir au patch, inclu dans le build... et reprise de la compilation.
En deux passes c'était réglé, coup de bol.

Si les "dégâts" avaient été plus important (disons sur la passe 4 ou 5, j'en aurais eu marre), j'aurais fait un diff à la hache sur l'ensemble d'opencascade 6.5 et la 6.3 (voire la version patchée de Debian), pour évaluer l'ensemble des changements, mais comme la 6.5 fait pratiquement le double, bonjour...

Comme je disais précédemment, c'est nettement plus maintenable (et plus logique: c'est freecad qui a besoin d'opencascade, pas l'inverse) de patcher freecad-svn au besoin... et si possible (d'autant qu'il m'aurait fallu compiler opencascade de nouveau... :mrgreen: )... mais si freecad fait le choix délibéré de se baser sur l'opencascade patché de debian pour ses développements, ça risque de sérieusement compliquer la question à l'avenir (alors que ça pourrait être si simple... alors que ça l'est encore :? ).
«The following statement is not true. The previous statement is true.» :nage:
Répondre