{"id":33064967,"url":"https://github.com/dm0-/gnuxc","last_synced_at":"2025-11-14T08:00:59.741Z","repository":{"id":10869908,"uuid":"13156406","full_name":"dm0-/gnuxc","owner":"dm0-","description":"GNU OS Cross-Compiler","archived":false,"fork":false,"pushed_at":"2017-12-26T05:06:58.000Z","size":863,"stargazers_count":13,"open_issues_count":0,"forks_count":2,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-07-02T11:07:38.143Z","etag":null,"topics":["distro","gnu","hurd"],"latest_commit_sha":null,"homepage":null,"language":"Makefile","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dm0-.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-09-27T17:18:32.000Z","updated_at":"2024-07-02T11:07:38.143Z","dependencies_parsed_at":"2022-09-14T05:21:54.612Z","dependency_job_id":null,"html_url":"https://github.com/dm0-/gnuxc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dm0-/gnuxc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dm0-%2Fgnuxc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dm0-%2Fgnuxc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dm0-%2Fgnuxc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dm0-%2Fgnuxc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dm0-","download_url":"https://codeload.github.com/dm0-/gnuxc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dm0-%2Fgnuxc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284360420,"owners_count":26991377,"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","status":"online","status_checked_at":"2025-11-14T02:00:06.101Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["distro","gnu","hurd"],"created_at":"2025-11-14T07:00:37.626Z","updated_at":"2025-11-14T08:00:59.730Z","avatar_url":"https://github.com/dm0-.png","language":"Makefile","funding_links":[],"categories":["Inactive","Uncategorized"],"sub_categories":["Custom","Uncategorized"],"readme":"# GNU OS Cross-Compiler\n\n## About\n\nThis project is a GNU operating system cross-compiler, named `gnuxc` for short,\ntailored to run on Fedora as the build system.  It can create a free, portable,\nHurd-based, desktop OS from scratch.\n\nThere are two distinct components for building a working operating system:\n\n 1. *Sysroot libraries and cross-tools*:  These are packaged into RPMs for the\n    latest Fedora release.  They provide a GNU Hurd cross-compiling environment\n    on the build system, a standard base of software to run and link against\n    when compiling software for the operating system itself.  Their build files\n    are located in `specs` and `patches`.\n\n 2. *Operating system compilation rules*:  The options and procedures used to\n    build all of the OS software are contained in `make.pkg.d` and `patches`.\n    These files are mostly reusable on the GNU system to rebuild or upgrade\n    packages at runtime.\n\nA documentation file `BUILD.md` is provided to walk-through the entire build\nprocedure and how to test running the OS virtually.  All sample commands in the\ndocumentation can be pasted directly into a `bash` prompt.  Some of the\ncommands require your account to have `sudo` access, for example to install\nsystem packages or work with loop devices.\n\nThe file `RUNTIME.md` documents how to use and configure the main environments\nat runtime, especially the aspects that are unique to the `gnuxc` project.\n\n\n## Requirements\n\n*Operating system*:  Fedora 27 is the current release targeted by this code.\n\n*Disk space*:  At least 20 GiB of total available storage is required when\nbuilding everything on the same machine, plus however much space is desired for\ncreating a virtual disk image.  Using solid-state storage for the working\ndirectories will greatly improve build times.\n\n  * Installing only the packages necessary to build the complete OS requires\n    half a gigabyte.  This is the default action of the sysroot builder script.\n\n  * The sysroot builder script leaves RPMs, SRPMs, and source archives on the\n    disk after it finishes, requiring about 2 GiB of disk space.  (This space\n    can be reclaimed by removing the RPM build environment after installation.)\n\n  * The main working directory will use around 17 GiB after compilation.\n\n*Memory*:  The build is usually tested on systems with at least 8 GiB of RAM.\n\n*Processor(s)*:  The build has been tested on various CPUs ranging from 2-cores\nunder 2 GHz to 8-cores around 5 GHz.  Bigger is better.  The CPU should support\nhosting a virtual `x86` guest with KVM for best results with running the OS.\n\n\n## Install\n\nThe `gnuxc` source directory is self-contained, and it is functional from any\nfile system location.  To install it at a certain path, simply move or copy the\nwhole directory into place.\n\nAn unprivileged user account can run everything out of its home directory.  If\na shared install is desired, the `gnuxc` directory can be placed in a read-only\nsystem location such as `/usr/share/gnuxc`.\n\n\n## Usage\n\nCalling the main `GNUmakefile` will build the projects in your current working\ndirectory, or the path given to GNU Make with its `-C` option.\n\nAll commands in this documentation assume that your current directory is your\ndesired build path, so change to that directory before pasting any commands.\n\nThe given commands also assume your working directory is the `gnuxc` directory,\nunless you set the `SOURCE_DIR` variable to its location.  (Note that this\nvariable is only a convention for the example commands; it is never used in the\nactual project code.)  For example, run the following if `gnuxc` was installed\ninto `/usr/share`.\n\n    SOURCE_DIR=/usr/share/gnuxc\n\nSee `BUILD.md` for a detailed walk-through of building the complete OS.\n\n\n## License\n\nFiles written specifically for this cross-compilation system (i.e., not patches\nto other projects) are distributed under `GPLv3+` terms.  The full text of this\nlicense is included in a `COPYING` file under the `patches` directory.\n\nThe changes in the patch files should be considered under the same license as\nthe files they modify, to ease applying the patches upstream if appropriate.\nMost patches are too trivial to warrant any copyright or licensing concerns.\n\n\n## Quick Update Guide\n\nThe following steps can be run after updating the `gnuxc` files to rebuild the\nentire updated OS from scratch.  You *must* run the full build process at least\nonce before this will work.  See `BUILD.md` for complete instructions.\n\n**Remove old packages.**\n\n    rm -fr \"$(rpm -E %_rpmdir)\" \"$(rpm -E %_srcrpmdir)\"\n    sudo dnf -y remove 'gnuxc-*'\n    gmake clean\n\n**Update RPM source files.**\n\n    ln -fst \"$(rpm -E %_sourcedir)\" \"${SOURCE_DIR:-$PWD}\"/patches/*\n    ln -fst \"$(rpm -E %_specdir)\" \"${SOURCE_DIR:-$PWD}\"/specs/*\n\n**Rebuild the system.**  This assumes that you've mounted your target disk over\n`gnu-root` beforehand.  Don't forget to run the ownership correction step after\ninstallation.\n\n    time make -f \"${SOURCE_DIR:-.}/setup-sysroot.scm\" $(rpm -E %_smp_mflags) -k\n    time ( gmake download \u0026\u0026 gmake $(rpm -E %_smp_mflags) \u0026\u0026 gmake install )\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdm0-%2Fgnuxc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdm0-%2Fgnuxc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdm0-%2Fgnuxc/lists"}