Une place pour une véritable innovation. Partagez vos propres utilitaires créés avec la communauté Manjaro.
Questions et discussions sur la programmation et le codage.
Répondre

PKGBUILD pour ffdiaporama 2.2

#1Messageil y a 9 ans

Bonjour @ tous

Edit du 28/01/15:
Le paquet est dispo sur Aur :

yaourt ffdiaporama-2.2-patched


Je fais suite ici au message "ffdiaporama 2.1 erreur à la compilation".
Les fichiers sources présentant des bugs, Xerian a proposé un patch qui fonctionne avec la version ffdiaporama-devel 2.2.
Seulement , cette procédure implique une compilation en local indépendamment de pacman , ce qui pourrait posé des problèmes lors de la désinstallation, mise à jour et gestion de dépendances.
Votre serviteur s'est donc mis en quête de tenter bidouiller un PKGBUILD maison pour pouvoir l'installer plus conventionnellement.
Ce PKGBUILD pointe vers la nouvelle version 2.2-devel en supprimant la dépendance ffdiaporama-rcs indiquée dans la version précédente 2.1.
Les sommes de contrôles ont aussi été modifiée comme suggéré par Loubrix.
Ne pouvant copier/coller le patch dans les sous-dossiers concernés à partir de la fonction build() ,j'ai utilisé une redirection avec cat >
Ça part bien mais je rencontre des erreurs lors de l'application du patch...
Voici où j'en suis:
1) On crée un dossier dans le homme nommé "ffdiaporama" et on s'y rend:

mkdir ffdiaporama
cd ffdiaporama

2) On copie ce qui suit :

# Maintainer: boenki <boenki at gmx dot de>

pkgname=ffdiaporama
pkgver=2.2
pkgrel=2
pkgdesc="Movie creator from photos and video clips"
arch=('i686' 'x86_64')
url="http://ffdiaporama.tuxfamily.org"
license=('GPL2')
conflicts=('ffdiaporama-devel')
depends=('qt5-svg' 'qt5-tools' 'qt5-imageformats' 'ffmpeg' 'exiv2' 'shared-mime-info' )
optdepends=('ffdiaporama-texturemate: Additional background-images'
            'ffdiaporama-openclipart: use the openclipart-library')
