!sPEoysFEpUGMCmkGfN:matrix.org

Propensive / Fury

16 Members
Fury build tool2 Servers

Load older messages


SenderMessageTime
2 Dec 2020
@_discord_773875080342011926_=47it=48ub:t2bot.ioGitHub#0000
[fury:issue/1592] 1 new commit

c2c8a06 Update some more repos - propensive

11:10:34
@_discord_602528478767743017:t2bot.iochuchulo propensive Hi, I am able not to build the issue/1592 branch. Please let me know when It will be sorted out, thank you. Now I have issue with 16:54:03
@_discord_602528478767743017:t2bot.iochuchulo * propensive Hi, I am able not to build the issue/1592 branch. Please let me know when It will be sorted out, thank you. Now I have issue with
Checking out src/core from repository euphemism
An error occurred while running: git -C /home/tom/.cache/fury/sources/5E05AFEF3FA4207A fetch --all
Fetching origin
fatal: '/home/tom/.cache/fury/repos/YM4u6Kyyd+T+tdRU1hwGEg' does not appear to be a git repository
fatal: Could not read from remote repository.
16:54:37
3 Dec 2020
@_discord_544647944385593361:t2bot.iojozinek#0918 propensive I am quite surprised how difficult for me is to create project with dependencies requiring shading. I am not familiar with scala libraries which break compatibility. I believe you mentioned it should have been straightforward, would you please give me some hint about possible libs? 22:24:41
4 Dec 2020
@_discord_602528478767743017:t2bot.iochuchulo jozinek what about this https://stackoverflow.com/questions/13620281/what-is-the-maven-shade-plugin-used-for-and-why-would-you-want-to-relocate-java would it be helpful? 00:03:01
@_discord_544647944385593361:t2bot.iojozinek#0918 Well, I am not sure. Ideally I would like to have 2 libraries, A and B, where B.v2 is transitive dependency of A. I want to use A and B.v1 in my layer, but different version of B (thus v1 and v2). v2 should not be compatible with v1 so I cannot simply use v2 and must repackage v1 00:13:24
@_discord_547426086179307521:t2bot.iopropensive Hi chuchulo and jozinek 09:48:24
@_discord_547426086179307521:t2bot.iopropensive Sorry I've been a bit tied up with other things recently (Functional Africa talk for the Functional Scala conference is now done, and my two-weeks-of-training will finish this evening, and then I only have one more talk to do at a Java conference on Saturday...) 09:49:41
@_discord_547426086179307521:t2bot.iopropensive But the problem chuchulo is getting is somewhat known to me. My best guess is that the remote versions of the repositories have lost certain commit hashes when I went and deleted some old branches. The repositories exist, but the particular commit is missing. However I think I'm seeing this more than I should be. I've seen problems where I didn't expect to. So I have a suspicion that something else is wrong. 09:57:46
@_discord_547426086179307521:t2bot.iopropensive There's an open PR where I start to fix some of these issues by updating to the latest commit hashes in the relevant repos, but I've hit a different problem which is that my latest version of Contextual contains a bug which stops some later projects compiling, and I want to fix the bug rather than revert back to the earlier version. 10:02:40
@_discord_547426086179307521:t2bot.iopropensive Anyway, I hope to work on this on Monday now. 10:03:32
@_discord_547426086179307521:t2bot.iopropensive jozinek I think it would be better to start by creating your own "libraries" that are incompatible. Create a simple library with one object and one method, and publish it in a Git repository (and tag it, if you like), then update it to use the same object (we need them to conflict to demonstrate the problem) but change the method name. We want a compile error, not a runtime error, at least to begin with, so don't just change the method implementation.

