IRC log for #brlcad on 20120203

00:44.38 CIA-48 BRL-CAD: 03n_reed * r49211 10/brlcad/trunk/src/libbu/sscanf.c: s/bu_exit/bu_bomb; accept 0 as a valid width for string conversions
08:41.27 *** join/#brlcad ibot (~ibot@rikers.org)
08:41.27 *** topic/#brlcad is BRL-CAD Open Source Solid Modeling || http://brlcad.org || logs: http://ibot.rikers.org/%23brlcad/ || BRL-CAD release 7.22.0 is forthcoming || fixing all our Coverity Scan Initiative defects
08:45.58 *** join/#brlcad KimK (~Kim__@209.248.147.2.nw.nuvox.net)
09:37.19 *** join/#brlcad packrat (~packrator@c-98-209-146-133.hsd1.mi.comcast.net)
09:58.41 *** join/#brlcad packrat (~packrator@c-98-209-146-133.hsd1.mi.comcast.net)
10:20.46 *** join/#brlcad packrat (~packrator@c-98-209-146-133.hsd1.mi.comcast.net)
10:21.30 *** join/#brlcad packrat (~packrator@c-98-209-146-133.hsd1.mi.comcast.net)
10:26.29 *** join/#brlcad packrat (~packrator@c-98-209-146-133.hsd1.mi.comcast.net)
10:39.05 *** join/#brlcad hackrat (~packrator@c-98-209-146-133.hsd1.mi.comcast.net)
10:52.16 *** join/#brlcad packrat (~packrator@c-98-209-146-133.hsd1.mi.comcast.net)
10:59.25 *** join/#brlcad packrat (~packrator@c-98-209-146-133.hsd1.mi.comcast.net)
11:02.29 *** join/#brlcad hackrat (~packrator@c-98-209-146-133.hsd1.mi.comcast.net)
11:20.43 *** join/#brlcad packrat (~packrator@c-98-209-146-133.hsd1.mi.comcast.net)
11:43.53 *** join/#brlcad packrat (~packrator@c-98-209-146-133.hsd1.mi.comcast.net)
11:55.18 *** join/#brlcad juanman (~quassel@unaffiliated/juanman)
12:11.01 *** join/#brlcad juan_man (~quassel@unaffiliated/juanman)
13:21.10 CIA-48 BRL-CAD: 03Sean 07http://brlcad.org * r3276 10/wiki/Help:Searching: Reverted edits by [[Special:Contributions/46.151.43.197|46.151.43.197]] ([[User talk:46.151.43.197|Talk]]); changed back to last version by [[User:Sean|Sean]]
13:21.17 CIA-48 BRL-CAD: 03Sean 07http://brlcad.org * r0 10/wiki/Special:Log/block: blocked [[User:46.151.43.197]] with an expiry time of infinite (anonymous users only, account creation disabled): Spamming links to external sites
13:43.37 *** join/#brlcad juanman (~quassel@unaffiliated/juanman)
13:47.53 *** join/#brlcad packrat (~packrator@c-98-209-146-133.hsd1.mi.comcast.net)
16:35.18 CIA-48 BRL-CAD: 03starseeker * r49214 10/brlcad/trunk/src/other/re2c/README:
16:35.18 CIA-48 BRL-CAD: If we're using the template for the re2c README file (maybe worthwhile, maybe
16:35.18 CIA-48 BRL-CAD: not...) don't stash the generated output in the src tree. Would need a
16:35.18 CIA-48 BRL-CAD: mechanism like that used for our INSTALL and configure scripts to make that work
16:35.18 CIA-48 BRL-CAD: 'properly'
16:38.53 CIA-48 BRL-CAD: 03starseeker * r49215 10/brlcad/trunk/src/other/libz/ (CMakeLists.txt zconf.h zconf.h.in): Enough of the zconf.h.in nonsense. We've already had to modify zlib anyway.
16:40.00 CIA-48 BRL-CAD: 03starseeker * r49216 10/brlcad/trunk/src/other/libz.dist: sync libz.dist
16:41.51 CIA-48 BRL-CAD: 03starseeker * r49217 10/brlcad/trunk/src/other/re2c.dist: sync re2c.dist
16:54.46 CIA-48 BRL-CAD: 03starseeker * r49218 10/brlcad/trunk/ (8 files in 8 dirs): (log message trimmed)
16:54.47 CIA-48 BRL-CAD: Make a stab at logic to clean out all files generated by CMake. This is
16:54.47 CIA-48 BRL-CAD: currently a bit too aggressive in that it will completely nuke the bin, lib, and
16:54.47 CIA-48 BRL-CAD: share output directories, but it's a step in the right direction and seems to be
16:54.47 CIA-48 BRL-CAD: able to restore a checkout to clean status after an in-src-dir CMake configure
16:54.47 CIA-48 BRL-CAD: (although that's only tested on one platform and isn't yet portable - assumes
16:54.48 CIA-48 BRL-CAD: Makefiles, for example.) Not hooked into the build proper yet - it generates a
16:55.40 starseeker that's getting closer to a "real" distclean ability, except for also nuking all the "final output" directories
16:58.06 starseeker If most development work these days is taking place with CMake, we may want to consider removing the svn ignore property globally.
16:58.37 starseeker for myself (most of the time) I want to know precisely what is in the source tree without ignoring anything
17:02.00 starseeker brlcad: if you can take a look at that distclean attempt and let me know precisely how you want it to behave, I can give it a round of polishing, make it portable and hook it in
17:03.39 starseeker I think that approach should be more robust than the Distclean.cmake approach, although it may require a bit more logic
18:45.49 brlcad starseeker: that file wasn't intended to get you to spend time on a distclean impl.. :)
19:07.43 brlcad there are some aspects to both approaches that will probably be desireable
19:07.52 brlcad that, at least, is my at-a-glance understanding
19:09.36 brlcad like the global list that gets appended to, just want to make sure the caller only has to specify items cmake doesn't already know about and doesn't duplicate what the clean rule already does
19:11.18 brlcad the distclean shell script looks like the only/main turd that I'd do away with
19:11.37 brlcad no big deal if you can't time the distclean
19:30.58 starseeker the clean rule removes things generated by make, not things generated by CMake
19:31.27 starseeker the distclean logic as defined is intended to remove things generated by CMake
19:33.17 starseeker the distclean shell script is a temporary measure - eventually there will be a cmake_distclean.cmake file generated that will be invoked by a "make distclean" target
19:34.33 starseeker was i wasn't sure of was whether you wanted me to be able to nuke the files in bin, lib, etc that are produced by CMake *without* removing the files coming from the actual build
19:39.02 brlcad it's the latter I was referring to, nuking bin/lib/etc
19:39.23 brlcad at most, it could inspect and, if empty, delete the dir in the distclean portion of the rule
19:39.42 brlcad but not nuke it outright since that then makes lots of assumptions
19:45.02 brlcad what's the cmake_distclean.cmake file for? seems unnecessarily complicated to have a distclean rule writing out anything
19:45.40 brlcad just needs a list of things to delete, the most important ones being the ones it already knows about
19:46.24 brlcad adding the extra files list ability for the caller becomes the secret sauce that should be sufficient (yet still simple)
20:08.31 starseeker brlcad: I'll play with it a bit and run some tests
20:08.46 starseeker what do you think about nuking the svn:ignore property?
20:14.13 *** join/#brlcad Yoshi47 (~jan@64.235.102.210)
20:40.30 brlcad starseeker: not all of the svn:ignore files are build-system related, if I recall correctly
20:40.46 brlcad so probably not at least without doing a review of what's there and why
20:40.47 starseeker true - some of them relate to ignoring temporary files from editors
20:41.11 starseeker prefers to know when editors are leaving turds behind too, but that's just me...
20:41.13 brlcad right, I'm not sure there's any value seeing those listed
20:42.05 brlcad I know very well what is left around .. but having svn tell me provides no useful information
20:42.24 starseeker doesn't always know ;-)
20:42.38 brlcad on the contrary, can dilute the listing, make it harder to see important files
20:43.18 starseeker must be a workflow difference
20:43.36 starseeker prefers to stay close to the svn tree state, doesn't leave modified or unknown files in the src tree much
20:44.23 brlcad a little workflow, a little difference in tools perhaps, a little familiarity
20:44.46 brlcad if I were working with xcode regularly, I wouldn't want the xcode build dirs listed for example
20:44.56 brlcad they're always there
20:45.10 starseeker why is why out-of-dir builds are good
20:46.31 brlcad a benefit sure, but mostly a different case altogether
20:47.22 brlcad just picked xcode out by example, could just as well be some other random ide that places information with the input/sources
20:47.51 starseeker if the IDE is putting information in the source tree when the build is not taking place in-src, that's a bug in the IDE
20:47.55 brlcad not uncommon to say the least, point is more just that there are *some* files that are of no value to have svn report
20:48.35 brlcad i don't think that holds water -- you may be using an ide that has little or nothing to do with building
20:48.52 brlcad a source indexing browser, for example
20:48.57 brlcad for code reviews
20:49.07 brlcad nothing to do with any concept of a build dir
20:49.24 starseeker hmm. OK, I suppose...
20:53.01 starseeker would probably try to set that up such that the index file(s) were stored out of the src dir, but that's admittedly not something to expect from most devs
20:53.42 brlcad if that's supported by the tool
20:54.40 brlcad i've used several indexers over the years that would write an index for each directory containing sources
20:55.05 starseeker nods. If it weren't I'd set up two copies of the src tree, but your point remains - it's a situation that is a reasonable argument for retaining at least some use of svn:ignore
20:55.15 brlcad good ol' ctags comes to mind, though now there's an output option
20:55.50 brlcad still even if you wrote to some other dir, then you loose the nifty automatic integration that you'd get in vim, ex, emacs, etc
20:56.25 brlcad since they defaulted to the source dir too, and you'd have to tell it (hopefully it has a way) about that random other place
20:57.56 starseeker nods - yeah, I'd probably end up having a separate copy of the src for that
20:58.16 brlcad it all boils down to usability (and maintainability) since that's really the only reason svn:ignore exists
20:58.48 brlcad maintainence cost is practically nil now that build dir is a separate concept
20:59.20 brlcad usability of having vs not having entries for items of no value to "svn status" is then pretty simple
20:59.23 starseeker nods - the main annoyance from my standpoint is when we ignore things like Makefile files, .tcl files, etc
21:00.11 brlcad sure, those items could get yanked
21:00.15 starseeker but a comprehensive selective review to get rid of just those would be a bit time consuming (unless it's scriptable in some fashion)
21:02.24 brlcad *shrug* maybe an hour or two at best.. it's under 200 props
21:02.59 starseeker ok - s/time consuming/mind numbing ;-)
21:04.06 brlcad with a workflow going, it'd probably be about 30s per prop, a lil over an hour
21:04.38 brlcad I find those are great tasks to do while watching movies :)
21:07.34 brlcad 200 "files" is nothing ...
21:07.46 starseeker heh
21:07.48 brlcad I've done a half-dozen refactorings in the last 12 months alone that involved 1000+ file edits each (all unautomatable, hand edits) :)
21:08.17 brlcad one category of new build warning hits more files than that :)
21:11.22 brlcad I find it starts to get numbing when you can't get through the whole list in a single day
21:11.37 brlcad 12 hours or less ftw .. if it's gonna take more, that's a real chore
21:11.49 starseeker envies brlcad's threshold of boredom
21:12.37 brlcad it's reading code, that can be very rewarding in itself
21:13.48 brlcad when I was just starting to make my way through brl-cad years ago, I found that to be one of the best and absolutely fastest ways to become familiarized with what's there
21:14.52 brlcad you start to see the bigger picture of how to restructure, where there are weaknesses, good and bad practices, and more...
21:16.26 brlcad "oh yeah .. there's already a tool that does that"
21:17.03 CIA-48 BRL-CAD: 03bob1961 * r49219 10/brlcad/trunk/src/tclscripts/archer/ (Archer.tcl ArcherCore.tcl): Added a preference for display lists.
22:03.07 brlcad n_reed: if I've been following the commits, it looks like you've included functionality akin to ms's sscanf_s()?
22:08.41 CIA-48 BRL-CAD: 03starseeker * r49220 10/brlcad/trunk/ (11 files in 11 dirs):
22:08.41 CIA-48 BRL-CAD: Getting closer - this leaves bin, lib and share in place but they should be
22:08.41 CIA-48 BRL-CAD: nothing but a collection of empty directories for a bare configure. Just need
22:08.41 CIA-48 BRL-CAD: to teach distclean to check them for empty dirs and recursively remove any empty
22:08.41 CIA-48 BRL-CAD: dirs until we've whittled it down to the minimum (for a pure configure with no
22:08.42 CIA-48 BRL-CAD: build step on a clean checkout, back to the checkout configuration.)
22:13.04 brlcad starseeker: very minor, but can it be aware of only the dirs it adds?
22:13.18 brlcad so it only potentially deletes ones it added, not just empty ones
22:13.26 starseeker urm...
22:13.39 brlcad in case someone happens to mkdir lib/whatever for example ..
22:13.51 brlcad minor and no big deal if it can't
22:14.25 starseeker tricky - if it's putting a file into a deep dir location, it will automatically create all the dirs it needs to get it there (iirc)
22:15.24 starseeker I might be able to get it to track all that - I have to do something similar for distcheck...
22:16.13 brlcad like I said, VERY minor .. just wondering really
22:16.17 starseeker but if it does that and half the dirs listed in the path are already present and half aren't, that could get really tricky
22:16.27 starseeker in principle - maybe
22:16.36 starseeker but probably too hard to justify at this point
22:16.53 starseeker let me get a "make distcheck" target working first
22:17.02 starseeker I should be fairly close now
22:17.19 brlcad as long as it's only removing empty dirs recursively, probably no harm
22:17.34 n_reed brlcad: wasn't referencing sscanf_s, but similar in requiring width for %s and %[...].
22:17.44 starseeker that's the last trick - how to get it to do the directory removal
22:17.56 starseeker I have a few ideas, but need to do some experimentation
22:18.36 brlcad n_reed: what is the width for a %s defined as?
22:18.54 brlcad does it include / require space for the null?
22:19.39 starseeker brlcad: should the "make distclean" target perform the make clean step too? or just remove the files CMake is responsible for?
22:20.20 brlcad following traditional distclean, yeah -- it should perform make clean (first)
22:20.50 brlcad could separate into a makeclean and distclean rule
22:21.41 starseeker ah, nuts - there's a gotcha - when I remove the CMakeFiles directories, I'm removing all the object files too
22:22.16 starseeker is that acceptable, or should I try to introspect into those and leave the .o files?
22:23.00 brlcad cmake made them and filled them, so it should be fine to just remove them .. but then the clean rule already does that, no?
22:23.18 brlcad if so, then distclean can just check if dir is empty, remove
22:24.29 brlcad that'd probably be safer
22:24.38 starseeker I'll check - I was under the impression just the .o files are removed...
22:25.29 starseeker if we're always doing clean with distclean it won't matter, but if we want a "cmake-clean" rule that just removes CMake's output it get dicey
22:26.52 brlcad right, clean just removes the .o, so distclean itself won't have to
22:27.13 brlcad it just checks the dir
22:29.07 starseeker (right now) distclean is removing the whole CMakeFiles directory and all its contents - CMakeFiles directories hold more files generated by CMake
22:29.10 brlcad cmake-clean would be introducing a different naming scheme, "cmakeclean" or "buildclean" would be more apropros
22:29.19 brlcad where distclean=clean+cmakeclean
22:29.40 starseeker or maybe configureclean
22:30.03 brlcad configclean?
22:30.14 brlcad buildsysteminfrastructureclean ;)
22:30.37 starseeker yeah, we may have to live with configclean nuking the individual object files, unless we want to get smarter about the structure contained in that directory
22:31.18 brlcad probably fine
22:31.54 starseeker If a configclean is performed, everything's getting rebuilt anyway because all the Makefiles will be newer than the object files anyway
22:32.11 brlcad the install dirs are where things get more interesting, or even the top-level build dir probably being the most common case
22:32.38 brlcad where someone just has datafiles and/or source snippets being run against uninstalled bin/* tools
22:33.16 starseeker uh... I'm not doing anything with the install dirs - am I supposed to?
22:33.18 brlcad configclean would end up nuking the Makefiles, no?
22:33.24 starseeker yep
22:34.15 brlcad once you run even a partial distclean (assuming it gets past the "clean" phase and is working on the "configclean" phase), it's a point of no return
22:34.23 starseeker yep
22:34.26 brlcad you have to run cmake again
22:34.35 starseeker just like Autotools, iirc
22:34.38 brlcad yep
22:34.41 starseeker (kinda in the nature of a distclean)
22:34.56 n_reed brlcad: %1s means read 1 char max from input; dest string must be at least 2 chars
22:35.01 n_reed is there something i need to fix?
22:35.50 starseeker configclean would actually have fairly minimal utility, except possibly in debugging scenarioes
22:36.58 starseeker wonders if there is even a equalivent to "make clean" in MSVC...
22:37.16 brlcad n_reed: just thinking aloud, the reason why strlcpy exists when there was a strncpy a decade preceding is due to that size parameter
22:37.29 brlcad off-by-one errors due to usability weakness
22:39.00 brlcad I don't think it matters for the %#s case since that (to me) clearly implies number of chars and the #+1 == '\0' seems evident
22:39.33 brlcad it may matter more for size parameters, I think, ala sscanf_s
22:39.41 brlcad do you have size parameters?
22:40.04 brlcad bu_sscanf("%s", my_string, size)
22:40.15 brlcad or did you stick with sscanf's sig
22:40.15 n_reed nope
22:40.34 brlcad okay, so you're just requiring that if there's an %s that there must be a %###s in there?
22:42.46 n_reed yes. %Vs %Vc %V[...] can handle cases where size is only known at run-time
22:43.34 brlcad V is for vls?
22:43.43 n_reed yes
22:44.03 brlcad interesting, that's somewhat opposite bu_log()'s meaning
22:44.44 n_reed you can pick any letter you want
22:45.21 brlcad V isn't a width specifier to bu_log(), it's the type (ala %s)
22:45.27 brlcad that's all
22:45.34 brlcad not sure that it's a problem or not, just interesting
22:45.54 *** join/#brlcad juanman (~quassel@unaffiliated/juanman)
22:46.19 brlcad so then it handles the unknown "size" by reading into an unsized/unbounded vls
22:46.53 brlcad %Vc means what then? a double-byte char gets stored into a vls as two bytes?
22:49.23 n_reed only tested with ordinary chars. now code always truncates vls then uses bu_vls_putc
22:49.33 CIA-48 BRL-CAD: 03brlcad * r49221 10/brlcad/trunk/src/libged/get_comb.c: a benefit of using BU_VLS_INIT_ZERO instead of bu_vls_init() is that the compiler can actually detect an unused vls such as this one
22:49.51 n_reed %Vc would copy one char and you'd have a '\0' after it still, unlike %c
22:50.03 brlcad ah, okay
22:50.14 brlcad why truncate?
22:50.32 brlcad seems you could preserve the read-one-char behavior while ensuring null termination
22:51.52 brlcad so you could do something like while(bu_sscanf(input, "%Vc", &myvls))) ; to read from input one char at a time into myvls
22:53.42 brlcad probably doesn't matter since it'd be a dumb thing to do, but I think it's something you can effectively set up with sscanf() if you're going for parity
22:56.10 CIA-48 BRL-CAD: 03brlcad * r49222 10/brlcad/trunk/src/shapes/coil.c: conversion to using BU_VLS_INIT_ZERO instead of bu_vls_init() where there's simple local use. detected another unused vls (coil_type).
22:56.36 n_reed not sure I understand. I thought always overwriting vls would be best keeping with sscanf semantics.
22:57.05 n_reed if you want to append a char at a time, just use %c and concat yourself
23:00.34 brlcad right, but that's partially my point :)
23:01.16 brlcad that would take a few lines of code, so making the semantic meaning append-char-to-vls would turn two steps into one
23:01.52 brlcad whereas for the truncate case, where's the use case where using a vls saves someone a step over %c to a char
23:02.24 brlcad could be one, haven't thought it through that exhaustively
23:04.09 brlcad could be my own bias too .. I'm maybe envisioning something I'd expect from %*V and %1V
23:36.32 n_reed i don't think
23:37.41 n_reed i can't think of that many good use cases either way; simple enough to change it to append

Generated by irclog2html.pl Modified by Tim Riker to work with infobot.