From e3e48002505983d6bb5edb7ee05bff139f679223 Mon Sep 17 00:00:00 2001 From: dennisrijsdijk Date: Sat, 25 Jan 2025 13:09:03 +0100 Subject: [PATCH] fix: builds on rpm>=4.20.0 --- resources/spec.ejs | 2 +- src/dependencies.js | 16 ++++++++++++++++ src/installer.js | 1 + test/fixtures/custom.spec.ejs | 2 +- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/resources/spec.ejs b/resources/spec.ejs index e07a8a3..0b3f447 100644 --- a/resources/spec.ejs +++ b/resources/spec.ejs @@ -24,7 +24,7 @@ print('\n\n\n') } %>%install mkdir -p %{buildroot}/usr/ -cp <%= process.platform === 'darwin' ? '-R' : '-r' %> usr/* %{buildroot}/usr/ +cp <%= process.platform === 'darwin' ? '-R' : '-r' %> <%= usrPath %> %{buildroot}/usr/ %files diff --git a/src/dependencies.js b/src/dependencies.js index 47df0e4..9e847d7 100644 --- a/src/dependencies.js +++ b/src/dependencies.js @@ -33,6 +33,13 @@ async function rpmSupportsBooleanDependencies (logger) { return rpmVersionSupportsBooleanDependencies(await getRpmVersion(logger)) } +/** + * Retrieves the RPM version number and determines the path to the `usr` directory based on the version. + */ +async function getRpmUsrPath (logger) { + return rpmUsrPath(await getRpmVersion(logger)) +} + async function getRpmVersion (logger) { const versionOutput = await spawn('rpmbuild', ['--version'], logger) return _.last(versionOutput.trim().split(' ')) @@ -48,6 +55,14 @@ function rpmVersionSupportsBooleanDependencies (rpmVersionString) { return rpmVersion >= [4, 13, 0] } +/** + * Determines the path to the `usr` directory based on the RPM version. + */ +function rpmUsrPath (rpmVersionString) { + const rpmVersion = rpmVersionString.split('.').slice(0, 3).map(n => parseInt(n)) + return rpmVersion >= [4, 20, 0] ? '../usr/.' : 'usr/*' +} + /** * Transforms the list of trash requires into an RPM boolean dependency list. */ @@ -75,6 +90,7 @@ module.exports = { } }, getRpmVersion, + getRpmUsrPath, rpmSupportsBooleanDependencies, rpmVersionSupportsBooleanDependencies, trashRequiresAsBoolean diff --git a/src/installer.js b/src/installer.js index 10e0c7a..587eb60 100644 --- a/src/installer.js +++ b/src/installer.js @@ -91,6 +91,7 @@ class RedhatInstaller extends common.ElectronInstaller { ]) this.defaults = { ...common.getDefaultsFromPackageJSON(pkg, { revision: 1 }), + usrPath: await redhatDependencies.getRpmUsrPath(this.userSupplied.logger), version: pkg.version || '0.0.0', license: pkg.license, compressionLevel: 2, diff --git a/test/fixtures/custom.spec.ejs b/test/fixtures/custom.spec.ejs index deec411..9b85b72 100644 --- a/test/fixtures/custom.spec.ejs +++ b/test/fixtures/custom.spec.ejs @@ -20,7 +20,7 @@ print('\n\n\n') } %>%install mkdir -p %{buildroot}/usr/ -cp <%= process.platform === 'darwin' ? '-R' : '-r' %> usr/* %{buildroot}/usr/ +cp <%= process.platform === 'darwin' ? '-R' : '-r' %> <%= usrPath %> %{buildroot}/usr/ %files