-
Notifications
You must be signed in to change notification settings - Fork 25
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
Set up AppVeyor & NuGet packages #33
Comments
I've forked ecsharp/master, and I got started on setting up AppVeyor. Right now, If you could provide me with a list of LeMP/LLLPG command-line instructions to run, then I'll add those to the Oh, I also can't get some projects to build because they have a AppVeyor increments the build number by default, and puts that in an environment variable. I'm using that right now in the Also, I don't think we really need a shared NuGet account, because I don't expect that any manual intervention will be necessary - or desirable, for that matter - once NuGet packages are pushed automatically. |
You mentioned a pre-build command before and I didn't know what you were talking about ... so I searched. Looks like the only REM is in Loyc.Syntax.csproj. It's a bootstrapping command I used three or four years ago. By all means, please remove it. |
Btw did you realize It's a matter of control, I want administrative control over the Loyc & EC# packages, if necessary. After logging into NuGet, click your username, then "Manage my packages", then click a package, and then "Manage Owners", then add "qwertie". Hmm, an enviroment variable? How do we get that into the
Or simply use whatever technique you're already using to insert the build number in the nupkg. |
Yeah, I know. But bash is completely unaware of that, so
I use
where I've also configured AppVeyor to patch the
Actually, I'd feel much more comfortable if you handled publishing the Loyc packages with your account. You are the author of the Loyc libraries, after all. I'll be sure to add you as an administrator if any part of To that end, I created a commented-out Speaking of which, when would you like me to send a PR? Should I get LeMP to process the EC# source code first, or would you rather do that yourself?
Done. With a few additional tweaks, I also managed to get Travis CI to compile Loyc as well. |
What's the dif between the web site you're using - Travis CI - and AppVeyor? SEMVER? Fairly obviously I haven't been using semantic versioning, otherwise I'd be at version 25.2 or something like that. If we were to use semantic versioning, it would probably be better to version each component separately (although appveyor.yml it looks like the version is global - why is the version number stated twice?). And I feel like certain public classes ought to be excluded from semantic versioning - if an API is unstable or unfinished but usually not needed by external code, it would be nice not to have to increment the version with every change. Alternately these APIs could be internal rather than public (with btw - the yml file mentions VLists\Test project... that's old and ripe to be deleted too. Hmm, based on what's in the yml, I take it take it AppVeyor has some kind of assembly rewriter that updates the You need not automate the "horrible manual process" yet, but it would be nice to build the Visual Studio extensions ... hmm, is it even possible for AppVeyor to build a Visual Studio extension? Seems so - perhaps it'll Just Work. But the way it's set up in my repo doesn't seem ideal - currently I use a batch file to copy from Bin\Release.NET4 over to Lib\LeMP, and then the VS extension takes the binaries in Lib\LeMP as references. But you could send a PR even without building the VS extension. I'm still not in a big hurry to integrate everything 'cause I still have to worry about updating EC# to support C# 7 syntax. |
Travis CI builds projects on Ubuntu instead of Windows, so it uses the Mono/
I think that AppVeyor actually modifies the C# I'm not sure if I'm the right person to get the Visual Studio extensions to compile. I don't even have a local machine to test them on, so I doubt that I can effectively coerce AppVeyor to build them. On an unrelated note: I see that you're including binaries directly in the EC# repository at the moment. Have you considered exclusively using GitHub releases to store your LeMP/LLLPG binaries instead? That's the way I configured Flame. To build Flame in a CI environment, I just
Anyway, I'll send you a PR right now, so you get started on setting up Travis CI and AppVeyor CI for this repo. I can always send you another PR later that makes the CI jump through even more hoops. |
Well, you know, since LeMP&LLLPG are dependencies of the project, I thought it made sense to include them in source control, so that it's easy to set up after cloning, and if one goes to any point in history, one gets a compatible version of the binaries. But I guess this isn't very sustainable - the .git folder is 61MB and I don't know how much of that is binaries, but I don't want it to keep getting bigger. I guess instead we could take a dependency on our own NuGet package. |
Oh, sure. Downloading NuGet packages for LeMP/LLLPG during the CI process would work just fine as well. I was thinking about running Loyc's tests during the CI process. The tests need to output a non-zero exit code for Travis/AppVeyor to consider them as failed, so I've changed the return type of I only managed to get By the way, could you spare some time to review my pull request? If so, then I'd love to hear your feedback on the changes I made. |
For tests that are expected to stay failing for a long time, I set the |
BTW, LLLPG has a class of test failures I don't know how to fix. I think the problem is that the hashcode of a |
All right, I've taken those attributes into account, and Eliminating nondeterminism sounds like a good idea in general. Perhaps sorting |
Whew. I've been fixing bugs for the last several days (some were hard to fix so it took awhile); I didn't fix the nondeterminism in LLLPG, but otherwise no tests should fail unexpectedly. |
That's great news. I see that you've released a new version of LeMP, as well. While I was reading the release notes, I noticed that there's a macro that "backports" the C# 6.0 null dot operator. Which was a pleasant surprise, because, theoretically, Also, I see that you've added an Anyway, those just some of my thoughts. I'm in the middle of my examination period, so I probably won't be implementing these features right away. I am (slowly) working toward a heap-to-stack optimization pass for Flame, though. The general idea is to perform escape analysis, and then re-write some reference type values as references to value type instances, which would in turn make them susceptible to the scalar replacement of aggregates optimization. |
Currently the My thought is, though, that I could improve the There is a second operator we need to worry about: I thought briefly about whether LeMP should wrap the whole input file in a node with a predictable name like But it makes sense for Scalar replacement of aggregates? To be much use, that would have to occur after function inlining, wouldn't it? Usually one calls methods on one's aggregates. Good luck on your exams! |
Maybe the
LeMP would then translate that as:
And Having a macro that can abstract over LeMP's casing voodoo and I'm not sure how to handle Yes, exactly. Inlining is performed just before scalar replacement of aggregates at the moment. Together, those two passes can deliver fairly large performance improvements, and I'd like to make some Aggressive optimizations - which Roslyn lacks completely - could also be an extra selling point for using
Thanks. :) |
Looks like this issue should have been closed years ago. |
I think we should have NuGet packages for each component: Loyc.Essentials, Loyc.Collections, Loyc.Syntax, Loyc.Utilities, Loyc.Ecs, LeMP and LLLPG. But right now there is only LoycCore (see Core/LoycCore.nuspec) and I've been too distracted to set up new packages. Hmm, I wonder if NuGet has a way of letting multiple people (U&I) have permission to update a given package. Anyway, since I have to update NuGet packages manually, I do it less often than I should.
I saw AppVeyor once and it looks cool... I am interested in having independent automated builds since it's too easy to push something that only works on my machine, or that has the .NET 3.5 build broken (which I guess I'll remove soon anyway... but after all other spring cleaning is done). But I always figured I'd have to give it some special thought because ideally you'd want to not just build EC#/LeMP but also make sure that it compiles itself correctly. It's a horribly manual process right now:
But just doing 1 & 2 in CI would be a nice start.
So @jonathanvdc, help setting up AppVeyor and NuGet packages would be appreciated. Do you know how to set up AppVeyor such that it can auto-increment the build number when changes are pushed? I saw a video where a guy had set up an auto-increment feature, but I have no idea how it works on a technical level.
Another thing we should do is set up a Loyc organization on GH to hold a repository of finished features, with our partly done features under our usernames. Except I don't know what to call the organization since some zero-commit jagoff took the name "Loyc".
The text was updated successfully, but these errors were encountered: