OK, I admit I am confused about all this. My apologies for asking so many
questions.

Here are the facts:

   1. Yes, I expect Mac users to compile the software themselves. I don't
   supply binaries for Macs (though someone else is free to of course).
   2. I want the software to compile and work on both Leopard and Snow
   Leopard. That is, it will be compiled on one of these types of Macs, and it
   needs to successfully function only on the machine it was actually compiled
   on.
   3. I don't care which version of the stat structure gets used.

The other thread states:

*If you're going to run your file system binary on both Leopard and Snow
Leopard, then you'll be compiling it with Leopard compatibility anyway
(-mmacosx-version-min=10.5). Otherwise, use the ino64 library.
*

>From my reading of what you're saying, the "-mmacosx-version-min=10.5"
compile flag is only required when compiling a single binary that you want
to run on both Leopard and Snow Leopard... but this is not the case with me
(see #2).

So I'm not exactly sure which case I fall into here. I guess: "use the ino64
library". Well, then I have to hack fuse.pc because it says "-lfuse" instead
of "-lfuse_ino64". Or, not use pkg-config at all.

I'm still curious why the contents of fuse.pc are (seemingly) inconsistent.
It seems like we need to change "-lfuse" to "-lfuse_ino64" in there in the
Snow Leopard version (or, alternately, add " -D__DARWIN_64_BIT_INO_T=0"). I
understand pkg-config has limitations, and may not work for people who want
something other than what it defaults to, but at least what it does have in
there should be self-consistent, shouldn't it?

Thanks,
-Archie

On Tue, Oct 20, 2009 at 12:21 PM, Amit Singh <[email protected]> wrote:

>
> No, "customizing" (or "hacking") fuse.pc is not the right way to do
> it. It's not necessary either.
>
> What you're missing is the following: there are no 2 separate sets of
> MacFUSE components for Leopard and Snow Leopard. It's a single set of
> binaries that works on both versions of the OS.
>
> On Leopard, you need to set certain flags to get the larger stat
> structure. By default, you get the smaller stat structure. This is for
> all cases and not just those involving MacFUSE.
>
> On Snow Leopard, you need to set certain flags to get the smaller stat
> structure. By default, you get the larger stat structure. This is for
> all cases and not just those involving MacFUSE.
>
> Most developers who use MacFUSE expect the following behavior:
>
> 1) If possible, there shouldn't be multiple sets of binaries of
> MacFUSE for different OS versions.
> 2) If possible, they shouldn't have to provide multiple sets of
> binaries of their own applications for different OS versions.
>
> MacFUSE is doing the "right" thing for it to be compatible with both
> Leopard and Snow Leopard while still giving the developer the choice
> to use either the larger or the smaller stat structure.
>
> First, you need to decide if you want your application to be Snow
> Leopard only, or if you want it to also work on Leopard.
>
> If you want it to be Leopard-compatible, you should use "-mmacosx-
> version-min=10.5" in your compile-time flags. I already mentioned this
> in the thread I pointed you to. Then, if you want to use the smaller
> stat structure, you need to do nothing further. If you want to use the
> larger stat structure, you need to specify -D__DARWIN_64_BIT_INO_T=1
> and link against the ino64 library.
>
> If you want your application to be Snow Leopard only, you need to deal
> with the fact that MacFUSE is not Snow Leopard only. So you need to
> explicitly link against the library variant (ino64) that will work on
> Snow Leopard. You shouldn't specify the -mmacosx-version-min=10.5 flag
> so you'll get the Snow Leopard version of the stat structure by
> default.
>
> By the way, you keep saying that your users will have to hack this and
> work around that, etc. Are you requiring your *end users* to *compile*
> your software (say, as opposed to providing them with precompiled
> binaries)?
>
> Amit
>
> On Oct 20, 9:48 am, Archie Cobbs <[email protected]> wrote:
> > Thanks. Indeed, I'd rather not guess.
> >
> > If what you're saying is true, then why doesn't the MacFUSE installer put
> > "-D__DARWIN_64_BIT_INO_T=1" in the "Cflags" line of fuse.pc? The "-lfuse"
> > and the lack of "-D__DARWIN_64_BIT_INO_T=1" in fuse.pc is inconsistent,
> at
> > least on Snow Leopard. On 10.4, it could use different settings of
> course...
> > maybe the installer is just not currently capable of customizing fuse.pc?
> > Seems like that wouldn't be hard.
> >
> > In any case, what I would like is a set of simple instructions for
> > developers, e.g. "do this and MacFUSE will work". I admit I have not done
> > the necessary research to find these magic instructions, and that as the
> > developer it's my job to figure this stuff out.
> >
> > So I'm not complaining, just sighing :-)
> >
> > I have a documented workaround that I'm including with the software so
> Mac
> > users have a set of instructions that they can follow even if it's not
> > pretty (they have to hack fuse.pc). That's good enough for now.
> >
> > -Archie
> >
> >
> >
> >
> >
> > On Tue, Oct 20, 2009 at 9:48 AM, Erik Larsson <[email protected]> wrote:
> >
> > > Archie Cobbs wrote 2009-10-20 15.58:
> > > > #3. If stuff doesn't work, edit /usr/local/lib/pkgconfig/fuse.pc and
> > > > change "-lfuse" to "-lfuse_ino64", then repeat step #2 and rebuild
> >
> > > Instead of guessing between '-lfuse' and '-lfuse_ino64' you could of
> > > course explicitly define which version of struct stat you want to use
> in
> > > the program, and then simply link to the corresponding fuse library.
> >
> > > If you open sys/stat.h, you'll see that if you define
> > > __DARWIN_64_BIT_INO_T to 1 before including the header, you'll get the
> > > 64-bit inode version of struct stat (and so you can link with
> > > -lfuse_ino64), and when you define __DARWIN_64_BIT_INO_T to 0, you will
> > > get the old stat structure with 32-bit inode numbers (and so you can
> > > link with -lfuse).
> >
> > > For compatibility with Mac OS X 10.4 you would need to use the 32-bit
> > > inodes version.
> >
> > > Regards,
> >
> > > - Erik
> >
> > --
> > Archie L. Cobbs
> >
>


-- 
Archie L. Cobbs

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"MacFUSE" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/macfuse?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to