Bug 1182346

Summary: RFE: introduce log4j-1 symlink to point to the latest log4j from 1.x line
Product: [Fedora] Fedora Reporter: Alon Bar-Lev <alonbl>
Component: log4j12Assignee: gil cattaneo <puntogil>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 21CC: iheim, mizdebsk, msrb, puntogil, tlestach
Target Milestone: ---Keywords: Reopened
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-01-23 12:24:55 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1182240    

Description Alon Bar-Lev 2015-01-14 22:34:40 UTC
Hi,

Without versionless symlink there cannot be usage of:

$ build-classpath log4j12.jar

Requires for rpms that depends on this package to not require to use specific version.

This is required as the log4j-1.2-api of log4j-2.2 is not fully compatible.

Thanks,

Comment 1 Mikolaj Izdebski 2015-01-15 05:19:47 UTC
(In reply to Alon Bar-Lev from comment #0)
> Hi,
> 
> Without versionless symlink there cannot be usage of:
> 
> $ build-classpath log4j12.jar
> 

JAR and POM files in compatibility packages, like log4j12, MUST be versioned.
See: http://fedoraproject.org/wiki/Packaging:Java#Compatibility_packages

build-classpath works when full version is given:

$ build-classpath log4j-1.2.17
/usr/share/java/log4j-1.2.17.jar

$ build-classpath log4j12-1.2.17
/usr/share/java/log4j12-1.2.17.jar

Comment 2 Alon Bar-Lev 2015-01-15 08:21:00 UTC
how is it related to pom?

so basically what you claiming that for the reason of maven introduction the BuildRequires must be a specific version?

this is a change in behavior.

as you can see there are many packages who kept the behavior in /usr/share/java and still enables build dependency on package without specific version and usage of build-classpath.

Comment 3 Tomas Lestach 2015-01-21 16:29:31 UTC
A /usr/share/java/log4j12.jar symlink to /usr/share/java/log4j12-1.2.17.jar is really needed. I think this is required by fedora packaging guidelines.

Could this issue be solved within the upcoming days?
This issues blocks providing of Spacewalk on Fedora21.

Comment 4 gil cattaneo 2015-01-21 16:47:39 UTC
(In reply to Tomas Lestach from comment #3)
> A /usr/share/java/log4j12.jar symlink to /usr/share/java/log4j12-1.2.17.jar
> is really needed. I think this is required by fedora packaging guidelines.
> 
> Could this issue be solved within the upcoming days?
> This issues blocks providing of Spacewalk on Fedora21.

see 1182346#c1

Comment 5 Alon Bar-Lev 2015-01-21 17:22:52 UTC
please see c#0, c#2, c#3, or at least explain why we build-classpath should use explicit z-stream.

Comment 6 gil cattaneo 2015-01-21 17:50:14 UTC
Sorry, but this for me is not an issue, as explained by Mikolaj.
You can use log4j 2.x, provides log4j-1.2-api.jar, log4j.jar.
There are very few packages which have compatibility problem with this latest release of the apache logging library. In the near future we remove log4j12 from the distribution. We encourage to port your project to the newer log4j library.

Comment 7 Mikolaj Izdebski 2015-01-21 17:58:05 UTC
(In reply to Alon Bar-Lev from comment #5)
> please see c#0, c#2, c#3, or at least explain why we build-classpath should
> use explicit z-stream.

We (package maintainers of log4j12) have triaged this ticket and we decided that it's not a defect in log4j12. If don't agree then you can escalate to FESCo. Otherwise please don't reopen this ticket.

Red Hat Bugzilla is not an avenue for technical assistance or support, but simply a bug tracking system. If you want to discuss or ask questions about implementation of "compat packages" in Fedora you can write to java-devel mailing list or ask on IRC.

Comment 8 Alon Bar-Lev 2015-01-21 18:12:30 UTC
Nobody asked for support. This is a pure bug. You can ignore it, but please do not state that anyone asking you support questions nor asking for technical assistance.

Closing this per maven behavior to effect non maven based packages is simply incorrect, as it has nothing to do with maven.

Arguing that you do not want to support log4j12 makes somewhat more sense, but as long as the package is there, no reason why not to enable to actually use it.

Comment 9 Mikolaj Izdebski 2015-01-21 18:20:34 UTC
(In reply to Alon Bar-Lev from comment #8)
> Nobody asked for support. This is a pure bug. You can ignore it, but please
> do not state that anyone asking you support questions nor asking for
> technical assistance.

Yes, you have, in comment #7 ("explain why we build-classpath should
use explicit z-stream")

> Closing this per maven behavior to effect non maven based packages is simply
> incorrect, as it has nothing to do with maven.

Nobody besides you have mentioned Maven in this ticket.

> Arguing that you do not want to support log4j12 makes somewhat more sense,
> but as long as the package is there, no reason why not to enable to actually
> use it.

build-classpath works with log4j12 as expected - I tested it before closing the ticket. Explaining why it is expected to work like that is out of scope for Bugzilla.

Comment 10 Alon Bar-Lev 2015-01-21 18:25:10 UTC
(In reply to Mikolaj Izdebski from comment #1)
> JAR and POM files in compatibility packages, like log4j12, MUST be versioned.
> See: http://fedoraproject.org/wiki/Packaging:Java#Compatibility_packages

^^^^^^^^^^^^^^^^^ POM == maven.

> build-classpath works with log4j12 as expected

build-classpath DOES NOT works with log4j12 as expected as it should work without explicit version just like any other jar, using (per comment#0):

$ build-classpath log4j12.jar

Hence bug still valid.

Comment 11 Michal Srb 2015-01-22 08:47:33 UTC
(In reply to Alon Bar-Lev from comment #10)
> (In reply to Mikolaj Izdebski from comment #1)
> > build-classpath works with log4j12 as expected
> 
> build-classpath DOES NOT works with log4j12 as expected as it should work
> without explicit version just like any other jar, using (per comment#0):
> 
> $ build-classpath log4j12.jar
> 

I think what Mikolaj meant was that build-classpath works for log4j12 *package* as expected. And I agree with him.
However, I think it's a bit unfortunate that log4j12 package only provides symlink for very specific version of log4j 1.x.

I think it would be good to create more generic symlinks for whatever 1.x version of log4j we have in Fedora.

Something like:
log4j-1.2.jar
or even:
log4j-1.jar

Then you could modify your spec file to use:
build-classpath log4j-1
and you would always get some log4j 1.x, regardless of specific minor version (1.2.17, 1.2.18,...)

What do you guys think?

Comment 12 Tomas Lestach 2015-01-23 10:21:13 UTC
> $ build-classpath log4j-1.2.17
> /usr/share/java/log4j-1.2.17.jar
> 
> $ build-classpath log4j12-1.2.17
> /usr/share/java/log4j12-1.2.17.jar

This is nice, but I really cannot hardcode the version for all my dependencies, especially if I have over 40 of them. I'd need to update the configuration with every new package release/version as the previous one gets removed from the Fedora21 repo.
We maintain our project on RHEL5, RHEL6, RHEL7 and two latest Fedora versions and I really cannot hardcode any package/jar versions there.

What is the problem with adding an extra symlink?
/usr/share/java/log4j12.jar -> /usr/share/java/log4j12-1.2.17.jar

Comment 13 Mikolaj Izdebski 2015-01-23 10:27:10 UTC
(In reply to Tomas Lestach from comment #12)
> > $ build-classpath log4j-1.2.17
> > /usr/share/java/log4j-1.2.17.jar
> > 
> > $ build-classpath log4j12-1.2.17
> > /usr/share/java/log4j12-1.2.17.jar
> 
> This is nice, but I really cannot hardcode the version for all my
> dependencies, especially if I have over 40 of them. I'd need to update the
> configuration with every new package release/version as the previous one
> gets removed from the Fedora21 repo.
> We maintain our project on RHEL5, RHEL6, RHEL7 and two latest Fedora
> versions and I really cannot hardcode any package/jar versions there.

"log4j" is latest version in Fedora (currently 2.x).  We can add a symlink "log4j-1" which would point to latest log4j from 1.x line.

> What is the problem with adding an extra symlink?
> /usr/share/java/log4j12.jar -> /usr/share/java/log4j12-1.2.17.jar

It would violate packaging guidelines and break different tools (javapackages-tools, xmvn) that are built on assumption that compatibility JARs are always versioned.

Comment 14 Tomas Lestach 2015-01-23 10:32:15 UTC
All right.

> We can add a symlink
> "log4j-1" which would point to latest log4j from 1.x line.

This would help me. Shall I create a separate BZ or can we handle it within this one?
Thank you.

Comment 15 Mikolaj Izdebski 2015-01-23 10:41:11 UTC
(In reply to Tomas Lestach from comment #14)
> All right.
> 
> > We can add a symlink
> > "log4j-1" which would point to latest log4j from 1.x line.
> 
> This would help me. Shall I create a separate BZ or can we handle it within
> this one?

I've just implemented this in rawhide (F-22) in log4j12-1.2.17-8. If you need this in older Fedora too then please open a new feature request.

Comment 16 Tomas Lestach 2015-01-23 12:17:06 UTC
(In reply to Mikolaj Izdebski from comment #15)
> I've just implemented this in rawhide (F-22) in log4j12-1.2.17-8. If you
> need this in older Fedora too then please open a new feature request.

Thank you.
I opened Bug 1185297.

Comment 17 Mikolaj Izdebski 2015-01-23 12:24:55 UTC
I ask you again not to change status of this bug.

Comment 18 Alon Bar-Lev 2015-01-23 12:43:17 UTC
(In reply to Mikolaj Izdebski from comment #17)
> I ask you again not to change status of this bug.

why not a bug if was fixed as requested - no full version? not important if you set it to log4j12 log4j-1 or any without explicit z-stream version.

do you want me to open yet another bug so bugzilla actually reflect the reality?

anyway, it is not important as long as you fix this issue.

it could have been nicer process.

Comment 19 Mikolaj Izdebski 2015-01-23 12:47:50 UTC
(In reply to Alon Bar-Lev from comment #18)
> (In reply to Mikolaj Izdebski from comment #17)
> > I ask you again not to change status of this bug.
> 
> why not a bug if was fixed as requested - no full version? not important if
> you set it to log4j12 log4j-1 or any without explicit z-stream version.

This bug was about adding *versionless* symlink, which is not going to happen. CLOSED/NOTABUG is the right status for this bug.

> do you want me to open yet another bug so bugzilla actually reflect the
> reality?

Different bugs or requests should have separate bugs open. There is already an open RFE to add log4j-1.jar symlink (bug #1185297) so you can use reference this one if that's what you wand. Otherwise you can open a new bug.

Comment 20 Alon Bar-Lev 2015-01-23 12:51:52 UTC
(In reply to Mikolaj Izdebski from comment #19)
> (In reply to Alon Bar-Lev from comment #18)
> > (In reply to Mikolaj Izdebski from comment #17)
> > > I ask you again not to change status of this bug.
> > 
> > why not a bug if was fixed as requested - no full version? not important if
> > you set it to log4j12 log4j-1 or any without explicit z-stream version.
> 
> This bug was about adding *versionless* symlink, which is not going to
> happen. CLOSED/NOTABUG is the right status for this bug.
> 
> > do you want me to open yet another bug so bugzilla actually reflect the
> > reality?
> 
> Different bugs or requests should have separate bugs open. There is already
> an open RFE to add log4j-1.jar symlink (bug #1185297) so you can use
> reference this one if that's what you wand. Otherwise you can open a new bug.

these are all the same issue, you just made it very difficult. a build-classpath without explicit version was requested it was the reason this bug was opened, you could have suggested any other versionless, fix it without require any other bug.

just like a bug was opened and problem determination suggested technical description is somewhat different than reported, you do not make customer file yet another bug.

but as I wrote previously, it is not important whatever works for you... as long as we can port packages into fc21.

thank you for your cooperation.