Skip to content
Back to skills

2148 Rpm Examine 34853bdd

ASecurity

Analyze RPM build.log failures

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
toolsshellbashgit

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 2148-rpm-examine_34853bdd --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 2148 Rpm Examine 34853bdd?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 2148 Rpm Examine 34853bdd
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-2148-rpm-examine-34853bdd/badge)](https://www.skillsdirectory.com/skills/tools-only-2148-rpm-examine-34853bdd)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
description: Analyze RPM build.log failures
argument-hint: [copr-chroot-url] OR [build-log-url] [srpm-url] OR [build.log] [specfile|dist-git] [sources]
---

## Name
odh-ai-helpers:rpm-examine

## Synopsis
```
/rpm:examine <copr-chroot-url>
/rpm:examine <build-log-url> <srpm-url>
/rpm:examine <build.log> <specfile|dist-git> [sources]
```

## Description
Analyze RPM build.log failures. Provide a comprehensive analysis with error summary, root cause, and actionable fixes.

### Mode 1: Copr Results URL or Direct URLs to build.log and SRPM
Provide a single Copr build results URL to automatically fetch all build artifacts or provide two URLs - one for build.log and one for SRPM.

**What gets downloaded:**
- `build-live.log.gz` or `build.log` - Main build log
- `*.src.rpm` - Source RPM containing spec file, sources, and patches
- `root.log.gz`, `state.log` - Additional context logs (optional)

### Mode 2: Local Files
Provide paths to local build artifacts.

**Arguments:**
1. `<build.log>` - Path to build log file (required)
2. `<specfile|dist-git>` - Path to spec file or dist-git repo clone (required)
3. `[sources]` - Path to source tarball or unpacked sources (optional)

**Context gathering:**
If sources not provided, search in:
- build.log parent directory
- specfile parent directory
- dist-git clone directory

## Implementation

### 1. Input Detection
- **If single URL**: Copr results directory → continue to step 2a
- **If two URLs**: Direct URLs to build.log and SRPM (Koji/Brew) → download both directly, then follow 2a steps 3-5
- **If local path(s)**: Local workflow → continue to step 2b

### 2. Artifact Collection

#### 2a. URL Workflow
1. Create temporary working directory
2. Download files from Copr URL:
   ```bash
   curl -LO <copr-url>/builder-live.log.gz
   curl -LO <copr-url>/*.src.rpm
   curl -LO <copr-url>/root.log.gz      # optional
   curl -LO <copr-url>/state.log        # optional
   ```
3. Decompress logs: `gunzip *.log.gz` (if needed)
4. Extract SRPM: `rpm2cpio *.src.rpm | cpio -idmv`
5. Locate extracted spec file

#### 2b. Local Workflow
1. Verify build.log exists and is readable
2. Verify specfile/dist-git path exists
3. Search for sources if not provided:
   - Check build.log parent directory for `*.tar.*` or `*.src.rpm`
   - Check specfile parent directory
   - If dist-git repo, check for sources in repo

### 3. Context Gathering
Collect all relevant information before analysis:

**Spec file analysis:**
- BuildRequires dependencies
- Patches and their application order
- Macros and their expansions
- Build steps (%prep, %build, %install, %check, %files)

**Additional context:**
- For dist-git repos: Run `git diff` to check uncommitted changes
- Examine patch files for conflicts or application failures
- Look for auxiliary files: `%{name}.conf`, `%{name}.desktop`, systemd units
- Check for additional logs: `root.log`, `state.log`, `mock.log`

**Source code (if needed):**
- For compiler errors: Unpack sources to examine code
- For test failures: Locate test files and configurations
- For build system issues: Check `CMakeLists.txt`, `Makefile.am`, `setup.py`, etc.

### 4. Analysis

#### Scan Strategy
1. **Start at the end**: Scan build.log from bottom up to find failure point
2. **Identify the phase**: Determine which RPM build phase failed:
   - `%prep` - Source unpacking and patch application
   - `%build` - Compilation and building
   - `%install` - Installation to buildroot
   - `%check` - Test suite execution
   - Binary RPM creation - File packaging
3. **Find the trigger**: Locate exact command or operation that failed
4. **Trace backwards**: Follow the chain of events leading to failure
5. **Cross-reference**: Compare findings with specfile configuration

#### Error Keywords to Search
- `"Error:"`, `"FAILED"`, `"fatal error:"`
- `"configure: error:"`, `"No such file"`
- `"undefined reference"`, `"make: ***"`
- `"CMake Error"`, `"ninja: build stopped"`
- `"ModuleNotFoundError"`, `"ImportError"`
- `"Ignoring extra path from command line"` - May indicate broken line continuation in spec file
- `"add_subdirectory given source"` + `"not an existing directory"` - May indicate missing options due to spec formatting

#### Hard To Find Error Patterns

**Spec file whitespace issues:**
- Trailing space after backslash (`\ ` instead of `\`) - Breaks line continuation, causing subsequent lines to be completely ignored by the shell
- Missing backslash in multi-line constructs (especially in `%if` blocks)
- **Detection**: Use `cat -A specfile.spec` to reveal trailing spaces (shows as `\ $` at end of line) or `grep '\\ $' specfile.spec`
- **Symptoms**: CMake/configure options appear ignored, features default to wrong values, mysterious "directory not found" errors

### 5. Cleanup
- If URL workflow was used, clean up temporary directory after analysis
- Ask user before cleanup if they might need files for further investigation

## Output Format

Provide a clear, structured analysis:

### 1. Error Summary
Brief description of what failed (1-2 sentences)

### 2. Root Cause
Technical explanation of why it failed:
- Which phase encountered the error
- What operation or command triggered it
- Underlying technical reason

### 3. Suggested Fixes
Specific, actionable steps to resolve:
- Exact changes needed (with code/spec snippets if applicable)
- Commands to run
- Dependencies to add/modify
- Patches to apply/modify

### 4. Additional Recommendations
Optional section for:
- Related improvements
- Potential future issues
- Best practices
- Warnings about side effects

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.