Re: Pomóżcie skompilować amaroka

Bartosz Świątek shadzik at gmail.com
Fri Apr 8 22:11:30 CEST 2011


W dniu 8 kwietnia 2011 17:25 użytkownik Bartlomiej Zimon <uzi18 w o2.pl> napisał:
> Dnia 7 kwietnia 2011 14:10 Bartlomiej Zimon <uzi18 w o2.pl> napisał(a):
>> Dnia 7 kwietnia 2011 13:44 Bartlomiej Zimon <uzi18 w o2.pl> napisał(a):
>> > Dnia 6 kwietnia 2011 22:24 Michał Lisowski <lisu87 w gmail.com> napisał(a):
>> > > W dniu 06.04.2011 22:15, Bartosz Świątek pisze:
>> > > > W dniu 6 kwietnia 2011 15:12 użytkownik Michał Lisowski
>> > > > <lisu87 w gmail.com>  napisał:
>> > > >> Tak, patrzyłem na to również. Problem polega na tym, że z
>> > > >> -DWITH_EMBEDDED_SERVER=ON powstaje libmysqld.a, ale ma unresolved symbols.
>> > > > Dobra, przekonałeś mnie :)
>> > > >
>> > > > Spróbuj dodać coś takiego:
>> > > >
>> > > > --- packages/mysql/mysql.spec   2 Apr 2011 04:46:42 -0000       1.547
>> > > > +++ packages/mysql/mysql.spec   6 Apr 2011 20:12:57 -0000
>> > > > @@ -535,6 +535,21 @@
>> > > >   %description ndb-cpc -l pl.UTF-8
>> > > >   Ten pakiet zawiera standardowego demona MySQL NDB CPC.
>> > > >
>> > > > +%package embedded
>> > > > +Summary:       MySQL - Embedded Library
>> > > > +Group:         Libraries
>> > > > +
>> > > > +%description embedded
>> > > > +This package contains the embedded MySQL library.
>> > > > +
>> > > > +%package embedded-devel
>> > > > +Summary:       MySQL - Embedded Library
>> > > > +Group:         Libraries
>> > > > +Requires:      %{name}-embedded = %{version}-%{release}
>> > > > +
>> > > > +%description embedded-devel
>> > > > +This package contains the embedded MySQL library.
>> > > > +
>> > > >   %prep
>> > > >   %setup -q %{?with_sphinx:-a100}
>> > > >   %if %{with sphinx}
>> > > > @@ -659,12 +674,23 @@
>> > > >         -DINSTALL_MYSQLTESTDIR_RPM="" \
>> > > >         -DINSTALL_SQLBENCHDIR=%{_datadir} \
>> > > >         -DINSTALL_SUPPORTFILESDIR=%{_datadir}/%{name}-support \
>> > > > +       -DWITH_EMBEDDED_SERVER=ON \
>> > > >         ..
>> > > >
>> > > >   %{__make}
>> > > >
>> > > >   %{?with_tests:%{__make} test}
>> > > >
>> > > > +install -d  libmysqld/build
>> > > > +cd libmysqld/build
>> > > > +ar -x ../libmysqld.a
>> > > > +rm -f sql_binlog.cc.o rpl_utility.cc.o
>> > > > +CFLAGS=$(echo %{rpmcflags})
>> > > > +LDFLAGS=$(echo %{rpmldflags})
>> > > > +%{__cc} $CFLAGS $LDFLAGS -shared -Wl,-soname,libmysqld.so.0 -o
>> > > > libmysqld.so.0.0.1 \
>> > > > +       *.o \
>> > > > +       -lpthread -lcrypt -lssl -lcrypto -lz -lrt -lstdc++ -ldl -lm -lc
>> > > > +
>> > > >   %install
>> > > >   rm -rf $RPM_BUILD_ROOT
>> > > >   install -d $RPM_BUILD_ROOT/etc/{logrotate.d,rc.d/init.d,sysconfig,mysql,skel} \
>> > > > @@ -676,6 +702,12 @@
>> > > >
>> > > >   cp -a Docs/mysql.info $RPM_BUILD_ROOT%{_infodir}
>> > > >
>> > > > +# Remove libmysqld.a, install libmysqld.so
>> > > > +rm -f $RPM_BUILD_ROOT%{_libdir}/libmysqld.a
>> > > > +install -m 0755 build/libmysqld/build/libmysqld.so.0.0.1
>> > > > $RPM_BUILD_ROOT%{_libdir}/libmysqld.so.0.0.1
>> > > > +ln -s libmysqld.so.0.0.1 $RPM_BUILD_ROOT%{_libdir}/libmysqld.so.0
>> > > > +ln -s libmysqld.so.0 $RPM_BUILD_ROOT%{_libdir}/libmysqld.so
>> > > > +
>> > > >   install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql
>> > > >   cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/mysql
>> > > >   cp -a %{SOURCE3} $RPM_BUILD_ROOT/etc/logrotate.d/mysql
>> > > > @@ -827,6 +859,8 @@
>> > > >
>> > > >   %post   libs -p /sbin/ldconfig
>> > > >   %postun libs -p /sbin/ldconfig
>> > > > +%post   embedded -p /sbin/ldconfig
>> > > > +%postun embedded -p /sbin/ldconfig
>> > > >
>> > > >   %triggerpostun -- mysql<  4.0.20-2.4
>> > > >   # For clusters in /etc/%{name}/clusters.conf
>> > > > @@ -1227,6 +1261,15 @@
>> > > >   %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size)
>> > > > /etc/sysconfig/mysql-ndb-cpc
>> > > >   %{_mandir}/man1/ndb_cpcd.1*
>> > > >   %endif
>> > > > +
>> > > > +%files embedded
>> > > > +%defattr(644,root,root,755)
>> > > > +%attr(755,root,root) %{_libdir}/libmysqld.so.?
>> > > > +%attr(755,root,root) %{_libdir}/libmysqld.so.*.*.*
>> > > > +
>> > > > +%files embedded-devel
>> > > > +%defattr(644,root,root,755)
>> > > > +%attr(755,root,root) %{_libdir}/libmysqld.so
>> > > >
>> > > >   %define date  %(echo `LC_ALL="C" date +"%a %b %d %Y"`)
>> > > >   %changelog
>> > > >
>> > > >
>> > > > Tylko jeszcze cośtam trzeba dodać zeby się rpm nie czepiał o symbole.
>> > > > Z tym powinien się już amarok budować.
>> > > >
>> > > >
>> > >
>> > > eeee, ten %{__make} ci nie przejdzie. Oszukałem, libmysqld.a nie
>> > > powstanie, bo przy jego linkowaniu się wypieprza. Dalej wszystko fajnie,
>> > > ale nie mogę nic zrobić bez wygenerowania libmysqld.a
>> > >
>> >
>> > Tylko po co to wszystko skoro jest dostepna latka na cmake co zbuduje i lib.a i lib.so ?
>> > Jedynym problemem sa te 2 latki o ktorych pisalem, bo powoduja nie rozwiazane symbole.
>> >
>>
>> link: http://lists.mysql.com/commits/102373
>>
>
> Moze lepiej takie oto rozwiazanie:
> http://carme.pld-linux.org/~cactus/snaps/mysql-embedded/mysql-embedded.spec
> http://carme.pld-linux.org/~cactus/snaps/mysql-embedded/mysql-embedded_library_shared.patch
>
> Co o tym sadzicie?

Utrzymywanie kolejnego speca, tylko dla 1 biblioteczki, jest
delikatnie mówiąc pomysłem troszkę niewydarzonym.
Kto to ma niby maintainować i pamiętać w ogóle, że coś takiego istnieje?

> Przy okazji mamy tez biblioteke wspoldzielona.

Przy okazji tego co ja zrobiłem też. W czasie kiedy piszę tego maila,
Twoje spece nie są dostępne, coś się carme chyba posrało.
Jeśli natomiast .so dostajesz w wyniku prostego patcha cmake, to jest
to lepsze rozwiązanie niż hackowanie tego w sposób, który
zaprezentowałem.



-- 
"I'm living proof if you do one thing right in your career, you can
coast for a long time. A LOOOOONG time." -Guy Kawasaki


More information about the pld-devel-pl mailing list