install=
source=(http://ffdiaporama.tuxfamily.org/script/GetPackage.php?f=ffdiaporama_bin_2.2.devel.2014.0701.tar.gz)
sha256sums=(3523bde8b3f657dbc48efe8f55357de45c2c5a016e65c6744194d91b29c5347b)

build() {
      cd ..
      cat ffmpeg-2.5.0.patch > $srcdir/ffDiaporama/ffmpeg-2.5.0.patch
      cd $srcdir/ffDiaporama
      patch -p0 -l <ffmpeg-2.5.0.patch
      qmake-qt5 ffDiaporama.pro
      make
       }

package() {
  cd "$pkgname-$pkgver"
  make install INSTALL_ROOT=$pkgdir
  find $pkgdir/usr/share -type f -exec chmod 644 {} +


Et donc on crée le PKGBUID :

nano PKGBUILD

Et on colle la sélection dans avec la combinaison de touche [Ctrl]+[Maj]+[V]
[Ctrl]+[X] pour sortir [O] pour enregistrer

3) On copie le patch proposé par Xerian

    --- src/ffDiaporama/engine/cDeviceModelDef.h.org   2015-01-22 13:24:45.448129937 +0100
    +++ src/ffDiaporama/engine/cDeviceModelDef.h   2015-01-22 13:13:31.674158297 +0100
    @@ -84,11 +84,16 @@
     #elif (LIBAVUTIL_VERSION_MICRO>=100)&&(LIBAVCODEC_VERSION_MICRO>=100)&&(LIBAVFORMAT_VERSION_MICRO>=100)&&(LIBAVDEVICE_VERSION_MICRO>=100)&&(LIBAVFILTER_VERSION_MICRO>=100)&&(LIBSWSCALE_VERSION_MICRO>=100)
         #define FFMPEG
         #include "libswresample/swresample.h"
    -    #define RESAMPLE_MAX_CHANNELS SWR_CH_MAX
         #include "libavfilter/avcodec.h"
         #include "libavfilter/buffersink.h"
         #include "libavfilter/buffersrc.h"
    -    #if     ((LIBAVUTIL_VERSION_INT>=AV_VERSION_INT(52,66,100))&&(LIBAVCODEC_VERSION_INT>=AV_VERSION_INT(55,52,102))&&(LIBAVFORMAT_VERSION_INT>=AV_VERSION_INT(55,33,100))&& \
    +    #if     ((LIBAVUTIL_VERSION_INT>=AV_VERSION_INT(54,15,100))&&(LIBAVCODEC_VERSION_INT>=AV_VERSION_INT(56,13,100))&&(LIBAVFORMAT_VERSION_INT>=AV_VERSION_INT(56,15,102))&&   \
    +             (LIBAVDEVICE_VERSION_INT>=AV_VERSION_INT(56,3,100))&&(LIBAVFILTER_VERSION_INT>=AV_VERSION_INT(5,2,103))&&(LIBSWSCALE_VERSION_INT>=AV_VERSION_INT(3,1,101))&&   \
    +             (LIBSWRESAMPLE_VERSION_INT>=AV_VERSION_INT(1,1,100)))
    +   #define FFMPEGVERSIONINT    250
    +        #define FFMPEGVERSION       "FFmpeg 2.5 or higher"
    +        #define RESAMPLE_MAX_CHANNELS 32
    +    #elif     ((LIBAVUTIL_VERSION_INT>=AV_VERSION_INT(52,66,100))&&(LIBAVCODEC_VERSION_INT>=AV_VERSION_INT(55,52,102))&&(LIBAVFORMAT_VERSION_INT>=AV_VERSION_INT(55,33,100))&& \
                  (LIBAVDEVICE_VERSION_INT>=AV_VERSION_INT(55,10,100))&&(LIBAVFILTER_VERSION_INT>=AV_VERSION_INT(4,2,100))&&(LIBSWSCALE_VERSION_INT>=AV_VERSION_INT(2,5,102))&&   \
                  (LIBSWRESAMPLE_VERSION_INT>=AV_VERSION_INT(0,18,100)))
             #define FFMPEGVERSIONINT    220
    @@ -108,6 +113,13 @@
         #else
             // unsupported version
         #endif
    +
    +    #if (FFMPEGVERSIONINT >=250)
    +   #define RESAMPLE_MAX_CHANNELS 32
    +    #else
    +   #define RESAMPLE_MAX_CHANNELS SWR_CH_MAX
    +    #endif
    +
     #endif
     }
     
    --- src/ffDiaporama/engine/_EncodeVideo.cpp.org   2015-01-22 13:25:34.059342575 +0100
    +++ src/ffDiaporama/engine/_EncodeVideo.cpp   2015-01-22 13:16:47.545645063 +0100
    @@ -416,6 +416,9 @@
         VideoStream->codec->height              =ImageHeight;
         VideoStream->codec->pix_fmt             =PIX_FMT_YUV420P;
         VideoStream->codec->time_base           =VideoFrameRate;
    +    #if FFMPEGVERSIONINT>=250
    +      VideoStream->time_base                  = VideoFrameRate;   //new ffmpeg 2.5.0!!!!
    +    #endif
         VideoStream->codec->sample_aspect_ratio =PixelAspectRatio;
         VideoStream->sample_aspect_ratio        =PixelAspectRatio;
         VideoStream->codec->gop_size            =12;

Et donc :

nano ffmpeg-2.5.0.patch

On colle et on sauvegarde comme précédemment .

4) On lance makepkg avec l'option "-s" pour installer automatiquement les dépendances manquantes.:

makepkg -s


La récupération des sources ,le contrôle et le lancement du patch fonctionne jusqu'à....

[steph@manjaro ffdiaporama]$ makepkg -s
==> Création du paquet ffdiaporama 2.2-2 (mar. janv. 27 06:22:19 CET 2015)
==> Vérification des dépendances pour l’exécution...
==> Vérification des dépendances pour la compilation...
==> Récupération des sources...
  -> GetPackage.php?f=ffdiaporama_bin_2.2.devel.2014.0701.tar.gz trouvé
