[ANN] Metacello support for GitFileTree metadata-less mode
In the last month or so we've had a couple of different discussions on this list involving adding support to Metacello (otherwise known as "Cypress package extension") for GitFileTree's metadata-less mode[1] and [4] and earlier this week I released a new version of Metacello[2] that includes an updated version of the "Cypress package extension"[5]. Depending on the version of Pharo you are using, at some point in time, I expect this new release of Metacello to be available in the standard download. Until then, to install the latest version of Metacello into Pharo execute the following in a workspace: Metacello new baseline: 'Metacello'; repository: 'github://dalehenrich/metacello-work:master/repository'; get. Metacello new baseline: 'Metacello'; repository: 'github://dalehenrich/metacello-work:master/repository'; onConflict: [:ex | ex allow]; load If you are using GitFileTree's metadata-less mode and Metacello, then add the following method to your BaselineOf: projectClass ^ MetacelloCypressBaselineProject and you are good to go. If you are curious as to why "Cypress package extensions" are needed, you can read this comment[6] for a description of what rules Metacello uses when fetching/loading packages from a FileTree repository using a baseline. On a slightly different topic, Alistair Grant ran into a bug involving Metacello and how it semantic version numbers[7] a couple months ago and this release includes a bug fix ... the bug was related to the fact that the parser was too lenient and did throw an error for some forms of invalid Semantic version numbers ... with this fix an error is thrown ... of course it is entirely possible that there are ConfigurationOfs out in the wild that "depend upon the old behavior" so if you get an "invalid version number" error while working with a configuration and discover that it is not practical to redefine the version numbers to conform to the semantic version number format then you can add the following method to the ConfigurationOf and the old, buggy version of the parser will be used: versionNumberClass ^ MetacelloOldSemanticVersionNumber If you are sharing code between GemStone and Pharo, then you will want to make sure that you install the new version of Metacello in GemStone as well. See the GemStone release announcement for details[8]. Dale [1] http://forum.world.st/Saving-to-local-git-and-quot-Loading-all-file-names-fr... [2] https://github.com/dalehenrich/metacello-work/pull/401 [4] http://forum.world.st/How-do-I-convert-a-FileTree-project-to-Metadataless-Gi... [5] https://github.com/dalehenrich/metacello-work/issues/399 [6] https://github.com/dalehenrich/metacello-work/issues/399#issuecomment-231464... [7] https://github.com/dalehenrich/metacello-work/issues/392 [8] http://forum.world.st/new-release-of-Metacello-metadata-less-FileTree-reposi...
I need to proof read my posts more carefully... On 07/14/2016 12:49 PM, Dale Henrichs wrote:
On a slightly different topic, Alistair Grant ran into a bug involving Metacello and how it semantic version numbers[7] a couple months ago and this release includes a bug fix ... the bug was related to the fact that the parser was too lenient and did throw an
On a slightly different topic, Alistair Grant ran into a bug involving Metacello and how it *PARSES* semantic version numbers[7] a couple months ago and this release includes a bug fix ... the bug was related to the fact that the parser was too lenient and did *NOT* throw an
error for some forms of invalid Semantic version numbers ... with this fix an error is thrown ... of course it is entirely possible that there are ConfigurationOfs out in the wild that "depend upon the old behavior" so if you get an "invalid version number" error while working with a configuration and discover that it is not practical to redefine the version numbers to conform to the semantic version number format then you can add the following method to the ConfigurationOf and the old, buggy version of the parser will be used:
versionNumberClass ^ MetacelloOldSemanticVersionNumber
Thank you Dale, this is very useful! On Thu, Jul 14, 2016 at 9:54 PM, Dale Henrichs < dale.henrichs@gemtalksystems.com> wrote:
I need to proof read my posts more carefully...
On 07/14/2016 12:49 PM, Dale Henrichs wrote:
On a slightly different topic, Alistair Grant ran into a bug involving Metacello and how it semantic version numbers[7] a couple
months ago and this release includes a bug fix ... the bug was related to the fact that the parser was too lenient and did throw an
On a slightly different topic, Alistair Grant ran into a bug involving Metacello and how it *PARSES* semantic version numbers[7] a couple months ago and this release includes a bug fix ... the bug was related to the fact that the parser was too lenient and did *NOT* throw an
error for some forms of invalid Semantic version numbers ... with this fix an error is thrown ... of course it is entirely possible that there are ConfigurationOfs out in the wild that "depend upon the old behavior" so if you get an "invalid version number" error while working with a configuration and discover that it is not practical to redefine the version numbers to conform to the semantic version number format then you can add the following method to the ConfigurationOf and the old, buggy version of the parser will be used:
versionNumberClass ^ MetacelloOldSemanticVersionNumber
Le 14/07/2016 à 21:49, Dale Henrichs a écrit :
Depending on the version of Pharo you are using, at some point in time, I expect this new release of Metacello to be available in the standard download. Until then, to install the latest version of Metacello into Pharo execute the following in a workspace:
Metacello new baseline: 'Metacello'; repository: 'github://dalehenrich/metacello-work:master/repository'; get. Metacello new baseline: 'Metacello'; repository: 'github://dalehenrich/metacello-work:master/repository'; onConflict: [:ex | ex allow]; load
Hi Dale, When I try to upgrade Metacello in the latest Pharo 6 I get an error "receiver of withSqueakLineEnding is nil" See: http://puu.sh/q3zet/310f6d3086.png -- Cyril Ferlicot http://www.synectique.eu 165 Avenue Bretagne Lille 59000 France
On 07/17/2016 11:19 AM, Cyril Ferlicot D. wrote:
Le 14/07/2016 à 21:49, Dale Henrichs a écrit :
Depending on the version of Pharo you are using, at some point in time, I expect this new release of Metacello to be available in the standard download. Until then, to install the latest version of Metacello into Pharo execute the following in a workspace:
Metacello new baseline: 'Metacello'; repository: 'github://dalehenrich/metacello-work:master/repository'; get. Metacello new baseline: 'Metacello'; repository: 'github://dalehenrich/metacello-work:master/repository'; onConflict: [:ex | ex allow]; load
Hi Dale,
When I try to upgrade Metacello in the latest Pharo 6 I get an error "receiver of withSqueakLineEnding is nil"
Hello Cyril, This appears to be related to the fact that the class comment file (README.md) is unexpectedly missing from your download ... Since the file is present on GitHub[1] ... perhaps the download from failed in an odd way without triggering an error leading to this problem ... I would have expected an incomplete download error along the way --- if you still have a copy of the Transcript a download error message should be present ... Retrying the git get/load might get a good result ... Dale [1] https://github.com/dalehenrich/metacello-work/tree/master/repository/Baselin... https://github.com/dalehenrich/filetree/blob/pharo6.0_dev/repository/Montice...
Le 18/07/2016 à 20:33, Dale Henrichs a écrit :
Hello Cyril,
This appears to be related to the fact that the class comment file (README.md) is unexpectedly missing from your download ... Since the file is present on GitHub[1] ... perhaps the download from failed in an odd way without triggering an error leading to this problem ... I would have expected an incomplete download error along the way --- if you still have a copy of the Transcript a download error message should be present ...
Retrying the git get/load might get a good result ...
Hi Dale, I can reproduce it on this computer in Pharo 5 and 6. I also try to rewrite everything to be sure there was no weird character during the copy paste. I wrote: Metacello new githubUser: 'dalehenrich' project: 'metacello-work' commitish: 'master' path: 'repository'; baseline: 'Metacello'; get. Metacello new githubUser: 'dalehenrich' project: 'metacello-work' commitish: 'master' path: 'repository'; baseline: 'Metacello'; onConflict: [ :e | e allow ]; load But I got the same. Apparently there is a problem during the fetching of the baseline. In the Transcript I got: ...RETRY->BaselineOfMetacello ...RETRY ...RETRY I also deleted the github-cache before launching the command. Here is a screen to help you a little: http://puu.sh/q67ok/74e233309c.png I did not try on another OS (Windows 7 here), but I can try tomorrow. BTW, this is not related but in pharo 6, the github-cache/ should not be located in the image directory but in `SystemResolver userLocalDirectory` instead. This is a directory created by Esteban to reduce the noise created by the multiple files. Is it Metacello that create this folder? Do you want me to create an issue on github?
Dale
[1] https://github.com/dalehenrich/metacello-work/tree/master/repository/Baselin...
https://github.com/dalehenrich/filetree/blob/pharo6.0_dev/repository/Montice...
-- Cyril Ferlicot http://www.synectique.eu 165 Avenue Bretagne Lille 59000 France
Cyril, This is a FileTree issue[1] and the Pharo ports are maintained by Thierry Goubier so include @ThierryGoubier in the body and he will see the issue .. I believe that the Pharo6.0 port is in progress as there is only a dev branch for Pharo6 at the moment[2]. Dale <https://github.com/dalehenrich/filetree/issues?q=is%3Aissue+is%3Aopen+author...> [1] https://github.com/dalehenrich/filetree/issues/new [2] https://github.com/dalehenrich/filetree/tree/pharo6.0_dev On 07/18/2016 01:09 PM, Cyril Ferlicot D. wrote:
Le 18/07/2016 à 20:33, Dale Henrichs a écrit :
Hello Cyril,
This appears to be related to the fact that the class comment file (README.md) is unexpectedly missing from your download ... Since the file is present on GitHub[1] ... perhaps the download from failed in an odd way without triggering an error leading to this problem ... I would have expected an incomplete download error along the way --- if you still have a copy of the Transcript a download error message should be present ...
Retrying the git get/load might get a good result ...
Hi Dale,
I can reproduce it on this computer in Pharo 5 and 6.
I also try to rewrite everything to be sure there was no weird character during the copy paste. I wrote:
Metacello new githubUser: 'dalehenrich' project: 'metacello-work' commitish: 'master' path: 'repository'; baseline: 'Metacello'; get. Metacello new githubUser: 'dalehenrich' project: 'metacello-work' commitish: 'master' path: 'repository'; baseline: 'Metacello'; onConflict: [ :e | e allow ]; load
But I got the same.
Apparently there is a problem during the fetching of the baseline. In the Transcript I got:
...RETRY->BaselineOfMetacello ...RETRY ...RETRY
I also deleted the github-cache before launching the command.
Here is a screen to help you a little: http://puu.sh/q67ok/74e233309c.png
I did not try on another OS (Windows 7 here), but I can try tomorrow.
BTW, this is not related but in pharo 6, the github-cache/ should not be located in the image directory but in `SystemResolver userLocalDirectory` instead. This is a directory created by Esteban to reduce the noise created by the multiple files. Is it Metacello that create this folder? Do you want me to create an issue on github?
Dale
[1] https://github.com/dalehenrich/metacello-work/tree/master/repository/Baselin...
https://github.com/dalehenrich/filetree/blob/pharo6.0_dev/repository/Montice...
Le 18/07/2016 à 20:33, Dale Henrichs a écrit :
Hello Cyril,
This appears to be related to the fact that the class comment file (README.md) is unexpectedly missing from your download ... Since the file is present on GitHub[1] ... perhaps the download from failed in an odd way without triggering an error leading to this problem ... I would have expected an incomplete download error along the way --- if you still have a copy of the Transcript a download error message should be present ...
Retrying the git get/load might get a good result ...
Dale
[1] https://github.com/dalehenrich/metacello-work/tree/master/repository/Baselin...
https://github.com/dalehenrich/filetree/blob/pharo6.0_dev/repository/Montice...
Hi Dale, I got some time to retry a little. I tried to load in Pharo 6 a project of mine that is on GitHub and it worked. I tried in the same image to load Metacello but it failed. When I go in the github-cache/ folder, I see that the Metacello folder contains all the folder of each packages BUT they do not contains any files[1]. The only file in the folder is the .filetree file in the repository/ folder. I get the problem into Pharo 5 and 6 on Windows 7. I do not have this problem on OSX. Also, I tried to download the zip of the repository and when I try to extract it on Windows I get an error message saying that the zip file is not valid[2]. When I try to clone the repository I get an error because some names are too long[3]. -- [1] http://puu.sh/qcVoG/60e481ec1b.png [2] http://puu.sh/qcVqE/f8a4dbd36d.png [3] http://puu.sh/qcVkh/fbd16ba541.png -- Cyril Ferlicot http://www.synectique.eu 165 Avenue Bretagne Lille 59000 France
On 7/24/16 11:29 AM, Cyril Ferlicot D. wrote:
Le 18/07/2016 à 20:33, Dale Henrichs a écrit :
Hello Cyril,
This appears to be related to the fact that the class comment file (README.md) is unexpectedly missing from your download ... Since the file is present on GitHub[1] ... perhaps the download from failed in an odd way without triggering an error leading to this problem ... I would have expected an incomplete download error along the way --- if you still have a copy of the Transcript a download error message should be present ...
Retrying the git get/load might get a good result ...
Dale
[1] https://github.com/dalehenrich/metacello-work/tree/master/repository/Baselin...
https://github.com/dalehenrich/filetree/blob/pharo6.0_dev/repository/Montice...
Hi Dale,
I got some time to retry a little.
I tried to load in Pharo 6 a project of mine that is on GitHub and it worked.
I tried in the same image to load Metacello but it failed.
When I go in the github-cache/ folder, I see that the Metacello folder contains all the folder of each packages BUT they do not contains any files[1]. The only file in the folder is the .filetree file in the repository/ folder.
I get the problem into Pharo 5 and 6 on Windows 7. I do not have this problem on OSX.
Also, I tried to download the zip of the repository and when I try to extract it on Windows I get an error message saying that the zip file is not valid[2].
When I try to clone the repository I get an error because some names are too long[3].
-- [1] http://puu.sh/qcVoG/60e481ec1b.png [2] http://puu.sh/qcVqE/f8a4dbd36d.png [3] http://puu.sh/qcVkh/fbd16ba541.png Cyril,
Thanks for providing a stack trace ... I recognize the issue --- windows has a 256 char (I think) path length limit and a handful of the Metacello methods exceed this limit ... I've created a dev_win-hack branch on Metacello where I renamed the files that were exceeding the limit[1] --- in my particular use case, git was not able to access the files which is why I didn't recognize the issue initially --- there are a garden basket of problems when trying to use windows, but the stack provided the necessary detail to figure out which piece of fruit was going bad :) Anyway, the following should do the trick: Metacello new baseline: 'Metacello'; repository: 'github://dalehenrich/metacello-work:dev_win-hack/repository'; get. Metacello new baseline: 'Metacello'; repository: 'github://dalehenrich/metacello-work:dev_win-hack/repository'; onConflict: [:ex | ex allow]; load I just merged the latest master branch into the dev_win-hack branch, so it will have the cypress package support --- but we may not be out of the woods quite yet ... you probably need to locate your github-cache directory as close to the root of your disk as possible. Use the following to change the default github-cache location: MCGitHubRepository cacheDirectory: 'directory-path' Good luck, Dale [1] https://github.com/GsDevKit/GsDevKit_home/blob/master/docs/installation/conf...
Le 24/07/2016 à 22:23, Dale Henrichs a écrit :
Cyril,
Thanks for providing a stack trace ... I recognize the issue --- windows has a 256 char (I think) path length limit and a handful of the Metacello methods exceed this limit ... I've created a dev_win-hack branch on Metacello where I renamed the files that were exceeding the limit[1] --- in my particular use case, git was not able to access the files which is why I didn't recognize the issue initially --- there are a garden basket of problems when trying to use windows, but the stack provided the necessary detail to figure out which piece of fruit was going bad :)
Anyway, the following should do the trick:
Metacello new baseline: 'Metacello'; repository: 'github://dalehenrich/metacello-work:dev_win-hack/repository'; get. Metacello new baseline: 'Metacello'; repository: 'github://dalehenrich/metacello-work:dev_win-hack/repository'; onConflict: [:ex | ex allow]; load
I just merged the latest master branch into the dev_win-hack branch, so it will have the cypress package support --- but we may not be out of the woods quite yet ... you probably need to locate your github-cache directory as close to the root of your disk as possible. Use the following to change the default github-cache location:
MCGitHubRepository cacheDirectory: 'directory-path'
Good luck,
This seems to works perfectly :) Thank you for the quick hack and answer! You rock! I like to work a little on window for personal projects because I can see all the bugs that people don't usually see and report them. :)
Dale
[1] https://github.com/GsDevKit/GsDevKit_home/blob/master/docs/installation/conf...
-- Cyril Ferlicot http://www.synectique.eu 165 Avenue Bretagne Lille 59000 France
On Mon, Jul 25, 2016 at 4:23 AM, Dale Henrichs <dale.henrichs@gemtalksystems.com> wrote:
On 7/24/16 11:29 AM, Cyril Ferlicot D. wrote:
Le 18/07/2016 à 20:33, Dale Henrichs a écrit :
Hello Cyril,
This appears to be related to the fact that the class comment file (README.md) is unexpectedly missing from your download ... Since the file is present on GitHub[1] ... perhaps the download from failed in an odd way without triggering an error leading to this problem ... I would have expected an incomplete download error along the way --- if you still have a copy of the Transcript a download error message should be present ...
Retrying the git get/load might get a good result ...
Dale
[1]
https://github.com/dalehenrich/metacello-work/tree/master/repository/Baselin...
https://github.com/dalehenrich/filetree/blob/pharo6.0_dev/repository/Montice...
Hi Dale,
I got some time to retry a little.
I tried to load in Pharo 6 a project of mine that is on GitHub and it worked.
I tried in the same image to load Metacello but it failed.
When I go in the github-cache/ folder, I see that the Metacello folder contains all the folder of each packages BUT they do not contains any files[1]. The only file in the folder is the .filetree file in the repository/ folder.
I get the problem into Pharo 5 and 6 on Windows 7. I do not have this problem on OSX.
Also, I tried to download the zip of the repository and when I try to extract it on Windows I get an error message saying that the zip file is not valid[2].
When I try to clone the repository I get an error because some names are too long[3].
-- [1] http://puu.sh/qcVoG/60e481ec1b.png [2] http://puu.sh/qcVqE/f8a4dbd36d.png [3] http://puu.sh/qcVkh/fbd16ba541.png
Cyril,
Thanks for providing a stack trace ... I recognize the issue --- windows has a 256 char (I think) path length limit and a handful of the Metacello methods exceed this limit ... I've created a dev_win-hack branch on Metacello where I renamed the files that were exceeding the limit[1] --- in my particular use case, git was not able to access the files which is why I didn't recognize the issue initially --- there are a garden basket of problems when trying to use windows, but the stack provided the necessary detail to figure out which piece of fruit was going bad :)
Or could paths be specified in this format... \\?\D:\very long path". https://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath cheers -ben
Anyway, the following should do the trick:
Metacello new baseline: 'Metacello'; repository: 'github://dalehenrich/metacello-work:dev_win-hack/repository'; get. Metacello new baseline: 'Metacello'; repository: 'github://dalehenrich/metacello-work:dev_win-hack/repository'; onConflict: [:ex | ex allow]; load
I just merged the latest master branch into the dev_win-hack branch, so it will have the cypress package support --- but we may not be out of the woods quite yet ... you probably need to locate your github-cache directory as close to the root of your disk as possible. Use the following to change the default github-cache location:
MCGitHubRepository cacheDirectory: 'directory-path'
Good luck,
Dale
[1] https://github.com/GsDevKit/GsDevKit_home/blob/master/docs/installation/conf...
On 7/24/16 4:47 PM, Ben Coman wrote:
On Mon, Jul 25, 2016 at 4:23 AM, Dale Henrichs <dale.henrichs@gemtalksystems.com> wrote:
On 7/24/16 11:29 AM, Cyril Ferlicot D. wrote:
Le 18/07/2016 à 20:33, Dale Henrichs a écrit :
Hello Cyril,
This appears to be related to the fact that the class comment file (README.md) is unexpectedly missing from your download ... Since the file is present on GitHub[1] ... perhaps the download from failed in an odd way without triggering an error leading to this problem ... I would have expected an incomplete download error along the way --- if you still have a copy of the Transcript a download error message should be present ...
Retrying the git get/load might get a good result ...
Dale
[1]
https://github.com/dalehenrich/metacello-work/tree/master/repository/Baselin...
https://github.com/dalehenrich/filetree/blob/pharo6.0_dev/repository/Montice...
Hi Dale,
I got some time to retry a little.
I tried to load in Pharo 6 a project of mine that is on GitHub and it worked.
I tried in the same image to load Metacello but it failed.
When I go in the github-cache/ folder, I see that the Metacello folder contains all the folder of each packages BUT they do not contains any files[1]. The only file in the folder is the .filetree file in the repository/ folder.
I get the problem into Pharo 5 and 6 on Windows 7. I do not have this problem on OSX.
Also, I tried to download the zip of the repository and when I try to extract it on Windows I get an error message saying that the zip file is not valid[2].
When I try to clone the repository I get an error because some names are too long[3].
-- [1] http://puu.sh/qcVoG/60e481ec1b.png [2] http://puu.sh/qcVqE/f8a4dbd36d.png [3] http://puu.sh/qcVkh/fbd16ba541.png Cyril,
Thanks for providing a stack trace ... I recognize the issue --- windows has a 256 char (I think) path length limit and a handful of the Metacello methods exceed this limit ... I've created a dev_win-hack branch on Metacello where I renamed the files that were exceeding the limit[1] --- in my particular use case, git was not able to access the files which is why I didn't recognize the issue initially --- there are a garden basket of problems when trying to use windows, but the stack provided the necessary detail to figure out which piece of fruit was going bad :)
Or could paths be specified in this format... \\?\D:\very long path".
https://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath
If I'm not mistaken, this kind of monkey business would have to be done within the FileSystem code or maybe the vm ... I'm pretty sure that FileTree is using FileReferences to access the files with long file paths in a platform independent manner ... Dale
participants (4)
-
Ben Coman -
Cyril Ferlicot D. -
Dale Henrichs -
Nicolas Passerini