1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-11-14 00:06:15 +01:00

Merge pull request #1552 from dmach/boo#1221340-spec-include

Improve 'build' and 'buildinfo' commands by injecting *.inc files into spec that is sent to OBS for parsing BuildRequires (boo#1221340)
This commit is contained in:
Daniel Mach 2024-05-07 14:17:21 +02:00 committed by GitHub
commit 4e4f3cb093
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 47 additions and 0 deletions

View File

@ -0,0 +1,12 @@
Feature: `osc buildinfo` command
Scenario: Run `osc buildinfo` on a package with a .inc file
Given I set working directory to "{context.osc.temp}"
And I execute osc with args "co test:factory/test-pkgA"
And I set working directory to "{context.osc.temp}/test:factory/test-pkgA"
And I copy file "{context.fixtures}/pac/test-pkgA-3-inc.spec" to "{context.osc.temp}/test:factory/test-pkgA/test-pkgA.spec"
And I copy file "{context.fixtures}/pac/test-pkgA-3-inc.inc" to "{context.osc.temp}/test:factory/test-pkgA/test-pkgA.inc"
When I execute osc with args "buildinfo"
Then the exit code is 0
And stdout contains "<error>unresolvable: nothing provides DOES-NOT-EXIST</error>"

View File

@ -0,0 +1 @@
BuildRequires: DOES-NOT-EXIST

View File

@ -0,0 +1,27 @@
%include test-pkgA.inc
Name: test-pkgA
Version: 4
Release: 1
License: GPL-2.0
Summary: Test package
URL: https://example.com/test-package/
BuildArch: noarch
%description
desc
%prep
%install
%files
%changelog

View File

@ -708,6 +708,13 @@ def create_build_descr_data(
# build recipe must go first for compatibility with the older OBS versions
result_data.append((os.path.basename(build_descr_path).encode("utf-8"), build_descr_data))
if topdir:
for include_file in glob.glob(os.path.join(topdir, "*.inc")):
fn = os.path.basename(include_file)
print(f"Using local file: {fn}", file=sys.stderr)
with open(include_file, "rb") as f:
result_data.append((fn.encode("utf-8"), f.read()))
if topdir:
buildenv_file = os.path.join(topdir, f"_buildenv.{repo}.{arch}")
if not os.path.isfile(buildenv_file):