{"id":26055832,"url":"https://github.com/ncar/eol_scons","last_synced_at":"2026-03-16T18:33:30.745Z","repository":{"id":53866118,"uuid":"43727442","full_name":"NCAR/eol_scons","owner":"NCAR","description":"SCons tools developed at NCAR EOL","archived":false,"fork":false,"pushed_at":"2025-04-10T20:28:18.000Z","size":1489,"stargazers_count":1,"open_issues_count":2,"forks_count":2,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-10T21:32:19.186Z","etag":null,"topics":["build-tool","python3","scons-library","software-configuration-management","software-construction"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NCAR.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2015-10-06T03:13:16.000Z","updated_at":"2025-04-10T20:28:22.000Z","dependencies_parsed_at":"2023-01-29T04:45:22.515Z","dependency_job_id":"7e1239c2-372d-45c3-b827-b15987bc5bb5","html_url":"https://github.com/NCAR/eol_scons","commit_stats":{"total_commits":925,"total_committers":13,"mean_commits":71.15384615384616,"dds":0.4464864864864865,"last_synced_commit":"21c8fbcf77ad1d825bebe97df75651f25b86583b"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NCAR%2Feol_scons","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NCAR%2Feol_scons/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NCAR%2Feol_scons/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NCAR%2Feol_scons/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NCAR","download_url":"https://codeload.github.com/NCAR/eol_scons/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248334105,"owners_count":21086315,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["build-tool","python3","scons-library","software-configuration-management","software-construction"],"created_at":"2025-03-08T10:22:48.477Z","updated_at":"2026-03-16T18:33:30.720Z","avatar_url":"https://github.com/NCAR.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# README eol_scons\n\n## Updates\n\nSee [CHANGELOG.md](CHANGELOG.md) for changes.\n\n## Installing eol_scons\n\nBy default, SCons looks for extensions and additional tools in _site\ndirectories_ named `site_scons`.  The standard locations for different\nplatforms are listed in the documentation for the `--site-dir` command line\noption on the [SCons man\npage](https://scons.org/doc/production/HTML/scons-man.html). On all platforms,\nthe site directory with the highest precedence is `./site_scons`, in the same\ndirectory as the `SConstruct`.  Therefore, several different ways to add\n`eol_scons` to a `SCons` build are listed in the following sections.\n\nNote that `eol_scons` does not use a `site_init.py` file or a `site_tools`\ndirectory to inject itself into the `SCons` build.  If it did, it would have\nto be cloned with the name `site_scons`, and the `site_init.py` file and the\n`site_tools` directory would be part of the `eol_scons` source.  This\nprecludes adding other `SCons` extensions alongside `eol_scons` in the same\n`site_scons` directory, whether it's the local project `./site_scons` or a\nsystem location like `/usr/share/scons/site_scons`.\n\nInstead, `eol_scons` injects itself into `SCons` when it is imported.  This\nmeans `eol_scons` only needs to be available on the Python system path.  Since\n`SCons` adds all the `site_scons` directories to the system path, that allows\nthe `eol_scons` directory to be imported when it is installed or cloned into a\n`site_scons` directory.  If a site or project wants to add other tools using a\n`site_init.py` or `site_tools`, then `eol_scons` does not prevent it.\nFurther, there is a great deal of flexibility in installing `eol_scons` as a\npython package instead of under a `site_scons` directory, since it can be\nmanaged with all the common Python virtual environment tools, including `pip`\nand `pipenv`.\n\n### Installing as a python package\n\nThe `eol_scons` source includes a `pyproject.toml` file for building a python\npackage.  Probably the most convenient way to add it to a `SCons` build\nenvironment for a specific project is with `pipenv`.  Below is an example,\nusing an existing clone of `eol_scons` under the home directory.\n\n```sh\npipenv install -e ~/.scons/site_scons/eol_scons/\n```\n\nThat installs the `eol_scons` python package in _editable_ mode into the\nvirtual environment associated with the project's top directory, and since\n`scons` is a dependency of `eol_scons`, the `scons` package is installed also.\nThe project's virtual environment can be used to run a `scons` build, and the\n`eol_scons` extensions will be available for import since they are installed\ninto that virtual environment:\n\n```sh\npipenv run scons\n```\n\n`pipenv` is especially convenient when project-specific `SCons` builds have\nother python dependencies, such as the `requests` package.  A project with\nnon-trivial python requirements can create a `requirements.txt` file like\nbelow.\n\n```\neol_scons @ https://github.com/NCAR/eol_scons/archive/refs/heads/master.zip\nrequests\n```\n\nThen the `scons` build environment can be created without needing to first\nclone or install `eol_scons` somewhere else:\n\n```sh\npipenv install\n```\n\nOf course similar approaches can be used with `pip` to install `eol_scons`\ninto other python environments.\n\nThe source and wheel packages can be built like below, assuming the python\n`build` package is installed in the current python environment.\n\n```sh\npython -m build\n```\n\nThe resulting wheel in `./dist` can then be installed into a python virtual\nenvironment, same as above.\n\n### Install to $HOME/.scons/site_scons\n\nIn the past the eol_scons repository had to be cloned as the `site_scons`\nsubdirectory, but that has since been corrected.  Now `eol_scons` can be\ncloned as itself under the `site_scons` directory, so that other SCons\nextensions can be installed under `site_scons` also.\n\n```shell\nmkdir -p $HOME/.scons/site_scons\ncd $HOME/.scons/site_scons\ngit clone https://github.com/ncar/eol_scons\n```\n\n### RPM for RedHat Linux systems\n\nThe RPM package installs eol_scons to `/usr/share/scons/site_scons`.  You may\nbe able to install the RPM for your system from the EOL yum repository.\n\nEnable the EOL yum repository on RHEL systems:\n\n```shell\nsudo rpm -ihv http://www.eol.ucar.edu/software/rpms/eol-repo-epel.noarch.rpm\n```\n  \nor, on Fedora systems:\n\n```shell\nsudo rpm -ihv http://www.eol.ucar.edu/software/rpms/eol-repo-fedora.noarch.rpm\n```\n\nInstall RPM:\n\n```shell\nsudo yum install eol_scons\n```\n\n### Install from source to rpm path\n\nTo install eol_scons from source to the same location as the RPM package, use\nthis command:\n\n```shell\nscons PREFIX=/usr/share/scons/site_scons install\n```\n\n### Install to project site_scons\n\nCreate the `./site_scons` subdirectory in the directory containing `SConstruct`,\nthen clone `eol_scons` into it same as above.\n\n### Access as a git submodule\n\nIn a git repository, in the same directory as your SConstruct, where vX.Y is\nthe tagged branch of eol_scons you want to use, or leave off the '-b vX.Y' if\nyou want the latest:\n\n```shell\nmkdir site_scons\ngit submodule -add -b vX.Y https://github.com/ncar/eol_scons site_scons/eol_scons\n```\n\nIf your code repository is also on [NCAR github](https://github.com/ncar), you\ncan use a relative URL:\n\n```shell\ngit submodule -add -b vX.Y ../eol_scons site_scons/eol_scons\n```\n\nThen\n\n```shell\ngit commit -am \"Added eol_scons submodule vX.Y\"\ngit push ...\n```\n\nUse `git clone --recurse-submodules` when cloning the repo to create the\neol_scons clone also.\n\n### Use --site-dir\n\nThe `SCons` command line option `--site-dir` can be used to add `eol_scons` to\nthe `SCons` environment.  You can provide the full path to the top of the\n`eol_scons` source tree, since that will add the `eol_scons` package to the Python path.  However,\n`eol_scons` will print the message below:\n\n````sh\n*** Importing from site_scons/eol_scons has been deprecated.\n*** The repository should be a subdirectory of site_scons named eol_scons.\n````\n\nThis message can be avoided using one of the other options, or it can be\nsafely ignored.\n\n## Using eol_scons\n\nIn your SConstruct file, simply import eol_scons. The import will add\neol_scons/tools to the SCons tool search path:\n\n```python\nimport eol_scons\nenv = Environment(tools=['default', 'boost_date_time'])\n```\n\nThe import also modifies the SCons tool path so that every `Environment`\ncreated with the `default` tool will automatically get the standard\n`eol_scons` extensions.  A project can use that to make sure certain tools\n(\"global tools\") are applied to every `Environment`, without requiring the\ntools be loaded explicitly everywhere.\n\n## Documentation\n\nSee [this README](eol_scons/README) for an overview of how it works, though\nthat documentation is not necessarily up to date.\n\nThere is an attempt at generating HTML documentation from the python modules\nand README files using `doxygen`.  Run `doxygen` with the `docs` alias:\n\n```shell\nscons docs\n```\n\nThe output is in `doxy/html/index.html`.\n\nSomeday the README guide should be updated and converted to markdown.  Also,\nsome useful extensions to basic features especially need to be documented,\nlike how to add brief help for variables, and how to use help to list alias\nand install targets.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fncar%2Feol_scons","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fncar%2Feol_scons","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fncar%2Feol_scons/lists"}