RSS Feed

Kompilacja *src.rpm

2009/10/14 by admin

terminalBędziemy potrzebować 15 min. na przygotowanie systemu do kompilacji paczek, oraz dużo mocy obliczeniowej i czasu (dla wolniejszych maszyn) dla takich paczek jak Open Office, Firefox, Amarok etc.

Zaczniemy od początku. Chcemy się dowiedzieć jakie flagi mamy włączyć dla naszego procesora.

Przykład oprę na swoim procesorze u Was może  być inny wynik.

W tym celu otwieramy terminal/konsole i wpisujemy :

user@PC:~> cat  /proc/cpuinfo .

Na stronie Wiki Gentoo w dziale dla AMD doczytać możemy :

vendor_id  : AuthenticAMD
cpu family  : 16
model  : 2
model name  : AMD Phenom(tm) xxxx Triple/Quad-Core Processor
stepping  : 2/3

że dla tego procesora właściwą flagą jest

CFLAGS=”-march=k8 -O2 -pipe”

dla wersji gcc starszej do 4.2  i włącznie, natomiast dla wersji 4.3

CFLAGS=”-march=amdfam10 -O2 -pipe”.

W terminalu logujemy się na roota (by mieć dostęp do edycji plików systemowych) za pomocą komendy su.

user@PC:~> su      ## enter

Hasło:        ## podaj hasło

PC:/root# mcedit /usr/lib/rpm/rpmrc

Mmcedit, nano, vi  to konsolowe edytory, nic nie stoi jednak na przeszkodzie by zamiast mcedit wpisać kate, kwrite, gedit, geany (stosownie od środowiska graficznego lub Waszych preferencji).

Potrzebujemy teraz utworzyć nowe przez nas nazwane architektury dalej zwane profilami. Wybieram tu nazwę phenom i core2.

W otwartym dokumencie wyszukujemy sekcji optflags i dodajemy na końcu

optflags: phenom -O2 -g -m32 -march=amdfam10
optflags: core2 -O2 -g -m32 -march=core2

oraz wyszukujemy sekcji arch_canon i poniżej analogicznie

arch_canon: phenom: phenom 1
arch_canon: core2: core2 1

oraz

buildarchtranslate: phenom: i586
buildarchtranslate: core2: i586

oraz

arch_compat: phenom: athlon
arch_compat: core2: pentium4

i tu ten wpis powinien być powyżej wpisu

arch_compat: athlon: i686

oraz

buildarch_compat: phenom: athlon
buildarch_compat: core2: pentium4

i analogicznie jak przykład wyżej.

Następnie tworzymy foldery o nazwie phenom-linux core2-linux (nie musimy tworzyć wszystkich tylko dla własnej architektury, koniecznie po myślniku musi być nazwa linux)

PC:/root# cd /usr/lib/rpm

PC:/root#mkdir phenom-linux core2-linux

i wewnątrz tworzymy plik o nazwie macros.

Tutaj podam dla architektury phenom treść tego pliku. W pozostałych tworzonych przez Was będzie analogicznie, tylko zmienia się sama flaga CFLAGS, by wiedzieć jaka powinna być na stronie Wiki Gentoo można się dowiedzieć.

# Per-platform rpm configuration file.

#==============================================================================
# —- per-platform macros.
#
%_arch            i386
%_vendor        suse
%_os            linux
%_gnu            -gnu
%_target_platform    %{_target_cpu}-%{_vendor}-%{_target_os}
%optflags        -O2 -g -m32 -march=amdfam10 -pipe

#==============================================================================
# —- configure macros.
#
%_prefix        /usr
%_exec_prefix        %{_prefix}
%_bindir        %{_exec_prefix}/bin
%_sbindir        %{_exec_prefix}/sbin
%_libexecdir        %{_libdir}
%_datadir        %{_prefix}/share
%_sysconfdir        /etc
%_sharedstatedir    %{_prefix}/com
%_localstatedir        /var
%_lib            lib
%_libdir        %{_exec_prefix}/%{_lib}
%_includedir        %{_prefix}/include
%_oldincludedir        /usr/include
%_infodir        /usr/share/info
%_mandir        /usr/share/man
%_initrddir        %{_sysconfdir}/init.d

%_defaultdocdir        %{_usr}/share/doc

%_smp_mflags %([ -z "$RPM_BUILD_NCPUS" ] \\\
&& RPM_BUILD_NCPUS=”`/usr/bin/getconf _NPROCESSORS_ONLN`”; \\\
[ "$RPM_BUILD_NCPUS" -gt 1 ] && echo „-j$RPM_BUILD_NCPUS”)

#———————————————————————
#    Multilibs
%_multilibno        1
%_multilibpatt        (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$

#==============================================================================
# —- Build policy macros.
#
#———————————————————————
#    Expanded at end of %install scriptlet.
#

%__arch_install_post   %{nil}

%__os_install_post    \
/usr/lib/rpm/brp-compress \
/usr/lib/rpm/brp-strip \
%{nil}

%__spec_install_post\
%{?__debug_package:%{__debug_install_post}}\
%{__arch_install_post}\
%{__os_install_post}\
%{nil}

#———————————————————————
#        Expanded at end of %prep
#
%__id_u          %{__id} -u
%__chown_Rhf     %{__chown} -Rhf
%__chgrp_Rhf     %{__chgrp} -Rhf
%_fixowner       [ `%{__id_u}` = '0' ] && %{__chown_Rhf} root
%_fixgroup       [ `%{__id_u}` = '0' ] && %{__chgrp_Rhf} root
%_fixperms       %{__chmod} -Rf a+rX,u+w,g-w,o-w

#———————————————————————
#        Expanded at start of %build
#
%__spec_build_pre %{___build_pre}\
%{?buildroot:  %__rm -rf „$RPM_BUILD_ROOT”\
%__mkdir_p `dirname „$RPM_BUILD_ROOT”`\
%__mkdir „$RPM_BUILD_ROOT”\
}

To już wszystko, teraz należy przeładować system uruchamiając ponownie, miałem tu mały problem gdy nie uruchomiłem systemu ponownie.

Done.

PC:/root# halt now ;-)

Życzę miłej i bezproblemowej kompilacji.


2 komentarzy »

  1. CemeFielm pisze:

    likeable answers i like it

  2. admin pisze:

    @CemeFielm
    Then it read more ;-)
    PZDR J.G.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>