==> Validation des fichiers sources avec sha256sums...
    GetPackage.php?f=ffdiaporama_bin_2.2.devel.2014.0701.tar.gz ... Réussite
==> Extraction des sources...
  -> Extraction de GetPackage.php?f=ffdiaporama_bin_2.2.devel.2014.0701.tar.gz avec bsdtar
==> Lancement de build()...
(Patch is indented 4 spaces.)
patching file src/ffDiaporama/engine/cDeviceModelDef.h
patch: **** malformed patch at line 7: (LIBAVUTIL_VERSION_MICRO>=100)&&(LIBAVCODEC_VERSION_MICRO>=100)&&(LIBAVFORMAT_VERSION_MICRO>=100)&&(LIBAVDEVICE_VERSION_MICRO>=100)&&(LIBAVFILTER_VERSION_MICRO>=100)&&(LIBSWSCALE_VERSION_MICRO>=100)

==> ERREUR : Une erreur s’est produite dans build().

Bon ,je fais une pause. Si quelqu'un a une idée...

PKGBUILD pour ffdiaporama 2.2

#2Messageil y a 9 ans

ben j'en ai fait un qui marche:

# Maintainer: boenki <boenki at gmx dot de>

pkgname=ffdiaporama
pkgver=2.2
pkgrel=2
pkgdesc="Movie creator from photos and video clips"
arch=('i686' 'x86_64')
url="http://ffdiaporama.tuxfamily.org"
license=('GPL2')
conflicts=('ffdiaporama-devel')
depends=('qt5-svg' 'qt5-tools' 'qt5-imageformats' 'ffmpeg' 'exiv2' 'shared-mime-info' )
optdepends=('ffdiaporama-texturemate: Additional background-images'
            'ffdiaporama-openclipart: use the openclipart-library')
#install=$pkgname.install
source=(http://ffdiaporama.tuxfamily.org/script/GetPackage.php?f=ffdiaporama_bin_2.2.devel.2014.0701.tar.gz
        ffmpeg-2.5.0.patch)
sha256sums=('3523bde8b3f657dbc48efe8f55357de45c2c5a016e65c6744194d91b29c5347b'
            'SKIP')

build() {
      cd $srcdir/ffDiaporama
      patch -p0 -l <../ffmpeg-2.5.0.patch
      qmake-qt5 ffDiaporama.pro
      make
       }
       
package() {
      cd "$pkgname-$pkgver"
      make install INSTALL_ROOT=$pkgdir
      find $pkgdir/usr/share -type f -exec chmod 644 {} +   
      }

mais le problème est maintenant au niveau de la compilation:

Project MESSAGE: Linux x86_64 build
Project MESSAGE: Use ffmpeg in /usr/include
Project ERROR: Unknown module(s) in QT: multimedia
Makefile:68 : la recette pour la cible « sub-src-ffDiaporama-make_first » a échouée
make: *** [sub-src-ffDiaporama-make_first] Erreur 3
==> ERREUR : Une erreur s’est produite dans build().
    Abandon...

donc on dirait bien qu'il manque une dépendance...

edit: il manquait qt5-multimedia, mais c'est long, j'attends de voir si ça compile et si ça crée le paquet...

PKGBUILD pour ffdiaporama 2.2

#3Messageil y a 9 ans

On progresse!
Mon erreur venait du fait que je ne mentionnais pas le patch dans les sources...
J'ai rajouté qt5-multimédia dans les dépendances.
Je suis arrivé à la même commande que vous (Loubrix et Xerian) :

patch -p0 -l <../ffmpeg-2.5.0.patch

Qu'on le place en prepare(), ou en build() le retour reste identique:

(Patch is indented 4 spaces.)
patching file src/ffDiaporama/engine/cDeviceModelDef.h
patch: **** malformed patch at line 7: (LIBAVUTIL_VERSION_MICRO>=100)&&(LIBAVCODEC_VERSION_MICRO>=100)&&(LIBAVFORMAT_VERSION_MICRO>=100)&&(LIBAVDEVICE_VERSION_MICRO>=100)&&(LIBAVFILTER_VERSION_MICRO>=100)&&(LIBSWSCALE_VERSION_MICRO>=100)

