https://github.com/eleksir/slackmetarep
Slackware repository metadata generator
https://github.com/eleksir/slackmetarep
slackware slackware-repository-metadata
Last synced: about 1 month ago
JSON representation
Slackware repository metadata generator
- Host: GitHub
- URL: https://github.com/eleksir/slackmetarep
- Owner: eleksir
- License: mit
- Created: 2020-11-29T12:33:02.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-08-27T14:41:54.000Z (almost 4 years ago)
- Last Synced: 2025-01-15T13:10:16.670Z (over 1 year ago)
- Topics: slackware, slackware-repository-metadata
- Language: Perl
- Homepage:
- Size: 55.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Slackmetarep - Slackware repository metadata generator
## About
Slackware repository metadata generator and upload server.
## What for?
For receiving package uploads and creating metadata for slackware package repositories.
Main idea is to use it in automated CI process.
## How it works?
Upload file to repository via PUT request:
```bash
curl -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
```
Where **repository** is same that set in config.json and **file.ext** is package or piece of metadata
When all chunks of metadata and package are uploaded, you may issue metagen command:
```bash
curl -H 'repo: repository' 'http://reposerver.tld/api/metagen'
```
### What metadata?
As an example for building this application data format in AlienBob repository is taken. There is some different files
that contain pieces of information for generating metadata comptible with one used for Slackware-14.2 repositories.
More detailed information in [docs/metadata_en.md](docs/metadata_en.md)
So this tool needs these metadata chunks to properly write metadata:
* packagename-version-arch-suffix.lst
* packagename-version-arch-suffix.meta
* packagename-version-arch-suffix.tgz.md5
* packagename-version-arch-suffix.txt
Additional JSON-formatted metadata if required for buildinfo module to work. An example of it:
```json
{
"dmenu" : {
"SRC" : [
"dmenu-4.8.tar.gz"
]
},
"docker" : {
"DEPS" : [
"containerd",
"docker-proxy",
"tini",
"google-go-lang"
],
"GROUP" : {
"docker" : "281"
},
"SRC" : [
"docker-ce-19.03.13.tar.gz"
],
"USER" : {
"docker" : {
"GROUP" : "docker",
"HOME" : "/var/lib/docker",
"SHELL" : "/bin/false",
"UID" : "281"
}
}
},
"perf" : {
"DEPS" : [
"libunwind",
"kernel-headers",
"kernel-source"
]
}
}
```
But this data intended to help in package build script that prepares build environment, runs SlackBuilds, upload files
to repo and kicks metadata generation process.
All metadata required and generated by this application is very-very close to one found in AlienBob's
[repositories](http://www.slackware.com/~alien/slackbuilds/), except no changelogs and rss are generated.
## Installation
In order to run this application, you need to "bootstrap" it - download and build all required dependencies and
libraries.
You'll need "Development Tools" or similar group of packages, perl, perl-devel, perl-local-lib, perl-app-cpanm,
zlib-devel, openssl-devel, libdb4-devel (Berkeley DB devel), make.
After installng required dependencies it is possible to run:
```bash
bash bootstrap.sh
```
and all libraries should be downloaded, built, tested and installed.
This application is tested and runs okay on Slackware64-14.2.
## How to run this?
Via [uWSGI](https://github.com/unbit/uwsgi) 2.0.19.
```bash
#!/bin/ash
exec 2>&1
LOGDIR=/var/log/uwsgi
PIDDIR=/var/run/uwsgi
WORKDIR=/var/www/slackmetarep
mkdir -p $LOGDIR
chown -R apache:apache $LOGDIR
mkdir -p $PIDDIR
cd $WORKDIR
# for 100% sure
export PERL5LIB="${WORKDIR}/vendor_perl"
export PERL_LIB="$PERL5LIB"
exec sudo -u apache -g apache /usr/bin/uwsgi \
--yaml ${WORKDIR}/slackmetarep.yaml \
--pidfile ${PIDDIR}/slackmetarep.pid \
--perl-local-lib ${PERL5LIB}
```
As mentioned above this application tested on Slackware Linux 14.2 for x86_64. At least you'll need perl-AnyEvent,
perl-Coro, perl-Devel-StackTrace, perl-local-lib, cpanminus, perl-common-sense, perl-Guard, perl-EV,
perl-Canary-Stability, perl-event, uwsgi. You can get SlackBuilds for them on [SBo](https://slackbuilds.org/repository/14.2/).
After installing all these packages you'll be able to bootatrap and run slackmetarep.
## How to contribute?
Got something about this project? Make PR.
## Who should I thank?
Slackware mainatiners for their continous labour. Notably [AlienBob](https://docs.slackware.com/wiki:user:alienbob) and
[SBo team](https://slackbuilds.org/contributors/).
## What is missing here?
At least proper documentaion of metadata format generated by this particular application. :)