Beispiel #1
0
static PyObject *
py_global_init(PyObject *self, PyObject *noarg)
{
    LR_UNUSED(self);
    LR_UNUSED(noarg);
    lr_global_init();
    Py_INCREF(Py_None);
    return Py_None;
}
Beispiel #2
0
CURL *
lr_get_curl_handle()
{
    CURL *h;

    lr_global_init();

    h = curl_easy_init();
    curl_easy_setopt(h, CURLOPT_FOLLOWLOCATION, 1);
    curl_easy_setopt(h, CURLOPT_MAXREDIRS, 6);
    curl_easy_setopt(h, CURLOPT_CONNECTTIMEOUT, LRO_CONNECTTIMEOUT_DEFAULT);
    curl_easy_setopt(h, CURLOPT_LOW_SPEED_TIME, LRO_LOWSPEEDTIME_DEFAULT);
    curl_easy_setopt(h, CURLOPT_LOW_SPEED_LIMIT, LRO_LOWSPEEDLIMIT_DEFAULT);
    return h;
}
Beispiel #3
0
void
init_librepo(void)
#endif
{
#if PY_MAJOR_VERSION >= 3
    PyObject *m = PyModule_Create(&moduledef);
#else
    PyObject *m = Py_InitModule("_librepo", librepo_methods);
#endif

    if (!m)
        INITERROR;

    struct module_state *st = GETSTATE(m);

    // Exceptions
    if (!init_exceptions()) {
        Py_DECREF(m);
        INITERROR;
    }

    st->error = LrErr_Exception;

    PyModule_AddObject(m, "LibrepoException", LrErr_Exception);

    // Objects

    // _librepo.Handle
    if (PyType_Ready(&Handle_Type) < 0)
        INITERROR;
    Py_INCREF(&Handle_Type);
    PyModule_AddObject(m, "Handle", (PyObject *)&Handle_Type);

    // _librepo.Result
    if (PyType_Ready(&Result_Type) < 0)
        INITERROR;
    Py_INCREF(&Result_Type);
    PyModule_AddObject(m, "Result", (PyObject *)&Result_Type);

    // _librepo.PackageTarget
    if (PyType_Ready(&PackageTarget_Type) < 0)
        INITERROR;
    Py_INCREF(&PackageTarget_Type);
    PyModule_AddObject(m, "PackageTarget", (PyObject *)&PackageTarget_Type);

    // Init module
    Py_AtExit(exit_librepo);

    // Module constants

#define PYMODULE_ADDINTCONSTANT(name) PyModule_AddIntConstant(m, #name, (name))
#define PYMODULE_ADDSTRCONSTANT(name) PyModule_AddStringConstant(m, #name, (name))

    // Version
    PYMODULE_ADDINTCONSTANT(LR_VERSION_MAJOR);
    PYMODULE_ADDINTCONSTANT(LR_VERSION_MINOR);
    PYMODULE_ADDINTCONSTANT(LR_VERSION_PATCH);
    PYMODULE_ADDSTRCONSTANT(LR_VERSION);

    // Handle options
    PYMODULE_ADDINTCONSTANT(LRO_UPDATE);
    PYMODULE_ADDINTCONSTANT(LRO_URLS);
    PYMODULE_ADDINTCONSTANT(LRO_MIRRORLIST);
    PYMODULE_ADDINTCONSTANT(LRO_MIRRORLISTURL);
    PYMODULE_ADDINTCONSTANT(LRO_METALINKURL);
    PYMODULE_ADDINTCONSTANT(LRO_LOCAL);
    PYMODULE_ADDINTCONSTANT(LRO_HTTPAUTH);
    PYMODULE_ADDINTCONSTANT(LRO_USERPWD);
    PYMODULE_ADDINTCONSTANT(LRO_PROXY);
    PYMODULE_ADDINTCONSTANT(LRO_PROXYPORT);
    PYMODULE_ADDINTCONSTANT(LRO_PROXYTYPE);
    PYMODULE_ADDINTCONSTANT(LRO_PROXYAUTH);
    PYMODULE_ADDINTCONSTANT(LRO_PROXYUSERPWD);
    PYMODULE_ADDINTCONSTANT(LRO_PROGRESSCB);
    PYMODULE_ADDINTCONSTANT(LRO_PROGRESSDATA);
    PYMODULE_ADDINTCONSTANT(LRO_MAXSPEED);
    PYMODULE_ADDINTCONSTANT(LRO_DESTDIR);
    PYMODULE_ADDINTCONSTANT(LRO_REPOTYPE);
    PYMODULE_ADDINTCONSTANT(LRO_CONNECTTIMEOUT);
    PYMODULE_ADDINTCONSTANT(LRO_IGNOREMISSING);
    PYMODULE_ADDINTCONSTANT(LRO_INTERRUPTIBLE);
    PYMODULE_ADDINTCONSTANT(LRO_USERAGENT);
    PYMODULE_ADDINTCONSTANT(LRO_FETCHMIRRORS);
    PYMODULE_ADDINTCONSTANT(LRO_MAXMIRRORTRIES);
    PYMODULE_ADDINTCONSTANT(LRO_MAXPARALLELDOWNLOADS);
    PYMODULE_ADDINTCONSTANT(LRO_MAXDOWNLOADSPERMIRROR);
    PYMODULE_ADDINTCONSTANT(LRO_VARSUB);
    PYMODULE_ADDINTCONSTANT(LRO_FASTESTMIRROR);
    PYMODULE_ADDINTCONSTANT(LRO_FASTESTMIRRORCACHE);
    PYMODULE_ADDINTCONSTANT(LRO_FASTESTMIRRORMAXAGE);
    PYMODULE_ADDINTCONSTANT(LRO_FASTESTMIRRORCB);
    PYMODULE_ADDINTCONSTANT(LRO_FASTESTMIRRORDATA);
    PYMODULE_ADDINTCONSTANT(LRO_LOWSPEEDTIME);
    PYMODULE_ADDINTCONSTANT(LRO_LOWSPEEDLIMIT);
    PYMODULE_ADDINTCONSTANT(LRO_GPGCHECK);
    PYMODULE_ADDINTCONSTANT(LRO_CHECKSUM);
    PYMODULE_ADDINTCONSTANT(LRO_YUMDLIST);
    PYMODULE_ADDINTCONSTANT(LRO_RPMMDDLIST);
    PYMODULE_ADDINTCONSTANT(LRO_YUMBLIST);
    PYMODULE_ADDINTCONSTANT(LRO_RPMMDBLIST);
    PYMODULE_ADDINTCONSTANT(LRO_HMFCB);
    PYMODULE_ADDINTCONSTANT(LRO_SSLVERIFYPEER);
    PYMODULE_ADDINTCONSTANT(LRO_SSLVERIFYHOST);
    PYMODULE_ADDINTCONSTANT(LRO_SSLCLIENTCERT);
    PYMODULE_ADDINTCONSTANT(LRO_SSLCLIENTKEY);
    PYMODULE_ADDINTCONSTANT(LRO_SSLCACERT);
    PYMODULE_ADDINTCONSTANT(LRO_IPRESOLVE);
    PYMODULE_ADDINTCONSTANT(LRO_ALLOWEDMIRRORFAILURES);
    PYMODULE_ADDINTCONSTANT(LRO_ADAPTIVEMIRRORSORTING);
    PYMODULE_ADDINTCONSTANT(LRO_GNUPGHOMEDIR);
    PYMODULE_ADDINTCONSTANT(LRO_FASTESTMIRRORTIMEOUT);
    PYMODULE_ADDINTCONSTANT(LRO_HTTPHEADER);
    PYMODULE_ADDINTCONSTANT(LRO_OFFLINE);
    PYMODULE_ADDINTCONSTANT(LRO_SENTINEL);

    // Handle info options
    PYMODULE_ADDINTCONSTANT(LRI_UPDATE);
    PYMODULE_ADDINTCONSTANT(LRI_URLS);
    PYMODULE_ADDINTCONSTANT(LRI_MIRRORLIST);
    PYMODULE_ADDINTCONSTANT(LRI_MIRRORLISTURL);
    PYMODULE_ADDINTCONSTANT(LRI_METALINKURL);
    PYMODULE_ADDINTCONSTANT(LRI_LOCAL);
    PYMODULE_ADDINTCONSTANT(LRI_PROGRESSCB);
    PYMODULE_ADDINTCONSTANT(LRI_PROGRESSDATA);
    PYMODULE_ADDINTCONSTANT(LRI_DESTDIR);
    PYMODULE_ADDINTCONSTANT(LRI_REPOTYPE);
    PYMODULE_ADDINTCONSTANT(LRI_USERAGENT);
    PYMODULE_ADDINTCONSTANT(LRI_YUMDLIST);
    PYMODULE_ADDINTCONSTANT(LRI_RPMMDDLIST);
    PYMODULE_ADDINTCONSTANT(LRI_YUMBLIST);
    PYMODULE_ADDINTCONSTANT(LRI_RPMMDBLIST);
    PYMODULE_ADDINTCONSTANT(LRI_FETCHMIRRORS);
    PYMODULE_ADDINTCONSTANT(LRI_MAXMIRRORTRIES);
    PYMODULE_ADDINTCONSTANT(LRI_VARSUB);
    PYMODULE_ADDINTCONSTANT(LRI_MIRRORS);
    PYMODULE_ADDINTCONSTANT(LRI_METALINK);
    PYMODULE_ADDINTCONSTANT(LRI_FASTESTMIRROR);
    PYMODULE_ADDINTCONSTANT(LRI_FASTESTMIRRORCACHE);
    PYMODULE_ADDINTCONSTANT(LRI_FASTESTMIRRORMAXAGE);
    PYMODULE_ADDINTCONSTANT(LRI_HMFCB);
    PYMODULE_ADDINTCONSTANT(LRI_SSLVERIFYPEER);
    PYMODULE_ADDINTCONSTANT(LRI_SSLVERIFYHOST);
    PYMODULE_ADDINTCONSTANT(LRI_SSLCLIENTCERT);
    PYMODULE_ADDINTCONSTANT(LRI_SSLCLIENTKEY);
    PYMODULE_ADDINTCONSTANT(LRI_SSLCACERT);
    PYMODULE_ADDINTCONSTANT(LRI_IPRESOLVE);
    PYMODULE_ADDINTCONSTANT(LRI_ALLOWEDMIRRORFAILURES);
    PYMODULE_ADDINTCONSTANT(LRI_ADAPTIVEMIRRORSORTING);
    PYMODULE_ADDINTCONSTANT(LRI_GNUPGHOMEDIR);
    PYMODULE_ADDINTCONSTANT(LRI_FASTESTMIRRORTIMEOUT);
    PYMODULE_ADDINTCONSTANT(LRI_HTTPHEADER);
    PYMODULE_ADDINTCONSTANT(LRI_OFFLINE);
    PYMODULE_ADDINTCONSTANT(LRI_LOWSPEEDTIME);
    PYMODULE_ADDINTCONSTANT(LRI_LOWSPEEDLIMIT);
    PYMODULE_ADDINTCONSTANT(LRI_SENTINEL);

    // Check options
    PYMODULE_ADDINTCONSTANT(LR_CHECK_GPG);
    PYMODULE_ADDINTCONSTANT(LR_CHECK_CHECKSUM);

    // Repo type
    PYMODULE_ADDINTCONSTANT(LR_YUMREPO);
    PYMODULE_ADDINTCONSTANT(LR_RPMMDREPO);
    PYMODULE_ADDINTCONSTANT(LR_SUSEREPO);
    PYMODULE_ADDINTCONSTANT(LR_DEBREPO);

    // Proxy type
    PYMODULE_ADDINTCONSTANT(LR_PROXY_HTTP);
    PYMODULE_ADDINTCONSTANT(LR_PROXY_HTTP_1_0);
    PYMODULE_ADDINTCONSTANT(LR_PROXY_SOCKS4);
    PYMODULE_ADDINTCONSTANT(LR_PROXY_SOCKS5);
    PYMODULE_ADDINTCONSTANT(LR_PROXY_SOCKS4A);
    PYMODULE_ADDINTCONSTANT(LR_PROXY_SOCKS5_HOSTNAME);

    // IpResolve type
    PYMODULE_ADDINTCONSTANT(LR_IPRESOLVE_WHATEVER);
    PYMODULE_ADDINTCONSTANT(LR_IPRESOLVE_V4);
    PYMODULE_ADDINTCONSTANT(LR_IPRESOLVE_V6);

    // Return codes
    PYMODULE_ADDINTCONSTANT(LRE_OK);
    PYMODULE_ADDINTCONSTANT(LRE_BADFUNCARG);
    PYMODULE_ADDINTCONSTANT(LRE_BADOPTARG);
    PYMODULE_ADDINTCONSTANT(LRE_UNKNOWNOPT);
    PYMODULE_ADDINTCONSTANT(LRE_CURLSETOPT);
    PYMODULE_ADDINTCONSTANT(LRE_ALREADYUSEDRESULT);
    PYMODULE_ADDINTCONSTANT(LRE_INCOMPLETERESULT);
    PYMODULE_ADDINTCONSTANT(LRE_CURLDUP);
    PYMODULE_ADDINTCONSTANT(LRE_CURL);
    PYMODULE_ADDINTCONSTANT(LRE_CURLM);
    PYMODULE_ADDINTCONSTANT(LRE_BADSTATUS);
    PYMODULE_ADDINTCONSTANT(LRE_TEMPORARYERR);
    PYMODULE_ADDINTCONSTANT(LRE_NOTLOCAL);
    PYMODULE_ADDINTCONSTANT(LRE_CANNOTCREATEDIR);
    PYMODULE_ADDINTCONSTANT(LRE_IO);
    PYMODULE_ADDINTCONSTANT(LRE_MLBAD);
    PYMODULE_ADDINTCONSTANT(LRE_MLXML);
    PYMODULE_ADDINTCONSTANT(LRE_BADCHECKSUM);
    PYMODULE_ADDINTCONSTANT(LRE_REPOMDXML);
    PYMODULE_ADDINTCONSTANT(LRE_NOURL);
    PYMODULE_ADDINTCONSTANT(LRE_CANNOTCREATETMP);
    PYMODULE_ADDINTCONSTANT(LRE_UNKNOWNCHECKSUM);
    PYMODULE_ADDINTCONSTANT(LRE_BADURL);
    PYMODULE_ADDINTCONSTANT(LRE_GPGNOTSUPPORTED);
    PYMODULE_ADDINTCONSTANT(LRE_GPGERROR);
    PYMODULE_ADDINTCONSTANT(LRE_BADGPG);
    PYMODULE_ADDINTCONSTANT(LRE_INCOMPLETEREPO);
    PYMODULE_ADDINTCONSTANT(LRE_INTERRUPTED);
    PYMODULE_ADDINTCONSTANT(LRE_SIGACTION);
    PYMODULE_ADDINTCONSTANT(LRE_ALREADYDOWNLOADED);
    PYMODULE_ADDINTCONSTANT(LRE_UNFINISHED);
    PYMODULE_ADDINTCONSTANT(LRE_SELECT);
    PYMODULE_ADDINTCONSTANT(LRE_OPENSSL);
    PYMODULE_ADDINTCONSTANT(LRE_MEMORY);
    PYMODULE_ADDINTCONSTANT(LRE_XMLPARSER);
    PYMODULE_ADDINTCONSTANT(LRE_CBINTERRUPTED);
    PYMODULE_ADDINTCONSTANT(LRE_REPOMD);
    PYMODULE_ADDINTCONSTANT(LRE_VALUE);
    PYMODULE_ADDINTCONSTANT(LRE_NOTSET);
    PYMODULE_ADDINTCONSTANT(LRE_FILE);
    PYMODULE_ADDINTCONSTANT(LRE_KEYFILE);
    PYMODULE_ADDINTCONSTANT(LRE_UNKNOWNERROR);

    // Result option
    PYMODULE_ADDINTCONSTANT(LRR_YUM_REPO);
    PYMODULE_ADDINTCONSTANT(LRR_RPMMD_REPOMD);
    PYMODULE_ADDINTCONSTANT(LRR_YUM_TIMESTAMP);
    PYMODULE_ADDINTCONSTANT(LRR_RPMMD_REPO);
    PYMODULE_ADDINTCONSTANT(LRR_YUM_REPOMD);
    PYMODULE_ADDINTCONSTANT(LRR_RPMMD_TIMESTAMP);
    PYMODULE_ADDINTCONSTANT(LRR_SENTINEL);

    // Checksums
    PYMODULE_ADDINTCONSTANT(LR_CHECKSUM_UNKNOWN);
    PYMODULE_ADDINTCONSTANT(LR_CHECKSUM_MD5);
    PYMODULE_ADDINTCONSTANT(LR_CHECKSUM_SHA1);
    PYMODULE_ADDINTCONSTANT(LR_CHECKSUM_SHA224);
    PYMODULE_ADDINTCONSTANT(LR_CHECKSUM_SHA256);
    PYMODULE_ADDINTCONSTANT(LR_CHECKSUM_SHA384);
    PYMODULE_ADDINTCONSTANT(LR_CHECKSUM_SHA512);

    // Transfer statuses
    PYMODULE_ADDINTCONSTANT(LR_TRANSFER_SUCCESSFUL);
    PYMODULE_ADDINTCONSTANT(LR_TRANSFER_ALREADYEXISTS);
    PYMODULE_ADDINTCONSTANT(LR_TRANSFER_ERROR);

    // Fastest mirror stages
    PYMODULE_ADDINTCONSTANT(LR_FMSTAGE_INIT);
    PYMODULE_ADDINTCONSTANT(LR_FMSTAGE_CACHELOADING);
    PYMODULE_ADDINTCONSTANT(LR_FMSTAGE_CACHELOADINGSTATUS);
    PYMODULE_ADDINTCONSTANT(LR_FMSTAGE_DETECTION);
    PYMODULE_ADDINTCONSTANT(LR_FMSTAGE_FINISHING);
    PYMODULE_ADDINTCONSTANT(LR_FMSTAGE_STATUS);

    // Callbacks return values
    PYMODULE_ADDINTCONSTANT(LR_CB_OK);
    PYMODULE_ADDINTCONSTANT(LR_CB_ABORT);
    PYMODULE_ADDINTCONSTANT(LR_CB_ERROR);

    // Init librepo library
    lr_global_init();

#if PY_MAJOR_VERSION >= 3
    return m;
#endif
}