March 1st, 2009

One for the unix geeks

This is a head-scratcher.

I have two directories of code, call them Old and New. The difference between Old and New is that I've checked out Old and built the code multiple times. I've checked out New and built the code only once. This code is a library of functions used by a larger application.

If I run using Old, the application fails. If I run using New, it works.

I've compared checksums for every single file in both Old and New, and they're 100% identical. I've diffed the files, and they're identical. I've compared every single file permission, and they too are identical. I've looked for symlinks in the directories, and there are zero. I've even gone so far as to do an ls -lR on each directory, mask out the dates, and diff those, and they're identical.

In desperation, I tarred up Old and New, then untarred them as OldTar and NewTar. Both of those work just fine.

I've done "cp -rP Old OldCopy" and used OldCopy, and that works just fine.

Anybody have any idea what the fuck?


Edit: Sorry, I was unclear. They're libraries of programmatically-generated PHP code, not binaries.

It's a web app. The failure is that one of the php files can't be found, even though it's sitting right there on the disk where it belongs.