==> ERREUR : Une erreur s’est produite dans build().
    Abandon...

PKGBUILD pour ffdiaporama 2.2

#4Messageil y a 9 ans

ça y est j'en ai un fonctionnel (paquet créé):

# Maintainer: boenki <boenki at gmx dot de>

pkgname=ffdiaporama-patched
pkgver=2.2
pkgrel=2
pkgdesc="Movie creator from photos and video clips"
arch=('i686' 'x86_64')
url="http://ffdiaporama.tuxfamily.org"
license=('GPL2')
conflicts=('ffdiaporama-devel')
depends=('qt5-svg' 'qt5-tools' 'qt5-imageformats' 'ffmpeg' 'exiv2' 'shared-mime-info' 'qt5-multimedia')
optdepends=('ffdiaporama-texturemate: Additional background-images'
            'ffdiaporama-openclipart: use the openclipart-library')
#install=$pkgname.install
source=(http://ffdiaporama.tuxfamily.org/script/GetPackage.php?f=ffdiaporama_bin_2.2.devel.2014.0701.tar.gz
        ffmpeg-2.5.0.patch)
sha256sums=('3523bde8b3f657dbc48efe8f55357de45c2c5a016e65c6744194d91b29c5347b'
            '3925de8e10b9671aaf292680fbf2b7ec1181f1fad1c60a70797157215027e73d')

build() {
      cd $srcdir/ffDiaporama
      patch -p0 -l <../ffmpeg-2.5.0.patch
      qmake-qt5 ffDiaporama.pro
      make
       }
       
package() {
      cd $srcdir/ffDiaporama
      make install INSTALL_ROOT=$pkgdir
      find $pkgdir/usr/share -type f -exec chmod 644 {} +   
      }

alors y a deux ou trois trucs qui m'ennuie si on veut le mettre sur AUR (j'ai d'ailleurs changé le nom du paquet dans cet optique, reste à ajouter la raison du patch dans la description); déjà la numérotation de version ne va pas puisqu'elle est en dur (première mise à jour upstream, le paquet ne construira plus).
l'autre truc qui me chiffonne c'est que je sais pas trop si les dépendances Qt5 sont utiles au fonctionnement ou juste à la compilation (depends ou makedepends); et surtout, je l'ai fait sous Kde, où j'ai forcément plein de paquets Qt5 déjà installés, donc il faut quelqu'un pour tester dans d'autres environnements pour voir s'il ne manque rien (et aussi tester en 32).

et puis j'ai pas trop envie de l'installer, donc à vous de jouer pour voir si le soft fonctionne...

@ Lemust: tu as un compte sur AUR pour le mettre (sans oublier le patch) ? si oui, pense à ajouter ton nom dans l'entête...

PKGBUILD pour ffdiaporama 2.2

#5Messageil y a 9 ans

Je rencontre la même erreur avec ton dernier PKGBUILD , outre le fait que j'ai remis 'SKIP' pour la somme du patch .
Pour l'hébergement ,quand tout sera OK, pas de problème , mais j'aimerai que Xerian accepte que je le mentionne pour son patch.
De là, soit on fourni le code source déjà patché sur Sourceforge par exemple où j'y ai aussi un compte et on pointe le PKGBUILD dessus, soit on donne uniquement le PKGBUILD sur Aur et la recette du patch...

PKGBUILD pour ffdiaporama 2.2

#6Messageil y a 9 ans

tu as bien mis le patch dans le même répertoire que le PKGBUILD ?
et puis fais attention en copiant le patch de ne pas avoir de lignes coupées...

tiens, au pire je te file le mien (comme ça on teste ce dont on parlait hier ;) )

PKGBUILD pour ffdiaporama 2.2

#7Messageil y a 9 ans

