ddfreyne changed the topic of #nanoc to: 3.6.9 (apr 15th) | web http://nanoc.ws/ | repo http://bit.ly/XE6e3G | issues http://bit.ly/VfXaSV | forum http://ho.io/n-discuss | irclog http://irclog.whitequark.org/nanoc
jutah has quit [Quit: Connection closed for inactivity]
VitamineD has quit [Read error: Connection reset by peer]
FunkyPenguin has quit [Ping timeout: 245 seconds]
FunkyPenguin has joined #nanoc
louquillio_ has quit [Remote host closed the connection]
louquillio_ has joined #nanoc
jugglinmike has quit [Quit: Leaving.]
alerante has quit [Remote host closed the connection]
alerante has joined #nanoc
alerante has quit [Ping timeout: 245 seconds]
FunkyPenguin has quit [Ping timeout: 265 seconds]
FunkyPenguin has joined #nanoc
FunkyPenguin has quit [Ping timeout: 265 seconds]
FunkyPenguin has joined #nanoc
alerante has joined #nanoc
alerante has quit [Ping timeout: 265 seconds]
relix has joined #nanoc
<guardian> morning
<ddfreyne> Hi
<travis-ci> [travis-ci] nanoc/nanoc/release-3.6.x 14ceafc Denis Defreyne: The build has errored.
<travis-ci> [travis-ci] nanoc/nanoc/release-3.6.x 43c2751 Denis Defreyne: The build passed.
FunkyPenguin has quit [Ping timeout: 240 seconds]
FunkyPenguin has joined #nanoc
VitamineD has joined #nanoc
alerante has joined #nanoc
alerante has quit [Ping timeout: 240 seconds]
FunkyPenguin has quit [Ping timeout: 240 seconds]
FunkyPenguin has joined #nanoc
<travis-ci> [travis-ci] nanoc/nanoc/checksummer eb287b7 Denis Defreyne: The build failed.
relix has quit [Ping timeout: 245 seconds]
<travis-ci> [travis-ci] nanoc/nanoc/checksummer d2cea67 Denis Defreyne: The build failed.
relix has joined #nanoc
<ddfreyne> Another PR to review:
<guardian> can you hear this?
<guardian> it's the sweet sound of PRs being merged!
<travis-ci> [travis-ci] nanoc/nanoc/checksummer 1cdc154 Denis Defreyne: The build was fixed.
<travis-ci> [travis-ci] nanoc/nanoc/checksummer 71278e9 Denis Defreyne: The build passed.
alerante has joined #nanoc
alerante has quit [Ping timeout: 276 seconds]
<guardian> ddfreyne: Checksummer is for 3.7?
<travis-ci> [travis-ci] nanoc/nanoc/checksummer 20d8151 Denis Defreyne: The build passed.
<travis-ci> [travis-ci] nanoc/nanoc/release-3.6.x 5ab3f08 Denis Defreyne: The build passed.
alerante has joined #nanoc
relix has quit [Read error: Connection reset by peer]
relix has joined #nanoc
jutah has joined #nanoc
VitamineD has quit [Quit: Computer has gone to sleep.]
<ddfreyne> guardian: 3.6.x
VitamineD has joined #nanoc
<ddfreyne> It's not a feature, but rather an enhancement/bugfix
jugglinmike has joined #nanoc
<travis-ci> [travis-ci] nanoc/nanoc/master c942fab Denis Defreyne: The build failed.
<jugglinmike> Good afternoon, ddfreyne! I'm back on the case
<jugglinmike> Quick update
<jugglinmike> $ nanoc show-data | grep "is outdated" | wc -l
<jugglinmike> ^ that prints "1"
<jugglinmike> oops
<jugglinmike> well, it does
<jugglinmike> but more specifically
<jugglinmike> $ rm -rf ./tmp && nanoc compile && nanoc show-data | grep "is outdated" | wc -l
<jugglinmike> ^ that also prints "1"
<jugglinmike> the subsequent recompile triggers other things to appear outdated
<jugglinmike> and that cascades, so that by the fourth `nanoc compile`, a lot of stuff is being needless compiled
<jugglinmike> needlessly*
<jugglinmike> here's the dependency information for that one item that is initially considered "outdated":
<jugglinmike> item /education/tracks/ depends on:
<jugglinmike> ( removed item )
<jugglinmike> [ layout ] /header/
<jugglinmike> [ layout ] /footer/
<jugglinmike> ...so I'm now figuring out what that means, exactly
<jugglinmike> but I'll have to keep digging to learn what got removed and why
<ddfreyne> jugglinmike: Hmmm, weird. This is your VPS setup, right?
<jugglinmike> ddfreyne: I am seeing this locally
<ddfreyne> jugglinmike: Are you doing anything in the preprocess block that generates items?
<guardian> jugglinmike: are you using compass?
<jugglinmike> ddfreyne: Yes: I am creating "category" items for blog posts
<jugglinmike> guardian: Nope
<guardian> ddfreyne: ok
<jugglinmike> ddfreyne: Hmm I hit a wall here https://github.com/nanoc/nanoc/blob/ca719a3faad43034d161997cd2e11018a9c2f267/lib/nanoc/base/directed_graph.rb I guess I can only go so far debugging during `nanoc show-data`, since the damage is already done at this point
<jugglinmike> I'm thinking maybe `add_edge` is called with a `nil` `to` value during the compilation process?
<jugglinmike> although that seems wrong.
<jugglinmike> Confirmed that is not happening :)
<ddfreyne> jugglinmike: sec
<ddfreyne> jugglinmike: dependency tracker, search for @objects.find { |obj| reference == obj.reference }
<ddfreyne> It is in #data=
<ddfreyne> jugglinmike: Quite likely, no object can be found with that given reference
<ddfreyne> jugglinmike: If the #find call returns nil, print the reference (be sure to return nil still)
<jugglinmike> ddfreyne: got it
<ddfreyne> That will give you the reference to the object that is no longer available
<ddfreyne> (reference is something like [:item, '/foo/'], i.e. identifying information about the object)
<jugglinmike> (sorry ddfreyne I must be doing something dumb because I don't see that codepath being executed at all. still debugging though)
<jugglinmike> ddfreyne: Since this is occurring on the initial compilation, could it possibly be this line instead? https://github.com/nanoc/nanoc/blob/ca719a3faad43034d161997cd2e11018a9c2f267/lib/nanoc/base/compilation/dependency_tracker.rb
<ddfreyne> jugglinmike: Which line speciically?
<jugglinmike> actually scratch that, I'm just not really good at debugging
<jugglinmike> ddfreyne: `puts reference` seems to be throwing?
<jugglinmike> also wrong
<jugglinmike> It's empty
<ddfreyne> jugglinmike: You probably want puts reference.inspect
<ddfreyne> jugglinmike: The reference is nil you mean?
<jugglinmike> hehe, I meant it was the empty string, but I took your advice and can now confirm that the reference is nil
<ddfreyne> Oh wow, weird.
<jugglinmike> So now I guess I have to go up a level--find out what's setting data on the dependency tracker
<ddfreyne> #data= is beign called with parsed data from tmp/ directly
<ddfreyne> So I imagine the next step is to inspect the place where the data is written to tmp/, which is in #data (as opposed to #data=)
<ddfreyne> :vertices => @graph.vertices.map { |obj| obj && obj.reference }
<ddfreyne> My guess there is a graph vertex that is nil
<ddfreyne> Oh!
<ddfreyne> That totally makes sense and is intentional.
<ddfreyne> The nil vertex is used as a placeholder for removed objects, and it is always there
<jugglinmike> hmm, okay
<ddfreyne> (Confusingly)
<jugglinmike> So now I need to figure out what it is a placeholder for
<ddfreyne> So there will always be one nil reference
<ddfreyne> jugglinmike: Well, there should be a reference that is *not* nil, but has no corresponding object
<jugglinmike> (I wonder if it would make sense to create a tiny `RemovedItem` class that you check for, in order to make that intention more explicit)
<ddfreyne> jugglinmike: Yeah, it does make sense… it is something I will tackle in nanoc 4
<jugglinmike> ddfreyne: In other words, if `objects.find` returns an array of length 0?
<jugglinmike> no, find returns the first match
<ddfreyne> jugglinmike: #find returns nil or the first match, #select returns all
<jugglinmike> ddfreyne: ok in `#data`, @graph.verticies has 1 nil object
<jugglinmike> during `rm -rf ./tmp && nanoc compile`
<jugglinmike> but I think I just confirmed what you explained above
<ddfreyne> jugglinmike: What about show-data afterwards?
<jugglinmike> ddfreyne: nothing
<jugglinmike> But it was my understanding that `show-data` wouldn't set data, since it doesn't change the state of /tmp
<ddfreyne> jugglinmike: I believe after the first compile, the data in tmp/ is wrong
<jugglinmike> hmm, okay. How might it be wrong?
<jugglinmike> It looks like there's only the one (expected) nil vertice
<ddfreyne> jugglinmike: Yeah, I think we're on the wrong path…
<ddfreyne> Hmmmm.
<ddfreyne> OK, I am out of ideas.
<ddfreyne> jugglinmike: I'd need access to your source
<jugglinmike> ddfreyne: I think that should be fine. let me just run it by a coworker
alerante has quit [Remote host closed the connection]
alerante has joined #nanoc
<jugglinmike> ddfreyne: heh, you already have access :D https://github.com/jugglinmike/Bocoup.com
<jugglinmike> I'm on the `fix-compilation` branch
<jugglinmike> (brace yourself; it's very messy)
alerante has quit [Ping timeout: 246 seconds]
alerante has joined #nanoc
alerante has quit [Ping timeout: 255 seconds]
relix_ has joined #nanoc
relix_ has quit [Max SendQ exceeded]
relix_ has joined #nanoc
relix has quit [Ping timeout: 255 seconds]
relix_ has quit [Read error: Connection reset by peer]
relix has joined #nanoc
<jugglinmike> ddfreyne: I think I got it. Working on a reduced test case now
alerante has joined #nanoc
alerante has quit [Ping timeout: 265 seconds]
<ddfreyne> jugglinmike: OK, cool
<jugglinmike> ddfreyne: https://github.com/nanoc/nanoc/pull/432 :)
relix has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<guardian> jugglinmike: privat repo?
<jugglinmike> guardian: yup. I solved the problem though
<jugglinmike> I think
<guardian> k
<guardian> what was the problem?
<jugglinmike> guardian: See the pull request
<guardian> I'll have a look
<guardian> thx
alerante has joined #nanoc
alerante has quit [Ping timeout: 246 seconds]
louquillio_ has quit [Remote host closed the connection]
alerante has joined #nanoc
alerante has quit [Ping timeout: 240 seconds]