Adding patches in a SPEC

Eric "Sparks" Christensen sparks at fedoraproject.org
Tue Nov 16 22:17:58 UTC 2010


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 11/16/2010 04:28 PM, Martin Sourada wrote:
> On Tue, 2010-11-16 at 11:18 -0500, Eric "Sparks" Christensen wrote:
>> On Tue, Nov 16, 2010 at 11:04, Patrick MONNERAT <pm at datasphere.ch> wrote:
>>> On Tue, 2010-11-16 at 17:48 +0200, Andy Shevchenko wrote:
>>>> You need to do patch on top of source tree container
>>>>
>>>> mycoolpkg-5.3/
>>>>     /Makefile
>>>>     /source.c
>>>> ...
>>>> mycoolpkg-5.3.new/
>>>>    /Makefile
>>>>    /source.c
>>>> ...
>>>>
>>>> run  diff -ruN -p mycoolpkg-5.3 mycoolpkg-5.3.new
>>>>
>>>
>>> ... and use %patch0 -p 1 ...
>>
>> Okay, I ran the above diff and created a nice patch:
>>
>> diff -ruN -p gpredict-1.2/Makefile gpredict-1.2.new/Makefile
>> --- gpredict-1.2/Makefile       2010-11-15 20:07:20.676418835 -0500
>> +++ gpredict-1.2.new/Makefile   2010-11-16 11:04:49.677590541 -0500
>> @@ -168,7 +168,7 @@ OTOOL64 =
>>  PACKAGE = gpredict
>>  PACKAGE_BUGREPORT =
>>  PACKAGE_CFLAGS = -pthread -I/usr/include/gtk-2.0
>> -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo
>> -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0
>> -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
>> -I/usr/include/pixman-1 -I/usr/include/freetype2
>> -I/usr/include/libpng12 -I/usr/include/goocanvas-1.0
>> -PACKAGE_LIBS = -pthread -lgoocanvas -lgtk-x11-2.0 -lgdk-x11-2.0
>> -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0
>> -lm -lcairo -lpng12 -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0
>> -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -lcurl
>> +PACKAGE_LIBS = -lm -pthread -lgoocanvas -lgtk-x11-2.0 -lgdk-x11-2.0
>> -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0
>> -lm -lcairo -lpng12 -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0
>> -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -lcurl
>>  PACKAGE_NAME =
>>  PACKAGE_STRING =
>>  PACKAGE_TARNAME =
>>
>> I changed the SPEC to say "%patch0 -p 1".  I get the same error (below):
>>
>> [user at server rpmbuild]$ rpmbuild -ba SPECS/gpredict.spec
>> Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.wAGj7E
>> + umask 022
>> + cd /home/christensene/rpmbuild/BUILD
>> + LANG=C
>> + export LANG
>> + unset DISPLAY
>> + cd /home/christensene/rpmbuild/BUILD
>> + rm -rf gpredict-1.2
>> + /usr/bin/gzip -dc /home/user/rpmbuild/SOURCES/gpredict-1.2.tar.gz
>> + /bin/tar -xf -
>> + STATUS=0
>> + '[' 0 -ne 0 ']'
>> + cd gpredict-1.2
>> + /bin/chmod -Rf a+rX,u+w,g-w,o-w .
>> + echo 'Patch #0 (gpredict-1.2-DSO.patch):'
>> Patch #0 (gpredict-1.2-DSO.patch):
>> + /bin/cat /home/user/rpmbuild/SOURCES/gpredict-1.2-DSO.patch
>> + /usr/bin/patch -s -p1 --fuzz=0
>> The text leading up to this was:
>> --------------------------
>> |diff -ruN -p gpredict-1.2/Makefile gpredict-1.2.new/Makefile
>> |--- gpredict-1.2/Makefile      2010-11-15 20:07:20.676418835 -0500
>> |+++ gpredict-1.2.new/Makefile  2010-11-16 11:04:49.677590541 -0500
>> --------------------------
> That might be because the Makefile actually isn't there -- it's usually
> created from Makefile.in after calling ./configure. IMHO you have
> several options
>       * use sed to make the change, after running configure
>       * patch Makefile.in instead of Makefile
>       * patch Makefile.am and reconfigure (autoreconf --force,
>         or ./autogen.sh, depending how autotools are handled in
>         gpredict)
> 
> And anyway, why are you trying to patch it this way? Unless I missed
> something you're adding -lm to PACKAGE_LIBS which is however already
> present (prior to -lcairo) there.
> 
> Martin
> 

I ran into the following error when I was building the SRPM:

/usr/bin/ld: solar.o: undefined reference to symbol 'sincos@@GLIBC_2.2.5'
/usr/bin/ld: note: 'sincos@@GLIBC_2.2.5' is defined in DSO
/lib64/libm.so.6 so try adding it to the linker command line
/lib64/libm.so.6: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make[4]: *** [test-002] Error 1
make[4]: *** Waiting for unfinished jobs....
/usr/bin/ld: solar.o: undefined reference to symbol 'sincos@@GLIBC_2.2.5'
/usr/bin/ld: note: 'sincos@@GLIBC_2.2.5' is defined in DSO
/lib64/libm.so.6 so try adding it to the linker command line
/lib64/libm.so.6: could not read symbols: Invalid operation


I was told that I needed to add the -lm to the PACKAGE_LIBS which is
what I was trying to do.  If this is NOT what I need to do or I need to
fix this in a different manner I'm open to suggestions.

Thanks for the help.

- --Eric

- -- 
- --Eric
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQIcBAEBAgAGBQJM4wMLAAoJEDbiLlqcYamxPNQQALWAlCyRikUwRwUliZsbaizC
r8teSmbBtr77BFJjy2Lb8eBngqZDmLUFz2kvU/acj8lR4VknEmzzUCey2RuUr4os
yzjmZYIJAKIvQcOEqTM6Y8DNyFOkIi8ip76I5GBj3qZOub7YqJSxpJYER3une56l
qL5fxRBqrXPO9Hui/ssbm6CEBvVRlB3DLDYmQykc68xK5BTbhI2JIuto7f4HCvwJ
RX1O9UsI5qv+gfawfnnQ4O4/PX2G6Yg+d3mPdwGsYcyHWMw/Od8zyim1fWoScV7A
KmfNg7uHqKzITI7CV67ReT8jvloiWr5Nz8F92HeX1HPsadx3Dgl7offreR05vgGp
E7KfphthNsRYjcCC2NXS5Y6+8CTj7No5+VNhZYjK0K8Slo3rxN5eoLpYC1pJET+s
t1tVDeOl1YEV31e7/rNDFHI33alcefcJWOG0CjgcsyQEH9XGrPQsVkfIQRFE9OQO
iSSD8mbNnMAJIYQE2hKOk3OV5ohG38FxJgmzCeugbmam4nwSquoQkd29XrlnWi5r
BXIsUB/gVZtNuvMZj+qbwPIpaQd48ohAnG4yVUIlRdpS1PyHTJ4JQcAjdiRCJhFd
ix/wH7xUYfV14P/JgdoE7aLkgbaQJOlpIGqqbzQBh+xN7c3MHxp7gXCG1vGCMCu1
hm+wIDHPnNBdxbDN2Rnv
=m6Rt
-----END PGP SIGNATURE-----


More information about the devel mailing list