# [EBUILD]PlayStation Portable Video Converter

## luckyluke3310

Salut,

J'ai ecrit un petit soft qui permet de convertir des videos pour la PSP de sony: PlayStation Portable Video Converter

J'essaye de faire un ebuild pour celui-ci mais je n'y arrive pas car il y a 3 softs à compiler (un x264 modifié, un ffmpeg modifié et pspvc). Le probleme c'est que ffmpeg a besoin de x264 pour se compiler, donc il doit etre installé. Comme je ne veux pas obliger les utilisateurs à utiliser les versions modifiées pour leurs usages courants, ffmpeg et x264 sont à installer dans /usr/share/pspvc/

Ca va vous me suivez toujours   :Very Happy: 

Un petit coup d'oeil à mon script d'install vous eclairera certainement plus.

J'ai essayé aussi de le faire aussi avec 3 ebuilds differents mais sans succés non plus.

Y'a-t-il un pro de l'ebuild qui pourrait m'aider ?

----------

## luckyluke3310

apparement (à tester sur une conf toute fresh) j'ai reussi avec 3 ebuilds (pspvc-x264,pspvc-ffmpeg et pspvc).

mais si un pro de l'ebuild saurait m'indiquer la marche à suivre pour faire la meme chose avec 1 seul ebuild ca serait cool   :Smile: 

EDIT:

j'ai essayé mes ebuilds sur une autre gentoo et là je me suis aperçu que j'obtiens un message d'erreur que je n'ai pas eu sur ma conf de dev puisque j'ai l'option FEATURES="-sandbox" dans mon make.conf

```

install -d /usr/share/pspvc/bin /usr/share/pspvc/lib64 /usr/share/pspvc/include

ACCESS DENIED  mkdir:     /usr/share/pspvc

install: Ne peut créer le répertoire `/usr/share/pspvc': Permission non accordée

ACCESS DENIED  mkdir:     /usr/share/pspvc

install: Ne peut créer le répertoire `/usr/share/pspvc': Permission non accordée

ACCESS DENIED  mkdir:     /usr/share/pspvc

install: Ne peut créer le répertoire `/usr/share/pspvc': Permission non accordée

make: *** [install] Erreur 1

!!! ERROR: media-video/pspvc-x264-0.1.2 failed.

Call stack:

  ebuild.sh, line 1532:   Called dyn_install

  ebuild.sh, line 1005:   Called src_install

  pspvc-x264-0.1.2.ebuild, line 42:   Called die

!!! emake install failed

!!! If you need support, post the topmost build error, and the call stack if relevant.

--------------------------- ACCESS VIOLATION SUMMARY ---------------------------

LOG FILE = "/var/log/sandbox/sandbox-media-video_-_pspvc-x264-0.1.2-22203.log"

mkdir:     /usr/share/pspvc

mkdir:     /usr/share/pspvc

mkdir:     /usr/share/pspvc

--------------------------------------------------------------------------------

```

----------

## UB|K

salut,

lors de l'install d'un prog, tu peux sans problèmes spécifier dans l'ebuild que tu veux l'installer dans un répertoire spécifique.

Cela se fait grâce à l'option PREFIX= passée au script configure.

Alors, cela effectivement poser un problème lors de l'emerger du dernier programme qui ne va pas trouver les bons ffmpeg et x264 car le configure va valoir les chercher dans /usr. Ce problème doit aussi pouvoir être contourné en passant au configure une option du style:

```
configure --with-ffmpeg=/path/de/ffmpeg/modifié
```

Pour ça, il faut lire le configure afin de voir si un telle option existe.

Pour l'erreur type "sandbox", c'est surement à cause d'une erreur dans l'ebuild. Avec portage la compilation se fait avec des droits restreints au dossier où se passe la compilation soit qqpart dans /var/tmp/portage/...  alors dès que portage essaye d'écrire ailleurs et bien il se fait jeter car il n'a pas le droit de faire ça. Typiquement c'est que ton ebuild contient:

```
make install
```

donc à la fin de la comilation, portage essaye d'installer le prog directement dans /usr et là, c'est le drame. La bonne méthode c'est ça:

```
make DESTDIR=${D} install
```

ou:

```
einstall
```

ou rien du tout car ces deux solutions sont le comportement par défaut de portage et c'est ce qu'il fait si la "fonction" src_install() n'est pas présente dans l'ebuild (idem pour src_compile() et src_unpack(): si elles sont absentes le comportement par défaut est appliqué et il suffit dans la majorité des cas).

Voilou, j'espère que ça va d'aider car j'ai pas le sentiment d'avoir été très clair...

edit: FEATURES="-sandbox" c'est pas très joli. Tu peux aussi poster tes ebuild pour que ça soit plus clair, d'ailleurs tu pourrais aussi renommer ton post [EBUILD]PlayStation Portable Video Converter  et aller le signaler ici: [Bac à Sable] Pour apprenti développeur Gentoo afin que tout le monde en profite

----------

## truc

j'n'ai pas de psp, je ne saurai t'aider, mais je voulais juste dire que ton screenshot a vraiment la classe. J'aurai presque envie de l'installé juste parceque c'est beau.. :Smile: 

----------

## luckyluke3310

merci pour le bac à sable  :Wink: 

effectivement j'utilisais emake install à la place de einstall

----------

## luckyluke3310

 *truc wrote:*   

> j'n'ai pas de psp, je ne saurai t'aider, mais je voulais juste dire que ton screenshot a vraiment la classe. J'aurai presque envie de l'installé juste parceque c'est beau..

 

merci beaucoup  :Wink: 

----------

## luckyluke3310

Donc je vous livre mes ebuilds, au fur et à mesure de mon avancement (je suis en amd64)

pspvc-x264-0.1.3.ebuild

```