Then create two new projects with different names which both depend on your first project, but different versions.
10:07:35
@_discord_547426086179307521:t2bot.iopropensive Then it should be possible to create a fourth project which depends on both of the intermediate projects. 10:08:48
@_discord_547426086179307521:t2bot.iopropensive Now, in terms of publishing, we'll need to set things up to be "realistic", which means that the different projects will be in different layers. 10:09:21
@_discord_547426086179307521:t2bot.iopropensive So, I think in all cases, you can create a new layer for each project, and you should be able to fury layer share it. That should give you a fury:// URL you can import without needing to publish a tagged name. 10:11:42
@_discord_547426086179307521:t2bot.iopropensive Now, as long as both different versions of the root project are set up with the same name, Fury will report a conflict and forbid you to build. 10:13:33
@_discord_547426086179307521:t2bot.iopropensive I'm going to change the UI to support a "shading" transformation to take place on-import. 10:14:18
@_discord_773875080342011926_=47it=48ub:t2bot.ioGitHub#0000
[fury:issue/1569] 1 new commit

249f79c Updated source headers to version 0.33.0 - propensive

10:42:17
@_discord_773875080342011926_=47it=48ub:t2bot.ioGitHub#0000 set a profile picture.10:42:29
@_discord_773875080342011926_=47it=48ub:t2bot.ioGitHub#0000
[fury:issue/1569] 1 new commit

8bd72ea Updated bootstrap version to 0.33.0 - propensive

10:42:29
@_discord_602528478767743017:t2bot.iochuchulo propensive Appologize, I didn't want to rush you. I just wanted to know if that it is already fixed, or I do something wrong. So thank you anyway. 18:00:15
@_discord_602528478767743017:t2bot.iochuchulo * propensive Appologize, I didn't want to rush you. I just wanted to know if that it is already fixed, or I do something wrong. So thank you anyway.😇 18:01:20
@_discord_544647944385593361:t2bot.iojozinek#0918 Does depends on here mean adding a github repo to project? 21:48:42
@_discord_544647944385593361:t2bot.iojozinek#0918 * Does depends on here mean adding a github repo to project? I.E. use something like fury repo add gh:... 21:50:00
@_discord_547426086179307521:t2bot.iopropensive chuchulo No worries at all, I was just trying to set your expectations appropriately! 23:16:29
@_discord_547426086179307521:t2bot.iopropensive jozinek Yes, it's probably easiest to use a git repository to store the sources. Nothing to stop you using the same repository for all the versions of all the projects. You'll need to add the same repo to each layer, but you can choose different source directories for each of the projects. 23:18:59
@_discord_547426086179307521:t2bot.iopropensive So, to get started, I'd do this (you might need to fix some typos/bugs):
fury layer init
fury project add -n conflict
fury module add -n core -c scala/compiler
fury repo add -R gh:jozinek/repo
fury source add -s repo:src/conflict-a
fury build run
fury layer share # get the hash from this

then do the same again with conflict-b

Then set up new projects depends-on-a and depends-on-b which are basically,
fury layer init
fury project add -n depends-a
fury module add -n core -c scala/compiler
fury repo add -R gh:jozinek/repo
fury source add -s repo:src/depends-on-a
fury layer import -n depends-a -i fury://hash-from-before
fury dependency add -d conflict/core
fury build run
fury layer share # get this hash

and then create a fifth layer which imports the layer containing depends-on-a and depends-on-b. When you try to build this one, it should fail with a conflict on the conflict project, which is pulled in transitively by different layers.
23:26:26
@_discord_547426086179307521:t2bot.iopropensive And it's considered a conflict because the the definition of conflict will be subtly different in each of those two transitive layers. 23:27:19
@_discord_547426086179307521:t2bot.iopropensive I'm planning on implemented some commands (or maybe you'd like to try?) which would be something like:
fury layer shade -p conflict -i <import-name>

which would be run in the final layer and would shade the version of the conflict project coming from the <import-name> layer, as seen from the layer it's run in.
23:32:49
@_discord_547426086179307521:t2bot.iopropensive It would effectively allow conflict and (say) conflict#shaded different names so they could coexist in the same layer. The projects would have different names, and some additional code would run which rewrites the bytecode before it's used in the final layer. 23:34:05

Show newer messages


Back to Room ListRoom Version: 5