{"id":48593274,"url":"https://github.com/thisismeamir/hepsw","last_synced_at":"2026-04-08T20:53:37.400Z","repository":{"id":328826832,"uuid":"1116853680","full_name":"thisismeamir/hepsw","owner":"thisismeamir","description":"Source-First package manager for High Energy Physics software stack.","archived":false,"fork":false,"pushed_at":"2026-02-25T15:24:18.000Z","size":297,"stargazers_count":1,"open_issues_count":8,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-08T20:53:34.069Z","etag":null,"topics":["cern","high-energy-physics","package-manager","physics"],"latest_commit_sha":null,"homepage":"https://hepsw.readthedocs.io","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thisismeamir.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-15T13:27:33.000Z","updated_at":"2026-02-25T15:31:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/thisismeamir/hepsw","commit_stats":null,"previous_names":["thisismeamir/hepsw"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thisismeamir/hepsw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisismeamir%2Fhepsw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisismeamir%2Fhepsw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisismeamir%2Fhepsw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisismeamir%2Fhepsw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thisismeamir","download_url":"https://codeload.github.com/thisismeamir/hepsw/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisismeamir%2Fhepsw/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31573788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cern","high-energy-physics","package-manager","physics"],"created_at":"2026-04-08T20:53:36.312Z","updated_at":"2026-04-08T20:53:37.389Z","avatar_url":"https://github.com/thisismeamir.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HepSW\n\n**Source-First Build System for High Energy Physics Software**\n\nHepSW is a transparent, reproducible framework for building and managing HEP software stacks on Linux systems. Instead of distributing binaries or containers, HepSW provides explicit build instructions that reconstruct software environments deterministically from source.\n\n## Why HepSW?\n\nHEP software stacks are complex, with deep dependency chains and strict version requirements. Traditional approaches using binary package managers or pre-built containers hide how software is actually built, making it difficult to:\n\n- Understand what's actually installed\n- Reproduce builds across different systems\n- Debug build failures or compatibility issues\n- Adapt software to new environments or requirements\n\nHepSW solves this by treating **build instructions as source code**: versioned, explicit, and reproducible.\n\n## Features\n\n- **Source-first**: Build everything from upstream sources\n- **Transparent**: Every build step is explicit and inspectable\n- **Reproducible**: Same inputs → same outputs, every time\n- **Flexible**: Works across Linux distributions\n- **Documented**: Each package includes build guides and compatibility notes\n- **Dependency-aware**: Automatic resolution of version constraints\n\n## Quick Start\n\n### Installation\n\n```bash\n# From source\ngit clone https://github.com/thisismeamir/hepsw.git\ncd hepsw\nmake install\n\n# Or download binary (coming soon)\n# curl -L https://github.com/thisismeamir/hepsw/releases/latest/download/hepsw-linux-amd64 -o hepsw\n# chmod +x hepsw\n# sudo mv hepsw /usr/local/bin/\n```\n\n### Initialize a Workspace\n\n```bash\n# Create a new workspace\nhepsw init ~/hep-workspace\ncd ~/hep-workspace\n```\n\nThis creates:\n```\n~/hep-workspace/\n├── toolchains/     # Compilers and build tools\n├── sources/        # Source code\n├── builds/         # Build directories\n├── install/        # Installed software\n├── env/            # Environment scripts\n└── logs/           # Build logs\n```\n\n### Build a Package\n\n```bash\n# Build ROOT with dependencies\nhepsw build root --with-deps\n\n# Build specific version\nhepsw build geant4 --version 11.2.0\n\n# List available packages\nhepsw list\n\n# Get package info\nhepsw info root\n```\n\n### Use Installed Software\n\n```bash\n# Source environment\nsource $(hepsw env path root)\n\n# Or load multiple packages\nhepsw env generate --packages root,geant4 \u003e setup.sh\nsource setup.sh\n\n# Now use the software\nroot -b\n```\n\n## How It Works\n\n### Package Manifests\n\nEach package has a manifest describing how to build it:\n\n```yaml\nname: root\nversion: 6.30.02\ndescription: CERN ROOT Data Analysis Framework\n\nsource:\n  type: git\n  url: https://github.com/root-project/root.git\n  tag: v6-30-02\n\ndependencies:\n  - name: cmake\n    version: \"\u003e=3.20\"\n  - name: python\n    version: \"\u003e=3.8\"\n\nbuild:\n  configure: cmake -S . -B build -DCMAKE_INSTALL_PREFIX=$PREFIX\n  compile: cmake --build build -j$JOBS\n  install: cmake --install build\n\nenvironment:\n  PATH: $PREFIX/bin\n  LD_LIBRARY_PATH: $PREFIX/lib\n  ROOTSYS: $PREFIX\n```\n\n### Build Process\n\n1. **Fetch**: Download sources from upstream (GitHub, tarballs, etc.)\n2. **Configure**: Set up build with proper flags and paths\n3. **Compile**: Build in parallel with progress tracking\n4. **Install**: Install to isolated prefix\n5. **Environment**: Generate shell scripts to use the software\n\n### Package Index\n\nAvailable packages are maintained in [hepsw-package-index](https://github.com/thisismeamir/hepsw-package-index):\n\n- ROOT - Data analysis framework\n- Geant4 - Simulation toolkit\n- Pythia8 - Event generator\n- FastJet - Jet clustering\n- HepMC3 - Event record\n- And more...\n\n## Commands\n\n```bash\nhepsw init \u003cpath\u003e              # Initialize workspace\nhepsw list                     # List available packages\nhepsw info \u003cpackage\u003e           # Show package details\nhepsw build \u003cpackage\u003e          # Build a package\nhepsw build \u003cpackage\u003e --with-deps  # Build with dependencies\nhepsw validate \u003cmanifest\u003e      # Validate manifest file\nhepsw env generate \u003cpackage\u003e   # Generate environment script\nhepsw env path \u003cpackage\u003e       # Get path to environment script\nhepsw graph \u003cpackage\u003e          # Show dependency graph\nhepsw version                  # Show version\n```\n\n### Global Flags\n\n```bash\n--workspace, -w    Path to workspace (default: $HEPSW_WORKSPACE or ./hepsw-workspace)\n--verbose, -v      Enable verbose output\n--quiet, -q        Suppress non-essential output\n--config           Config file (default: ~/.hepsw.yaml)\n```\n\n## Configuration\n\nCreate `~/.hepsw.yaml`:\n\n```yaml\nworkspace: /home/user/hep-workspace\n\nbuild:\n  jobs: 8\n  type: Release\n\npackages:\n  root:\n    version: \"6.30.02\"\n  geant4:\n    version: \"11.2.0\"\n```\n\n## Development\n\n### Project Structure\n\n```\nhepsw/\n├── cmd/hepsw/          # CLI entry point\n├── internal/\n│   ├── cli/            # Command implementations\n│   ├── manifest/       # Manifest parsing\n│   ├── builder/        # Build orchestration\n│   ├── workspace/      # Workspace management\n│   └── dependencies/   # Dependency resolution\n├── pkg/types/          # Public types\n├── manifests/          # Package manifests (deprecated, moved to hepsw-package-index)\n└── docs/               # Documentation\n```\n\n### Building from Source\n\n```bash\n# Clone repository\ngit clone https://github.com/thisismeamir/hepsw.git\ncd hepsw\n\n# Install dependencies\ngo mod download\n\n# Build\nmake build\n\n# Run tests\nmake tests\n\n# Install locally\nmake install\n```\n\n### Adding a Package\n\nPackages are defined in [hepsw-package-index](https://github.com/thisismeamir/hepsw-package-index):\n\n1. Fork the repository\n2. Create `packages/\u003cpackage-name\u003e/manifest.yaml`\n3. Add entry to `index.yaml`\n4. Submit pull request\n\nSee existing packages for examples.\n\n## Documentation\n\nFull documentation at [docs/](./docs/):\n\n- [Introduction](docs/00-introduction/index.md)\n- [Getting Started](docs/01-basics/index.md)\n- [Layout and Workflow](docs/02-layout-and-workflow/index.md)\n- [Dependencies](docs/03-dependencies/index.md)\n- [Build Guides](docs/04-build-guides/index.md)\n- [Environments](docs/05-environments/index.md)\n- [Advanced Topics](docs/06-advanced/index.md)\n- [Troubleshooting](docs/07-troubleshooting/index.md)\n- [Contributing](docs/08-contribution/index.md)\n\n## Requirements\n\n- **OS**: Linux (any distribution)\n- **Tools**: git, make, gcc/clang\n- **Go**: 1.21+ (for building HepSW itself)\n\nIndividual packages have their own requirements (specified in manifests).\n\n## Comparison\n\n### vs Binary Package Managers (apt, dnf, conda)\n\n| Aspect | Binary Managers | HepSW |\n|--------|----------------|-------|\n| Transparency | Opaque binaries | Full source visibility |\n| Reproducibility | Version-dependent | Deterministic from source |\n| Customization | Limited | Full control |\n| Cross-distro | Distribution-specific | Works everywhere |\n\n### vs Containers (Docker, Singularity)\n\n| Aspect | Containers | HepSW |\n|--------|-----------|-------|\n| What you get | Frozen filesystem | Build instructions |\n| Updates | Rebuild entire image | Rebuild specific packages |\n| Debugging | Black box | Inspect any layer |\n| Size | GBs | Only what you need |\n\n### vs Other Build Tools (Spack, EasyBuild)\n\nHepSW is similar but:\n- **Simpler**: Focused on HEP, not general-purpose\n- **More transparent**: YAML manifests, not complex DSLs\n- **Better documented**: Each package includes usage guides\n- **Opinionated**: Best practices baked in\n\n## Contributing\n\nContributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md).\n\nAreas where help is needed:\n- Adding package manifests\n- Improving documentation\n- Testing on different Linux distributions\n- Bug reports and feature requests\n\n## Support\n\n- **Issues**: [GitHub Issues](https://github.com/thisismeamir/hepsw/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/thisismeamir/hepsw/discussions)\n- **Documentation**: [docs/](./docs/)\n\n## License\n\nApache License 2.0 - see [LICENSE](LICENSE) for details.\n\n## Acknowledgments\n\nHepSW builds on decades of HEP software development practices. Special thanks to the maintainers of ROOT, Geant4, and other HEP packages for their excellent upstream work.\n\n## Status\n\n**Early Development** - HepSW is actively being developed. APIs and manifest formats may change. Feedback welcome!\n\n---\n\n**HepSW**: Build HEP software the transparent way.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthisismeamir%2Fhepsw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthisismeamir%2Fhepsw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthisismeamir%2Fhepsw/lists"}