# Copyright 1999-2006 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

inherit eutils

DESCRIPTION="x264 version for pspvc"

HOMEPAGE="http://pspvc.sourceforge.net"

SRC_URI="mirror://sourceforge/pspvc/pspvc-install-${PV}.tar.gz"

SLOT="0"

LICENSE="GPL-2"

KEYWORDS="~x86 ~amd64"

IUSE="pthread"

RESTRICT="nostrip"

DEPEND="

>=dev-lang/nasm-0.98

"

dir=/usr/share/pspvc

Ddir=${D}/${dir}

S=${WORKDIR}/pspvc-install-${PV}

src_unpack()

{

        unpack pspvc-install-${PV}.tar.gz

        cd ${S}

        dodir work

        cd work

        tar xzvf ../archives/x264_051028.tar.gz

}

src_compile()

{

        cd ${S}/work/x264_051028

        econf $(use_enable pthread) --prefix=/usr/share/pspvc || die "econf failed"

        emake || die "emake failed"

}

src_install()

{

        cd ${S}/work/x264_051028

        dodir ${dir}/bin

        cp -pPR x264 ${Ddir}/bin

        dodir ${dir}/lib

        cp -dr libx264.a ${Ddir}/lib

        dodir ${dir}/include

        cp -dr x264.h ${Ddir}/include

}

```

pspvc-ffmpeg-0.1.3.ebuild

```

# Copyright 1999-2006 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

inherit eutils

DESCRIPTION="FFMPEG version for pspvc"

HOMEPAGE="http://pspvc.sourceforge.net"

SRC_URI="mirror://sourceforge/pspvc/pspvc-install-${PV}.tar.gz"

SLOT="0"

LICENSE="GPL-2"

KEYWORDS="~x86 ~amd64"

IUSE=""

RESTRICT="nostrip"

DEPEND="

>=media-video/pspvc-x264-0.1.2

>=media-libs/faac-1.24

>=media-libs/xvid-1.1

"

dir=/usr/share/pspvc

Ddir=${D}/${dir}

S=${WORKDIR}/pspvc-install-${PV}

src_unpack()

{

        unpack pspvc-install-${PV}.tar.gz

        cd ${S}

        dodir work

        tar xzvf archives/ffmpeg-051130-0.33.tar.gz -C work

        cd work/ffmpeg_051130

        patch -p1 < ../../archives/ffmpeg-mh-unix.patch

}

src_compile()

{

        cd ${S}/work/ffmpeg_051130

        econf   --extra-cflags=-I/usr/share/pspvc/include \

                        --extra-ldflags=-L/usr/share/pspvc/lib \

                        --enable-x264 --enable-gpl --enable-faac --enable-xvid \

                        --disable-debug --prefix=/usr/share/pspvc --enable-pthreads \

                        || die "econf failed"

        emake || die "emake failed"

}

src_install()

