summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS5
-rw-r--r--composer-generators.spec7
-rwxr-xr-xcomposer.prov43
3 files changed, 40 insertions, 15 deletions
diff --git a/NEWS b/NEWS
index 72b5fc3..eafbeff 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,11 @@
composer-generators Release Notes
=================================
+# Version 0.1.2 - 2025-02-04
+
+* provide bundled library without version
+ when version is not valid
+
# Version 0.1.1 - 2024-12-30
* remove 'v' in version number
diff --git a/composer-generators.spec b/composer-generators.spec
index 8e6d5b8..1e785c0 100644
--- a/composer-generators.spec
+++ b/composer-generators.spec
@@ -1,6 +1,6 @@
# remirepo/fedora spec file for composer-generators
#
-# Copyright (c) 2024 Remi Collet
+# Copyright (c) 2024-2025 Remi Collet
# License: GPL-2.0-or-later
# https://www.gnu.org/licenses/gpl-2.0.en.html
#
@@ -8,7 +8,7 @@
#
Name: composer-generators
-Version: 0.1.1
+Version: 0.1.2
Release: 1%{?dist}
# Use same license than RPM
License: GPL-2.0-or-later
@@ -59,6 +59,9 @@ install -Dpm 644 composer.attr %{buildroot}%{_fileattrsdir}/composer.attr
%changelog
+* Tue Feb 4 2025 Remi Collet <remi@remirepo.net> - 0.1.2-1
+- version 0.1.2
+
* Mon Dec 30 2024 Remi Collet <remi@remirepo.net> - 0.1.1-1
- version 0.1.1
diff --git a/composer.prov b/composer.prov
index d8bb84d..4d92e5e 100755
--- a/composer.prov
+++ b/composer.prov
@@ -4,7 +4,7 @@
Use this script to generate bundled provides, e.g.:
./composer.prov vendor/composer/installed.php
- Copyright (C) 2024 Remi Collet <remi@fedoraproject.org>.
+ Copyright (C) 2024-2025 Remi Collet <remi@fedoraproject.org>.
SPDX-3.0-License-Identifier: GPL-2.0-or-later
@@ -15,18 +15,30 @@
<https://www.gnu.org/philosophy/free-sw.en.html>.
*/
-// Check if composer "pretty_version" is usable in RPM
-function isValid(Array $package) {
- if (!isset($package['pretty_version'])
- || empty($package['pretty_version'])
- || strpos($package['pretty_version'], '-')
+// Check if composer "name" and "pretty_version" are usable in RPM
+function isValid(Array $package, $strict=true) {
+ // Only vendor/project
+ if (!isset($package['name'])
+ || !strpos($package['name'], '/')
) {
return false;
}
+ // pretty_version is required
+ if (!isset($package['pretty_version'])) {
+ return false;
+ }
+ if ($strict) {
+ // pretty_version is usable
+ if (empty($package['pretty_version'])
+ || strpos($package['pretty_version'], '-')
+ ) {
+ return false;
+ }
+ }
return true;
}
-// Clean"pretty_version"
+// Clean "pretty_version"
function getVersion(Array $package) {
return ltrim($package['pretty_version'], 'v');
}
@@ -36,15 +48,20 @@ function run($file) {
fputs(STDERR, "Search bundled libraries installed, parsing $file\n");
$installed = include $file;
$main = false;
- if (isset($installed['root']['name'])
- && isValid($installed['root'])) {
-
+ if (isValid($installed['root'], false)) {
$main = $installed['root']['name'];
- printf("php-composer(%s) = %s\n", $installed['root']['name'], getVersion($installed['root']));
+ if (isValid($installed['root'])) {
+ printf("php-composer(%s) = %s\n", $main, getVersion($installed['root']));
+ }
}
if (isset($installed['versions'])) foreach($installed['versions'] as $name => $v) {
- if ($name !== $main && isValid($v)) {
- printf("bundled(php-composer(%s)) = %s\n", $name, getVersion($v));
+ if ($name !== $main) {
+ $v['name'] = $name;
+ if (isValid($v)) {
+ printf("bundled(php-composer(%s)) = %s\n", $name, getVersion($v));
+ } else if (isValid($v, false)) {
+ printf("bundled(php-composer(%s))\n", $name);
+ }
}
}
}