{ "info": { "author": "Marius Gedminas", "author_email": "marius@gedmin.as", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License (GPL)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "ppa-copy-packages\n=================\n\nCopy published PPA packages from one release pocket to another.\n\nWe build a few Debian packages containing various helpful scripts (i.e. the\npackages have Architecture: all and do not need to be recompiled when system\nlibrary versions change). We want them to be available for all supported\nUbuntu releases. So we upload a version built for the oldest supported LTS\nrelease to our PPA and use this script to copy the built packages to all other\nreleases in the same PPA::\n\n ppa-copy-packages -O pov -s xenial -t bionic disco -p pov-admin-tools ...\n\nI do the same thing with gtimelog, which is a pure Python program and also\ndoesn't need to be recompiled::\n\n ppa-copy-packages -O gtimelog -s xenial -t bionic disco -p gtimelog\n\nAnd sometimes, when I'm feeling brave, I try this trick with C programs such as\npwsafe::\n\n ppa-copy-packages -O mg -s xenial -t bionic disco -p pwsafe\n\nAuthentication is taken care of by launchpadlib_, which opens a browser window\non first run and asks you to log in and authorize its access token (which is\nstored in the system keyring for your convenience).\n\n\n.. _launchpadlib: https://pypi.org/project/launchpadlib/\n\n\nSynopsis\n--------\n\n::\n\n $ ppa-copy-packages -h\n usage: ppa-copy-packages [-h] [--version] [-v] [-q] [-n] [-w] [-b]\n [--debug] -O OWNER [-N NAME] -p NAME [NAME ...]\n -s SERIES -t SERIES [SERIES ...]\n [--architectures ARCH [ARCH ...]]\n [--pocket POCKET] [--launchpad-instance INSTANCE]\n\n copy Ubuntu PPA packages from one release pocket to another\n\n optional arguments:\n -h, --help show this help message and exit\n --version show program's version number and exit\n -v, --verbose More verbose output (can be stacked)\n -q, --quiet Less verbose output\n -n, --dry-run Don't make any changes\n -w, --wait Wait for pending packages to be published\n -b, --browse Open the PPA page in a browser, don't do anything\n else.\n --debug Very verbose logging, for debugging this script\n\n PPA selection:\n -O OWNER, --owner OWNER\n owner of the PPA\n -N NAME, --name NAME name of the PPA (default: ppa)\n -p NAME [NAME ...], --packages NAME [NAME ...]\n names of packages to copy\n -s SERIES, --source-series SERIES\n source series (e.g. xenial)\n -t SERIES [SERIES ...], --target-series SERIES [SERIES ...]\n target series (e.g. bionic)\n --architectures ARCH [ARCH ...]\n architectures to check for published binaries (default\n is ['i386', 'amd64'])\n --pocket POCKET pocket name (you probably don't want to change this;\n default is Release)\n --launchpad-instance INSTANCE\n Launchpad instance (default: production)\n\n\nChangelog\n==========\n\n1.9.1 (2019-09-06)\n------------------\n\n- Fix TypeError: unhashable type: 'Entry'.\n\n\n1.9 (2019-09-05)\n----------------\n\n- First release to PyPI.\n- Unified three older scripts I had lying around with hardcoded configuration.\n- Replaced hardcoded configuration with command-line arguments.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mgedmin/ppa-copy-packages", "keywords": "ubuntu ppa launchpad copy automation", "license": "GPL", "maintainer": "", "maintainer_email": "", "name": "ppa-copy-packages", "package_url": "https://pypi.org/project/ppa-copy-packages/", "platform": "", "project_url": "https://pypi.org/project/ppa-copy-packages/", "project_urls": { "Homepage": "https://github.com/mgedmin/ppa-copy-packages" }, "release_url": "https://pypi.org/project/ppa-copy-packages/1.9.1/", "requires_dist": [ "launchpadlib" ], "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "summary": "Copy Ubuntu PPA packages from one release pocket to another", "version": "1.9.1" }, "last_serial": 5791493, "releases": { "1.9": [ { "comment_text": "", "digests": { "md5": "e3673843f940a1032b7664becce45b06", "sha256": "fccfc1bdc104cfb1987ef6b29a48a9bc5c010b6a92c0ccd3da96d2f8eb7b5e61" }, "downloads": -1, "filename": "ppa_copy_packages-1.9-py2-none-any.whl", "has_sig": false, "md5_digest": "e3673843f940a1032b7664becce45b06", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 8098, "upload_time": "2019-09-05T15:41:01", "url": "https://files.pythonhosted.org/packages/c5/73/0a83795658a8005037babf75caf6735104748d26625e19614b87a05edce9/ppa_copy_packages-1.9-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1f8e13dc7f91c1e914f5731656bc871c", "sha256": "3623c3320206e40c2ab8438d737f8dec41750b65ca2dd970b2616e867c9bb7b4" }, "downloads": -1, "filename": "ppa-copy-packages-1.9.tar.gz", "has_sig": false, "md5_digest": "1f8e13dc7f91c1e914f5731656bc871c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 9568, "upload_time": "2019-09-05T15:41:04", "url": "https://files.pythonhosted.org/packages/a1/e6/ea589d529aad0b593036036da53c4ae708b565bbcd04ab6d99f9f25a8f1f/ppa-copy-packages-1.9.tar.gz" } ], "1.9.1": [ { "comment_text": "", "digests": { "md5": "e54b639209201c58c693d3ad11ac6ceb", "sha256": "0cd54c415857d7e5646b9eaed752757f71606245986742c19e0ac19da908bf28" }, "downloads": -1, "filename": "ppa_copy_packages-1.9.1-py2-none-any.whl", "has_sig": false, "md5_digest": "e54b639209201c58c693d3ad11ac6ceb", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 8153, "upload_time": "2019-09-06T10:30:11", "url": "https://files.pythonhosted.org/packages/7c/a7/b4fbc32182f5ccb98fa6ace99c1dd95546d39d594b657f1fab061a4c42ac/ppa_copy_packages-1.9.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59ea7c9d1eaeb0ea042a8e36e59ee209", "sha256": "886564b2ae85ec6f2f2e2999aff2b98b61e896291e5e5a4bf11717614dacaa8b" }, "downloads": -1, "filename": "ppa-copy-packages-1.9.1.tar.gz", "has_sig": false, "md5_digest": "59ea7c9d1eaeb0ea042a8e36e59ee209", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 9660, "upload_time": "2019-09-06T10:30:13", "url": "https://files.pythonhosted.org/packages/2e/16/c7829141a404c93c0aa2a9b3a9bed09a571fa245b1078ffdbfd6952f2f04/ppa-copy-packages-1.9.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e54b639209201c58c693d3ad11ac6ceb", "sha256": "0cd54c415857d7e5646b9eaed752757f71606245986742c19e0ac19da908bf28" }, "downloads": -1, "filename": "ppa_copy_packages-1.9.1-py2-none-any.whl", "has_sig": false, "md5_digest": "e54b639209201c58c693d3ad11ac6ceb", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 8153, "upload_time": "2019-09-06T10:30:11", "url": "https://files.pythonhosted.org/packages/7c/a7/b4fbc32182f5ccb98fa6ace99c1dd95546d39d594b657f1fab061a4c42ac/ppa_copy_packages-1.9.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59ea7c9d1eaeb0ea042a8e36e59ee209", "sha256": "886564b2ae85ec6f2f2e2999aff2b98b61e896291e5e5a4bf11717614dacaa8b" }, "downloads": -1, "filename": "ppa-copy-packages-1.9.1.tar.gz", "has_sig": false, "md5_digest": "59ea7c9d1eaeb0ea042a8e36e59ee209", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 9660, "upload_time": "2019-09-06T10:30:13", "url": "https://files.pythonhosted.org/packages/2e/16/c7829141a404c93c0aa2a9b3a9bed09a571fa245b1078ffdbfd6952f2f04/ppa-copy-packages-1.9.1.tar.gz" } ] }