Comments (13)
Thanks for reporting. I had to add fenced code block markings (three backticks) that you forgot yourself (without them the patch was completely unreadable). I'll take a closer look at this issue in upcoming days (and all the other metastore patches that are waiting in my queue to be finally reviewed and applied).
from metastore.
The patch works fine for me on Linux 3.18 with glibc 2.18 and uClibc 0.9.33.
from metastore.
Thanks for fixing that up; I'm new to Github protocol. Read up on GFM, so won't do that again.
from metastore.
@kmdawson Ideally you should:
- fork the project on github,
- clone it on your local computer,
- create a branch dedicated for the fix, which could be named
include-sys-xattr
orremove-libattr-dependency
for instance, - commit there your fix,
- push it to the github,
- create pull request in my repo on github.
Putting patches in body text of the issues is definitely not the correct way of submitting them, but I'll pretend it didn't happen this time. ;)
Would you mind sharing your full name and e-mail (possibly the one you use on github, unless you prefer some other one) for the purpose of committing your patch with proper authorship? If you'd like to avoid disclosing it in this issue directly, then you can mail me directly (you'll find address on my github profile), but it will land into repository in the end, so it will be public to anyone obtaining metastore sources.
I quickly looked at the matter. attr/xattr.h
comes from libattr
software. Installing this package headers (e.g. libattr1-dev
in case of Debian) solves the problem, but it's indeed not necessary nowadays and by nowadays I mean last ~13 years in case of Linux, because sys/xattr.h
apparently has been provided since glibc v2.3. David (and many others) most likely did the mistake due to outdated manual pages, that were fixed almost exactly one year ago by Micheal Kerrisk (his comment on kernel bugzilla). And attr/xattr.h
includes errno.h
, so it's only natural that it had to be added in the source files after this fix.
I don't use any other POSIX OS, so I cannot test #include <sys/xattr.h>
working there myself right now (at least without much additional effort of setting several VMs - it may happen in the future, though).
from metastore.
@przmoc,
Here is the requested information:
Ken Dawson
[email protected]
Thanks
from metastore.
@kmdawson Thanks. It's in impro/switch-xattr-header branch for now. I'm somehow reluctant to push it to master without checking it on non-Linux OSes.
from metastore.
@przemoc,
I'll see if I can get to a non-linux platform. I probably can get to Solaris, not so sure about BSD. Would that help?
from metastore.
@kmdawson To be brutally honest (I possibly shouldn't write it as a maintainer of unofficial metastore continuation, but I highly value transparency), I don't know the OSes metastore is supposed to work or where it simply works atm (I mean beside Linux). If possible I would prefer to preserve status quo in that regard (or make it even better, that goes without saying).
I am all for reducing dependencies, and taking into account that only libattr's header was used (there is no libattr's DSO dependency during linking), there shouldn't be any problem or unexpected breakage, but... Apparently there is more than one convention regarding these xattr syscalls and I just don't have time now to investigate it thoroughly, sorry.
Hopefully I'll prepare some VMs with different open source OSes for tests at some point and will dig in their headers/documentation (that of course doesn't require VM, but having VM for proper tests is still a must), but it won't be soon.
So if you can do some checks on your own, that would be surely helpful.
from metastore.
@przemoc: I discovered that I could get to an instance of FreeBSD, but have not yet found a Solaris platform. I investigated both, however, and discovered that it would need to be a port in both cases, since the APIs are similar, but have different naming.
I actually did a preliminary port to FreeBSD, while I was there, and have placed it in the FreeBSD branch on the fork I made of your metastore. It only contains the code changes, so is not ready to do a pull request, but I hoped you could take a look and see if it agrees with your design philosophy. I see that you are contemplating redoing the Makefile and source file layouts, so, likely this arrangement will have to change. If so, let me know how, and I can do it. This version builds and runs runs for me on both platforms, using just a vanilla permission-change scenario.
from metastore.
Thanks for your research, @kmdawson. I am quite busy lately, so I won't touch anything metastore-related (not even a glimpse) until upcoming weekend (or even later), sorry for that. Yet I still wanted to reply to let you know that real reply won't be prompt. ;)
from metastore.
@przemoc: no problem. Take your time.
from metastore.
This change (branch impro/switch-xattr-header
) will be merged soon.
If any problem arises for someone, I expect she or he will report the bug and then we'll deal with broken compatibility. One thing is clear now at least, metastore wasn't supporting FreeBSD before, but it hopefully will in some version after v1.1.
from metastore.
Branch impro/switch-xattr-header
has been merged.
from metastore.
Related Issues (20)
- Add action to dump metadata in human-readable form (`-d`, `--dump`)
- Fails to build on Arch Linux HOT 1
- Cygwin support HOT 2
- More documentation with exemplary git hooks HOT 1
- Change default installation prefix to /usr/local HOT 1
- Parallelize store action HOT 3
- Add option to show metastore version (`-V`, `--version`) HOT 1
- Store and apply actions fail when user or group ID of some dirs/files in file system has no entry in password or group database HOT 4
- metastore -s fails with SIGABRT if necessary permissions are missing HOT 3
- Mac support HOT 6
- Cygwin and Mingw (Windows) support HOT 3
- Can't change owner when current owner is numeric UID HOT 2
- OpenBSD support
- Reading metadata file with xattrs leads to corruption in memory on 64-bit platforms HOT 7
- Managing Git workflows in large repos HOT 1
- Record attributes only for specified dirs/files HOT 1
- Apply action silently proceeds when owner or group of some dirs/files in metadata has no entry in password or group database
- Revamp messages and their verbosity levels
- Introduce OS-agnostic API internally to support different POSIX systems
- Do not skip nanoseconds when applying mtime HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from metastore.