{"id":16690193,"url":"https://github.com/aptmac/jmc-rpm","last_synced_at":"2025-07-08T14:07:53.895Z","repository":{"id":91219404,"uuid":"452882772","full_name":"aptmac/jmc-rpm","owner":"aptmac","description":"Prepares JMC and it's dependencies for building for copr, Fedora, RHEL, etc.","archived":false,"fork":false,"pushed_at":"2022-02-08T21:42:47.000Z","size":65,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-13T19:46:59.637Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"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/aptmac.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-27T23:46:56.000Z","updated_at":"2022-02-01T22:47:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"71e08e42-011c-4bd8-a84e-26ea8c0a5e39","html_url":"https://github.com/aptmac/jmc-rpm","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aptmac/jmc-rpm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aptmac%2Fjmc-rpm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aptmac%2Fjmc-rpm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aptmac%2Fjmc-rpm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aptmac%2Fjmc-rpm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aptmac","download_url":"https://codeload.github.com/aptmac/jmc-rpm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aptmac%2Fjmc-rpm/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264284381,"owners_count":23584678,"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":[],"created_at":"2024-10-12T15:50:41.973Z","updated_at":"2025-07-08T14:07:53.868Z","avatar_url":"https://github.com/aptmac.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Offline builds of JDK Mission Control (JMC)\n\nThis repository contains a number of scripts and patches that can be used to prepare for offline Maven builds of JMC.\n\nThe idea here is to fetch (and document) all of the dependencies required to build JMC, and stash them into a zip that can be used alongside the source code to build an RPM in an offline environment. To do so, there's a couple of things we'll need to do, namely: construct a local m2 repository that can be used for builds, and audit the logs to find out exactly where they were being sourced from (Maven central, Eclipse servers, etc.).\n\n## Generate Sources (local m2 repository)\nThis script (`generate-sources.sh`) is responsible for fetching and generating the sources required for local packaging of JMC. This portion will need to be run using an internet connection, because it's going to download the internet.\n\nUsage: `bash generate-sources.sh`\n\nRunning the included script will retrieve the JMC sources from GitHub, build all JMC parts and store their dependencies in a local m2 repository, and run the dependency reporter script on the piped logs to create a report of where all the external dependencies were downloaded from. The resulting local m2 repository and dependency report will then be zipped, and can be used for offline packaging.\n\n## Dependency Reporter\nOnce a local repository has been populated with jars and files from Eclipse and Maven central (\u0026 wherever dependencies are fetched from), we need a way to audit and track where each of these dependencies were sourced from. This is of course in an effort to make sure that each step of the build process uses trusted and appropriate dependencies.\n\nSee the `README.md` in `dependency-reporter` for more details.\n\n## Generate Provides\nBecause we're supplying a pre-populated repository for building JMC, the jars won't be delivered through traditional yum/dnf means. As a result, we should declare which jars we're bundling with the JMC application. The jars in question are specifically the ones that end up in the target /plugins folder, which are required for the execution of JMC. Use the `generate-provides.py` script to create a `provides.txt` file, in which the contents can easily be copy-pasta'd over into the JMC spec file. The input to this script is the output of the `tree` command on the target/**/\"JDK Mission Control\" folder. This will generate a long list of dependencies (mainly Eclipse-related) that we're supplying.\n\nUsage: `python generate-provides \u003ctree-output\u003e`\n\n## Build JMC offline (mock)\nThe idea here is that the spec file can be used along with `mock` to create local rpm builds of JMC (and optionally mock install it as well). Alternatively, the srpm could be passed off to copr or some other rpm build tool, where the resulting rpm could be installed onto your system.\n\nCreate the srpm: `fedpkg srpm`\n\nMock build the rpm, and install afterwards: `mock -r fedora-35-x86_64 *.src.rpm --postinstall`\n\nAll-in-one: `bash generate-sources.sh \u0026\u0026 fedpkg srpm \u0026\u0026 mock -r fedora-35-x86_64 *.src.rpm --postinstall`\n\n## Updating to the newest version of JMC\n\nJust a checklist to follow when preparing for a new version of a JMC rpm:\n\n- Update the tagged version in `generate-sources.sh`\n- Run `generate-sources.sh`\n- Update the sources file with the new local repository and jmc sources\n- Add the new provides information into the jmc.spec file\n- Update the version in the jmc.spec file\n- Update the changelog of the jmc.spec file\n- Create the new srpm\n- Build it.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faptmac%2Fjmc-rpm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faptmac%2Fjmc-rpm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faptmac%2Fjmc-rpm/lists"}