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
Update build system #59
Conversation
…o check on output paths and ClientProfile requirements
For the CLA see https://www.apache.org/licenses/contributor-agreements.html. In particular you need to fill out the ICLA and send it in according to the instructions. That is a prerequisite to becoming a committer. Jira was disabled for Log4Net when the project was moved to dormant status. We will request it be reactivated as part of the release. I see the build log but I can't tell if that is a valid release or not. Java development builds normally have -SNAPSHOT in the version and then the release does not. The main steps involved in a release are:
Updating the web site will most likely be part of the release process, but when and how it is updated is up to the team. However, the Apache announcement list requires that the download link be included near the front of the announcement email and it has to work. Sending an announcement to the announcement email is desirable but is not required. The email must be sent to the asf mail relay using an @apache.org email account. The announcement can also be posted to the ASF Logging blog. Finally, when the release passes you would want to upload the binaries to where users would most likely consume it, if that isn't from the ASF distribution directories. |
How can I validate this PR? Are there build instructions somewhere? I assume it requires Windows? Any particular version required? Are there prerequisites that have to be installed? A BUILDING.md file would be helpful. |
🔧 explicitly include appveyer config to make it easier to fire up under another account
@rgoers good idea about standalone build instructions. I've added a BUILDING.md document which should hopefully be helpful. Feedback appreciated. |
81653b8
to
f6b95da
Compare
Hi I'll be honest: friction to getting a PR merged in as a non-Apache dev is really daunting. I keep putting it off, but I'm not sure if I'm ever going to get around to ticking all the boxes, crossing all the T's and dotting all the I's. I feel like a flake, but really, I'm just another human being with a limited number of keystrokes they can make in their lifetime. This, to me, feels like a failing of the process: when the most difficult thing you ask of contributors is to follow some internal processes that, really, don't matter to the project. The binaries aren't signed -- what is the point of any of the hullabaloo preceding that? Perhaps it matters for Apache Java stuff, but the pretense of that mattering for log4net was dropped the moment signing was dropped -- and really, I don't mind that signing was dropped: nuget.org provides enough verification of valid binaries, imo. None of my libraries are signed, and I'm ok with that. I don't want log4net to die -- I specifically picked this up to keep a useful library going -- but I'm wondering if this is something I can even make a meaningful difference in. I've also really struggled in this process to find definitive direction as to exactly how things should get done. Some say Apache Jenkins is where build & release should happen. Others say external CI (like AppVeyor) is fine, but CircleCI apparently isn't. When I get build pipelines in place to support AppVeyor and (if it were accepted), CircleCI, I read that many releases are done from dev machines -- so why did I spend the many many hours on learning the flows for external CI pipelines & working out the kinks so they actually worked? Log4Net holds a lot of legacy support -- getting that to work in an arbitrary build environment is non-trivial, but, at the end of the day: worth it -- the build I've proposed still gets log4net out to .net 2.0 and CF targets! On AppVeyer! An environment I have very little control over! And using docker! I learned enough docker to be dangerous enough to get build for ancient .net-supporting systems to actually work! I see a couple of courses of action here:
If the world has moved on, so be it, but if the 33 other outstanding PRs against apache-logging/log4net are important to anyone, I need to know before I sink even more hours into this. |
Ironically, I was just looking at the BUILDING.md file. I occasionally use my Windows VM to test the build of Log4j but nothing more than that. I haven't done anything with .NET in years. So the idea of downloading and installing Visual Studio and .NET just to verify the PR makes me think it isn't worth it and I should just merge it after giving it a once-over, which I have done. I admit I am not familiar with much of what it is doing so my review isn't worth much. |
For Ralph: If you don't know, Microsoft does provide development VMs that already have the tools installed so you don't need to download Visual Studio and .NET: https://developer.microsoft.com/en-us/windows/downloads/virtual-machines/ |
Uhm... so ok, this is merged, but how does a release now get out? 2.0.9 has been ready for release for a while, without happening, long before I got involved. It's all well and good that the project can be easily built -- what's next? Code has no value (imo) if there's no artifact that can be used -- in this case, a nuget package for download. On the topic of build: if you're not on windows there's the AppVeyer build, which seems to work satisfactorily; if you are on windows, the vs build tools installer is enough -- you don't need all of VS. I don't have all of VS installed, since I prefer to work in Rider. I install the VS Build Tools only. I also figured out a docker environment which should work (https://hub.docker.com/repository/docker/davydm/net-build-tools) -- but it looks like I never made build targets for it :/ On the topic of maintenance: if log4net needs a maintainer and the requirement is to jump through the Apache hoops, I'll do it. What I need (and I have asked before) is some specific direction. Does Apache log4net need a new maintainer? Would I be useful to the project? I'm happy to be a flyby contributor, but I'm also happy to get more involved, if I understand what's required of me to do so. |
To get a release out someone needs to create whatever the PMC is going to vote on. If it is just a source release then that should be packaged in gzip and/or zip format. If the release will contain binaries package them to. If the release is going to be published to some central repo (like Maven Central for Java) that should be done after the release is approved but the PMC needs to review whatever will be pushed to those locations. We don’t care where you publish the release artifacts for us to review as long as we can get to them. You would probably want to create a PR with for the git tag for the release candidate. |
@rgoers there are release artifacts for this PR, as mentioned in the initial request, at https://ci.appveyor.com/project/fluffynuts/logging-log4net/builds/32915894/artifacts
I'm not sure what else to do? I have seem emails on the mailing list to do with voting on a release -- should I be starting one of those? |
Not that this is really the place to comment, but can I just say that there are probably many people who would love a new log4Net version updated for .NET Standard 2.0. |
@fluffynuts I see a nuget package and a file named log4net-binaries. I downloaded that and it does not contain source. It looks like a binary distribution. if it is it is missing a LICENSE and NOTICE file. Those are in the root directory of the project and need to be in the source and convenience binaries. I can see that the nuspec file has a link to the ASF license. I assume that placing it there will cause nuget to display that as the license for the artifact? |
@rgoers thanks, I'll create a new PR to rectify: the release should have a source artifact. You're correct about the licensing field in the nuspec, insofar as the link will be presented the the consumer to follow at their convenience. |
@fluffynuts I've just updated a few of my projects to log4net 2.0.9. First of all, thanks for your work! But I have to report a few problems and oddities: Breaking change
which is triggered because the netstandard2.0 target also defines that constant here logging-log4net/src/log4net/log4net.csproj Lines 57 to 58 in 8178e51
I can see that ImmediateFlush would have had no effect in previous versions (because the if statement in the Append method had the target framework condition), but with netstandard2.0 this should be possible.
So at least the netstandard2.0 assembly should contain that property (and maybe other properties that received a similar change in 2.0.9?). I assume this should be fixed by removing the Dependencies I think this dependency list is the reason why my netcoreapp3.1 project still needs the Assembly attributes PS: Sorry if this is not the right place to report issues, but I couldn't find a better one. It seems like the log4net Jira is not used any more and issues are not enabled in this GitHub project. |
Filed https://issues.apache.org/jira/browse/INFRA-20802 to re-open the Jira tracker. Thanks for the reminder! |
@jvz Thanks. Does this mean I should create tickets for the points in my last comment? |
@cremor could you see if the changes here fix this: #63 Perhaps:
alternatively, unpack the .nupkg I attach here (zipped because GitHub wouldn't accept the .nupkg) -- it's built from that branch. Then rebuild your project I see that @NicholasNoise fixed up a bunch of things in there and enabled multi-platform testing, so perhaps these binaries work for you. If they do, I'll accelerate incorporation of that PR (there are some things that need to be sorted out, but I could merge, fix & then release) |
@fluffynuts Thanks for the pointer to #63 and for the precompiled NuGet package from that PR! I just tested it and it indeed fixes all of the points I mentioned above. edit: Ok, the breaking change for the removed |
I have failed to find a good way to test
But actually |
I'm using the
|
latest build is here: https://ci.appveyor.com/project/fluffynuts/logging-log4net/builds/32915894
I'm sure there's more to the Apache release process that I need to learn about, so I'm raising this now to get the ball rolling.
In particular, I', not sure how to: