Heh, no problem! I'm planning to write a followup tutorial, using the mp3 bundle from the first tutorial to make Podcast RSS feeds with ControlTower, which should be fun.
On 23 Aug 2010, at 23:50, Thibault Martin-Lagardette wrote: > Hi Nick, > > Weirdly I did know that it was you, but you know, when you read something, > sometimes you end up typing / saying whatever you're reading when doing both > at the same time. Haha :D. > > I'm really sorry I wrote the wrong name. Let me thank you again for your work > :-) > > -- > Thibault Martin-Lagardette > > > > On Aug 23, 2010, at 14:22, Nick Ludlam wrote: > >> Hi Thibault, it's actually me who wrote the tutorial, and Emil who gave me >> really solid feedback on some required steps I managed to miss out first >> time round. >> >> I've done what you've recommended and changed the example irb session to use >> simple-prompt mode. It's now pushed to >> http://github.com/nickludlam/macruby_website/tree/bundle-tutorial and >> awaiting a merge from Matt. >> >> Nick >> >> On 23 Aug 2010, at 18:58, Thibault Martin-Lagardette wrote: >> >>> Hi Emil! >>> >>> That's very awesome work, thanks for the dedication of making a tutorial! >>> >>> I would simply want to add, maybe you should launch macirb with >>> --simple-prompt, it makes the output a little nicer and clearer I think (at >>> least for that kind of examples where line numbers are not really needed). >>> >>> Thank you again! >>> -- >>> Thibault Martin-Lagardette >>> >>> >>> >>> On Aug 22, 2010, at 12:46, Nick Ludlam wrote: >>> >>>> >>>> Fantastic feedback, thanks again. I've included comments inline below, and >>>> I've updated the preview at >>>> http://recoil.org/~nick/macruby/documentation/realworld-dynamic-bundles.h >>>> >>>> On 20 Aug 2010, at 14:51, Emil Tin wrote: >>>> >>>>> progress! >>>>> I downloaded your project, and it builds without problems. Comparing them >>>>> I found out that: >>>>> >>>>> 1. my project was missing the 'Copy Headers' build phase. >>>> >>>> You're right, I've added this into the text. >>>> >>>> >>>>> 2. after adding a 'copy headers' phase, and using the get info.. then >>>>> checkbox method to add headers files from the taglib target to the >>>>> taglibbundle target, it still couldn't build because my project had >>>>> list.tcc and tmap.tcc in the 'compile sources' build phase. for some >>>>> reason, it seems that when i use 'get info' method, files with the .tcc >>>>> extension are added to the 'compile source' phase isntead of the 'copy >>>>> headers' phase. >>>> >>>> Yeah it seems XCode gets confused with that suffix. I've simplified the >>>> method of cloning the header and source settings by getting the reader to >>>> drag and drop the files from the existing folders directly into the new. >>>> >>>> >>>>> after moving the two .tcc files to the 'copy headers phase', my project >>>>> builds. moving on i found. >>>>> >>>>> >>>>> 3. TagLib.h needs #import <Cocoa/Cocoa.h> >>>> >>>> Linking to <Foundation/Foundation.h> should be all thats needed, but the >>>> template uses Cocoa, so I'll add a step to edit this from Cocoa to >>>> Foundation. >>>> >>>> >>>>> 4. TagLib.m needs #import "tag_c.h" >>>> >>>> Correct, and fixed! >>>> >>>> >>>>> 5. the copy script at the end failed. the reason was i copied it from the >>>>> webpage, which had a line break. you might add a "\" to the code at the >>>>> webapge: >>>>> >>>>> cp -v "${TARGET_BUILD_DIR}/${EXECUTABLE_PATH}" \ >>>>> "${SOURCE_ROOT}/${FULL_PRODUCT_NAME}" >>>> >>>> I've now added the backslash to help with the line wrapping. >>>> >>>> >>>>> 6. i need to require the full path to the bundle (or modify load paths). >>>>> simply using require 'TagLibBundle' fails even if i'm inside the folder >>>>> the bundle is? >>>> >>>> I think this is because I missed a step where you give the project the >>>> '.bundle' suffix, so you end up with a 'TagLibBundle.bundle' filename. >>>> I've added it to the tutorial text. >>>> >>>> >>>>> 7. it works! i can use test.tags[:title] and get the title af an mp3. >>>>> >>>>> 8. if i call test.tags i get a segmentation fault: >>>>> >>>>> ~/Desktop/MacRuby/TagLib.framework$ macirb >>>>> Couldn't load Wirble: no such file to load -- wirble >>>>> irb(main):001:0> require >>>>> '/Users/emiltin/Desktop/MacRuby/TagLib.framework/TagLibBundle.bundle' >>>>> => true >>>>> irb(main):002:0> test = >>>>> TagLib.alloc.initWithFileAtPath("/Users/emiltin/Music/Elysium\ >>>>> etc/Celestial_Sounds_and_Tribal_Beats_mp3/05.Wisdom.mp3") >>>>> => #<TagLib:0x200031f40> >>>>> irb(main):003:0> test.tags[:title]=> "Wisdom" >>>>> irb(main):004:0> test.tagsSegmentation fault >>>> >>>> Ok this is a weird one, and I think related to reference counting and >>>> release pools. I've now altered the way the wrapper works, and it now uses >>>> discreet ivars and getters instead of a dictionary, which is a little more >>>> verbose, but nicer from the Ruby side of things. >>>> >>>> >>>>> >>>>> On 20/08/2010, at 14.42, Nick Ludlam wrote: >>>>> >>>>>> Thanks very much Emil. I'll go through the points: >>>>>> >>>>>> 1. Good catch. I'll replace this with 'curl' since it's part of the base >>>>>> system. >>>>>> >>>>>> 2. I'll describe this step in a little more detail, perhaps with a >>>>>> screenshot. There is a reasonable familiarity with XCode that's assumed, >>>>>> though. >>>>>> >>>>>> 3. I suspect this is related to build setting change that I may have >>>>>> missed out. If you have time, could you grab the project from >>>>>> http://github.com/nickludlam/TagLib.framework and try compiling ? >>>>>> >>>>>> >>>>>> Nick >>>>>> >>>>>> >>>>>> On 20 Aug 2010, at 12:42, Emil Tin wrote: >>>>>> >>>>>>> >>>>>>> nice tutorials! >>>>>>> >>>>>>> i tried following the tutorial but ran into a few problems: >>>>>>> >>>>>>> 1. >>>>>>> wget command was not found. wget is not installed by default in os x, >>>>>>> it seems. >>>>>>> >>>>>>> 2. >>>>>>> linking agains foundation and libz: as an xcode beginner, i had to >>>>>>> guess a bit to figure out how to do this. i suppose you mean adding >>>>>>> items in the 'linked libraries' area of the taglibbundle target info >>>>>>> pane. maybe describe in a sentence the simple steps involved. >>>>>>> >>>>>>> 3. >>>>>>> can't compile. when i try to build the project, i get a lot of errors. >>>>>>> here's the first: >>>>>>> >>>>>>> >>>>>>> CompileC >>>>>>> /Users/emiltin/Desktop/builds/TagLib.build/Debug/TagLibBundle.build/Objects-normal/x86_64/tlist.o >>>>>>> taglib-src/taglib/toolkit/tlist.tcc normal x86_64 c++ >>>>>>> com.apple.compilers.gcc.4_2 >>>>>>> cd /Users/emiltin/Desktop/MacRuby/TagLib.framework >>>>>>> setenv LANG en_US.US-ASCII >>>>>>> /Developer/usr/bin/gcc-4.2 -x c++ -arch x86_64 -fmessage-length=0 -pipe >>>>>>> -Wno-trigraphs -fpascal-strings -fasm-blocks -O0 -Wreturn-type >>>>>>> -Wunused-variable -DHAVE_CONFIG_H -isysroot >>>>>>> /Developer/SDKs/MacOSX10.6.sdk -mfix-and-continue >>>>>>> -fvisibility-inlines-hidden -mmacosx-version-min=10.6 -gdwarf-2 -iquote >>>>>>> /Users/emiltin/Desktop/builds/TagLib.build/Debug/TagLibBundle.build/TagLibBundle-generated-files.hmap >>>>>>> >>>>>>> -I/Users/emiltin/Desktop/builds/TagLib.build/Debug/TagLibBundle.build/TagLibBundle-own-target-headers.hmap >>>>>>> >>>>>>> -I/Users/emiltin/Desktop/builds/TagLib.build/Debug/TagLibBundle.build/TagLibBundle-all-target-headers.hmap >>>>>>> -iquote >>>>>>> /Users/emiltin/Desktop/builds/TagLib.build/Debug/TagLibBundle.build/TagLibBundle-project-headers.hmap >>>>>>> -F/Users/emiltin/Desktop/builds/Debug >>>>>>> -I/Users/emiltin/Desktop/builds/Debug/include >>>>>>> -I/Users/emiltin/Desktop/builds/TagLib.build/Debug/TagLibBundle.build/DerivedSources/x86_64 >>>>>>> >>>>>>> -I/Users/emiltin/Desktop/builds/TagLib.build/Debug/TagLibBundle.build/DerivedSo u > r >> c >>> e >>>> s >>>>>> -c >>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc >>>>>> -o >>>>>> /Users/emiltin/Desktop/builds/TagLib.build/Debug/TagLibBundle.build/Objects-normal/x86_64/tlist.o >>>>>>> >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:42: >>>>>>> error: expected class-name before '{' token >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:51: >>>>>>> error: 'List' is not a template >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:51: >>>>>>> error: 'List' has not been declared >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:51: >>>>>>> error: expected unqualified-id before ':' token >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:66: >>>>>>> error: 'List' is not a template >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:66: >>>>>>> error: 'List' has not been declared >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:66: >>>>>>> error: expected unqualified-id before '<' token >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:90: >>>>>>> error: expected constructor, destructor, or type conversion before '<' >>>>>>> token >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:96: >>>>>>> error: expected constructor, destructor, or type conversion before '<' >>>>>>> token >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:102: >>>>>>> error: expected constructor, destructor, or type conversion before '<' >>>>>>> token >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:109: >>>>>>> error: expected nested-name-specifier before 'List' >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:109: >>>>>>> error: expected initializer before '<' token >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:116: >>>>>>> error: expected nested-name-specifier before 'List' >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:116: >>>>>>> error: expected initializer before '<' token >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:122: >>>>>>> error: expected nested-name-specifier before 'List' >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:122: >>>>>>> error: expected initializer before '<' token >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:129: >>>>>>> error: expected nested-name-specifier before 'List' >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:129: >>>>>>> error: expected initializer before '<' token >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:135: >>>>>>> error: expected nested-name-specifier before 'List' >>>>>>> /Users/emiltin/Desktop/MacRuby/TagLib.framework/taglib-src/taglib/toolkit/tlist.tcc:135: >>>>>>> error: expected initializer before '<' token >>>>>>> ..... >>>>>>> >>>>>>> >>>>>>> i'm using taglib 1.6.3, os x 10.6.4 and xcode 3.2.3 >>>>>>> >>>>>>> I'm not very experienced with xcode, and not sure what to do next. i >>>>>>> followed the steps you described wtih setting up xcode build settings, >>>>>>> etc. it seems the header files is somehow not included correctly? >>>>>>> >>>>>>> thanks, >>>>>>> emil >>>>>>> >>>>>>> >>>>>>> On 19/08/2010, at 19.12, Nick Ludlam wrote: >>>>>>> >>>>>>>> I've written up a first draft of a tutorial on taking C/C++, wrapping >>>>>>>> the code in a simple Obj-C class, then exporting this as a bundle >>>>>>>> which can be loaded by MacRuby. In this case, it's about wrapping the >>>>>>>> open-source TagLib library in order to extract ID3 tags from mp3 files. >>>>>>>> >>>>>>>> If people have the time, I'd really appreciate any feedback on things >>>>>>>> like length, clarity, and accuracy of describing steps in XCode etc >>>>>>>> etc. >>>>>>>> >>>>>>>> http://recoil.org/~nick/macruby/documentation/realworld-dynamic-bundles.html >>>>>>>> >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Nick >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> MacRuby-devel mailing list >>>>>>>> MacRuby-devel@lists.macosforge.org >>>>>>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel >>>>>>> >>>>>>> _______________________________________________ >>>>>>> MacRuby-devel mailing list >>>>>>> MacRuby-devel@lists.macosforge.org >>>>>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel >>>>>> >>>>>> _______________________________________________ >>>>>> MacRuby-devel mailing list >>>>>> MacRuby-devel@lists.macosforge.org >>>>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel >>>>> >>>>> _______________________________________________ >>>>> MacRuby-devel mailing list >>>>> MacRuby-devel@lists.macosforge.org >>>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel >>>> >>>> _______________________________________________ >>>> MacRuby-devel mailing list >>>> MacRuby-devel@lists.macosforge.org >>>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel >>> >>> _______________________________________________ >>> MacRuby-devel mailing list >>> MacRuby-devel@lists.macosforge.org >>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel >> >> _______________________________________________ >> MacRuby-devel mailing list >> MacRuby-devel@lists.macosforge.org >> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel > > _______________________________________________ > MacRuby-devel mailing list > MacRuby-devel@lists.macosforge.org > http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel _______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel