Re: Pomóżcie skompilować amaroka

Bartosz Świątek shadzik at gmail.com
Wed Apr 6 22:15:53 CEST 2011


W dniu 6 kwietnia 2011 15:12 użytkownik Michał Lisowski
<lisu87 w gmail.com> napisał:
> W dniu 06.04.2011 15:02, Bartosz Świątek pisze:
>>
>> On wtorek, 5 kwietnia 2011 at 16:45, Michał Lisowski wrote:
>> W dniu 04.04.2011 14:26, Łukasz Maśko pisze:
>>>>
>>>> Dnia poniedziałek, 4 kwietnia 2011, Bartosz Świątek napisał:
>>>>>
>>>>> On poniedziałek, 4 kwietnia 2011 at 11:06, Łukasz Maśko wrote:
>>>>> Próbuję skompilować amaroka (ostatni update mysql to wymusza), ale
>>>>>
>>>>>> kompilacja wywraca się z błędem linkera o nieznalezionej bibliotece
>>>>>> libmysqld. Rzeczywiście, nie mamy czegoś takiego w Th. Ale jakoś
>>>>>> amarok
>>>>>> był jednak jakoś kompilowany, bo jest w repo. Czy mógłby mi ktoś pomóc
>>>>>> toto przebudować? Próbowałem budować 2.4.0 z CVS-a, ale też 2.4.0.90
>>>>>> (beta) po przerobieniu speca i jest to samo.
>>>>>
>>>>> 64 Bit? Brakujące -fPIC? Zgaduj zgadula. Albo po prostu zmuś go do
>>>>> linkowania z libmysqlclient.so a nie tym embeded crapem.
>>>>
>>>> Nie, 32-bit. Spróbuję jak sugerujesz.
>>>
>>> Poprawione. Jak uda się kiedyś komuś skrobnąć mysql-embedded to się
>>> przywróci tak jak było.
>>
>> Tak w sumie się bawiłem właśnie tym mysqlem... nie ma najmniejszego sensu
>> robić mysql-embedded.spec. Po prostu przy updacie do mysql 5.5 ktoś[tm]
>> spieprzył sprawę i nie dodał opcji:
>>
>> -DWITH_EMBEDDED_SERVER=ON
>>
>> czyli tak jak było w wersjach wcześniejszych (z tymże wtedy to była opcja
>> w autotoolsach). Dodanie tego buduje libmysqld.a i amarok się wtedy też
>> buduje i jest niezależny od zewnętrznego mysqla.
>>
>
> 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ć.



-- 
"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