{"id":15532817,"url":"https://github.com/tito/osxrelocator","last_synced_at":"2026-03-10T09:40:44.528Z","repository":{"id":25210639,"uuid":"28634642","full_name":"tito/osxrelocator","owner":"tito","description":"OSX library/sdk relocator tool. Forked from Cerebro/GStreamer project","archived":false,"fork":false,"pushed_at":"2015-12-15T07:36:29.000Z","size":5,"stargazers_count":8,"open_issues_count":1,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-28T23:16:53.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/tito.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":"2014-12-30T14:59:15.000Z","updated_at":"2022-11-04T19:49:03.000Z","dependencies_parsed_at":"2022-07-24T04:46:11.306Z","dependency_job_id":null,"html_url":"https://github.com/tito/osxrelocator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tito/osxrelocator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tito%2Fosxrelocator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tito%2Fosxrelocator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tito%2Fosxrelocator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tito%2Fosxrelocator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tito","download_url":"https://codeload.github.com/tito/osxrelocator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tito%2Fosxrelocator/sbom","scorecard":{"id":887889,"data":{"date":"2025-08-11","repo":{"name":"github.com/tito/osxrelocator","commit":"4411fe99c7a4f66f75c852d6c0ce85f7c56e210f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.9,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Code-Review","score":2,"reason":"Found 1/5 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 1 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-24T10:40:47.194Z","repository_id":25210639,"created_at":"2025-08-24T10:40:47.194Z","updated_at":"2025-08-24T10:40:47.194Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30328915,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T05:25:20.737Z","status":"ssl_error","status_checked_at":"2026-03-10T05:25:17.430Z","response_time":106,"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":[],"created_at":"2024-10-02T11:33:16.979Z","updated_at":"2026-03-10T09:40:44.509Z","avatar_url":"https://github.com/tito.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"OSX library relocator\n=====================\n\n.. note::\n\n\tThis tool came originaly from the GStreamer project. It has been extracted\n\tto works without cerebro, and can be used in multiples situations.\n\tDocumentation cames from the GStreamer's OSX deployment instructions too.\n\tThanks a lot to the GStreamer project!\n\nInstallation\n------------\n\n\tpip install osxrelocator\n\nUsage\n-----\n\n\tosxrelocator.py [options] directory old_prefix new_prefix\n\nDescription\n-----------\n\nOn Darwin operating systems, the dynamic linker doesn't locate dependent\ndynamic libraries using their leaf name, but instead it uses full paths, which\nmakes it harder to relocate them as explained in the DYNAMIC LIBRARY LOADING\nsection of dyld's man page:\n\n\u003e Unlike many other operating systems, Darwin does not locate dependent dynamic\n\u003e libraries via their leaf file name. Instead the full path to each dylib is\n\u003e used (e.g. /usr/lib/libSystem.B.dylib). But there are times when a full path\n\u003e is not appropriate; for instance, may want your binaries to be installable in\n\u003e anywhere on the disk.\n\nWe can get the list of paths used by an object file to locate its dependent\ndynamic libraries using otool::\n\n\t$ otool -L /Library/Frameworks/GStreamer.framework/Commands/gst-launch-0.10 \n\t/Library/Frameworks/GStreamer.framework/Commands/gst-launch-0.10:\n\t /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 550.43.0)\n\t /Library/Frameworks/GStreamer.framework/Versions/0.10/x86/lib/libgstreamer-0.10.0.dylib (compatibility version 31.0.0, current version 31.0.0)\n\t /Library/Frameworks/GStreamer.framework/Versions/0.10/x86/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.8.0)\n\nThis full path is extracted from the dynamic library *install name*, a path\nthat is used by the linker to determine its location. The install name of a\nlibrary can be retrieved with otool too::\n\n\t$ otool -D /Library/Frameworks/GStreamer.framework/Libraries/libgstreamer-0.10.dylib \n\t/Library/Frameworks/GStreamer.framework/Libraries/libgstreamer-0.10.dylib:\n\t/Library/Frameworks/GStreamer.framework/Versions/0.10/x86/lib/libgstreamer-0.10.0.dylib\n\nAny object file that links to the dynamic library `gstreamer-0.10` will use the\npath\n`/Library/Frameworks/GStreamer.framework/Versions/0.10/x86/lib/libgstreamer-0.10.0.dylib`\nto locate it.\n\nSince working exclusively with full paths wouldn't let us install our binaries\nanywhere in the path, the linker provides a mechanism of string substitution,\nadding three variables that can be used as a path prefix. At runtime the linker\nwill replace them with the generated path for the prefix. These variables are\n`@executable_path`, `@loader_path` and `@rpath`, described in depth in the\nDYNAMIC LIBRARY LOADING section of dyld's man page.\n\nFor our purpose we will use the `@executable_path  variable, which is replaced\nwith a fixed path, the path to the directory containing the main executable:\n`/Applications/MyApp.app/Contents/MacOS`. The `@loader_path` variable can't be\nused in our scope, because it will be replaced with the path to the directory\ncontaining the mach-o binary that loaded the dynamic library, which can vary.\n\nTherefore, in order to relocate the SDK we will need to replace all paths\ncontaining `/Library/Frameworks/GStreamer.framework/` with\n`@executable_path/../Frameworks/GStreamer.framework/`, which can be done using\nthe `install_name_tool` utility\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftito%2Fosxrelocator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftito%2Fosxrelocator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftito%2Fosxrelocator/lists"}