New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
dev-util/tup - gentoo ebuild #148
Comments
The "not a git repository error is due to the rule at Tupfile:28 which assumes the build is done from a git repo, so it can grab the version using
@oakad Try with that change and see how it works. |
I can, of course, patch this out on the ebuild side, but my impression was that these things ought to be fixed prior to tarball hitting the "releases" list (otherwise, it's not technically a "release"). |
@oakad tup build system is apparently lacking a configure script, so it is impossible to cross compile AND it is impossible to disable hopefully optional features (is fuse compulsory? really??) |
It's not impossible to cross-compile, you just have to remember that tup is a replacement for make, so it's simply not going to work the same way. Perhaps a script named Fuse is obviously compulsory (for linux at least). Tup is built on top of fuse, it's what makes tup work. |
Then I fail to see how it would work on platforms where fuse is not available (and I thought it uses inotify for that purpose with the normal file-hash/mtime as fallback...) If it is true tup is to be avoided for projects aiming to be cross platform developed. |
Hmm.. perhaps that's true, but I don't see how tup could provide the correctness enforcement that it currently does without using fuse. Is fuse really an unreasonable dependency?
Correct. As I said, I also had to provide a vector table, link in a cross-compiled stdlib and fuse, and add some stubs for startup and exit routines. Again, not un-doable, particularly if you have some experience cross-compiling. It's just not as simple as it is for more traditional projects. I don't think cross-compiling has been a priority. |
For the correctness enforcement all you need is a filesystem notification of some kind if you want to track the project state in real-time or, if such feature is missing, mimic what git does for the same purpose on update. |
Detecting changes isn't sufficient. Tup tracks all of the files that are read from as well and verifies that the dependency relationships expressed in tupfiles are correct. You could possibly try to leverage Even then, it would only be sufficient for monitoring files in the immediate build tree. With |
Seems similar to libsandbox. Making it optional wouldn't make tup less useful IMHO. |
It is similar to libsandbox, but only on windows. :) On windows it's using dll injection approach, on Linux fuse is probably considered a better performing and easier to implement approach. |
If you aim for widespread adoption you should make this feature optional and have some easier fallbacks for the users that cannot use fuse. You aim to replace make, if you manage to have the same requirements you can do easily, otherwise is more than an uphill battle. |
The aim is not just to replace make but to do it one better. What is the The beauty of tup is that is proves correctness. This is an incredibly As an aside, who can't use fuse? On Sun, Mar 2, 2014 at 7:04 PM, Luca Barbato notifications@github.comwrote:
|
Make problems are:
Make advantages against everything else:
Just to compare cmake:
so where tup currently is for me:
So basically tup would be good for me developing locally on my box with root, between impossible and problematic to use on restricted build-only environment (even within gentoo portage with priv-drop I'd have serious issues getting something tup based to build). I hope I made my point. Currently make with a decent configure script works decently at solving cross-compiling and ease of building everywhere (as long you have a working C compiler, more or less). Despite the wild claims cmake fails here and there but gives you interesting perks for windows builds and an impressive set of ancillary features you might or might not interested on. Tup might deps make it less portable than cmake and requires the same level of care of make regarding the configure script. |
huh? just being part of the 'fuse' group does not mean you're in kernel space
No, not at all.
I have my own set of qualms with tup, too, but let's not invent problems that don't exist. |
If tup works w/out the fuse kernel module being loaded or accessible, I wonder which part of fuse does it use. With root, means that I can add myself to the fuse group (special privileges) and load the fuse module. |
Some time ago I added tup package to Arch https://projects.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/tup The main problem for me is that I cannot use fuse in a systemd namespace environment (systemd-nspawn) used during 'clean build' e.g. a new namespace is created then runs the package compilation. At this moment we use ./build.sh that does not use fuse during compilation. |
That is systemd being difficult, probably could be fixed on their side easily. Anyway having a fallback would ease adoption. As said, I cannot consider tup for a project that routinely builds over 10 different operating systems (of which only 3 might support fuse somehow) and with lots of restricted environments provided for testing (that would not let you have access to /dev/fuse anyway). |
On Fri, Mar 21, 2014 at 6:39 AM, Anatol notifications@github.com wrote:
./build.sh That will do a one-time build without using FUSE or requiring 'tup init' at Some notes:
Since this is primarily for tup packaging at the moment, I'm not too Let me know if we still need to tweak it, or do something else for Thanks, |
On Fri, Mar 21, 2014 at 7:17 AM, Luca Barbato notifications@github.comwrote:
-Mike |
In gentoo we use libsandbox, but obviously it won't work everywhere since it is using ptrace (that might be disabled as well). Would be that terrible do w/out that information and provide just the fast resolver and the lean syntax for the users that can't have access to ptrace, /dev/fuse/, dtrace and so on? |
unfortunately it fails on HEAD:
|
Hi,
I find it unfortunate that there's no ebuild for tup in the gentoo portage, so I endeavored to create one. There are still some shortcomings, unfortunately - some are described in my gentoo bug (enhancement) report.
https://bugs.gentoo.org/show_bug.cgi?id=491734
The text was updated successfully, but these errors were encountered: