{"id":20410691,"url":"https://github.com/eleksir/slackmetarep","last_synced_at":"2026-05-11T15:02:37.491Z","repository":{"id":111277846,"uuid":"316947019","full_name":"eleksir/slackmetarep","owner":"eleksir","description":"Slackware repository metadata generator","archived":false,"fork":false,"pushed_at":"2022-08-27T14:41:54.000Z","size":57,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-15T13:10:16.670Z","etag":null,"topics":["slackware","slackware-repository-metadata"],"latest_commit_sha":null,"homepage":"","language":"Perl","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eleksir.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2020-11-29T12:33:02.000Z","updated_at":"2022-01-23T00:29:18.000Z","dependencies_parsed_at":"2023-06-01T13:00:52.499Z","dependency_job_id":null,"html_url":"https://github.com/eleksir/slackmetarep","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eleksir%2Fslackmetarep","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eleksir%2Fslackmetarep/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eleksir%2Fslackmetarep/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eleksir%2Fslackmetarep/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eleksir","download_url":"https://codeload.github.com/eleksir/slackmetarep/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241955039,"owners_count":20048405,"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":["slackware","slackware-repository-metadata"],"created_at":"2024-11-15T05:47:49.101Z","updated_at":"2026-05-11T15:02:32.449Z","avatar_url":"https://github.com/eleksir.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Slackmetarep - Slackware repository metadata generator\n\n## About\n\nSlackware repository metadata generator and upload server.\n\n## What for?\n\nFor receiving package uploads and creating metadata for slackware package repositories.\n\nMain idea is to use it in automated CI process.\n\n## How it works?\n\nUpload file to repository via PUT request:\n\n```bash\ncurl -X PUT --data-binary \"@/tmp/pv-1.6.20-x86_64-1_SBo.tgz\" -H 'auth: welcometothejungle' http://reposerver.tld/api/upload/repository/pv-1.6.20-x86_64-1_SBo.tgz\n```\n\nWhere **repository** is same that set in config.json and **file.ext** is package or piece of metadata\n\nWhen all chunks of metadata and package are uploaded, you may issue metagen command:\n\n```bash\ncurl -H 'repo: repository' 'http://reposerver.tld/api/metagen'\n```\n\n### What metadata?\n\nAs an example for building this application data format in AlienBob repository is taken. There is some different files\nthat contain pieces of information for generating metadata comptible with one used for Slackware-14.2 repositories.\n\nMore detailed information in [docs/metadata_en.md](docs/metadata_en.md)\n\nSo this tool needs these metadata chunks to properly write metadata:\n\n* packagename-version-arch-suffix.lst\n* packagename-version-arch-suffix.meta\n* packagename-version-arch-suffix.tgz.md5\n* packagename-version-arch-suffix.txt\n\nAdditional JSON-formatted metadata if required for buildinfo module to work. An example of it:\n\n```json\n{\n        \"dmenu\" : {\n                \"SRC\" : [\n                        \"dmenu-4.8.tar.gz\"\n                ]\n        },\n        \"docker\" : {\n                \"DEPS\" : [\n                        \"containerd\",\n                        \"docker-proxy\",\n                        \"tini\",\n                        \"google-go-lang\"\n                ],\n                \"GROUP\" : {\n                        \"docker\" : \"281\"\n                },\n                \"SRC\" : [\n                        \"docker-ce-19.03.13.tar.gz\"\n                ],\n                \"USER\" : {\n                        \"docker\" : {\n                                \"GROUP\" : \"docker\",\n                                \"HOME\" : \"/var/lib/docker\",\n                                \"SHELL\" : \"/bin/false\",\n                                \"UID\" : \"281\"\n                        }\n                }\n        },\n        \"perf\" : {\n                \"DEPS\" : [\n                        \"libunwind\",\n                        \"kernel-headers\",\n                        \"kernel-source\"\n                ]\n        }\n}\n```\n\nBut this data intended to help in package build script that prepares build environment, runs SlackBuilds, upload files\nto repo and kicks metadata generation process.\n\nAll metadata required and generated by this application is very-very close to one found in AlienBob's\n[repositories](http://www.slackware.com/~alien/slackbuilds/), except no changelogs and rss are generated.\n\n## Installation\n\nIn order to run this application, you need to \"bootstrap\" it - download and build all required dependencies and\nlibraries.\n\nYou'll need \"Development Tools\" or similar group of packages, perl, perl-devel, perl-local-lib, perl-app-cpanm,\nzlib-devel, openssl-devel, libdb4-devel (Berkeley DB devel), make.\n\nAfter installng required dependencies it is possible to run:\n\n```bash\nbash bootstrap.sh\n```\n\nand all libraries should be downloaded, built, tested and installed.\n\nThis application is tested and runs okay on Slackware64-14.2.\n\n## How to run this?\n\nVia [uWSGI](https://github.com/unbit/uwsgi) 2.0.19.\n\n```bash\n#!/bin/ash\n\nexec 2\u003e\u00261\n\nLOGDIR=/var/log/uwsgi\nPIDDIR=/var/run/uwsgi\nWORKDIR=/var/www/slackmetarep\n\nmkdir -p $LOGDIR\nchown -R apache:apache $LOGDIR\nmkdir -p $PIDDIR\n\ncd $WORKDIR\n\n# for 100% sure\nexport PERL5LIB=\"${WORKDIR}/vendor_perl\"\nexport PERL_LIB=\"$PERL5LIB\"\n\nexec sudo -u apache -g apache /usr/bin/uwsgi \\\n     --yaml ${WORKDIR}/slackmetarep.yaml \\\n     --pidfile ${PIDDIR}/slackmetarep.pid \\\n     --perl-local-lib ${PERL5LIB}\n\n```\n\nAs mentioned above this application tested on Slackware Linux 14.2 for x86_64. At least you'll need perl-AnyEvent,\nperl-Coro, perl-Devel-StackTrace, perl-local-lib, cpanminus, perl-common-sense, perl-Guard, perl-EV,\nperl-Canary-Stability, perl-event, uwsgi. You can get SlackBuilds for them on [SBo](https://slackbuilds.org/repository/14.2/).\nAfter installing all these packages you'll be able to bootatrap and run slackmetarep.\n\n## How to contribute?\n\nGot something about this project? Make PR.\n\n## Who should I thank?\n\nSlackware mainatiners for their continous labour. Notably [AlienBob](https://docs.slackware.com/wiki:user:alienbob) and\n[SBo team](https://slackbuilds.org/contributors/).\n\n## What is missing here?\n\nAt least proper documentaion of metadata format generated by this particular application. :)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feleksir%2Fslackmetarep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feleksir%2Fslackmetarep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feleksir%2Fslackmetarep/lists"}