IRC Log Viewer » #firebreath » 2011-04-29

IRC Nick Time (GMT-7) Message
cxo 08:04 When building using prepmake How do you compile in debug symbols?
taxilian 08:04 cxo: you need to tell cmake to build in debug mode; there is a command line switch for it
cxo: http://www.cmake.org/pipermail/cmake/2009-March/027573.html
could you please add that to the FAQ?
johnd_ 08:04 hi, sorry for dumbo question but I've forgotten (again) what to do when you want to change to a newer version of FB. As per the version-control tut I have my FB and my code separated. Do I need to run fbgen again in the new version's dir, or only the prep script?
taxilian 08:04 just the prep script
johnd_ 08:04 I'm moving from 1.4.3 -> 1.5.1
thanks
taxilian 08:04 there are some breaking changes you'll need to watch out for
explained on the version history page
johnd_ 08:04 I'll back up my fbgen dir then so I can revert if I need
taxilian 08:04 your fbgen dir? you mean your projects dir?
johnd_ 08:04 whichever dir it is that FB creates/manages that has no VCS files in. fbbuild I think is what I meant
I run "prep2008.cmd fbprojects fbbuild" so fbbuild is the 'throw-away' dir
taxilian 08:04 right; backing that up is pointless
fbprojects is the dir you want to back up
johnd_ 08:04 I didn't mean back-up so much as rename so it is left until I am sure 1.5 is working. All my own code is in SVN already
taxilian 08:04 fbgen is just the code generator
but if for some reason you decided to roll back you just rerun the prep script on the old version of firebreath
so there still isn't much point to keep the old build dir
since it won't work
just sayin' =]
johnd_ 08:04 just saves a full-rebuild. You're right.
taxilian 08:04 it's actually possible to prebuild the 4 static projects so that you don't have to rebuild them each time
as of 1.5.0
one of these days I'll find someone willing to document that in exchange for me telling them how :-P
cxo 08:04 taxilian: I dont know how to do that. The build instructions make you call 'make' not cmake
johnd_ 08:04 btw, was it you who just had the baby or am I confusing with another list?
taxilian 08:04 johnd_: that was me (well, my wife really =])
johnd_ 08:04 congrats
taxilian 08:04 cxo: the prep script runs cmake; you can pass extra parameters to the prep script and it will pass it in to cmake
johnd_: thanks =]
johnd_ 08:04 and good luck ;)
cxo 08:04 ah cool
taxilian 08:04 heh. this is our second, so it's definitely more lively around here at times
cxo 08:04 So like prepmake.sh projects build -DCMAKE_BUILD_TYPE=Debug
taxilian 08:04 right
johnd_ 08:04 Can you do the "telling them how" as a forum post then it is kind of documented already?
taxilian 08:04 well, that's definitely better than nothing =] and that's one reason that I put up the forum, since one can link to it
I'd really like to have feature instructions on the wiki, though
jshanab_wcw 11:04 How can I programatically unload my plugin, I want to trigger an update and it needs to be unloaded
taxilian 12:04 you can't
and no, it doesn't
any other questions?
jshanab_wcw 12:04 :-) Well I have a little script that updates the c header file and a param in the html test page so the plugin can determine it is outdated in the onready function. I was gonna maybe redirect in javascript or reload the page with the "objects" removed and replaced with my download link and image.
taxilian 12:04 I would probably do that in javascript, if it were me
jshanab_wcw 12:04 not script. c program attached as a prebuild event to take the version from the FB pluginconf and put it where the C code can use it as vars in the plugin
taxilian 12:04 I thought you wanted to completely unload the DLL
right… I meant determining that it is outdated. that's the part I'd drive from javascript
jshanab_wcw 12:04 Oh, oK. I couldn't think of a good way in the javascript. without having the plugin loaded anyway
taxilian 12:04 you can check the version on firefox without loading the plugin
on IE you can't
jshanab_wcw 12:04 yeah, live would be soooo much easier without IE
taxilian 12:04 lol. tell me about it
if you had any idea how many hours, weeks, maybe months I've spent troubleshooting IE issues on plugin-related projects...
jshanab_wcw 12:04 I bet!
kylehuff 13:04 it isn't even a very good browser (rendering engine, UI, etc.) - I don't know why people even use it.
taxilian 13:04 because it comes with windows
and MS is pursuasive
http://blogs.msdn.com/b/ie/ is an interesting read
kylehuff 13:04 I guess it shouldn't surprise me - AOL was pretty big back in the day, and AOL is in my opinion the only virus you receive via postal mail...
jshanab_wcw 13:04 pervasive hehe
taxilian 13:04 lol
jshanab_wcw 13:04 well, exit in the plugin exits the browser, LOL
taxilian 13:04 lol. yes, yes it does
you can't force the dll to unload
and you don't need to
(I think I may have mentioned that before, but just to reiterate)
jshanab_wcw 13:04 Right as long as I release all my refs to it, i should be good to run the next msi
taxilian 13:04 you are missing the point; you don't replace the old dll
you can't
the browser *will not* release it
until it shuts down
jshanab_wcw 13:04 well i plaed on doing a browser restart...just after I did the download or at least the uninstall so the next session gets the new one
taxilian 13:04 up to you
but you can't replace the dll (or even delete it) while the browser is open
you can, however, install a new version and make it active so that the browser will load it the next page laod
so if you're going to force a browser restart, do that and don't mess with trying to "unload the plugin". if you're not, make sure you install it correctly; each version should have a unique filename and be in a unique directory (I usually put the version # in both)
jshanab_wcw 13:04 How is it made active? They have the same mime type, does that cause an issue?
taxilian 13:04 you install the new one, which unregisters the old one
as long as both the criteria I told you are met you *should* be okay… make sure that the metadata of the plugins match, though
same mimetypes, same description, same name
jshanab_wcw 13:04 That would be great.
taxilian 13:04 on IE you're fine as well because the COM control gets changed
but make sure it's in a version-specific directory; that seems strange, but it avoids several browser bugs (mostly on Chrome, if I remember correctly, but it's been awhile)
may have also affected ff3.6
jshanab_wcw 15:04 My plugin in FireFox shows as version 1.0.0.1 but shows as 1.1.4 in Program fiels and features. Where in the project or code is the 1.0.0.1 coming from?
taxilian 15:04 probably the .rc file
jshanab_wcw 15:04 I see where the plugin name and FileDescrition are set, in PluginConfig....rc? let me look
taxilian 15:04 no; it's a firebreath generated file
I haven't yet come up with a good way to make it customizable
so for now you just have to copy it into your plugin dir and customizei t
jshanab_wcw 15:04 Any way to make it generated off of PluginConfig?
taxilian 15:04 I haven't come up with a good way yet
but you're welcome to do so… submit a patch =]
if you know the version string is going to be x.x.x.x you could do a string replace from "." to "," and plop the resulting var there
jshanab_wcw 15:04 Maybe my c program that generates the header for the plugin as a pre-build event off of the vars in pluginConfig, can just do that too
taxilian 15:04 wait… why are you generating the header with a C program instead of using cmake?
jshanab_wcw 15:04 I have a C program that writes out a header file. CMAKE attaches this little gem to the project and passes the version set in the PluginConfig. The header is then included before the build and has FBVERSION::major, etc avail to it
taxilian 15:04 why not generate the header file with cmake?
jshanab_wcw 15:04 Can CMAKE modify or generate a header file for me? (i am not that good with CMAKE)
well then, this Would be a good addition to FB. Always generate a header with the CMAKE off of the PLUGINConfig vars, major,minor,revison,build and add the gen directory tot he project for the API and the include in the API and a set of functions that let a javascript page query those values. Or is it in 1.5 already (Jeff admits he is still using 1.4)
I don't quite get the firebreathWin.rc. As opened in VS, it shows both a FILEVERSION of 1.0.0.1 and also a FileVersion of 1.1.4
taxilian 15:04 look at configure_file
don't open it as an rc file
open it as text
jshanab_wcw 15:04 yeah that thisng in VS is useless. I was looking just now at the firebreathWin.rc, and I see that it has FBSTRING's in it so I will look for the source , cause this is the generated file I take it
taxilian 15:04 the source is gen_templates/firebreathwin.rc
or some such
jshanab_wcw: can you send me an example of what your header file looks like after it's generated?
so I know what you're trying to do?
jshanab_wcw 15:04 So I just copy that template to my plugin/win directory at it will use that for the gen?
taxilian 15:04 no, to your plugin/ directory
jshanab_wcw 15:04 sure...
http://pastebin.com/QS7pcfVm
it really took 5 min to do in C
taxilian 15:04 wait… you just need to split the version info is all?
that's easy in cmake
and then you can just use configure_file
I can even throw it into FireBreath if you want
jshanab_wcw 15:04 I just didn't know how to write out a header in cmake for inclusion.
configure_file? ok getting confused, that is seperate from moving the template to plugin/ (it still gets used as a template, correct?)
I think that would be a great feature. especially if we throw in a default api function that lets you get the strings back from javascript. Then IE or FF can use the same JS to check the version.
Splitting it out was not too important, i just did that so I can maybe later say if major is different force an update and stop, if minor, strongly suggest and allow continue and if revision just do it. :- ) I did this http://pastebin.com/NjDe45Rt in my PluginConfig
taxilian 15:04 yeah, if you're doing that anyway, just use configure_file to generate the header
or for that matter put it in project/templates/
and it will get configured automagically
jshanab_wcw 15:04 Ok, this I GOTTA know. I guess i do not fully understand the template flow
taxilian 15:04 oooh, you rhymed
jshanab_wcw 15:04 project templates is in my project? Is this a private or project specific template directory or in the FB codebase
LOL. Not even trying
taxilian 15:04 just make a "templates" directory in your plugin project folder
and put things there
they will be configured to templates/<file name>
in the build dir
jshanab_wcw 15:04 Ok, so this would work with the firebreathWin.rc too right?. So my polugin is named foo, it is foo/templates and not foo/project/templates. Just being clear :-)
taxilian 15:04 no, firebreathWin.rc is a special file
jshanab_wcw 15:04 ok
taxilian 15:04 the files from gen_templates are firebreath template files, and those have to be either in gen_templates or in the root of your plugin project folder
mainly 'cause that's the arbitrary decision I made that day
you could also do set(FB_VERSION_SPLIT ${FBSTRING_PLUGIN_VERSION})
string(REPLACE ".", ";")
list(GET FB_VERSION_SPLIT 0 FBSTRING_VERSION_MAJOR)
list(GET FB_VERSION_SPLIT 1 FBSTRING_VERSION_MINOR)
list(GET FB_VERSION_SPLIT 2 FBSTRING_VERSION_BUILD)
list(GET FB_VERSION_SPLIT 3 FBSTRING_VERSION_PATCH)
jshanab_wcw 16:04 It sounds like a good one though, to keep things seperate
taxilian 16:04 which would take a FBSTRING_PLUGIN_VERSION of "143.5.4.2" and split it into components
jshanab_wcw 16:04 Nice :-)
taxilian 16:04 and with a minor change you can make it so that you can pass a version string in on the command line and it will override what is in PluginConfig.cmake
feel free to document any of that; I'll probably put the split-out vars into FireBreath itself
jshanab_wcw 16:04 Well the last step will be to get an environment variable, the build number. Hey I have a GIT Question. Are there "build numbers" or are they all guids?
I am under the gun, I got 1 week to get this solid. I want some way to trigger auto update brfore we deploy the first system!
taxilian 16:04 there are no "build numbers"; usually that would come from a build server
do you have a CI server of any sort?
Hudson? Jenkins? Bamboo?
jshanab_wcw 16:04 OK, cool. I will be setting up Pulse soon. I have only now been able to communicate the importance of CI and even version Control and I will have to set it all up myself
taxilian 16:04 huh. never heard of pulse. what makes you choose that?
jshanab_wcw 16:04 Only one i have used, to be honest. Used it at Pelco. I was building windows,linux, debug and release with auto testing and profiling, pretty good system but it does rely on agents and more agents costs. What one works well with git?
taxilian 16:04 pulse actually looks pretty decent. I've only really used Hudson (now Jenkins)
jshanab_wcw 16:04 It can be a dog at times. but the managment side of it is great. we had 9 each windows and linux agents for about 150+ developers and about 4K builds weekly
taxilian 16:04 the ability to have a build that requires things to pass on multiple systems for the build to succeed may convince me to change to use it
jshanab_wcw 16:04 we had it set up that it emails the committer when the build fails or complexity exceeded standard :-)
taxilian 16:04 cool
jshanab_wcw 16:04 I went from a company with 150+ developers and full support staff to 2 people, now 3.
(and I work double hours)
taxilian 16:04 that's pretty standard for a small company
I just accepted a second job; I'll now be splitting my week between two companies in CA
starting next week
now that school is totally done
jshanab_wcw 16:04 I have a .wxs file in my plugin_WiXInstall/source directory. I keep trying to remove a component and it keeps showing back up when I prep. How is that happening?
that dir is plugin/Win/Wix on the HD
taxilian 16:04 you're probably removing it from the generated file (in the build dir) instead of the source file
jshanab_wcw 16:04 ok, I just assumed the one offered up in VS was the one. (duh)
taxilian 16:04 both are there
just have to look for it
the one in the "generated" folder is the generated one
both in vs, I mean
jshanab_wcw 16:04 I just checked the one in plugin/win/wix not the generated one, and it is the one being updated during prep!
It has never done that before today
taxilian 16:04 … that's weird
it shouldn't be changed
it's the one with ${…} vars, right?
jshanab_wcw 17:04 yeah
taxilian 17:04 !wiki variant_list_of
FireBreathBot 17:04 8 results found. Note: Results limited to 8
"function FB make_variant_list": http://goo.gl/E1po1
"function FB convert_variant_list": http://goo.gl/PK5SP
"function FB variant_list_of (2)": http://goo.gl/Sq8su
"function FB variant_list_of": http://goo.gl/fAJua
"function FB make_variant_list (2)": http://goo.gl/rWlcN
"function FB make_variant_list (3)": http://goo.gl/JzJKW
"function FB convert_variant_list (2)": http://goo.gl/OMnfK
"function FB convert_variant_list (3)": http://goo.gl/pb3pl
jshanab_wcw 17:04 OK, I now can have auto update. Time to head on home for some dinner
taxilian 17:04 =] good luck
jshanab_wcw 17:04 back in the morning for more (gonna try to set up git on a fresh server and migrate our repos.)