:bien
Bingo! C'était bien un problème lors de la copie du patch. Comprend pas pourquoi ,mais avec la copie que tu as donné ça le fait .
Le paquet s'installe bien sous Xfce avec les dépendances indiquées.(même si je préfère Openshot)
Je propose avec l'accord de Xerian d'héberger sur Sourceforge le patch sous forme d'archive que pointerait le PKGBUILD.
Par contre ,nous sommes au moins trois à avoir bossé sur ce PKGBUILD . Je met tout le monde dans l'entête ?

PKGBUILD pour ffdiaporama 2.2

#8Messageil y a 9 ans

(même si je préfère Openshot)

:salut: Pas tout à fait le même combat.Les deux se complètent, d'ailleurs.

PKGBUILD pour ffdiaporama 2.2

#9Messageil y a 9 ans

lemust83 a écrit :Par contre ,nous sommes au moins trois à avoir bossé sur ce PKGBUILD . Je met tout le monde dans l'entête ?

je serais même d'avis, plutôt que nos noms, que tu mettes "The Manjaro.fr dev team" :siffle

au fait, la somme de contrôle que j'ai mis pour le patch correspond à mon fichier, donc tu peux la laisser et quand à héberger le patch, tu peux l'uploader sur AUR normalement: les petits fichiers textes sont autorisés.
et surtout ne fournis pas les sources déjà patchées, c'est contraire à la philosophie Arch

PS: enlève le "dev", c'est un peu trop pompeux... :fetard:

PKGBUILD pour ffdiaporama 2.2

#10Messageil y a 9 ans

Ok. Je vois ça demain.

PKGBUILD pour ffdiaporama 2.2

#11Messageil y a 9 ans

Bien joué, pas de problèmes pour la diffusion du patch... J'ai bien : Manjaro.fr Team ... ou alors Manjaro.fr Dev Dream Team ... (un peu long mais modeste :-) ) ....

PKGBUILD pour ffdiaporama 2.2

#12Messageil y a 9 ans

Si je peux donner mon avis, je ne mettrais pas Team puisque dans les intervenants il y a un utilisateur ne faisant pas partie de l'équipe manjaro.fr.
Vous devriez vous contenter d'un simple manjaro.fr

PKGBUILD pour ffdiaporama 2.2

#13Messageil y a 9 ans

Pour le 32, je suis dispo pour tester.

PKGBUILD pour ffdiaporama 2.2

#14Messageil y a 9 ans

Well done :pompom:
C'est sur Aur

yaourt ffdiaporama-2.2-patched

J'ai du coup hébergé le patch sur sourceforge, comme ça d'autres distros pourront l'utiliser.
Je prépare un petit wiki sur leur page.

PKGBUILD pour ffdiaporama 2.2

#15Messageil y a 9 ans

tu as oublié de changer le nom du "maintainer" dans le pkgbuild.

PKGBUILD pour ffdiaporama 2.2

#16Messageil y a 9 ans

Ben...c'est lui qui développe ffdiaporama devel ,non ?

PKGBUILD pour ffdiaporama 2.2

#17Messageil y a 9 ans

à cet endroit, c'est le mainteneur du PKGBUILD qu'il faut indiquer, pas le mainteneur du logiciel; au pire, tu peux indiquer que ce PKGBUILD est basé sur un autre, mais là, ce gars là n'est plus le mainteneur principal

PKGBUILD pour ffdiaporama 2.2

#18Messageil y a 9 ans

Hem.... On lit toujours les choses trop tard. Extrait du standard paquetage:
Si vous reprenez un PKGBUILD existant, ajoutez une ligne Maintainer vous concernant et modifiez celle existante par:

# Contributor: ex-mainteneur <son adresse>



Ce qui est dommage ,c'est qu'on ne puisse pas éditer un PKGBUILD ,du moins ,je n'ai pas trouvé comment, à part destituer le paquet et recommencer avec une autre version....

PKGBUILD pour ffdiaporama 2.2

#19Messageil y a 9 ans

c'est pas très grave...
mais en l'occurence, ici, on ne reprend pas un PKGBUILD existant (par exemple orphelin), on le forke

PKGBUILD pour ffdiaporama 2.2

#20Messageil y a 9 ans

Nickel chez moi.
:clap à vous.
Répondre