mirror of
https://github.com/lilydjwg/archrepo2.git
synced 2025-03-10 12:02:43 +00:00
setup.py and directory structure change
and README switched to rst
This commit is contained in:
parent
1f206e12d4
commit
051427c7b1
12 changed files with 122 additions and 41 deletions
25
README.mkd
25
README.mkd
|
@ -1,25 +0,0 @@
|
||||||
USAGE
|
|
||||||
====
|
|
||||||
Edit a copy of `archrepo.ini` and then run `./archreposrv <config>`.
|
|
||||||
|
|
||||||
DEPENDENCIES
|
|
||||||
====
|
|
||||||
|
|
||||||
* Python, >= 3.3, with sqlite support
|
|
||||||
* distribute
|
|
||||||
* tornado, > 2.4.1
|
|
||||||
* pyinotify, tested with 0.9.4
|
|
||||||
* winterpy (add `pylib` to `$PYTHONPATH`)
|
|
||||||
|
|
||||||
NOTE
|
|
||||||
====
|
|
||||||
* relative symlinks may be broken when moving to the right architecture directory
|
|
||||||
|
|
||||||
TODO
|
|
||||||
====
|
|
||||||
* [high] adding and then removing it before adding complete will result in not-in-database removing
|
|
||||||
* [high] remove winterpy dependency
|
|
||||||
* [middle] `setup.py` support
|
|
||||||
* [middle] disable "any" architecture via config
|
|
||||||
* [low] use one common command queue (now one each repo)
|
|
||||||
* [low] verify packages
|
|
36
README.rst
Normal file
36
README.rst
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
USAGE
|
||||||
|
=====
|
||||||
|
|
||||||
|
Install::
|
||||||
|
|
||||||
|
python3 setup.py install
|
||||||
|
|
||||||
|
Edit a copy of ``archrepo.ini.example`` and then run
|
||||||
|
``archreposrv <config>``.
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
============
|
||||||
|
|
||||||
|
- Python, >= 3.3, with sqlite support
|
||||||
|
- distribute
|
||||||
|
- tornado, > 2.4.1
|
||||||
|
- pyinotify, tested with 0.9.4
|
||||||
|
- winterpy (add ``pylib`` to ``$PYTHONPATH``)
|
||||||
|
|
||||||
|
NOTE
|
||||||
|
====
|
||||||
|
|
||||||
|
- relative symlinks may be broken when moving to the right architecture
|
||||||
|
directory
|
||||||
|
|
||||||
|
TODO
|
||||||
|
====
|
||||||
|
|
||||||
|
- [high] adding and then removing it before adding complete will result
|
||||||
|
in not-in-database removing
|
||||||
|
- [high] remove winterpy dependency
|
||||||
|
- [middle] disable "any" architecture via config
|
||||||
|
- [low] fork to background
|
||||||
|
- [low] use one common command queue (now one each repo)
|
||||||
|
- [low] verify packages
|
||||||
|
|
46
archrepo.ini
Normal file
46
archrepo.ini
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
[multi]
|
||||||
|
# Names of repository config sections, if you have multiple repositories.
|
||||||
|
# The names should be delimited by commas. And this value is default to
|
||||||
|
# "repository".
|
||||||
|
# config names are the same as below, and will act as default if not specified
|
||||||
|
# in that repository config.
|
||||||
|
repos: repository
|
||||||
|
|
||||||
|
# You can specify a "info-db" here to have them all in the same repo
|
||||||
|
#info-db: /home/lilydjwg/tmpfs/test/pkginfo.db
|
||||||
|
|
||||||
|
[repository]
|
||||||
|
# Name of the repository. In below example the Pacman repository db file name
|
||||||
|
# will be archlinuxcn.db.tar.gz
|
||||||
|
name: archlinuxcn
|
||||||
|
|
||||||
|
# Path to the repository - directory should normally contain any, i686 and
|
||||||
|
# x86_64. The server will monitor files in it with inotify. If you have lots of
|
||||||
|
# files in this directory, remember to update the configuration of inotify.
|
||||||
|
path: /home/lilydjwg/tmpfs/test
|
||||||
|
|
||||||
|
# A database to store package info. Default to ${path}/pkginfo.db
|
||||||
|
#info-db: /home/lilydjwg/tmpfs/test/pkginfo.db
|
||||||
|
|
||||||
|
# Specify where to find these commands
|
||||||
|
#command-add: repo-add
|
||||||
|
#command-remove: repo-remove
|
||||||
|
|
||||||
|
# By enabling auto-rename, the server will automatically rename the package
|
||||||
|
# files according to .PKGINFO, and move them under the correct architecture
|
||||||
|
# directory. Default is on.
|
||||||
|
#auto-rename: on
|
||||||
|
|
||||||
|
# Seconds before actually running the command. 10s by default.
|
||||||
|
#wait-time: 10
|
||||||
|
wait-time: 3
|
||||||
|
|
||||||
|
# Notification type to use when done. Currently available: simple-udp, null
|
||||||
|
notification-type: simple-udp
|
||||||
|
notification-address: 127.0.0.1:9900
|
||||||
|
notification-secret: JiUHuGY987G76djItfOskOj
|
||||||
|
|
||||||
|
# If for any reason, you don't want actual database creation or update:
|
||||||
|
#without-db: true
|
||||||
|
|
||||||
|
# vim: se ft=dosini:
|
3
archrepo2/__init__.py
Normal file
3
archrepo2/__init__.py
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
__version__ = '0.3.1'
|
|
@ -1,5 +1,4 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# vim:fileencoding=utf-8
|
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import configparser
|
import configparser
|
||||||
|
@ -10,7 +9,9 @@ from tornado.ioloop import IOLoop
|
||||||
from myutils import enable_pretty_logging
|
from myutils import enable_pretty_logging
|
||||||
enable_pretty_logging(logging.DEBUG)
|
enable_pretty_logging(logging.DEBUG)
|
||||||
|
|
||||||
from repomon import repomon
|
from .repomon import repomon
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
def check_and_get_repos(config):
|
def check_and_get_repos(config):
|
||||||
repos = config['multi'].get('repos', 'repository')
|
repos = config['multi'].get('repos', 'repository')
|
||||||
|
@ -26,7 +27,8 @@ def check_and_get_repos(config):
|
||||||
|
|
||||||
return repos
|
return repos
|
||||||
|
|
||||||
def main(conffile):
|
def main():
|
||||||
|
conffile = sys.argv[1]
|
||||||
config = configparser.ConfigParser(default_section='multi')
|
config = configparser.ConfigParser(default_section='multi')
|
||||||
config.read(conffile)
|
config.read(conffile)
|
||||||
repos = check_and_get_repos(config)
|
repos = check_and_get_repos(config)
|
||||||
|
@ -34,12 +36,14 @@ def main(conffile):
|
||||||
notifiers = [repomon(config[repo]) for repo in repos]
|
notifiers = [repomon(config[repo]) for repo in repos]
|
||||||
|
|
||||||
ioloop = IOLoop.instance()
|
ioloop = IOLoop.instance()
|
||||||
|
logger.info('starting archreposrv.')
|
||||||
try:
|
try:
|
||||||
ioloop.start()
|
ioloop.start()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
ioloop.close()
|
ioloop.close()
|
||||||
for notifier in notifiers:
|
for notifier in notifiers:
|
||||||
notifier.stop()
|
notifier.stop()
|
||||||
|
print()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main(sys.argv[1])
|
main()
|
|
@ -20,8 +20,8 @@ from tornado.ioloop import IOLoop
|
||||||
import tornado.process
|
import tornado.process
|
||||||
|
|
||||||
import archpkg
|
import archpkg
|
||||||
import pkgreader
|
from . import pkgreader
|
||||||
import dbutil
|
from . import dbutil
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
from subprocess import getoutput
|
from subprocess import getoutput
|
||||||
allpkgs = getoutput(r"locate -be --regex '\.pkg\.tar\.xz$'").split('\n')
|
allpkgs = getoutput(r"locate -be --regex '\.pkg\.tar\.xz$'").split('\n')
|
||||||
|
|
||||||
from pkgreader import readpkg
|
from archrepo2.pkgreader import readpkg
|
||||||
for p in allpkgs:
|
for p in allpkgs:
|
||||||
print('reading package:', p)
|
print('reading package:', p)
|
||||||
d = readpkg(p)
|
d = readpkg(p)
|
|
@ -10,11 +10,8 @@ import logging
|
||||||
from myutils import enable_pretty_logging
|
from myutils import enable_pretty_logging
|
||||||
enable_pretty_logging(logging.DEBUG)
|
enable_pretty_logging(logging.DEBUG)
|
||||||
|
|
||||||
top_dir = os.path.normpath(os.path.join(__file__, '../..'))
|
import archrepo2.pkgreader
|
||||||
sys.path.append(top_dir)
|
from archrepo2.dbutil import *
|
||||||
|
|
||||||
import pkgreader
|
|
||||||
from dbutil import *
|
|
||||||
|
|
||||||
def main(conffile):
|
def main(conffile):
|
||||||
config = configparser.ConfigParser()
|
config = configparser.ConfigParser()
|
||||||
|
|
|
@ -9,10 +9,7 @@ import logging
|
||||||
from myutils import enable_pretty_logging
|
from myutils import enable_pretty_logging
|
||||||
enable_pretty_logging(logging.DEBUG)
|
enable_pretty_logging(logging.DEBUG)
|
||||||
|
|
||||||
top_dir = os.path.normpath(os.path.join(__file__, '../..'))
|
from archrepo2.dbutil import *
|
||||||
sys.path.append(top_dir)
|
|
||||||
|
|
||||||
from dbutil import *
|
|
||||||
|
|
||||||
def main(dbname, reponame):
|
def main(dbname, reponame):
|
||||||
db = sqlite3.connect(dbname, isolation_level=None)
|
db = sqlite3.connect(dbname, isolation_level=None)
|
||||||
|
|
23
setup.py
Normal file
23
setup.py
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from setuptools import setup, find_packages
|
||||||
|
import archrepo2
|
||||||
|
|
||||||
|
setup(
|
||||||
|
name = 'archrepo2',
|
||||||
|
version = archrepo2.__version__,
|
||||||
|
packages = find_packages(),
|
||||||
|
install_requires = ['tornado>2.4.1', 'pyinotify'],
|
||||||
|
entry_points = {
|
||||||
|
'console_scripts': [
|
||||||
|
'archreposrv = archrepo2.archreposrv:main',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
author = 'lilydjwg',
|
||||||
|
author_email = 'lilydjwg@gmail.com',
|
||||||
|
description = 'Arch Linux repository manager',
|
||||||
|
license = 'MIT',
|
||||||
|
keywords = 'archlinux linux',
|
||||||
|
url = 'https://github.com/lilydjwg/archrepo2',
|
||||||
|
)
|
Loading…
Add table
Reference in a new issue