{"id":49547682,"url":"https://github.com/lyraphase/uncommon-build","last_synced_at":"2026-05-02T20:08:27.655Z","repository":{"id":38192011,"uuid":"484281057","full_name":"LyraPhase/uncommon-build","owner":"LyraPhase","description":"A curiously uncommon build framework... 🧐","archived":false,"fork":false,"pushed_at":"2024-08-06T08:49:34.000Z","size":96,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2024-08-06T10:18:09.721Z","etag":null,"topics":["build-tool","builder-pattern","docker-builder","hacktoberfest","lyraphase","make","makefile","makefile-sdks"],"latest_commit_sha":null,"homepage":"","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LyraPhase.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["trinitronx"],"patreon":"phasik","ko_fi":"trinitronx","liberapay":"trinitronx","custom":["https://paypal.me/JamesCuzella"]}},"created_at":"2022-04-22T03:20:02.000Z","updated_at":"2024-08-06T08:49:31.000Z","dependencies_parsed_at":"2024-07-17T03:47:34.584Z","dependency_job_id":null,"html_url":"https://github.com/LyraPhase/uncommon-build","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/LyraPhase/uncommon-build","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LyraPhase%2Funcommon-build","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LyraPhase%2Funcommon-build/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LyraPhase%2Funcommon-build/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LyraPhase%2Funcommon-build/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LyraPhase","download_url":"https://codeload.github.com/LyraPhase/uncommon-build/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LyraPhase%2Funcommon-build/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32547708,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T19:18:06.202Z","status":"ssl_error","status_checked_at":"2026-05-02T19:16:21.335Z","response_time":132,"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":["build-tool","builder-pattern","docker-builder","hacktoberfest","lyraphase","make","makefile","makefile-sdks"],"created_at":"2026-05-02T20:08:26.282Z","updated_at":"2026-05-02T20:08:27.646Z","avatar_url":"https://github.com/LyraPhase.png","language":"Makefile","funding_links":["https://github.com/sponsors/trinitronx","https://patreon.com/phasik","https://ko-fi.com/trinitronx","https://liberapay.com/trinitronx","https://paypal.me/JamesCuzella"],"categories":[],"sub_categories":[],"readme":"Uncommon Build\n==============\n\nA curiously uncommon build framework... 🧐\n\n[![Spiral eye with Monocle](./assets/Spiral_eye_Monocle.svg)](./assets/Spiral_eye_Monocle.svg)\n\nWTF?\n----\n\n`uncommon-build` is a set of handcrafted GNU `Makefile` includes for building\nsoftware projects. It may be installed as a `git` `submodule` to enable your\nproject `Makefile`s to be more trim, elegant, and classy. 🤵‍♂️\n\n### Prequisites\n\n- An initialized `git` repo\n- Ability to create a file in this repo: `.uncommon-build-init.mk`\n- GNU `make` command\n- Bash shell\n  - `bash` command must be available\n  - Not necessarily as your default shell\n- POSIX shell utilities: `sed`, `grep`, `echo`, `cd`, `rm`, `mkdir`, `awk`,\n  `sort`, `find`, `xargs`, `basename`\n\nHow Do That?! 🤔\n----------------\n\nThe simple way to accomplish this, naturally, is to add the following file to\nyour repo: `.uncommon-build-init.mk` [$^{...You\\ \\textbf{\\textit{doOo}\n\\ have\\ a\\ git\\ repo\\ already,\\ yes?}$][2]\n\n```bash\ncurl -Ls -o .uncommon-build-init.mk https://bit.ly/3K5HcJO\n```\n\nThen, one must simply 🤌 add the following line to your `Makefile`:\n\n```make\ninclude .uncommon-build-init.mk\n```\n\nThis single include line should generally be placed at the top of your\n`Makefile`.  However, if one wishes to configure any variables or\noverride defaults, then one must do so before including `main.mk`.\n\nFinally, one must run:\n\n```shell\nmake stylish\n```\n\nWhat Does It Do? 🙋\n-------------------\n\nThis short GNU `Makefile` code snippet creates a target + recipe, `stylish`\nto install via `make stylish`.  It's recommended to use the dot `.` prefix for\n`.uncommon-build-init.mk`, so the installation is as unobtrusive and tucked\naway as possible.  This also allows for an elegant one-liner in your main\n`Makefile`: `include .uncommon-build-init.mk`\n\nThe recipe checks for existence of `.uncommon-build`, and installs it if\nnot found.\n\nIf `.uncommon-build` is found, the `.gitmodules` definition is updated.\nIf the `.uncommon-build` directory is missing the submodule will be added for\nyou, and will be automatically committed.\n\n**Default Targets**: This `Makefile` framework creates some basic targets for\nuse when building Docker images:\n\n- `help`: Output all make targets with help text.\n  Hint: Add your own help text by appending `## Help text here`,\n  Or prevent a target from showing up in `help` by appending: `## no-help` to\n  the recipe definition line (e.g.: `foo: foo.c ## no-help`)\n- `build`: Builds the Docker image\n- `save-image`: Saves the Docker image via `docker save`.\n  Output defaults to: `$(top_builddir)/.uncommon-build-stamps/$(REPO_NAME).tar`\n- `push`: Pushes the Docker image to a Registry.\n  Default: `docker.io/$(REPO_NAME):$(IMAGE_TAG)`\n  where `IMAGE_TAG` is a 12-character short commit SHA\n- `compile`: Compile the project's source files.\n\n**Language Specific Includes**: _When using specific programming languages,\nset `$(PROJECT_LANG)` before including `main.mk`_. The list of supported\nlanguages will grow over time.  Currently supported languages are:\n\n- `go`: [GoLang][1]\n\nUpdating the `.uncommon-build` Submodule\n----------------------------------------\n\nTo automatically update `uncommon-build` to latest, run:\n\n```bash\nmake update-uncommon-build\n```\n\nThis target executes the following steps:\n\n1. Change directory into the `.uncommon-build`\n  submodule folder: `cd .uncommon-build`\n2. Fetch \u0026 Update the `git` submodule to latest\n3. Commit the `.uncommon-build` and `.gitmodules` file changes.\n\n_NOTE_: If you need to update `uncommon-build` to some version\ndifferent than `origin/main` branch, set the `UNCOMMON_BUILD_REF` variable.\nThis accepts any `git` ref.\nFor example: a branch name, tag, or commit SHA.\n\n[1]: https://go.dev/\n[2]: https://git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flyraphase%2Funcommon-build","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flyraphase%2Funcommon-build","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flyraphase%2Funcommon-build/lists"}