SPEC dla MyPaint

Andrzej Kilijański and3md at gmail.com
Sat Apr 9 23:38:33 CEST 2011


On Saturday 09 of April 2011 18:16:26 Michał Lisowski wrote:
> W dniu 08.04.2011 21:46, Andrzej Kilijański pisze:
> > On Friday 08 of April 2011 14:57:19 Michał Lisowski wrote:
> >> $ ./builder -bb mypaint
> >> 
> >> ...
> >> 
> >> + /usr/bin/scons -j4 LDFLAGS=-Wl,--as-needed
> >> -Wl,--no-copy-dt-needed-entries -Wl,-z,relro -Wl,-z,combreloc
> >> CFLAGS=-O2 -fno-strict-aliasing -fwrapv -march=i686 -mtune=pentium4
> >> -gdwarf-3 -g2  CXXFLAGS=-O2 -fno-strict-aliasing -fwrapv -march=i686
> >> -mtune=pentium4 -gdwarf-3 -g2  FFLAGS=-O2 -fno-strict-aliasing -fwrapv
> >> -march=i686 -mtune=pentium4 -gdwarf-3 -g2  CPPFLAGS=-D_FORTIFY_SOURCE=2
> >> CC=i686-pld-linux-gcc CXX=i686-pld-linux-g++ libsuffix=lib prefix=/usr
> >> scons: Reading SConscript files ...
> >> Building for python2.7
> >> swig -o mypaintlib_wrap.cpp -noproxydel -python -c++ mypaintlib.i
> >> sh: swig: not found
> >> scons: *** Error 127
> >> błąd: Błędny status wyjścia z /home/users/lisu/tmp/rpm-tmp.7751 (%build)
> >> 
> >> ...
> >> 
> >> Oprócz swiga brakuje jeszcze desktop-file-utils (bo używane jest
> >> update-desktop-database).
> > 
> > Witam, wykonałem kolejne poprawki :)
> > Dodałem brakujące zależności desktop-file-utils, swig, swig-python,
> 
> > gettext-devel, gettext oraz pliki dokumentacji:
> gettext jest używany w specu?

Zasugerowałem się plikiem README z aplikacji ale rzeczywiście nie jest 
potrzebny.

> > %doc COPYING LICENSE README changelog
> > %doc doc/*
> 
> to zapisujemy w jednej linijce. Inna sprawa: COPYING i LICENSE nie
> paczkujemy dla licencji GPL
> 
> > Czy istnieje jakaś prosta metoda określania zależności pakietu?
> 
> Można w poldku po zbudowaniu pakietu wywołać
> 
>  > desc -R pakiet.rpm
> 

Po wydaniu komendy desc -R mypaint lista jest pusta (jak jestem w folderze 
all-avail to ta opcja działa, niestety pakiet mypaint jest tylko dostępny z 
installed gdzie desc -R daje pustą listę dla każdego pakietu, błąd?), ale 
wydając komendę
desc -r mypaint zostaje wyrzucona lista:

/bin/bash, /bin/sh, /bin/sh, /usr/bin/env, hicolor-icon-theme, libc.so.6, 
libc.so.6(GLIBC_2.0), libc.so.6(GLIBC_2.1),
    libc.so.6(GLIBC_2.1.3), libc.so.6(GLIBC_2.11), libc.so.6(GLIBC_2.3.4), 
libdl.so.2, libgcc_s.so.1, libgcc_s.so.1(GCC_3.0), libglib-2.0.so.0, 
libm.so.6,
    libm.so.6(GLIBC_2.0), libm.so.6(GLIBC_2.1), libpng, libpng14.so.14, 
libpng14.so.14(PNG14_0), libpthread.so.0, libpython2.7.so.1.0, libstdc++.so.6,
    libstdc++.so.6(CXXABI_1.3), libstdc++.so.6(GLIBCXX_3.4), libutil.so.1, 
python-numpy, python-numpy-numarray, python-pycairo, python-pygtk-gtk,
    rtld(GNU_HASH)

czy to oznacza że do listy Requires: powinienem dodać:

bash (/bin/bash)
pdksh (/bin/sh)
coreutils (/usr/bin/env)
glibc (libc.so.6)
libgcc (libgcc_s.so.1)
glib2 (libglib-2.0.so.0)
libstdc++ (libstdc++.so.6)
zlib (z ldd /usr/lib/mypaint/_mypaintlib.so)?

Ale z drugiej strony:
libpng wymaga glibc, zlib, ldconfig
glibc wymaga pdksh
libstdc++ wymaga libgcc
python-pygtk-gtk wymaga glib2

W dokumentacji dla developerów PLD znalazłem, że powinno się podawać wszystko 
poza modułami jądra, z dopiskiem TODO, że to już nieaktualne i powinno się 
unikać nadmiarowych Requires. Może więc powinienem dodać tylko:

bash
coreutils
libstdc++ ?

Idąc tym tropem powinienem wyrzucić:
- python-numpy ponieważ jest wymagany przez python-numpy-numarray
- swig ponieważ jest wymagany przez swig-python

> Można też wywalić wszystkie pakiety -devel z systemu i próbować budować
> speca, będzie się pluł o to, czego nie ma.
> 
> Można też zobaczyć z czym się linkują plik wynikowe (binaria, biblioteki).
>
> > Próbowałem budować pakiety za pomocą skryptu builder ale dostaje
> > komunikaty błedów:
> > 
> > ./builder -bb mypaint
> > builder: SMP make flags are set to -j8
> > Warning: No CVS access defined - using local .spec file
> > cvs checkout: CVSROOT is set but empty!  Make sure that the
> > cvs checkout: specification of CVSROOT is legal, either via the
> > cvs checkout: `-d' option, the CVSROOT environment variable, or the
> > cvs [checkout aborted]: CVS/Root file (if any).
> > Error: spec file not stored in CVS repo.
> > 
> > o dziwo mam ustawiony CVSROOT:
> > $ echo $CVSROOT
> > 
> > :pserver:cvs w cvs.pld-linux.org:/cvsroot
> > 
> > próbowałem także kombinacji:
> > ./builder -bb -ncs -nc -nn mypaint
> > 
> > ale mimo opcji -ncs dostaję komunikat:
> > builder: SMP make flags are set to -j8
> > Error: spec file not stored in CVS repo.
> > 
> > Z tego powodu używam standardowego rpmbuild -bb.
> 
> Oczywiście masz strukturę ~/rpm/{packages,RPMS,BUILD}?
> 
Przyznaję moja wina miałem nieaktualną strukturę z folderem SPEC,
teraz wszystko działa bez zarzutu.

> Budowanie rpma powinno wyglądać tak:
> 
> $ cd ~/rpm/packages
> $ ./builder -bb mypaint/mypaint.spec
> 
> Oczywiście wcześniej musisz stworzyć katalog ~/rpm/packages/mypaint i
> umieścić w  nim plik mypaint.spec.
> 
> _______________________________________________
> pld-devel-pl mailing list
> pld-devel-pl w lists.pld-linux.org
> http://lists.pld-linux.org/mailman/listinfo/pld-devel-pl


More information about the pld-devel-pl mailing list