Skip to content
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

OSGi data in MANIFEST.MF is incorrect in version 4.7.0 #2361

Closed
driessamyn opened this issue Jan 12, 2022 · 18 comments · Fixed by #2505 or #2573
Closed

OSGi data in MANIFEST.MF is incorrect in version 4.7.0 #2361

driessamyn opened this issue Jan 12, 2022 · 18 comments · Fixed by #2505 or #2573

Comments

@driessamyn
Copy link

Environment

Liquibase Version: 4.7.0

Liquibase Integration & Version: liquibase-core

Liquibase Extension(s) & Version: n/a

Database Vendor & Version: n/a

Operating System Type & Version: MacOs, openjdk 11.0.11 2021-04-20 LTS

Description

The MANIFEST.MF file inside liquibase-core-4.7.0.jar is not valid.
Something around versioning seems to have gone wrong.
Specifically:

Bundle-Version: 0.0.0.SNAPSHOT should be Bundle-Version: 4.7.0
Liquibase packages inside the Import-Package list have incorrect version definition. E.g.
...,liquibase.change;resolution:=optional;version="[4.7.0,1),...
the version specification should be [4.7,5) and there is an issue with quotation marks as the opening quotes after version= don't get closed.
A locally compiled earlier version has this instead:
`...liquibase.change;resolution:=optional;version="[4.5,5)",...

This means the bundle cannot be resolved. Trying do to so using bnd shows an error like this:

Resolution failed. Capabilities satisfying the following requirements could not be found:
    [<<INITIAL>>]
          ⇒ ...
              ⇒ osgi.wiring.package: (&(osgi.wiring.package=...)
                  ⇒ [... version=5.0.0.0-SNAPSHOT]
                      ⇒ osgi.wiring.package: (&(osgi.wiring.package=liquibase.database)(version>=4.7.0)(!(version>=5.0.0)))
                          ⇒ [org.liquibase.core version=0.0.0.SNAPSHOT]
                              ⇒ osgi.wiring.package: (osgi.wiring.package=1))

Steps To Reproduce

To see the contents of the file:

  • download liquibase-core-4.7.0.jar from Maven Central
  • extract/unpack files inside liquibase-core-4.7.0.jar
  • open META-INF/MANIFEST.MF

Loading the resolution issue:

  • Create an OSGi test that references liquibase.
  • Run the test

Actual Behavior

  • Bundle doesn't resolve

Expected/Desired Behavior

  • Bundle should be resolved correctly
@jherkel
Copy link
Contributor

jherkel commented Jan 13, 2022

I can see the same problem. Are there any special "things" when a release build is created? I mean ManifestReversion.java where I think the wrong version is set.

@kataggart
Copy link
Contributor

thanks @driessamyn for the detail here -- checking on this

@XDelphiGrl
Copy link
Contributor

The updates to the MANIFEST.MF happens only during a release or draft release build. However, we cannot get the fix into the draft release until this PR is merged. Liquibase Internal QA has an issue assigned to ensure we validate the MANIFEST.MF is updated when we have a release candidate.

GH Issue

Conditioning++ automation moved this from To Do to Done Feb 9, 2022
@nvoxland nvoxland added this to the v4.8.0 milestone Feb 22, 2022
@sf-bit
Copy link

sf-bit commented Feb 23, 2022

In https://github.com/liquibase/liquibase/releases/download/v4.8.0/liquibase-4.8.0.jar this issue is still present: Versions are of form

"[4.8.0,1)

with wrong upper bound 1 and missing right quotation mark.

@XDelphiGrl
Copy link
Contributor

@nvoxland, the fix addressed only the first issue @sf-bit described. This is the section that we missed:

Liquibase packages inside the Import-Package list have incorrect version definition. E.g.
...,liquibase.change;resolution:=optional;version="[4.7.0,1),...
the version specification should be [4.7,5) and there is an issue with quotation marks as the opening quotes after version= don't get closed.

Should we reopen this issue?

CC @kataggart

@kataggart
Copy link
Contributor

@XDelphiGrl yes, thanks, doing it now!

@kataggart kataggart reopened this Feb 23, 2022
Conditioning++ automation moved this from Done to To Do Feb 23, 2022
@kataggart kataggart assigned nvoxland and unassigned XDelphiGrl Feb 23, 2022
@nvoxland
Copy link
Contributor

Sorry, I missed that issue with the quoting and just fixed up the missed SNAPSHOT version.

#2573 will address the quoting issue.

@XDelphiGrl
Copy link
Contributor

I missed it too, @nvoxland. Thanks for new PR!

@kataggart kataggart removed this from the v4.8.0 milestone Mar 8, 2022
Conditioning++ automation moved this from To Do to Done Mar 10, 2022
@nvoxland
Copy link
Contributor

Re-opening to test at release time

@nvoxland nvoxland reopened this Mar 10, 2022
Conditioning++ automation moved this from Done to To Do Mar 10, 2022
@ktor
Copy link

ktor commented Mar 16, 2022

4.8.0 available at maven cental has followin issue:
does not have a META-INF/MANIFEST.MF! Make sure, META-INF and MANIFEST.MF are the first 2 entries in your JAR!

After inspecting the JAR you can see that META-INF/ takes the first place correctly but MANIFEST.MF is incorrectly placed (not as the second entry in jar file):

└➤ jar -tf bundles/osgi/modules/liquibase-core-4.8.0.jar | grep META-INF
META-INF/
META-INF/services/
META-INF/LICENSE.txt
META-INF/NOTICE.txt
META-INF/NOTICE
META-INF/services/liquibase.database.DatabaseConnection
META-INF/services/liquibase.precondition.Precondition
META-INF/services/liquibase.serializer.SnapshotSerializer
META-INF/services/liquibase.configuration.AutoloadedConfigurations
META-INF/services/liquibase.diff.DiffGenerator
META-INF/services/liquibase.lockservice.LockService
META-INF/services/liquibase.license.LicenseService
META-INF/services/liquibase.changelog.ChangeLogHistoryService
META-INF/services/liquibase.datatype.LiquibaseDataType
META-INF/services/liquibase.configuration.ConfigurationValueProvider
META-INF/services/liquibase.logging.LogService
META-INF/services/liquibase.diff.output.changelog.ChangeGenerator
META-INF/services/liquibase.snapshot.SnapshotGenerator
META-INF/services/liquibase.executor.Executor
META-INF/services/liquibase.parser.ChangeLogParser
META-INF/services/liquibase.structure.DatabaseObject
META-INF/services/liquibase.servicelocator.ServiceLocator
META-INF/services/liquibase.serializer.ChangeLogSerializer
META-INF/services/com.datical.liquibase.ext.rules.core.AbstractLiquibaseRule
META-INF/services/liquibase.diff.compare.DatabaseObjectComparator
META-INF/services/liquibase.parser.SnapshotParser
META-INF/services/liquibase.command.LiquibaseCommand
META-INF/services/liquibase.parser.NamespaceDetails
META-INF/services/liquibase.hub.HubService
META-INF/services/liquibase.database.Database
META-INF/services/liquibase.command.CommandStep
META-INF/services/liquibase.change.Change
META-INF/services/liquibase.sqlgenerator.SqlGenerator
META-INF/maven/org.liquibase/liquibase-core/pom.xml
META-INF/MANIFEST.MF

@nvoxland
Copy link
Contributor

I checked the MANIFEST.MF file for the wrapping up 4.9.0 release and the quoting is correct in the final build. I'm going to close this issue as fixed in 4.8.0 since it was about the problems in the MANIFEST.MF file, but I'll open a new ticket for what you found @ktor .

Conditioning++ automation moved this from To Do to Done Mar 16, 2022
@nvoxland nvoxland added this to the NEXT milestone Mar 16, 2022
@driessamyn
Copy link
Author

I checked the MANIFEST.MF file for the wrapping up 4.9.0 release and the quoting is correct in the final build. I'm going to close this issue as fixed in 4.8.0 since it was about the problems in the MANIFEST.MF file, but I'll open a new ticket for what you found @ktor .

I think the issue needs to be re-opened as the problem is still the same.
In the 4.9.0 release, the version range in Import-Packages is incorrect. E.g.: liquib ase;resolution:=optional;version="[4.9.0,1)"

I did a manual fixup of the manifest to prove the jar otherwise work (copy pasted below).

Any chance we could get a patch out with the fixed manifest?

If it is helpful, I can provide an OSGi test that would surface this issue, but as you edit the manifest post publication, it would need to be separate from the main build I'm guessing?

Manifest-Version: 1.0
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0
Bundle-SymbolicName: org.liquibase.core
Build-Number: 1885
Archiver-Version: Plexus Archiver
Built-By: runner
Liquibase-Version: 4.9.0
Bnd-LastModified: 1647450013306
Bundle-ManifestVersion: 2
Bundle-DocURL: http://www.liquibase.org
Bundle-Vendor: Liquibase.org
Import-Package: javax.servlet;version="[2.6,4)";resolution:=optional,j
 avax.servlet.http;version="[2.6,4)";resolution:=optional,javax.sql,or
 g.osgi.framework;version="[1.7,2)",org.osgi.framework.wiring;version=
 "[1.1,2)",org.osgi.util.tracker;version="[1.5,2)",org.yaml.snakeyaml;
 version="[1.27,2)";resolution:=optional,org.yaml.snakeyaml.constructo
 r;version="[1.27,2)";resolution:=optional,org.yaml.snakeyaml.introspe
 ctor;version="[1.27,2)";resolution:=optional,org.yaml.snakeyaml.nodes
 ;version="[1.27,2)";resolution:=optional,org.yaml.snakeyaml.represent
 er;version="[1.27,2)";resolution:=optional,org.yaml.snakeyaml.resolve
 r;version="[1.27,2)";resolution:=optional,com.opencsv;resolution:=opt
 ional;version="[5.6,6)",com.opencsv.exceptions;resolution:=optional;v
 ersion="[5.6,6)",jakarta.servlet;resolution:=optional;version="[5.0,6
 )",jakarta.servlet.http;resolution:=optional;version="[5.0,6)",javax.
 naming;resolution:=optional,javax.xml.parsers;resolution:=optional,ja
 vax.xml.transform;resolution:=optional,javax.xml.transform.dom;resolu
 tion:=optional,javax.xml.transform.stream;resolution:=optional,liquib
 ase;resolution:=optional;version="[4.9.0,5)",liquibase.change;resolut
 ion:=optional;version="[4.9.0,5)",liquibase.change.core;resolution:=o
 ptional;version="[4.9.0,5)",liquibase.changelog;resolution:=optional;
 version="[4.9.0,5)",liquibase.changelog.column;resolution:=optional;v
 ersion="[4.9.0,5)",liquibase.changelog.filter;resolution:=optional;ve
 rsion="[4.9.0,5)",liquibase.changelog.visitor;resolution:=optional;ve
 rsion="[4.9.0,5)",liquibase.command;resolution:=optional;version="[4.
 9.0,5)",liquibase.command.core;resolution:=optional;version="[4.9.0,5
 )",liquibase.configuration;resolution:=optional;version="[4.9.0,5)",l
 iquibase.configuration.core;resolution:=optional;version="[4.9.0,5)",
 liquibase.database;resolution:=optional;version="[4.9.0,5)",liquibase
 .database.core;resolution:=optional;version="[4.9.0,5)",liquibase.dat
 abase.jvm;resolution:=optional;version="[4.9.0,5)",liquibase.datatype
 ;resolution:=optional;version="[4.9.0,5)",liquibase.datatype.core;res
 olution:=optional;version="[4.9.0,5)",liquibase.dbdoc;resolution:=opt
 ional;version="[4.9.0,5)",liquibase.diff;resolution:=optional;version
 ="[4.9.0,5)",liquibase.diff.compare;resolution:=optional;version="[4.
 9.0,5)",liquibase.diff.output;resolution:=optional;version="[4.9.0,5)
 ",liquibase.diff.output.changelog;resolution:=optional;version="[4.9.
 0,5)",liquibase.diff.output.changelog.core;resolution:=optional;versi
 on="[4.9.0,5)",liquibase.diff.output.report;resolution:=optional;vers
 ion="[4.9.0,5)",liquibase.exception;resolution:=optional;version="[4.
 9.0,5)",liquibase.executor;resolution:=optional;version="[4.9.0,5)",l
 iquibase.executor.jvm;resolution:=optional;version="[4.9.0,5)",liquib
 ase.hub;resolution:=optional;version="[4.9.0,5)",liquibase.hub.listen
 er;resolution:=optional;version="[4.9.0,5)",liquibase.hub.model;resol
 ution:=optional;version="[4.9.0,5)",liquibase.integration;resolution:
 =optional;version="[4.9.0,5)",liquibase.integration.ant.type;resoluti
 on:=optional;version="[4.9.0,5)",liquibase.integration.commandline;re
 solution:=optional;version="[4.9.0,5)",liquibase.io;resolution:=optio
 nal;version="[4.9.0,5)",liquibase.license;resolution:=optional;versio
 n="[4.9.0,5)",liquibase.listener;resolution:=optional;version="[4.9.0
 ,5)",liquibase.lockservice;resolution:=optional;version="[4.9.0,5)",l
 iquibase.logging;resolution:=optional;version="[4.9.0,5)",liquibase.l
 ogging.core;resolution:=optional;version="[4.9.0,5)",liquibase.osgi;r
 esolution:=optional;version="[4.9.0,5)",liquibase.parser;resolution:=
 optional;version="[4.9.0,5)",liquibase.parser.core;resolution:=option
 al;version="[4.9.0,5)",liquibase.parser.core.xml;resolution:=optional
 ;version="[4.9.0,5)",liquibase.parser.core.yaml;resolution:=optional;
 version="[4.9.0,5)",liquibase.plugin;resolution:=optional;version="[4
 .9.0,5)",liquibase.precondition;resolution:=optional;version="[4.9.0,
 5)",liquibase.precondition.core;resolution:=optional;version="[4.9.0,
 5)",liquibase.resource;resolution:=optional;version="[4.9.0,5)",liqui
 base.serializer;resolution:=optional;version="[4.9.0,5)",liquibase.se
 rializer.core.json;resolution:=optional;version="[4.9.0,5)",liquibase
 .serializer.core.string;resolution:=optional;version="[4.9.0,5)",liqu
 ibase.serializer.core.xml;resolution:=optional;version="[4.9.0,5)",li
 quibase.serializer.core.yaml;resolution:=optional;version="[4.9.0,5)"
 ,liquibase.servicelocator;resolution:=optional;version="[4.9.0,5)",li
 quibase.snapshot;resolution:=optional;version="[4.9.0,5)",liquibase.s
 ql;resolution:=optional;version="[4.9.0,5)",liquibase.sql.visitor;res
 olution:=optional;version="[4.9.0,5)",liquibase.sqlgenerator;resoluti
 on:=optional;version="[4.9.0,5)",liquibase.statement;resolution:=opti
 onal;version="[4.9.0,5)",liquibase.statement.core;resolution:=optiona
 l;version="[4.9.0,5)",liquibase.structure;resolution:=optional;versio
 n="[4.9.0,5)",liquibase.structure.core;resolution:=optional;version="
 [4.9.0,5)",liquibase.ui;resolution:=optional;version="[4.9.0,5)",liqu
 ibase.util;resolution:=optional;version="[4.9.0,5)",liquibase.util.cs
 v;resolution:=optional;version="[4.9.0,5)",liquibase.util.grammar;res
 olution:=optional;version="[4.9.0,5)",liquibase.util.xml;resolution:=
 optional;version="[4.9.0,5)",org.apache.tools.ant;resolution:=optiona
 l,org.apache.tools.ant.taskdefs;resolution:=optional,org.apache.tools
 .ant.types;resolution:=optional,org.apache.tools.ant.types.resources;
 resolution:=optional,org.apache.tools.ant.util;resolution:=optional,o
 rg.h2;resolution:=optional,org.h2.server;resolution:=optional,org.h2.
 server.web;resolution:=optional,org.h2.tools;resolution:=optional,org
 .springframework.beans.factory;resolution:=optional,org.springframewo
 rk.context;resolution:=optional,org.springframework.core.io;resolutio
 n:=optional,org.springframework.core.io.support;resolution:=optional,
 org.w3c.dom;resolution:=optional,org.xml.sax;resolution:=optional,org
 .xml.sax.ext;resolution:=optional,org.xml.sax.helpers;resolution:=opt
 ional
Require-Capability: osgi.extender;filter:="(osgi.extender=osgi.service
 loader.registrar)",osgi.extender;filter:="(osgi.extender=osgi.service
 loader.processor)",osgi.serviceloader;filter:="(osgi.serviceloader=li
 quibase.serializer.ChangeLogSerializer)";cardinality:=multiple,osgi.s
 erviceloader;filter:="(osgi.serviceloader=liquibase.parser.NamespaceD
 etails)";cardinality:=multiple,osgi.serviceloader;filter:="(osgi.serv
 iceloader=liquibase.database.Database)";cardinality:=multiple,osgi.se
 rviceloader;filter:="(osgi.serviceloader=liquibase.change.Change)";ca
 rdinality:=multiple,osgi.serviceloader;filter:="(osgi.serviceloader=l
 iquibase.database.DatabaseConnection)";cardinality:=multiple,osgi.ser
 viceloader;filter:="(osgi.serviceloader=liquibase.precondition.Precon
 dition)";cardinality:=multiple,osgi.serviceloader;filter:="(osgi.serv
 iceloader=liquibase.serializer.SnapshotSerializer)";cardinality:=mult
 iple,osgi.serviceloader;filter:="(osgi.serviceloader=liquibase.config
 uration.AutoloadedConfigurations)";cardinality:=multiple,osgi.service
 loader;filter:="(osgi.serviceloader=liquibase.diff.DiffGenerator)";ca
 rdinality:=multiple,osgi.serviceloader;filter:="(osgi.serviceloader=l
 iquibase.lockservice.LockService)";cardinality:=multiple,osgi.service
 loader;filter:="(osgi.serviceloader=liquibase.changelog.ChangeLogHist
 oryService)";cardinality:=multiple,osgi.serviceloader;filter:="(osgi.
 serviceloader=liquibase.datatype.LiquibaseDataType)";cardinality:=mul
 tiple,osgi.serviceloader;filter:="(osgi.serviceloader=liquibase.confi
 guration.ConfigurationValueProvider)";cardinality:=multiple,osgi.serv
 iceloader;filter:="(osgi.serviceloader=liquibase.logging.LogService)"
 ;cardinality:=multiple,osgi.serviceloader;filter:="(osgi.serviceloade
 r=liquibase.snapshot.SnapshotGenerator)";cardinality:=multiple,osgi.s
 erviceloader;filter:="(osgi.serviceloader=liquibase.parser.ChangeLogP
 arser)";cardinality:=multiple,osgi.serviceloader;filter:="(osgi.servi
 celoader=liquibase.servicelocator.ServiceLocator)";cardinality:=multi
 ple,osgi.serviceloader;filter:="(osgi.serviceloader=liquibase.diff.co
 mpare.DatabaseObjectComparator)";cardinality:=multiple,osgi.servicelo
 ader;filter:="(osgi.serviceloader=liquibase.command.LiquibaseCommand)
 ";cardinality:=multiple,osgi.serviceloader;filter:="(osgi.serviceload
 er=liquibase.license.LicenseService)";cardinality:=multiple,osgi.serv
 iceloader;filter:="(osgi.serviceloader=liquibase.diff.output.changelo
 g.ChangeGenerator)";cardinality:=multiple,osgi.serviceloader;filter:=
 "(osgi.serviceloader=liquibase.executor.Executor)";cardinality:=multi
 ple,osgi.serviceloader;filter:="(osgi.serviceloader=liquibase.structu
 re.DatabaseObject)";cardinality:=multiple,osgi.serviceloader;filter:=
 "(osgi.serviceloader=liquibase.parser.SnapshotParser)";cardinality:=m
 ultiple,osgi.serviceloader;filter:="(osgi.serviceloader=liquibase.hub
 .HubService)";cardinality:=multiple,osgi.serviceloader;filter:="(osgi
 .serviceloader=liquibase.command.CommandStep)";cardinality:=multiple,
 osgi.serviceloader;filter:="(osgi.serviceloader=liquibase.sqlgenerato
 r.SqlGenerator)";cardinality:=multiple,osgi.ee;filter:="(&(osgi.ee=Ja
 vaSE)(version=1.8))"
Tool: Bnd-5.1.1.202006162103
Provide-Capability: osgi.serviceloader;osgi.serviceloader="liquibase.s
 erializer.ChangeLogSerializer",osgi.serviceloader;osgi.serviceloader=
 "liquibase.parser.NamespaceDetails",osgi.serviceloader;osgi.servicelo
 ader="liquibase.database.Database",osgi.serviceloader;osgi.serviceloa
 der="liquibase.change.Change",osgi.serviceloader;osgi.serviceloader="
 liquibase.database.DatabaseConnection",osgi.serviceloader;osgi.servic
 eloader="liquibase.precondition.Precondition",osgi.serviceloader;osgi
 .serviceloader="liquibase.serializer.SnapshotSerializer",osgi.service
 loader;osgi.serviceloader="liquibase.configuration.AutoloadedConfigur
 ations",osgi.serviceloader;osgi.serviceloader="liquibase.diff.DiffGen
 erator",osgi.serviceloader;osgi.serviceloader="liquibase.lockservice.
 LockService",osgi.serviceloader;osgi.serviceloader="liquibase.changel
 og.ChangeLogHistoryService",osgi.serviceloader;osgi.serviceloader="li
 quibase.datatype.LiquibaseDataType",osgi.serviceloader;osgi.servicelo
 ader="liquibase.configuration.ConfigurationValueProvider",osgi.servic
 eloader;osgi.serviceloader="liquibase.logging.LogService",osgi.servic
 eloader;osgi.serviceloader="liquibase.snapshot.SnapshotGenerator",osg
 i.serviceloader;osgi.serviceloader="liquibase.parser.ChangeLogParser"
 ,osgi.serviceloader;osgi.serviceloader="liquibase.servicelocator.Serv
 iceLocator",osgi.serviceloader;osgi.serviceloader="liquibase.diff.com
 pare.DatabaseObjectComparator",osgi.serviceloader;osgi.serviceloader=
 "liquibase.command.LiquibaseCommand",osgi.serviceloader;osgi.servicel
 oader="liquibase.license.LicenseService",osgi.serviceloader;osgi.serv
 iceloader="liquibase.diff.output.changelog.ChangeGenerator",osgi.serv
 iceloader;osgi.serviceloader="liquibase.executor.Executor",osgi.servi
 celoader;osgi.serviceloader="liquibase.structure.DatabaseObject",osgi
 .serviceloader;osgi.serviceloader="liquibase.parser.SnapshotParser",o
 sgi.serviceloader;osgi.serviceloader="liquibase.hub.HubService",osgi.
 serviceloader;osgi.serviceloader="liquibase.command.CommandStep",osgi
 .serviceloader;osgi.serviceloader="liquibase.sqlgenerator.SqlGenerato
 r"
Originally-Created-By: Apache Maven Bundle Plugin 5.1.4
Export-Package: liquibase.util;version="4.9.0";uses:="liquibase,liquib
 ase.changelog,liquibase.database,liquibase.exception,liquibase.resour
 ce,liquibase.structure.core,org.w3c.dom",liquibase.util.grammar;versi
 on="4.9.0",liquibase.util.csv;version="4.9.0",liquibase.util.file;ver
 sion="4.9.0";uses:="liquibase.util",liquibase.util.xml;version="4.9.0
 ";uses:="org.w3c.dom",liquibase;version="4.9.0";uses:="javax.xml.pars
 ers,liquibase.change,liquibase.change.core,liquibase.changelog,liquib
 ase.changelog.visitor,liquibase.configuration,liquibase.database,liqu
 ibase.diff,liquibase.diff.compare,liquibase.diff.output.changelog,liq
 uibase.exception,liquibase.hub,liquibase.hub.model,liquibase.listener
 ,liquibase.lockservice,liquibase.logging,liquibase.resource,liquibase
 .serializer,liquibase.servicelocator,liquibase.structure,liquibase.ui
 ",liquibase.example;version="4.9.0",liquibase.sdk.resource;version="4
 .9.0";uses:="liquibase.resource",liquibase.sdk.convert;version="4.9.0
 ";uses:="liquibase.command,liquibase.servicelocator",liquibase.sdk.su
 pplier.resource;version="4.9.0";uses:="liquibase.resource",liquibase.
 sdk.executor;version="4.9.0";uses:="liquibase.executor,liquibase.serv
 icelocator",liquibase.sdk;version="4.9.0",liquibase.sdk.exception;ver
 sion="4.9.0",liquibase.resource;version="4.9.0";uses:="liquibase,org.
 osgi.framework",liquibase.snapshot;version="4.9.0";uses:="liquibase,l
 iquibase.database,liquibase.diff.compare,liquibase.diff.output,liquib
 ase.exception,liquibase.parser.core,liquibase.resource,liquibase.seri
 alizer,liquibase.structure,liquibase.structure.core",liquibase.snapsh
 ot.jvm;version="4.9.0";uses:="liquibase,liquibase.database,liquibase.
 diff,liquibase.exception,liquibase.snapshot,liquibase.structure,liqui
 base.structure.core",liquibase.datatype;version="4.9.0";uses:="liquib
 ase.change.core,liquibase.database,liquibase.servicelocator,liquibase
 .statement,liquibase.structure.core",liquibase.datatype.core;version=
 "4.9.0";uses:="liquibase.change.core,liquibase.database,liquibase.dat
 atype",liquibase.license;version="4.9.0";uses:="liquibase.change,liqu
 ibase.exception,liquibase.plugin",liquibase.ui;version="4.9.0";uses:=
 "liquibase,liquibase.plugin",liquibase.osgi;version="4.9.0";uses:="or
 g.osgi.framework,org.osgi.util.tracker",liquibase.structure;version="
 4.9.0";uses:="liquibase.database,liquibase.diff.compare,liquibase.par
 ser.core,liquibase.resource,liquibase.serializer,liquibase.structure.
 core",liquibase.structure.core;version="4.9.0";uses:="liquibase,liqui
 base.change,liquibase.parser.core,liquibase.resource,liquibase.serial
 izer,liquibase.statement,liquibase.structure",liquibase.precondition.
 core;version="4.9.0";uses:="liquibase.changelog,liquibase.changelog.v
 isitor,liquibase.database,liquibase.exception,liquibase.parser.core,l
 iquibase.precondition,liquibase.resource,liquibase.serializer",liquib
 ase.precondition;version="4.9.0";uses:="liquibase.changelog,liquibase
 .changelog.visitor,liquibase.database,liquibase.exception,liquibase.p
 arser.core,liquibase.precondition.core,liquibase.resource,liquibase.s
 erializer",liquibase.hub;version="4.9.0";uses:="liquibase,liquibase.c
 hangelog,liquibase.configuration,liquibase.database,liquibase.excepti
 on,liquibase.hub.model,liquibase.logging.core,liquibase.plugin,liquib
 ase.servicelocator",liquibase.hub.core;version="4.9.0";uses:="liquiba
 se.changelog,liquibase.exception,liquibase.hub,liquibase.hub.model",l
 iquibase.hub.listener;version="4.9.0";uses:="liquibase.change,liquiba
 se.changelog,liquibase.changelog.visitor,liquibase.database,liquibase
 .exception,liquibase.hub.model,liquibase.precondition.core",liquibase
 .hub.model;version="4.9.0";uses:="liquibase.changelog",liquibase.plug
 in;version="4.9.0";uses:=liquibase,liquibase.dbdoc;version="4.9.0";us
 es:="liquibase.change,liquibase.changelog,liquibase.database,liquibas
 e.exception,liquibase.resource",liquibase.logging;version="4.9.0";use
 s:="liquibase,liquibase.plugin",liquibase.logging.core;version="4.9.0
 ";uses:="liquibase,liquibase.configuration,liquibase.logging,liquibas
 e.plugin",liquibase.servicelocator;version="4.9.0";uses:="liquibase.e
 xception,liquibase.plugin",liquibase.serializer;version="4.9.0";uses:
 ="liquibase.changelog,liquibase.parser.core,liquibase.resource,liquib
 ase.servicelocator,liquibase.snapshot",liquibase.serializer.core.yaml
 ;version="4.9.0";uses:="liquibase.changelog,liquibase.serializer,liqu
 ibase.snapshot,org.yaml.snakeyaml,org.yaml.snakeyaml.introspector,org
 .yaml.snakeyaml.representer,org.yaml.snakeyaml.resolver",liquibase.se
 rializer.core.json;version="4.9.0";uses:="liquibase.changelog,liquiba
 se.serializer.core.yaml",liquibase.serializer.core.string;version="4.
 9.0";uses:="liquibase.changelog,liquibase.serializer,liquibase.snapsh
 ot,liquibase.structure",liquibase.serializer.core.formattedsql;versio
 n="4.9.0";uses:="liquibase.changelog,liquibase.database,liquibase.ser
 ializer",liquibase.serializer.core.xml;version="4.9.0";uses:="liquiba
 se.change,liquibase.changelog,liquibase.exception,liquibase.serialize
 r,org.w3c.dom",liquibase.listener;version="4.9.0",liquibase.sql;versi
 on="4.9.0";uses:="liquibase.configuration,liquibase.structure",liquib
 ase.sql.visitor;version="4.9.0";uses:="liquibase,liquibase.change,liq
 uibase.database,liquibase.parser.core,liquibase.resource,liquibase.se
 rializer",liquibase.statement;version="4.9.0";uses:="liquibase.change
 ,liquibase.change.core,liquibase.changelog,liquibase.database,liquiba
 se.exception,liquibase.resource",liquibase.statement.core;version="4.
 9.0";uses:="liquibase.change,liquibase.changelog,liquibase.database,l
 iquibase.datatype,liquibase.sql,liquibase.statement",liquibase.execut
 or.jvm;version="4.9.0";uses:="liquibase.exception,liquibase.executor,
 liquibase.sql.visitor,liquibase.statement",liquibase.executor;version
 ="4.9.0";uses:="liquibase.change,liquibase.changelog,liquibase.databa
 se,liquibase.exception,liquibase.plugin,liquibase.resource,liquibase.
 servicelocator,liquibase.sql.visitor,liquibase.statement",liquibase.i
 ntegration.spring;version="4.9.0";uses:="javax.sql,liquibase,liquibas
 e.database,liquibase.exception,liquibase.logging,liquibase.resource,o
 rg.springframework.beans.factory,org.springframework.context,org.spri
 ngframework.core.io",liquibase.integration.servlet;version="4.9.0";us
 es:="jakarta.servlet,jakarta.servlet.http,javax.naming,javax.servlet,
 javax.servlet.http,liquibase.configuration",liquibase.integration;ver
 sion="4.9.0",liquibase.integration.ant;version="4.9.0";uses:="liquiba
 se,liquibase.database,liquibase.diff,liquibase.integration.ant.type,l
 iquibase.logging,liquibase.logging.core,liquibase.resource,org.apache
 .tools.ant,org.apache.tools.ant.types,org.apache.tools.ant.types.reso
 urces",liquibase.integration.ant.type;version="4.9.0";uses:="liquibas
 e,liquibase.database,liquibase.resource,liquibase.serializer,org.apac
 he.tools.ant,org.apache.tools.ant.taskdefs,org.apache.tools.ant.types
 ,org.apache.tools.ant.types.resources",liquibase.integration.commandl
 ine;version="4.9.0";uses:="javax.xml.parsers,liquibase,liquibase.chan
 gelog.visitor,liquibase.command,liquibase.configuration,liquibase.dat
 abase,liquibase.diff.compare,liquibase.diff.output,liquibase.exceptio
 n,liquibase.logging,liquibase.resource",liquibase.io;version="4.9.0",
 liquibase.database.jvm;version="4.9.0";uses:="liquibase.database,liqu
 ibase.exception,liquibase.servicelocator",liquibase.database.core;ver
 sion="4.9.0";uses:="liquibase,liquibase.change,liquibase.changelog,li
 quibase.database,liquibase.exception,liquibase.lockservice,liquibase.
 sql,liquibase.sql.visitor,liquibase.statement,liquibase.structure,liq
 uibase.structure.core",liquibase.database;version="4.9.0";uses:="liqu
 ibase,liquibase.change,liquibase.changelog,liquibase.database.jvm,liq
 uibase.exception,liquibase.resource,liquibase.servicelocator,liquibas
 e.snapshot,liquibase.sql.visitor,liquibase.statement,liquibase.struct
 ure,liquibase.structure.core",liquibase.lockservice;version="4.9.0";u
 ses:="liquibase.database,liquibase.exception,liquibase.servicelocator
 ",liquibase.diff.compare.core;version="4.9.0";uses:="liquibase.databa
 se,liquibase.diff,liquibase.diff.compare,liquibase.structure",liquiba
 se.diff.compare;version="4.9.0";uses:="liquibase,liquibase.database,l
 iquibase.diff,liquibase.structure",liquibase.diff.core;version="4.9.0
 ";uses:="liquibase.database,liquibase.diff,liquibase.diff.compare,liq
 uibase.exception,liquibase.snapshot,liquibase.structure",liquibase.di
 ff;version="4.9.0";uses:="liquibase.database,liquibase.diff.compare,l
 iquibase.exception,liquibase.serializer,liquibase.servicelocator,liqu
 ibase.snapshot,liquibase.structure",liquibase.diff.output;version="4.
 9.0";uses:="liquibase,liquibase.database,liquibase.diff,liquibase.dif
 f.compare,liquibase.structure,liquibase.structure.core",liquibase.dif
 f.output.report;version="4.9.0";uses:="liquibase.diff,liquibase.excep
 tion,liquibase.structure,liquibase.util",liquibase.diff.output.change
 log;version="4.9.0";uses:="javax.xml.parsers,liquibase.change,liquiba
 se.changelog,liquibase.database,liquibase.diff,liquibase.diff.compare
 ,liquibase.diff.output,liquibase.exception,liquibase.serializer,liqui
 base.structure,liquibase.util",liquibase.diff.output.changelog.core;v
 ersion="4.9.0";uses:="liquibase.change,liquibase.change.core,liquibas
 e.database,liquibase.diff,liquibase.diff.output,liquibase.diff.output
 .changelog,liquibase.servicelocator,liquibase.structure,liquibase.str
 ucture.core",liquibase.exception;version="4.9.0";uses:="liquibase.cha
 nge,liquibase.changelog,liquibase.changelog.visitor,liquibase.databas
 e,liquibase.hub.model,liquibase.precondition,liquibase.statement",liq
 uibase.change;version="4.9.0";uses:="liquibase,liquibase.changelog,li
 quibase.database,liquibase.exception,liquibase.parser.core,liquibase.
 plugin,liquibase.resource,liquibase.serializer,liquibase.servicelocat
 or,liquibase.statement,liquibase.structure,liquibase.structure.core",
 liquibase.change.core;version="4.9.0";uses:="liquibase.change,liquiba
 se.changelog,liquibase.database,liquibase.exception,liquibase.parser.
 core,liquibase.resource,liquibase.serializer,liquibase.statement,liqu
 ibase.statement.core,liquibase.structure.core,liquibase.util.csv",liq
 uibase.change.custom;version="4.9.0";uses:="liquibase.change,liquibas
 e.database,liquibase.exception,liquibase.parser.core,liquibase.resour
 ce,liquibase.serializer,liquibase.statement",liquibase.sqlgenerator.c
 ore;version="4.9.0";uses:="liquibase.database,liquibase.exception,liq
 uibase.sql,liquibase.sqlgenerator,liquibase.statement,liquibase.state
 ment.core,liquibase.structure.core",liquibase.sqlgenerator;version="4
 .9.0";uses:="liquibase.change,liquibase.database,liquibase.exception,
 liquibase.servicelocator,liquibase.sql,liquibase.statement,liquibase.
 structure",liquibase.configuration;version="4.9.0";uses:="liquibase,l
 iquibase.command",liquibase.configuration.core;version="4.9.0";uses:=
 "liquibase.command,liquibase.configuration,liquibase.servicelocator",
 liquibase.command;version="4.9.0";uses:="liquibase,liquibase.configur
 ation,liquibase.exception,liquibase.plugin",liquibase.command.core;ve
 rsion="4.9.0";uses:="liquibase,liquibase.changelog,liquibase.command,
 liquibase.database,liquibase.diff,liquibase.diff.compare,liquibase.di
 ff.output,liquibase.diff.output.changelog,liquibase.exception,liquiba
 se.snapshot,liquibase.structure",liquibase.parser;version="4.9.0";use
 s:="liquibase.changelog,liquibase.configuration,liquibase.exception,l
 iquibase.resource,liquibase.serializer,liquibase.servicelocator,liqui
 base.snapshot",liquibase.parser.core.yaml;version="4.9.0";uses:="liqu
 ibase.changelog,liquibase.exception,liquibase.logging,liquibase.parse
 r,liquibase.resource,liquibase.snapshot",liquibase.parser.core.json;v
 ersion="4.9.0";uses:="liquibase.parser.core.yaml",liquibase.parser.co
 re.sql;version="4.9.0";uses:="liquibase.changelog,liquibase.exception
 ,liquibase.parser,liquibase.resource",liquibase.parser.core.formatted
 sql;version="4.9.0";uses:="liquibase.changelog,liquibase.exception,li
 quibase.parser,liquibase.resource",liquibase.parser.core;version="4.9
 .0",liquibase.parser.core.xml;version="4.9.0";uses:="javax.xml.parser
 s,liquibase.changelog,liquibase.exception,liquibase.parser,liquibase.
 parser.core,liquibase.resource,liquibase.serializer,org.xml.sax,org.x
 ml.sax.ext",liquibase.changelog;version="4.9.0";uses:="liquibase,liqu
 ibase.change,liquibase.changelog.filter,liquibase.changelog.visitor,l
 iquibase.database,liquibase.exception,liquibase.parser.core,liquibase
 .precondition,liquibase.precondition.core,liquibase.resource,liquibas
 e.serializer,liquibase.servicelocator,liquibase.sql.visitor",liquibas
 e.changelog.filter;version="4.9.0";uses:="liquibase,liquibase.changel
 og,liquibase.database,liquibase.exception",liquibase.changelog.column
 ;version="4.9.0";uses:="liquibase.servicelocator,liquibase.structure.
 core",liquibase.changelog.visitor;version="4.9.0";uses:="liquibase.ch
 ange,liquibase.changelog,liquibase.changelog.filter,liquibase.databas
 e,liquibase.exception,liquibase.precondition,liquibase.precondition.c
 ore,liquibase.resource",liquibase.common.datatype;version="4.9.0";use
 s:="liquibase.change.core,liquibase.database,liquibase.datatype,liqui
 base.servicelocator"
Bundle-Name: liquibase-core
Bundle-Version: 4.9.0
Bundle-Activator: liquibase.osgi.Activator
Build-Time: 2022-03-16 16:58+0000
Build-Jdk-Spec: 1.8
Created-By: Apache Maven 3.8.4
Build-Jdk: 1.8.0_322

@driessamyn
Copy link
Author

I believe the problem is here:

attributes.putValue("Import-Package", importPackage.replaceAll("version=\"\\[0\\.0,1\\)\"", "version=\"[" + version + ",1)\""));

@kataggart
Copy link
Contributor

@driessamyn @ktor we are fixing this here #2672 (comment) and are actually looking for user verification on the new format if you have a moment that issue has a copy of the new MANIFEST.MF. We'd love for you and others who were impacted by this to take a look and verify it works before we do the full new release. Thanks!!

@nvoxland
Copy link
Contributor

@driessamyn and @ktor could you check if the attached jar (renamed as a .zip for github reasons) works correctly?

We're getting ready to release that, but my understanding of OSGi is tenuous and some additional verification would be a huge help.

Thanks!

liquibase-4.9.1-RC1.zip

@driessamyn
Copy link
Author

@driessamyn and @ktor could you check if the attached jar (renamed as a .zip for github reasons) works correctly?

We're getting ready to release that, but my understanding of OSGi is tenuous and some additional verification would be a huge help.

Thanks!

liquibase-4.9.1-RC1.zip

I ran a test with the attached and it worked.
Thanks for this, much appreciated!

I could create a standalone OSGi test that you may be able to integrate with your pipeline if you think that would be useful?

@ktor
Copy link

ktor commented Mar 25, 2022

  1. jar -tf shows correct placement of MANIFEST.MF 👍
  2. bundle started corectly with Liferay 7.3 2022-03-25 12:07:30.502 INFO [fileinstall-directory-watcher][BundleStartStopLogger:46] STARTED org.liquibase.core_4.9.1 [1350] 👍

Thank you! 👌

@nvoxland
Copy link
Contributor

Great, thanks for the double check @driessamyn and @ktor!

Yes, @driessamyn if you would be able to point us to how we could improve our OSGi tests, that would be very helpful.

Nathan

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
7 participants