Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package apache-ivy for openSUSE:Factory checked in at 2026-07-21 22:54:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/apache-ivy (Old) and /work/SRC/openSUSE:Factory/.apache-ivy.new.24530 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "apache-ivy" Tue Jul 21 22:54:58 2026 rev:29 rq:1366736 version:2.6.0 Changes: -------- --- /work/SRC/openSUSE:Factory/apache-ivy/apache-ivy.changes 2025-05-02 14:56:23.826260661 +0200 +++ /work/SRC/openSUSE:Factory/.apache-ivy.new.24530/apache-ivy.changes 2026-07-21 22:55:01.034665801 +0200 @@ -1,0 +2,56 @@ +Mon Jul 20 10:02:37 UTC 2026 - Fridrich Strba <[email protected]> + +- Upgrade to 2.6.0 + * Security fix + + CVE-2026-26032, bsc#1271727: Apache Ivy: PackagerResolver path + traversal vulnerability + * Bug fixes + + the ivy:retrieve task failed when the retrieve pattern + contained some text in parentheses before the first token, for + instance: /jobs/lib (JDK 17)/[artifact].[ext] (IVY-1660) + + when the ivy:deliver task is configured to replace dynamic + revisions, it now replaces these revisions to the resolved + revision before any conflict resolution was done, which was + the original behavior before Ivy 2.3.0. This way, the + delivered ivy.xml can be used to have reproducible dependency + resolution, especially when multiple configurations are used. + It also fixes issues where the dynamic revisions were replaced + by versions from other configurations. (IVY-1485, IVY-1661) + + the ivy:deliver task didn’t replace dynamic revision from + inherited dependencies. (IVY-1410) + + the ivy:install task didn’t take the from resolver into + account when resolving Maven parent modules or + source/javadoc artifacts. + + the ivy:checkdepsupdate task could suggest a lesser version as + update. (IVY-1665) + + the ivy:makepom task no longer adds a dependency to the + <dependencyManagement> section. (IVY-1667) + + the ivy:deliver task didn’t include XML namespaces from a + parent ivy module when merging the descriptors. (IVY-1658) + + the ivy:checkdepsupdate task no longer shows evicted versions. + (IVY-1662) + * Improvements + + use Apache Commons Compress for pack200 handling to avoid + issues on Java 14 and later. If pack200 is needed, make sure + to add Apache Commons Compress to your classpath. (IVY-1652) + + ivy:retrieve and the 'post resolve tasks' now support the + override child element. (IVY-1664) + + ivy:makepom will now add override elements of the ivy.xml to + the dependencyManagement section of the generated pom. + (IVY-1663) + + ivy:deliver and ivy:publish now writes inherited dependencies + first to preserve resolve order (IVY-1656) + + ModuleRevisionId.encodeToString now returns a deterministic + string that doesn’t rely on a implmentation of HashMap + * New feature + + added a new nearest conflict manager, which handles conflicts + in the same way that Maven does. (IVY-813) +- Removed patch: + * apache-ivy-pack200.patch + + not needed with this version +- Modified patches: + * apache-ivy-global-settings.patch + * apache-ivy-publication-date.patch + + rediff and adapt to different line-endings + +------------------------------------------------------------------- Old: ---- apache-ivy-2.5.3-src.tar.gz apache-ivy-pack200.patch ivy-2.5.3.pom New: ---- _scmsync.obsinfo apache-ivy-2.6.0-src.tar.gz build.specials.obscpio ivy-2.6.0.pom ----------(Old B)---------- Old:- Removed patch: * apache-ivy-pack200.patch + not needed with this version ----------(Old E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ apache-ivy.spec ++++++ --- /var/tmp/diff_new_pack.7wSkEn/_old 2026-07-21 22:55:02.234706667 +0200 +++ /var/tmp/diff_new_pack.7wSkEn/_new 2026-07-21 22:55:02.238706803 +0200 @@ -1,7 +1,7 @@ # # spec file for package apache-ivy # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -20,9 +20,8 @@ %bcond_without oro %bcond_without sftp %bcond_without vfs -%bcond_without pack200 Name: apache-ivy -Version: 2.5.3 +Version: 2.6.0 Release: 0 Summary: Java-based dependency manager License: Apache-2.0 @@ -33,24 +32,16 @@ Source2: https://repo1.maven.org/maven2/org/apache/ivy/ivy/%{version}/ivy-%{version}.pom Patch0: apache-ivy-global-settings.patch Patch1: apache-ivy-publication-date.patch -Patch2: apache-ivy-pack200.patch BuildRequires: ant +BuildRequires: apache-commons-compress BuildRequires: bouncycastle-pg BuildRequires: fdupes BuildRequires: java-devel >= 1.8 BuildRequires: javapackages-local >= 6 BuildRequires: jsch -BuildRequires: oro Provides: ivy = %{version}-%{release} Obsoletes: ivy < %{version}-%{release} BuildArch: noarch -%if %{with pack200} -BuildRequires: pack200 -%else -BuildConflicts: java >= 14 -BuildConflicts: java-devel >= 14 -BuildConflicts: java-headless >= 14 -%endif %if %{with vfs} BuildRequires: apache-commons-vfs2 %endif @@ -125,16 +116,11 @@ rm src/java/org/apache/ivy/plugins/resolver/SshResolver.java %endif -%if %{with pack200} -%pom_add_dep io.pack200:pack200:14:provided -%patch -P 2 -p1 -%endif - %build # Craft class path mkdir -p lib -build-jar-repository -s lib ant ant/ant-nodeps jsch bcprov bcpg -export CLASSPATH=$(build-classpath ant ant/ant-nodeps jsch httpcomponents bcprov bcpg) +build-jar-repository -s lib ant ant/ant-nodeps jsch bcprov bcpg commons-compress +export CLASSPATH=$(build-classpath ant ant/ant-nodeps jsch httpcomponents bcprov bcpg commons-compress) %if %{with httpclient} build-jar-repository -s lib httpcomponents export CLASSPATH=${CLASSPATH}:$(build-classpath httpcomponents) @@ -153,10 +139,6 @@ jsch.agentproxy.jsch export CLASSPATH=${CLASSPATH}:$(build-classpath jsch.agentproxy.core jsch.agentproxy.connector-factory jsch.agentproxy.jsch) %endif -%if %{with pack200} -build-jar-repository -s lib pack200 -export CLASSPATH=${CLASSPATH}:$(build-classpath pack200) -%endif # Build %{ant} -v -Dtarget.ivy.version=%{version} -Dbundle.version=%{version} /localivy /offline jar javadoc @@ -179,7 +161,7 @@ # Command line script MAIN_CLASS=`sed -rn 's/^Main-Class: (.*)$/\1/gp' META-INF/MANIFEST.MF | tr -d '\r'` -%jpackage_script "${MAIN_CLASS}" "" "" ant:ant/ant-nodeps:ivy:oro:jsch:commons-httpclient ivy +%jpackage_script "${MAIN_CLASS}" "" "" ant:ant/ant-nodeps:ivy:oro:jsch:commons-compress:commons-httpclient ivy mkdir -p %{buildroot}%{_sysconfdir}/ant.d echo "ivy" > %{buildroot}%{_sysconfdir}/ant.d/%{name} ++++++ _scmsync.obsinfo ++++++ mtime: 1784543940 commit: 6b0b8703dc3c563400a84251b53f2e5f5cf89ba2ced87430e16e7106539614dc url: https://src.opensuse.org/java-packages/apache-ivy revision: 6b0b8703dc3c563400a84251b53f2e5f5cf89ba2ced87430e16e7106539614dc projectscmsync: https://src.opensuse.org/java-packages/_ObsPrj ++++++ apache-ivy-2.5.3-src.tar.gz -> apache-ivy-2.6.0-src.tar.gz ++++++ ++++ 827022 lines of diff (skipped) ++++++ apache-ivy-global-settings.patch ++++++ --- /var/tmp/diff_new_pack.7wSkEn/_old 2026-07-21 22:55:05.382813873 +0200 +++ /var/tmp/diff_new_pack.7wSkEn/_new 2026-07-21 22:55:05.394814281 +0200 @@ -1,12 +1,12 @@ --- a/src/java/org/apache/ivy/ant/IvyAntSettings.java +++ b/src/java/org/apache/ivy/ant/IvyAntSettings.java @@ -345,7 +345,7 @@ public class IvyAntSettings extends Data - File[] settingsLocations = new File[] { - new File(getProject().getBaseDir(), settingsFileName), - new File(getProject().getBaseDir(), "ivyconf.xml"), new File(settingsFileName), -- new File("ivyconf.xml")}; -+ new File("ivyconf.xml"), new File("/etc/ivy/ivysettings.xml")}; - for (File settingsFile : settingsLocations) { - task.log("searching settings file: trying " + settingsFile, Project.MSG_VERBOSE); - if (settingsFile.exists()) { + File[] settingsLocations = new File[] { + new File(getProject().getBaseDir(), settingsFileName), + new File(getProject().getBaseDir(), "ivyconf.xml"), new File(settingsFileName), +- new File("ivyconf.xml")}; ++ new File("ivyconf.xml"), new File("/etc/ivy/ivysettings.xml")}; + for (File settingsFile : settingsLocations) { + task.log("searching settings file: trying " + settingsFile, Project.MSG_VERBOSE); + if (settingsFile.exists()) { ++++++ apache-ivy-publication-date.patch ++++++ --- /var/tmp/diff_new_pack.7wSkEn/_old 2026-07-21 22:55:05.418815099 +0200 +++ /var/tmp/diff_new_pack.7wSkEn/_new 2026-07-21 22:55:05.422815235 +0200 @@ -1,193 +1,193 @@ --- a/src/java/org/apache/ivy/ant/AntWorkspaceResolver.java +++ b/src/java/org/apache/ivy/ant/AntWorkspaceResolver.java @@ -197,7 +197,7 @@ public class AntWorkspaceResolver extend - throw new RuntimeException("Unsupported file path : " + artifactFile, e); - } - -- res.add(new DefaultArtifact(md.getModuleRevisionId(), new Date(), name, type, ext, -+ res.add(new DefaultArtifact(md.getModuleRevisionId(), System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date(), name, type, ext, - url, null)); - } - + throw new RuntimeException("Unsupported file path : " + artifactFile, e); + } + +- res.add(new DefaultArtifact(md.getModuleRevisionId(), new Date(), name, type, ext, ++ res.add(new DefaultArtifact(md.getModuleRevisionId(), System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date(), name, type, ext, + url, null)); + } + --- a/src/java/org/apache/ivy/ant/IvyDeliver.java +++ b/src/java/org/apache/ivy/ant/IvyDeliver.java @@ -374,7 +374,7 @@ public class IvyDeliver extends IvyTask - if (revision == null) { - revision = Ivy.getWorkingRevision(); - } -- Date pubdate = getPubDate(this.pubdate, new Date()); -+ Date pubdate = getPubDate(this.pubdate, System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()); - if (pubRevision == null) { - if (revision.startsWith("working@")) { - pubRevision = DateUtil.format(pubdate); + if (revision == null) { + revision = Ivy.getWorkingRevision(); + } +- Date pubdate = getPubDate(this.pubdate, new Date()); ++ Date pubdate = getPubDate(this.pubdate, System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()); + if (pubRevision == null) { + if (revision.startsWith("working@")) { + pubRevision = DateUtil.format(pubdate); --- a/src/java/org/apache/ivy/ant/IvyPublish.java +++ b/src/java/org/apache/ivy/ant/IvyPublish.java @@ -273,7 +273,7 @@ public class IvyPublish extends IvyTask - if ("working".equals(revision)) { - revision = Ivy.getWorkingRevision(); - } -- Date pubdate = getPubDate(this.pubdate, new Date()); -+ Date pubdate = getPubDate(this.pubdate, System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()); - if (pubRevision == null) { - if (revision.startsWith("working@")) { - pubRevision = DateUtil.format(pubdate); + if ("working".equals(revision)) { + revision = Ivy.getWorkingRevision(); + } +- Date pubdate = getPubDate(this.pubdate, new Date()); ++ Date pubdate = getPubDate(this.pubdate, System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()); + if (pubRevision == null) { + if (revision.startsWith("working@")) { + pubRevision = DateUtil.format(pubdate); --- a/src/java/org/apache/ivy/ant/IvyTask.java +++ b/src/java/org/apache/ivy/ant/IvyTask.java @@ -177,7 +177,7 @@ public abstract class IvyTask extends Ta - return def; - } - if ("now".equals(date.toLowerCase(Locale.US))) { -- return new Date(); -+ return System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date(); - } - try { - return DateUtil.parse(date); + return def; + } + if ("now".equals(date.toLowerCase(Locale.US))) { +- return new Date(); ++ return System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date(); + } + try { + return DateUtil.parse(date); --- a/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java +++ b/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java @@ -1472,7 +1472,7 @@ public class DefaultRepositoryCacheManag - } - - private Artifact getDefaultMetadataArtifact(ModuleRevisionId mrid) { -- return new DefaultArtifact(mrid, new Date(), "metadata", "metadata", "ivy", true); -+ return new DefaultArtifact(mrid, System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date(), "metadata", "metadata", "ivy", true); - } - - // not used any more, but may be useful for finer grained locking when downloading artifacts + } + + private Artifact getDefaultMetadataArtifact(ModuleRevisionId mrid) { +- return new DefaultArtifact(mrid, new Date(), "metadata", "metadata", "ivy", true); ++ return new DefaultArtifact(mrid, System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date(), "metadata", "metadata", "ivy", true); + } + + // not used any more, but may be useful for finer grained locking when downloading artifacts --- a/src/java/org/apache/ivy/core/deliver/DeliverOptions.java +++ b/src/java/org/apache/ivy/core/deliver/DeliverOptions.java @@ -61,7 +61,7 @@ public class DeliverOptions { - * @return a DeliverOptions instance ready to be used or customized - */ - public static DeliverOptions newInstance(IvySettings settings) { -- return new DeliverOptions(null, new Date(), new DefaultPublishingDRResolver(), -+ return new DeliverOptions(null, System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date(), new DefaultPublishingDRResolver(), - settings.doValidate(), true, null); - } - + * @return a DeliverOptions instance ready to be used or customized + */ + public static DeliverOptions newInstance(IvySettings settings) { +- return new DeliverOptions(null, new Date(), new DefaultPublishingDRResolver(), ++ return new DeliverOptions(null, System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date(), new DefaultPublishingDRResolver(), + settings.doValidate(), true, null); + } + --- a/src/java/org/apache/ivy/core/install/InstallEngine.java +++ b/src/java/org/apache/ivy/core/install/InstallEngine.java @@ -86,7 +86,7 @@ public class InstallEngine { - - DefaultModuleDescriptor md = new DefaultModuleDescriptor(ModuleRevisionId.newInstance( - "apache", "ivy-install", "1.0"), settings.getStatusManager().getDefaultStatus(), -- new Date()); -+ System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()); - String resolveId = ResolveOptions.getDefaultResolveId(md); - md.addConfiguration(new Configuration("default")); - md.addConflictManager(new ModuleId(ExactPatternMatcher.ANY_EXPRESSION, + + DefaultModuleDescriptor md = new DefaultModuleDescriptor(ModuleRevisionId.newInstance( + "apache", "ivy-install", "1.0"), settings.getStatusManager().getDefaultStatus(), +- new Date()); ++ System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()); + String resolveId = ResolveOptions.getDefaultResolveId(md); + md.addConfiguration(new Configuration("default")); + md.addConflictManager(new ModuleId(ExactPatternMatcher.ANY_EXPRESSION, --- a/src/java/org/apache/ivy/core/module/descriptor/DefaultArtifact.java +++ b/src/java/org/apache/ivy/core/module/descriptor/DefaultArtifact.java @@ -100,7 +100,7 @@ public class DefaultArtifact extends Abs - throw new NullPointerException("null arid not allowed"); - } - if (publicationDate == null) { -- publicationDate = new Date(); -+ publicationDate = System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date(); - } - this.publicationDate = publicationDate; - this.arid = arid; + throw new NullPointerException("null arid not allowed"); + } + if (publicationDate == null) { +- publicationDate = new Date(); ++ publicationDate = System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date(); + } + this.publicationDate = publicationDate; + this.arid = arid; --- a/src/java/org/apache/ivy/core/module/descriptor/DefaultModuleDescriptor.java +++ b/src/java/org/apache/ivy/core/module/descriptor/DefaultModuleDescriptor.java @@ -272,7 +272,7 @@ public class DefaultModuleDescriptor imp - this.resolvedRevId = id; - this.status = status; - this.publicationDate = pubDate; -- this.resolvedPublicationDate = publicationDate == null ? new Date() : publicationDate; -+ this.resolvedPublicationDate = publicationDate == null ? (System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()) : publicationDate; - this.isDefault = isDefault; - this.parser = XmlModuleDescriptorParser.getInstance(); - } + this.resolvedRevId = id; + this.status = status; + this.publicationDate = pubDate; +- this.resolvedPublicationDate = publicationDate == null ? new Date() : publicationDate; ++ this.resolvedPublicationDate = publicationDate == null ? (System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()) : publicationDate; + this.isDefault = isDefault; + this.parser = XmlModuleDescriptorParser.getInstance(); + } @@ -308,7 +308,7 @@ public class DefaultModuleDescriptor imp - public void setPublicationDate(Date publicationDate) { - this.publicationDate = publicationDate; - if (resolvedPublicationDate == null) { -- resolvedPublicationDate = publicationDate == null ? new Date() : publicationDate; -+ resolvedPublicationDate = publicationDate == null ? (System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()) : publicationDate; - } - } - + public void setPublicationDate(Date publicationDate) { + this.publicationDate = publicationDate; + if (resolvedPublicationDate == null) { +- resolvedPublicationDate = publicationDate == null ? new Date() : publicationDate; ++ resolvedPublicationDate = publicationDate == null ? (System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()) : publicationDate; + } + } + --- a/src/java/org/apache/ivy/core/publish/PublishEngine.java +++ b/src/java/org/apache/ivy/core/publish/PublishEngine.java @@ -102,7 +102,7 @@ public class PublishEngine { - ModuleDescriptor md = null; - if (options.getSrcIvyPattern() != null) { - File ivyFile = settings.resolveFile(IvyPatternHelper.substitute( -- options.getSrcIvyPattern(), DefaultArtifact.newIvyArtifact(pubmrid, new Date()))); -+ options.getSrcIvyPattern(), DefaultArtifact.newIvyArtifact(pubmrid, System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()))); - if (!ivyFile.exists()) { - throw new IllegalArgumentException("ivy file to publish not found for " + mrid - + ": call deliver before (" + ivyFile + ")"); + ModuleDescriptor md = null; + if (options.getSrcIvyPattern() != null) { + File ivyFile = settings.resolveFile(IvyPatternHelper.substitute( +- options.getSrcIvyPattern(), DefaultArtifact.newIvyArtifact(pubmrid, new Date()))); ++ options.getSrcIvyPattern(), DefaultArtifact.newIvyArtifact(pubmrid, System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()))); + if (!ivyFile.exists()) { + throw new IllegalArgumentException("ivy file to publish not found for " + mrid + + ": call deliver before (" + ivyFile + ")"); @@ -132,7 +132,7 @@ public class PublishEngine { - : options.getStatus()) - .setRevision(options.getPubrevision()) - .setBranch(options.getPubBranch()) -- .setPubdate(options.getPubdate() == null ? new Date() -+ .setPubdate(options.getPubdate() == null ? (System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()) - : options.getPubdate()) - .setMerge(options.isMerge()) - .setMergedDescriptor(md) + : options.getStatus()) + .setRevision(options.getPubrevision()) + .setBranch(options.getPubBranch()) +- .setPubdate(options.getPubdate() == null ? new Date() ++ .setPubdate(options.getPubdate() == null ? (System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()) + : options.getPubdate()) + .setMerge(options.isMerge()) + .setMergedDescriptor(md) --- a/src/java/org/apache/ivy/core/report/ResolveReport.java +++ b/src/java/org/apache/ivy/core/report/ResolveReport.java @@ -360,7 +360,7 @@ public class ResolveReport { - - public ModuleDescriptor toFixedModuleDescriptor(IvySettings settings, List<ModuleId> midToKeep) { - DefaultModuleDescriptor fixedmd = new DefaultModuleDescriptor(md.getModuleRevisionId(), -- md.getStatus(), new Date()); -+ md.getStatus(), System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()); - - // copy namespaces - for (Map.Entry<String, String> ns : md.getExtraAttributesNamespaces().entrySet()) { + + public ModuleDescriptor toFixedModuleDescriptor(IvySettings settings, List<ModuleId> midToKeep) { + DefaultModuleDescriptor fixedmd = new DefaultModuleDescriptor(md.getModuleRevisionId(), +- md.getStatus(), new Date()); ++ md.getStatus(), System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()); + + // copy namespaces + for (Map.Entry<String, String> ns : md.getExtraAttributesNamespaces().entrySet()) { --- a/src/java/org/apache/ivy/core/resolve/ResolveEngine.java +++ b/src/java/org/apache/ivy/core/resolve/ResolveEngine.java @@ -572,7 +572,7 @@ public class ResolveEngine { - try { - options.setConfs(confs); - -- Date reportDate = new Date(); -+ Date reportDate = System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date(); - ResolveData data = context.getResolveData(); - if (data == null) { - data = new ResolveData(this, options); + try { + options.setConfs(confs); + +- Date reportDate = new Date(); ++ Date reportDate = System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date(); + ResolveData data = context.getResolveData(); + if (data == null) { + data = new ResolveData(this, options); --- a/src/java/org/apache/ivy/osgi/core/BundleInfoAdapter.java +++ b/src/java/org/apache/ivy/osgi/core/BundleInfoAdapter.java @@ -93,7 +93,7 @@ public class BundleInfoAdapter { - md.addExtraAttributeNamespace("o", Ivy.getIvyHomeURL() + "osgi"); - ModuleRevisionId mrid = asMrid(BundleInfo.BUNDLE_TYPE, bundle.getSymbolicName(), - bundle.getVersion()); -- md.setResolvedPublicationDate(new Date()); -+ md.setResolvedPublicationDate(System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()); - md.setModuleRevisionId(mrid); - - md.addConfiguration(CONF_DEFAULT); + md.addExtraAttributeNamespace("o", Ivy.getIvyHomeURL() + "osgi"); + ModuleRevisionId mrid = asMrid(BundleInfo.BUNDLE_TYPE, bundle.getSymbolicName(), + bundle.getVersion()); +- md.setResolvedPublicationDate(new Date()); ++ md.setResolvedPublicationDate(System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()); + md.setModuleRevisionId(mrid); + + md.addConfiguration(CONF_DEFAULT); --- a/src/java/org/apache/ivy/osgi/repo/AbstractOSGiResolver.java +++ b/src/java/org/apache/ivy/osgi/repo/AbstractOSGiResolver.java @@ -201,7 +201,7 @@ public abstract class AbstractOSGiResolv - Collections.singletonMap(CAPABILITY_EXTRA_ATTR, md.getModuleRevisionId().toString())); - - DefaultModuleDescriptor capabilityMd = new DefaultModuleDescriptor(capabilityRev, -- getSettings().getStatusManager().getDefaultStatus(), new Date()); -+ getSettings().getStatusManager().getDefaultStatus(), System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()); - - String useConf = BundleInfoAdapter.CONF_USE_PREFIX + dd.getDependencyRevisionId().getName(); - + Collections.singletonMap(CAPABILITY_EXTRA_ATTR, md.getModuleRevisionId().toString())); + + DefaultModuleDescriptor capabilityMd = new DefaultModuleDescriptor(capabilityRev, +- getSettings().getStatusManager().getDefaultStatus(), new Date()); ++ getSettings().getStatusManager().getDefaultStatus(), System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date()); + + String useConf = BundleInfoAdapter.CONF_USE_PREFIX + dd.getDependencyRevisionId().getName(); + --- a/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java +++ b/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java @@ -249,7 +249,7 @@ public class PomModuleDescriptorBuilder - DependencyResolver resolver = parserSettings.getResolver(mrid); - - if (resolver != null) { -- DefaultArtifact artifact = new DefaultArtifact(mrid, new Date(), artifactId, "jar", -+ DefaultArtifact artifact = new DefaultArtifact(mrid, System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date(), artifactId, "jar", - "jar"); - ArtifactOrigin artifactOrigin = resolver.locate(artifact); - + DependencyResolver resolver = parserSettings.getResolver(mrid); + + if (resolver != null) { +- DefaultArtifact artifact = new DefaultArtifact(mrid, new Date(), artifactId, "jar", ++ DefaultArtifact artifact = new DefaultArtifact(mrid, System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date(), artifactId, "jar", + "jar"); + ArtifactOrigin artifactOrigin = resolver.locate(artifact); + @@ -268,7 +268,7 @@ public class PomModuleDescriptorBuilder - ext = packaging; - } - -- mainArtifact = new DefaultArtifact(mrid, new Date(), artifactId, packaging, ext); -+ mainArtifact = new DefaultArtifact(mrid, System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date(), artifactId, packaging, ext); - ivyModuleDescriptor.addArtifact("master", mainArtifact); - } - + ext = packaging; + } + +- mainArtifact = new DefaultArtifact(mrid, new Date(), artifactId, packaging, ext); ++ mainArtifact = new DefaultArtifact(mrid, System.getenv("SOURCE_DATE_EPOCH") != null ? new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))) : new Date(), artifactId, packaging, ext); + ivyModuleDescriptor.addArtifact("master", mainArtifact); + } + ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-07-20 12:39:00.000000000 +0200 @@ -0,0 +1 @@ +.osc ++++++ ivy-2.5.3.pom -> ivy-2.6.0.pom ++++++ --- /work/SRC/openSUSE:Factory/apache-ivy/ivy-2.5.3.pom 2025-02-03 21:46:43.358442840 +0100 +++ /work/SRC/openSUSE:Factory/.apache-ivy.new.24530/ivy-2.6.0.pom 2026-07-21 22:55:01.102668117 +0200 @@ -1,211 +1,223 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache</groupId> - <artifactId>apache</artifactId> - <version>7</version> - </parent> - <groupId>org.apache.ivy</groupId> - <artifactId>ivy</artifactId> - <version>2.5.3</version> - <name>Apache Ivy</name> - <url>http://ant.apache.org/ivy/</url> - <scm> - <connection>scm:svn:https://svn.apache.org/repos/asf/ant/ivy/core/trunk/</connection> - <developerConnection>scm:svn:https://svn.apache.org/repos/asf/ant/ivy/core/trunk</developerConnection> - <url>https://svn.apache.org/repos/asf/ant/ivy/core/trunk</url> - </scm> - <mailingLists> - <mailingList> - <name>Ant/Ivy Developers List</name> - <subscribe>[email protected]</subscribe> - <unsubscribe>[email protected]</unsubscribe> - <post>[email protected]</post> - <archive>https://mail-archives.apache.org/mod_mbox/ant-dev</archive> - </mailingList> - <mailingList> - <name>Ivy Users List</name> - <subscribe>[email protected]</subscribe> - <unsubscribe>[email protected]</unsubscribe> - <post>[email protected]</post> - <archive>https://mail-archives.apache.org/mod_mbox/ant-ivy-user</archive> - </mailingList> - </mailingLists> - <issueManagement> - <system>jira</system> - <url>https://issues.apache.org/jira/browse/IVY</url> - </issueManagement> - <dependencies> - <dependency> - <groupId>org.apache.ant</groupId> - <artifactId>ant</artifactId> - <version>1.9.16</version> - <optional>true</optional> - </dependency> - <dependency> - <groupId>org.apache.httpcomponents</groupId> - <artifactId>httpclient</artifactId> - <version>4.5.13</version> - <optional>true</optional> - </dependency> - <dependency> - <groupId>oro</groupId> - <artifactId>oro</artifactId> - <version>2.0.8</version> - <optional>true</optional> - </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-vfs2</artifactId> - <version>2.2</version> - <optional>true</optional> - </dependency> - <dependency> - <groupId>com.jcraft</groupId> - <artifactId>jsch</artifactId> - <version>0.1.55</version> - <optional>true</optional> - </dependency> - <dependency> - <groupId>com.jcraft</groupId> - <artifactId>jsch.agentproxy</artifactId> - <version>0.0.9</version> - <optional>true</optional> - </dependency> - <dependency> - <groupId>com.jcraft</groupId> - <artifactId>jsch.agentproxy.connector-factory</artifactId> - <version>0.0.9</version> - <optional>true</optional> - </dependency> - <dependency> - <groupId>com.jcraft</groupId> - <artifactId>jsch.agentproxy.jsch</artifactId> - <version>0.0.9</version> - <optional>true</optional> - </dependency> - <dependency> - <groupId>org.bouncycastle</groupId> - <artifactId>bcpg-jdk15on</artifactId> - <version>1.70</version> - <optional>true</optional> - </dependency> - <dependency> - <groupId>org.bouncycastle</groupId> - <artifactId>bcprov-jdk15on</artifactId> - <version>1.70</version> - <optional>true</optional> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.13.2</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-core</artifactId> - <version>1.3</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-library</artifactId> - <version>1.3</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.ant</groupId> - <artifactId>ant-testutil</artifactId> - <version>1.9.16</version> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>*</groupId> - <artifactId>*</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.apache.ant</groupId> - <artifactId>ant-launcher</artifactId> - <version>1.9.16</version> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>*</groupId> - <artifactId>*</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.apache.ant</groupId> - <artifactId>ant-junit</artifactId> - <version>1.9.16</version> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>*</groupId> - <artifactId>*</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.apache.ant</groupId> - <artifactId>ant-junit4</artifactId> - <version>1.9.16</version> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>*</groupId> - <artifactId>*</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>ant-contrib</groupId> - <artifactId>ant-contrib</artifactId> - <version>1.0b3</version> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>*</groupId> - <artifactId>*</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>xmlunit</groupId> - <artifactId>xmlunit</artifactId> - <version>1.6</version> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>*</groupId> - <artifactId>*</artifactId> - </exclusion> - </exclusions> - </dependency> - </dependencies> -</project> +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache</groupId> + <artifactId>apache</artifactId> + <version>7</version> + </parent> + <groupId>org.apache.ivy</groupId> + <artifactId>ivy</artifactId> + <version>2.6.0</version> + <name>Apache Ivy</name> + <url>http://ant.apache.org/ivy/</url> + <scm> + <connection>scm:git:https://gitbox.apache.org/repos/asf/ant-ivy.git</connection> + <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/ant-ivy.git</developerConnection> + <url>https://gitbox.apache.org/repos/asf?p=ant-ivy.git</url> + </scm> + <mailingLists> + <mailingList> + <name>Ant/Ivy Developers List</name> + <subscribe>[email protected]</subscribe> + <unsubscribe>[email protected]</unsubscribe> + <post>[email protected]</post> + <archive>https://lists.apache.org/[email protected]</archive> + </mailingList> + <mailingList> + <name>Ivy Users List</name> + <subscribe>[email protected]</subscribe> + <unsubscribe>[email protected]</unsubscribe> + <post>[email protected]</post> + <archive>https://lists.apache.org/[email protected]</archive> + </mailingList> + </mailingLists> + <issueManagement> + <system>jira</system> + <url>https://issues.apache.org/jira/browse/IVY</url> + </issueManagement> + <dependencies> + <dependency> + <groupId>org.apache.ant</groupId> + <artifactId>ant</artifactId> + <version>1.9.16</version> + <optional>true</optional> + </dependency> + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + <version>4.5.13</version> + <optional>true</optional> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-compress</artifactId> + <version>1.27.1</version> + <optional>true</optional> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-vfs2</artifactId> + <version>2.2</version> + <optional>true</optional> + </dependency> + <dependency> + <groupId>oro</groupId> + <artifactId>oro</artifactId> + <version>2.0.8</version> + <optional>true</optional> + </dependency> + <dependency> + <groupId>com.jcraft</groupId> + <artifactId>jsch</artifactId> + <version>0.1.55</version> + <optional>true</optional> + </dependency> + <dependency> + <groupId>com.jcraft</groupId> + <artifactId>jsch.agentproxy</artifactId> + <version>0.0.9</version> + <optional>true</optional> + </dependency> + <dependency> + <groupId>com.jcraft</groupId> + <artifactId>jsch.agentproxy.connector-factory</artifactId> + <version>0.0.9</version> + <optional>true</optional> + </dependency> + <dependency> + <groupId>com.jcraft</groupId> + <artifactId>jsch.agentproxy.jsch</artifactId> + <version>0.0.9</version> + <optional>true</optional> + </dependency> + <dependency> + <groupId>org.bouncycastle</groupId> + <artifactId>bcpg-jdk15on</artifactId> + <version>1.70</version> + <optional>true</optional> + </dependency> + <dependency> + <groupId>org.bouncycastle</groupId> + <artifactId>bcprov-jdk15on</artifactId> + <version>1.70</version> + <optional>true</optional> + </dependency> + <dependency> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + <version>1.18.0</version> + <optional>true</optional> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.13.2</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-core</artifactId> + <version>1.3</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-library</artifactId> + <version>1.3</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.ant</groupId> + <artifactId>ant-testutil</artifactId> + <version>1.9.16</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.apache.ant</groupId> + <artifactId>ant-launcher</artifactId> + <version>1.9.16</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.apache.ant</groupId> + <artifactId>ant-junit</artifactId> + <version>1.9.16</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.apache.ant</groupId> + <artifactId>ant-junit4</artifactId> + <version>1.9.16</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>ant-contrib</groupId> + <artifactId>ant-contrib</artifactId> + <version>1.0b3</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>xmlunit</groupId> + <artifactId>xmlunit</artifactId> + <version>1.6</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + </dependencies> +</project>
