Hi guys,
I have managed to install Glass into a base extent using the installGlass script provided by Dale. I am running this with a special user, not DataCurator, but with similar privileges. I can install Glass, but then as soon as I try to download something with Metacello...I get a spec resolution error....
It is important to note that all gems/netldi/stone are also running with its own system user. I am trying to download this for example: Metacello new
baseline: 'Metacello'; repository: 'github://dalehenrich/metacello-work:master/repository';
get. First, I found a bug in #extractRepositoryFrom: zipFile to: directory I was getting a simple GoferRepositoryError with no clear message. AFter debugging a bit, I found that such a method was end up doing something like:
/usr/bin/unzip -u /tmp/github.zip -d /home/Testing/github-cache/dalehenrich/metacello-work/master 2> /tmp/zip.err Problem was that I ALREADY had a /tmp/zip.err but that was written with another SO user... and defined unix file permission, didn't allow to write it with a different user..hence I was getting a permission denied which ended in sending #contentsOfEntireFile to nil...
So would it be possible to write zip.err with a more specific name? like per stone or something...or give write access to other ... Anyway....I remove the file with sudo and then it continue...but still getting a spec resolution error...but what is funny here is that I don't get ANY error nor repository error.. the line " self resolvePackageSpecReferences: packageSpec gofer: gofer " simply returns an empty array....
Any idea what could be? any bell? remember, custom system operating user (not sudoer), custom gemstone user, custom glass install, ... so yeah, kind of sounds like I should get problems hahahah Thanks, Mariano http://marianopeck.wordpress.com _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
Mariano, The github downloads aren't very good at providing good error messages ... I have recently (in last month) improved some of the error handling for github, but those improvements are only in the github repo and if you can't download from github then you probably aren't using them...
But your use case of running multiple glass users (at the linux level) is probably not accounted for in the github implementation so additional work needs to be done there to accomodate multiple users on the same machine using Metacello ...
I've submitted a metacello bug[1] to track the issue ... Until I can fix the bug, you the code there are a number of methods that make the assumption that /tmp can be used as a temporary dumping ground for files:
MCGitHubRepository class>>projectDirectoryFrom:version: MetacelloGemStonePlatform>>downloadFile:to: MetacelloGemStonePlatform>>extractRepositoryFrom:to:
Presumably these methods could be hacked to replace the use of '/tmp' with a suitable image-specific replacement ... where you can set the root temp directory to something that works for you ... this is probably the route I will take for the final solution ...
Dale On Thu, Jan 16, 2014 at 11:51 AM, Mariano Martinez Peck <[hidden email]> wrote:
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
On Thu, Jan 16, 2014 at 5:53 PM, Dale Henrichs <[hidden email]> wrote:
Indeed. But something is weird: I could successfully bootstrap GLASS, using the installGLASS you provided me...doesn't this script use any github repo????
ouch.....
Thanks. I indeed found other files in /tmp which were owned by a different system user... I have removed them like "sudo rm github*" and "sudo rm curl*". Still...same problem. I then tried stopping and starting stone again. Still, same problem. Finally I drop the extent and I bootstrapped everything from scratch again...why? because I thought some class var or something could have been persisted with wrong stuff or garbage. So I started again with that just bootstrapped glass and an empty /tmp and that worked!!!
So I should wait for your fix to have multiple system users sharing the same /tmp, right? Let me know if I can be of help. Thanks,
Mariano http://marianopeck.wordpress.com _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
Was this not already fixed?
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by Mariano Martinez Peck
Mariano, Here are a couple of things I know to work when I hit this kind of issues: Is the github repository present in your list when you open metacello? Remove it. Is it present in the github-cache on disk? Remove it. Clear the Monticello cache (from Monticello tool). Often, I find this helps. Hope it helps for you. Johan
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
Johan, I fixed the error handling, but in Mariano's case he has multiple linux users (with incompatible file permissions) trying to overwrite the same file and the permissions will just not allow that ...
On Thu, Jan 16, 2014 at 2:38 PM, Johan Brichau <[hidden email]> wrote:
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
Dale, Yes, that was the same problem I had and I believe the patches I sent were integrated :-) Johan Sent from my iPad
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by Dale Henrichs-3
Btw, the things to try below are for *after* the download failed and you end up with a 'broken' GitHub repo in your image. I typically also get that when restoring a backup locally. At that point the github repo has lost its link to the github-cache directory (because it's no longer there at the place I restore the backup). Doing a metacello load then fails because the repository is empty but a new download is not triggered. So I remove all and clear the cache to trigger a download. I also noticed you end up in the same situation if the download failed. Johan
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
Hi guys, Dale, I think I have the exact same problem as Johan. I am checking the .cs attached to the issue tracker and I see some differences to what I have loaded in my current glass.
First, in #extractRepositoryFrom: zipFile to: directory I notice some difference and after checking, it seems I am using Metacello-Platform.gemstone-dkh.29 .. and that was committed in Metacello-Platform.gemstone-dkh.32. but the comment in the issue tracker says the issue was integrated in Metacello-Preview 1.0.0-beta.32.8. As far as I know, I am using last stable glass....
Same for #downloadFile: url to: outputFileName
#projectDirectoryFrom: projectPath version: versionStrin I see a completly different version I have in my glass and I don't see Johan changes committed. Moreover, there are new versions committed for that package that still change this method but I am not sure if it includes Johan changes. I think these may have been lost.
#downloadErrorFileNameFor: zipFileName I don't even see it nor in my current version nor in the latest committed version...
So...all in all, those 2 last methods may have been lost.
Cheers,
On Fri, Jan 17, 2014 at 3:42 AM, Johan Brichau <[hidden email]> wrote:
Mariano http://marianopeck.wordpress.com _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
On Fri, Jan 17, 2014 at 5:57 AM, Mariano Martinez Peck <[hidden email]> wrote:
"exact same problem"? I understood that your problem were related to user permissions on files in the /tmp directory ... this is a flaw in the current design ...there are no bugfixes for that
Google bug #184[4] was indeed "fixed" in Metacello-Preview 1.0.0-beta.32.8, but the current #stable version of the Metacello-Preview is 1.0.0-beta.32.12[6] and it includes an additional bugfix in this area (Github bug #209[1]). The relevant package version is Metacello-Platform.gemstone-dkh.33[5].
#downloadErrorFileNameFor: is in the class MetacelloPlatform and was introduced as part of the Google bug #184 bugfix[8].
So it appears that you aren't using the latest Metacello-Preview version....
But that is not the end of the story ... Metacello-Preview 1.0.0-beta.32.13 is in progress[7] and there are two open bugs in this area: Github Issue #226[2] and Github issue #232[3] (your multi-linux user bug)...
So even if you are using the latest version, there are still open issues in this area ...
So we have two particular issues to figure out ...
- how come you are using an older version of Metacello?
- how can we get you to the point where you can at least use the latest code base? Using Metacello-Platform.gemstone-dkh.29 as the key, you must have Metacello 1.0-beta.32 loaded and Metacello 1.0-beta.32 implies that you have GLASS 1.0-beta.9 or GLASS 1.0-beta.9.1 loaded ... GLASS 1.0-beta.9 is the latest release, so now we understand where you are at -- I think:)
If you want to use the latest release version of Metacello, then you need to update to GLASS 1.0-beta.9.1 and then load the #stable version of the Metacello Preview:
[ Metacello new baseline: 'Metacello'; repository: 'github://dalehenrich/metacello-work:master/repository';
load: 'ALL'. ] on: Warning do: [:ex | Transcript cr; show: ex description. ex resume]. Be forewarned that the load of Metacello baseline downloads from github and you are exposed to the /tmp bugs until you get past the load, but then you are still exposed to the two unfixed bugs ([2] and [3]).
If you would like to help fix the bugs, then I suggest that you fork the Metacello repository on github and then clone it locally: cd /opt/git git clone [hidden email]:<your name>/metacello-work.git
and modify the Metacello load script to the following: [ Metacello new baseline: 'Metacello'; repository: 'filtree:///opt/git/metacello-work/repository';
load: 'ALL'. ] on: Warning do: [:ex | Transcript cr; show: ex description. ex resume]. In the long run it is good idea to make local copies of all of the repositories that you are using in production so you can decide when you are ready to update to newer versions and insulate yourself from network outages and the like ...
Dale _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
Free forum by Nabble | Edit this page |