shoes / shoes-deprecated

Former repo for Shoes... see README for up to date locations!
http://shoesrb.com/
Other
1.15k stars 168 forks source link

Building on Arch linux #117

Closed myra closed 13 years ago

myra commented 13 years ago

The latest version of curl dropped types.h in the /usr/include/curl directory. I've checked the curl bugtracker and the issue is closed as "won't fix". The previous version of curl had a serious bug according to the curl development website. What needs to be done to resolve this issue, or can it be resolved?

steveklabnik commented 13 years ago

Hi Myra-

I'm not sure off the top of my head, to be honest. I'm an Arch user, so this issue is really important to me, but due to a few deadlines, won't be able to look into it for a couple of days. :/

Maybe @ccoupe has some thoughts?

myra commented 13 years ago

Thanks for the quick reply. I guess I should have shown the following link to the bug.

http://sourceforge.net/tracker/?func=detail&aid=3357929&group_id=976&atid=100976

The comment by the developer makes it clear the types.h file won't be replaced. The build log is here:

http://pastebin.com/i8c3dUrR

Hope this helps.

Myra

myra commented 13 years ago

One more thing. The build log was after commenting out types.h in /shoes-git/src/shoes/shoes/config.h. I don't use an AUR helper. I download the tarball, extract it, and run makepkg.

steveklabnik commented 13 years ago

Awesome, thanks.

If that header is 'blanked out' as he says, then maybe it won't be such a bad fix. I just have no time to look into it because of work. :/

At least, as of next week, Shoes is my job. :D

myra commented 13 years ago

The solution is at, it's the types.h file from a previous release.

http://pastebin.com/vcmshQGS

Put it in the shoes directory along with the config.h file, change the include line to #include <shoes/types.h>, and the build works (at least on my x86_64 box). I've only tested one of the sample, and it worked.

ccoupe commented 13 years ago

Interesting, on my Ubuntu 10.10 system:

ccoupe@twb:~$ more /usr/include/curl/types.h /* not used */

So the file is there, just empty.

myra commented 13 years ago

The difference is due to Arch Linux. The rolling release model keeps everything up to date with the lateset releases. The file existed but was empty until curl version 7.21.7-1 which was just released. If you look at the pastebin I posted, the original file didn't contain much. I just used the file from a previous release instead of an empty file.

This problem won't affect other distros until the update curl to version 7.21.7-1. Including it with the shoes files seems to cure the problem and it could be an empty file like the one on your Ubuntu box.

Myra

ccoupe commented 13 years ago

Since the file contains nothing except comments we probably shouldn't include it as you did with your config.h

myra commented 13 years ago

Then the build fails as the build log here shows http://pastebin.com/i8c3dUrR . Thats why I started my search for the problem. I suppose rewriting shoes to eliminate the problem is also an option, I was just trying to determine the problem and find a solution so I could try out shoes.

As I said, it won't be a problem until distros upgrade curl to version 7.21.7-1 when the empty file is dropped from curl and won't be replaced as per the bug report here http://sourceforge.net/tracker/?func=detail&amp;aid=3357929&amp;group_id=976&amp;atid=100976 .

The app belongs to y'all, I was just trying to solve my immediate problem.

Myra

ccoupe commented 13 years ago

Oh, a problem I can help with!

What your log shows is that you did not comment out line 46 of config.h according to the C (not C++) rules of your gcc. Use /* #include .... */ to comment out a C preprocessor directive. In C, a line starting with # is not a comment, it is a macro #ifdef #define...

You may still find build errors (or not) and the vanishing curl types.h is still something to needs to be fixed in Shoes config.h (or however config.h is created) so the bug report can't be closed.

ccoupe commented 13 years ago

Being a pedantic a**hole I made my shoes/config.h look like this near line 46

include <curl/curl.h>

/* #include <curl/types.h> */

include <curl/easy.h>

I did a 'rake clean' and 'rake'. Shoes built fine (with the normal warning errors we learn to expect). './dist shoes -m' brings up the manual so it's correct. Whether MingW or OSX will fail to build w/o curl/types.h is not something I can test.

myra commented 13 years ago

No such thing as a pedantic a**hole. This was my bad. Software needs to be done correctly, at least that's what I've come to believe over the last 40+ years. I'm not a C programmer and prone to make such mistakes when I occassionally slip off into that bad habit. Thanks for pointing out my error. I had a manager once who said "if your not screwing up ocassionally, you're not doing anything". I must be really busy.

steveklabnik commented 13 years ago

@ccoupe awesome, glad it turns out it can be removed there. Still leaving this open, as you said, gotta try on Mac and Windows first...

ccoupe commented 13 years ago

Actually, you don't have to wait. That part of the code is GTK (linux) only. The line can be deleted from config.h And the issue closed.

gerbra commented 13 years ago

I use this patch:

Sorry, patch syntax break this comment boxes...

if LIBCURL_VERSION_NUM < 0x071503

// types.h has been removed in libcurl 7.21.7. // ToDo: Check if curl/types.h is deprecated and could be removed // or is needed in older libcurl versions

include <curl/types.h>

endif

Regards Gerhard

steveklabnik commented 13 years ago

@ccoupe, that's only included in linux shoes anyway, so I'm applying the patch.

So sorry this took me so long.