{"id":21149361,"url":"https://github.com/graalvm/mandrel-packaging","last_synced_at":"2026-04-01T23:01:45.311Z","repository":{"id":37793125,"uuid":"238974893","full_name":"graalvm/mandrel-packaging","owner":"graalvm","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-12T09:09:59.000Z","size":819,"stargazers_count":6,"open_issues_count":8,"forks_count":9,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-03-28T00:42:33.930Z","etag":null,"topics":["hacktoberfest","mandrel"],"latest_commit_sha":null,"homepage":"","language":"Java","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/graalvm.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-02-07T16:35:12.000Z","updated_at":"2026-02-12T09:10:02.000Z","dependencies_parsed_at":"2023-02-14T08:02:52.240Z","dependency_job_id":"2e88827c-1ea0-4b9f-806f-e5320b6276bf","html_url":"https://github.com/graalvm/mandrel-packaging","commit_stats":null,"previous_names":[],"tags_count":83,"template":false,"template_full_name":null,"purl":"pkg:github/graalvm/mandrel-packaging","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graalvm%2Fmandrel-packaging","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graalvm%2Fmandrel-packaging/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graalvm%2Fmandrel-packaging/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graalvm%2Fmandrel-packaging/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/graalvm","download_url":"https://codeload.github.com/graalvm/mandrel-packaging/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graalvm%2Fmandrel-packaging/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292781,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: 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":["hacktoberfest","mandrel"],"created_at":"2024-11-20T09:34:59.959Z","updated_at":"2026-04-01T23:01:45.291Z","avatar_url":"https://github.com/graalvm.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mandrel Packaging\n\nThis repo contains all the necessary scripts and tools to build [Mandrel](https://github.com/graalvm/mandrel).\n\n## Building mandrelJDK locally\n\n```shell\nexport JAVA_HOME=/opt/jvms/openjdk-11.0.8_10\n$JAVA_HOME/bin/java -ea build.java --mx-home ~/code/mx --mandrel-repo ~/code/mandrel\n```\n\nwhere:\n* `JAVA_HOME` is the path to the OpenJDK you want to use for building mandrel.\n* `--mx-home` is the path where you cloned https://github.com/graalvm/mx. Defaults to `/opt/mx`.\n* `--mandrel-repo` is the path where you cloned https://github.com/graalvm/mandrel. Defaults to `/tmp/mandrel`.\n\nThis should print something similar to:\n```\nINFO [build] Building!\nbuild: Checking SubstrateVM requirements for building ...\nbuild: Checking SubstrateVM requirements for building ...\nbuild: Checking SubstrateVM requirements for building ...\nbuild: Checking SubstrateVM requirements for building ...\nINFO [build] Creating JDK!\nINFO [build] Congratulations you successfully built Mandrel 20.1.0.1.Final-3-g9abceb5ac7d based on Java 11.0.8+10\nINFO [build] You can find your newly built native-image enabled JDK under ./mandrel-java11-20.1.0.1.Final-3-g9abceb5ac7d\n```\n\n### More options\n\n#### Generic\n* `--verbose` enables verbose logging.\n* `--skip-clean` skips cleaning before building.\n* `--skip-java` skips building java bits.\n* `--skip-native` skips building native bits.\n* `--archive-suffix` defines the suffix for creating an archive with the new JDK. By default no archive is built. Accepted values are `tar.gz` and `tarxz` (slower but with better compresion).\n* `--dependencies` overrides `mx` dependencies, e.g., `--dependencies id=ASM_7.1,version=7.1.0.redhat-00001,sha1=41bc48bf913569bd001cc132624f811d91004af4,sourceSha1=8c938bc977786f0f3964b394e28f31e726769bac`\n\n#### Mandrel related\n* `--mandrel-home` sets the path where you want mandrel to be installed, after completion you will be\n able to use this as `JAVA_HOME` or/and `GRAALVM_HOME` in your projects (e.g. quarkus). \n By default mandrel is built in the current directory and the version-based path gets printed at the end.\n* `--mandrel-version` defines the version to be shown when running `native-image --version` (e.g. 20.1.0). Defaults to the result of `git describe` or `git rev-parse --short HEAD` in `mandrel-repo`.\n\n#### Maven-related\n\n* `--maven-install` generates maven artifacts and installs them to the local maven repository.\n* `--maven-deploy` generates maven artifacts, installs them to the local maven repository and deploys them.\n* `--maven-version` specifies the version (e.g., `20.1.0.2-0-redhat-00000`) to be used in the maven artifacts (required by `--maven-install` and `--maven-deploy`).\n* `--maven-proxy` specifies a maven proxy to use.\n* `--maven-repo-id` specifies the maven repository ID for deploying maven artifacts. Required by `--maven-deploy`.\n* `--maven-url` specifies the maven url for deploying maven artifacts. Required by `--maven-deploy`.\n* `--maven-local-repository` specifies the local repository. Defaults to `~/.m2/repository`.\n* `--maven-home` specifies the maven installation path in case one wants to use a different maven version than the one provided by the system. \n\n## Building mandrelJDK java parts separately from native parts\n\nIf your build infrastructure requires building java parts separately from native parts you can use the following steps.\n\n**Step 1: Build the java parts**\n```shell\n$JAVA_HOME/bin/java -ea build.java --mx-home ~/code/mx --mandrel-repo ~/code/mandrel --mandrel-home /tmp/java_step --skip-native\n```\n\n**Step 2: Build the java parts**\n```shell\n/tmp/java_step/bin/java -ea build.java --mx-home ~/code/mx --mandrel-repo ~/code/mandrel --skip-java --skip-clean\n```\n\nAfter the last step you can delete the intermediate JDK with:\n```shell\nrm -rf /tmp/java_step\n```\n\n## Building mandrelJDK on a Mac using a custom build of OpenJDK\n\nMandrel can be built on a Mac using a custom build of OpenJDK that contains static libraries.\n\nIf you want to base Mandrel on a custom JDK,\nit's important to build the JDK's macOS bundles first,\nand then extract them into a directory structure that mirrors pre-built JDKs.\nFor example:\n\n```shell\n$ make bundles\n$ cd build/\u003cconf-name\u003e/bundles\n$ tar -xzvpf *_bin.tar.gz\n$ tar -xzvpf *_bin-static-libs.tar.gz\n$ ./\u003cjdk-folder\u003e/Contents/Home/bin/java --version\n...\nOpenJDK 64-Bit Server VM (...)\n```\n\nMandrel should then be built setting `JAVA_HOME` to the macOS-specific java home directory.\nE.g.\n\n```shell\nexport JAVA_HOME=\u003cpath-to-jdk-source\u003e/build/\u003cconf-name\u003e/bundles/\u003cjdk-folder\u003e/Contents/Home\n$JAVA_HOME/bin/java -ea build.java --mx-home ~/code/mx --mandrel-repo ~/code/mandrel\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgraalvm%2Fmandrel-packaging","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgraalvm%2Fmandrel-packaging","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgraalvm%2Fmandrel-packaging/lists"}