{

        cd ${S}/work/ffmpeg_051130

        dodir ${dir}/bin

        cp -pPR ffmpeg ffplay ffserver ${Ddir}/bin

        dodir ${dir}/lib/vhook

        cp -dr vhook/* ${Ddir}/lib/vhook

}

```

pspvc-0.1.3.ebuild

```

# Copyright 1999-2006 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

inherit eutils

DESCRIPTION="FFMPEG front-end to convert video files for the Sony PSP"

HOMEPAGE="http://pspvc.sourceforge.net"

SRC_URI="mirror://sourceforge/pspvc/pspvc-install-${PV}.tar.gz"

SLOT="0"

LICENSE="GPL-2"

KEYWORDS="~x86 ~amd64"

IUSE=""

DEPEND="

>=x11-libs/gtk+-2

>=media-video/pspvc-ffmpeg-0.1.2

"

dir=/usr/share/pspvc

Ddir=${D}/${dir}

S=${WORKDIR}/pspvc-install-${PV}

src_unpack()

{

        unpack pspvc-install-${PV}.tar.gz

        cd ${S}

        dodir work

        tar xzvf archives/pspvc-${PV}.tar.gz -C work

}

src_compile()

{

        cd ${S}/work/pspvc-${PV}

        econf || die "econf failed"

        emake || die "emake failed"

}

src_install()

{

        ewarn "COMPILE"

        cd ${S}/work/pspvc-${PV}

        einstall || die "emake install failed"

}

```

Bon voila ce que j'ai reussit à pondre.

Je suppose que c'est trés crade, mais c'est juste un debut.

J'aimerai que ca puisse tenir dans un seul ebuild, mais je ne sais pas comment m'y prendre, alors j'attend vos conseils  :Wink: 

----------

## netfab

Salut,

Je viens de jeter un oeil vite fait à tes ebuilds, il y a une chose que je ne comprend pas.

Dans ton premier post, tu dis :

 *Quote:*   

> J'essaye de faire un ebuild pour celui-ci mais je n'y arrive pas car il y a 3 softs à compiler (un x264 modifié, un ffmpeg modifié et pspvc).

 

En quoi sont t'ils modifiés par rapport aux versions que propose portage ?

Est-ce toi qui a effectué les modifications à coups de patchs ?

Si oui, pourquoi ne pas reprendre les ebuilds de ffmpeg et de x264, et d'y ajouter un useflag pspvc qui apportera le support pspvc en les patchant ?

Ainsi, l'installation serait simplifiée, il n'y aurait pas 2 versions de ffmpeg dans portage, et dans ton ebuild de pspvc, tu n'aurais qu'à vérifier si ces programmes ont bien été compilés avec ce useflag.

C'est de cette manière que je procéderai.

----------

## luckyluke3310

Salut,

En fait la version de ffmpeg est relativement ancienne (mars 2005) et contient les patchs de MobilHackerz (3GP converter), c'est pour ca que je parle de version modifiée.

La version qui est dans portage et meme les versions CVS de ffmpeg ne fonctionne pas pour la PSP. Les patchs ont été envoyés aux developpeurs plusieurs fois et n'ont pas été inclus ou quand ils ont été inclus, ils ont été cassés par des developpements ultérieurs.

Pour x264, j'ai écrit que c'etait une version modifiée, mais c'est en fait une version ancienne qui n'est plus dans portage, et les versions actuelles ne sont plus compatibles avec le ffmpeg MobilHackerz

Pour info, tous les softs sous windows qui font de la conversion pour PSP et qui sont basés sur ffmpeg utilisent cette version.

----------

## Martin LORANG

Bonjour,

Chez moi ça se plante à la compil de pspvc-ffmpeg (compil de pspvc-x264 OK) avec

```
gcc -O3 -Wall -Wno-switch -O2 -march=athlon-xp -mtune=athlon-xp -pipe -fomit-frame-pointer -msse2 -mfpmath=sse -I/usr/share/pspvc/include -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE   -c -o mpegvideo.o mpegvideo.c

In file included from mpegvideo.c:29:

dsputil.h:602: attention : déclaration statique de « lrintf » suit une déclaration non statique

mpegvideo.c: In function `MPV_encode_init':

mpegvideo.c:890: attention : variable inutilisée « dummy »

mpegvideo.c: In function `MPV_encode_picture':

dsputil.h:602: désolé, pas implanté: l'enlignage de l'appel à « lrintf »: redefined extern inline functions are not considered for inlining a échoué

mpegvideo.c:2404: désolé, pas implanté: appelé d'ici

make[1]: *** [mpegvideo.o] Erreur 1

make[1]: quittant le répertoire « /var/tmp/portage/pspvc-ffmpeg-0.1.3/work/pspvc-install-0.1.3/work/ffmpeg_051130/libavcodec »

make: *** [lib] Erreur 2

!!! ERROR: media-video/pspvc-ffmpeg-0.1.3 failed.

Call stack:

  ebuild.sh, line 1527:   Called dyn_compile

  ebuild.sh, line 931:   Called src_compile

  pspvc-ffmpeg-0.1.3.ebuild, line 43:   Called die

!!! emake failed

!!! If you need support, post the topmost build error, and the call stack if relevant.
```

Une histoire d'option de compilation inline ? Une idée ? Je suis en ~x86.

----------

## luckyluke3310

 *Martin LORANG wrote:*   

> Bonjour,
> 
> Chez moi ça se plante à la compil de pspvc-ffmpeg (compil de pspvc-x264 OK) 
> 
> Une histoire d'option de compilation inline ? Une idée ? Je suis en ~x86.

 

Utilises-tu GCC4 pour compiler ?

Si c'est le cas, je crois que l'erreur vient de là.

----------

## Martin LORANG

 *luckyluke3310 wrote:*   

> Utilises-tu GCC4 pour compiler ?
> 
> Si c'est le cas, je crois que l'erreur vient de là.

 

Non :

```
gcc --version

gcc (GCC) 3.4.5 (Gentoo 3.4.5-r1, ssp-3.4.5-1.0, pie-8.7.9)

Copyright © 2004 Free Software Foundation, Inc.

Ce logiciel est libre; voir les sources pour les conditions de copie.  Il n'y a PAS

GARANTIE; ni implicite pour le MARCHANDAGE ou pour un BUT PARTICULIER.

```

----------

## luckyluke3310

peux-tu verifié si tu as quelquechose dans /usr/share/pspvc ?

```

find /usr/share/pspvc

```

Les ebuilds sont loin d'etre au point c'est pour cela que je demande de l'aide  :Wink: 

sinon si tu as besoin du soft tu peux utiliser le script d'install qui se trouve dans l'archive (install.sh)

----------

## Martin LORANG

Et voila :

```
find /usr/share/pspvc

/usr/share/pspvc

/usr/share/pspvc/bin

/usr/share/pspvc/bin/x264

/usr/share/pspvc/lib

/usr/share/pspvc/lib/libx264.a

/usr/share/pspvc/include

/usr/share/pspvc/include/x264.h

```

----------

## luckyluke3310

Je viens juste d'essayé les ebuild sur mon portable (x86) qui etait encore en 2005.1 (y'a un moment que je m'en etais pas servi).

Apparement, j'ai dû le passer en 2006.0 avec un portage en ~x86.

ensuite un 'emerge pspvc'  et tout est passé du 1er coup.

sur mon x86: gcc version 3.3.5-20050130

sur mon amd64: version gcc 3.4.4

----------

## luckyluke3310

apparement il faut un GCC < 3.4.5

https://forums.gentoo.org/viewtopic.php?p=3344593#3344593

----------

## Martin LORANG

Bien, j'ai tenté le coup avec gcc-3.4.4-r1 ça ne marche pas, même erreur de compil.

avec gcc-3.3.6 ça compile bien   :Razz: 

Il ne me reste plus qu'à tester le soft... demain

----------

## Martin LORANG

Je n'ai pas résisté à la tentation d'essayer ce soir : ça marche bien.

J'ai poussé un peu plus loin concernant l'erreur de compil : en modifiant sur la ligne 601 de libavcodec/dsputil.h le "always_inline" en "inline", ça compile correctement avec gcc-3.4.5-r1 et le résultat du petit film que j'ai essayé semble être le même.

4 minutes 39 de traitement avec la version originale compilé avec gcc 3.3.6

4 minutes 35 de traitement avec la version modifiée compilé avec gcc 3.4.5-r1

Il faudra que tu fasses le patch toi même, je ne sais pas comment m'y prendre...

Voilà voilà

----------

## luckyluke3310

merci, c'est cool

----------

## luckyluke3310

pspvc-x264-0.2.ebuild

```

# Copyright 1999-2006 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

inherit eutils

DESCRIPTION="x264 version for pspvc"

HOMEPAGE="http://pspvc.sourceforge.net"

SRC_URI="mirror://sourceforge/pspvc/pspvc-install-${PV}.tar.gz"

SLOT="0"

LICENSE="GPL-2"

KEYWORDS="~x86 ~amd64"

IUSE="pthread"

RESTRICT="nostrip"

DEPEND="

>=dev-lang/nasm-0.98

"

dir=/usr/share/pspvc

Ddir=${D}/${dir}

S=${WORKDIR}/pspvc-install-${PV}

src_unpack()

{

        unpack pspvc-install-${PV}.tar.gz

        cd ${S}

        dodir work

        cd work

        tar xzvf ../archives/x264_051028.tar.gz

}

src_compile()

{

        cd ${S}/work/x264_051028

        econf $(use_enable pthread) --prefix=/usr/share/pspvc || die "econf failed"

        emake || die "emake failed"

}

src_install()

{

        cd ${S}/work/x264_051028

        dodir ${dir}/bin

        cp -pPR x264 ${Ddir}/bin

        dodir ${dir}/lib

        cp -dr libx264.a ${Ddir}/lib

        dodir ${dir}/include

        cp -dr x264.h ${Ddir}/include

} 

```

pspvc-ffmpeg-0.2.ebuild

```

# Copyright 1999-2006 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

inherit eutils

DESCRIPTION="FFMPEG version for pspvc"

HOMEPAGE="http://pspvc.sourceforge.net"

SRC_URI="mirror://sourceforge/pspvc/pspvc-install-${PV}.tar.gz"

SLOT="0"

LICENSE="GPL-2"

KEYWORDS="~x86 ~amd64"

IUSE=""

RESTRICT="nostrip"

DEPEND="

>=media-video/pspvc-x264-0.1.2

>=media-libs/faac-1.24

>=media-libs/xvid-1.1

"

dir=/usr/share/pspvc

Ddir=${D}/${dir}

S=${WORKDIR}/pspvc-install-${PV}

src_unpack()

{

        unpack pspvc-install-${PV}.tar.gz

        cd ${S}

        dodir work

        tar xzvf archives/ffmpeg-051130-0.33.tar.gz -C work

        cd work/ffmpeg_051130

        patch -p1 < ../../archives/ffmpeg-mh-unix.patch

        patch -p1 < ../../archives/ffmpeg-lrintf.patch

}

src_compile()

{

        cd ${S}/work/ffmpeg_051130

        econf   --extra-cflags=-I/usr/share/pspvc/include \

                        --extra-ldflags=-L/usr/share/pspvc/lib \

                        --enable-x264 --enable-gpl --enable-faac --enable-xvid \

                        --disable-debug --prefix=/usr/share/pspvc --enable-pthreads \

                        || die "econf failed"

        emake || die "emake failed"

}

src_install()

{

        cd ${S}/work/ffmpeg_051130

        dodir ${dir}/bin

        cp -pPR ffmpeg ffplay ffserver ${Ddir}/bin

        dodir ${dir}/lib/vhook

        cp -dr vhook/* ${Ddir}/lib/vhook

} 

```

pspvc-0.2.ebuild

```

# Copyright 1999-2006 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

inherit eutils

DESCRIPTION="FFMPEG front-end to convert video files for the Sony PSP"

HOMEPAGE="http://pspvc.sourceforge.net"

SRC_URI="mirror://sourceforge/pspvc/pspvc-install-${PV}.tar.gz"

SLOT="0"

LICENSE="GPL-2"

KEYWORDS="~x86 ~amd64"

IUSE=""

DEPEND="

>=x11-libs/gtk+-2

>=media-video/pspvc-ffmpeg-0.2

"

dir=/usr/share/pspvc

Ddir=${D}/${dir}

S=${WORKDIR}/pspvc-install-${PV}

src_unpack()

{

        unpack pspvc-install-${PV}.tar.gz

        cd ${S}

        dodir work

        tar xzvf archives/pspvc-${PV}.tar.gz -C work

}

src_compile()

{

        cd ${S}/work/pspvc-${PV}

        econf || die "econf failed"

        emake || die "emake failed"

}

src_install()

{

        ewarn "COMPILE"

        cd ${S}/work/pspvc-${PV}

        einstall || die "emake install failed"

} 

```

----------

