Class: RPM::Package
- Inherits:
-
Object
- Object
- RPM::Package
- Defined in:
- ext/rpm/package.c
Class Method Summary (collapse)
- + (Object) clear_cache
-
+ (Package) create
Creates a new package object.
-
+ (Package) load
Create a new package object from data.
-
+ (Package) new
Creates a Package object from a rpm located on disk.
-
+ (Package) open
Creates a Package object from a rpm located on disk.
- + (Object) use_cache=
Instance Method Summary (collapse)
-
- (Object) []
Access a header entry.
- - (Object) _dump
-
- (Object) add_binary
Add a binary value to the package header.
-
- (Object) add_dependency
Add a dependency to the package header.
-
- (Object) add_int32
Add a int32 value to the package header.
-
- (Object) add_string
Add a binary value to the package header.
-
- (Object) add_string_array
Add a list of strings to the package header.
-
- (String) arch
This package architecture.
-
- (Array<RPM::Changelog>) changelog
Changelog of the package as an array of entries.
-
- (Array<RPM::Conflict>) conflicts
Conflict list for this package.
- - (Object) copy_to
-
- (Object) delete_tag
Deletes a tag of the package header.
- - (Object) dump
-
- (Array<RPM::File>) files
File list for this package.
- - (Object) inspect
-
- (String) name
This package name.
-
- (Array<RPM::Obsolete>) obsoletes
Obsoletes list for this package.
-
- (Array<RPM::Provide>) provides
Provides list for this package.
-
- (Array<RPM::Require>) requires
Require list for this package.
-
- (Number) signature
This package signature.
- - (Object) sprintf
-
- (String) to_s
String representation of the package: "name-version-release-arch".
-
- (Version) version
Version for this package.
Class Method Details
+ (Object) clear_cache
+ (Package) create
Creates a new package object
|
# File 'ext/rpm/package.c'
static VALUE
package_s_create(VALUE klass, VALUE name, VALUE version)
{
Header hdr;
VALUE pkg;
if ((TYPE(name) != T_STRING) || (
rb_obj_is_kind_of(version, rpm_cVersion) == Qfalse)) {
rb_raise(rb_eTypeError, "illegal argument type");
}
|
+ (Package) load
Create a new package object from data
|
# File 'ext/rpm/package.c'
static VALUE
package_s_load(VALUE klass, VALUE str)
{
VALUE pkg, temp;
Header hdr;
FD_t fd;
Check_Type(str, T_STRING);
temp = ruby_rpm_make_temp_name();
fd = Fopen(RSTRING_PTR((temp)), "wb+");
Fwrite(RSTRING_PTR((str)), RSTRING_LEN(str), 1, fd);
Fseek(fd, 0, SEEK_SET);
hdr = headerRead(fd, HEADER_MAGIC_YES);
Fclose(fd);
unlink(RSTRING_PTR((temp)));
if (!hdr) {
rb_raise(rb_eArgError, "unable load RPM::Package");
}
|
+ (Package) new
Creates a Package object from a rpm located on disk
|
# File 'ext/rpm/package.c'
static VALUE
package_s_open(VALUE klass, VALUE filename)
{
VALUE pkg = Qnil;
FD_t fd;
Header hdr;
rpmRC rc;
if (TYPE(filename) != T_STRING) {
rb_raise(rb_eTypeError, "illegal argument type");
}
|
+ (Package) open
Creates a Package object from a rpm located on disk
|
# File 'ext/rpm/package.c'
static VALUE
package_s_open(VALUE klass, VALUE filename)
{
VALUE pkg = Qnil;
FD_t fd;
Header hdr;
rpmRC rc;
if (TYPE(filename) != T_STRING) {
rb_raise(rb_eTypeError, "illegal argument type");
}
|
+ (Object) use_cache=
Instance Method Details
- (Object) []
Access a header entry
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_aref(VALUE pkg, VALUE tag)
{
#if RPM_VERSION_CODE < RPM_VERSION(4,6,0) || RPM_VERSION_CODE >= RPM_VERSION(5,0,0)
rpmTag tagval = NUM2INT(tag);
VALUE val = Qnil;
void* data;
rpmTagType type;
int_32 count;
register int i;
int ary_p = 0;
int i18n_p = 0;
if (!headerGetEntryMinMemory(RPM_HEADER(pkg), tagval, (hTYP_t)&type,
(hPTR_t*)&data, (hCNT_t)&count)) {
goto leave;
}
|
- (Object) _dump
- (Object) add_binary
Add a binary value to the package header
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_add_binary(VALUE pkg,VALUE tag,VALUE val)
{
if ((TYPE(val) != T_STRING)) {
rb_raise(rb_eTypeError, "illegal argument type");
}
|
- (Object) add_dependency
Add a dependency to the package header
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_add_dependency(VALUE pkg,VALUE dep)
{
int nametag;
int versiontag;
int flagstag;
char* name;
char* evr;
int flag;
if ( rb_obj_is_kind_of(dep, rpm_cDependency) == Qfalse ) {
rb_raise(rb_eTypeError, "illegal argument type");
}
|
- (Object) add_int32
Add a int32 value to the package header
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_add_int32(VALUE pkg,VALUE tag,VALUE val)
{
int_32 v;
if (TYPE(val) == T_FIXNUM) {
v = (int_32) FIX2LONG(val);
}
|
- (Object) add_string
Add a binary value to the package header
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_add_string(VALUE pkg,VALUE tag,VALUE val)
{
if ((TYPE(val) != T_STRING)) {
rb_raise(rb_eTypeError, "illegal argument type");
}
|
- (Object) add_string_array
Add a list of strings to the package header
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_add_string_array(VALUE pkg,VALUE tag,VALUE val)
{
if ((TYPE(val) != T_STRING)) {
rb_raise(rb_eTypeError, "illegal argument type");
}
|
- (String) arch
This package architecture
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_get_arch(VALUE pkg)
{
VALUE arch;
const char* a;
headerNEVRA(RPM_HEADER(pkg), NULL, NULL, NULL, NULL, &a);
arch = a ? rb_str_new2(a) : Qnil;
return arch;
}
|
- (Array<RPM::Changelog>) changelog
Changelog of the package as an array of entries
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_get_changelog(VALUE pkg)
{
#if RPM_VERSION_CODE < RPM_VERSION(4,6,0) || RPM_VERSION_CODE >= RPM_VERSION(5,0,0)
VALUE cl;
register int i;
char **times,**names,**texts;
rpmTagType timetype,nametype,texttype;
int_32 count;
cl = rb_ary_new();
if (!headerGetEntryMinMemory(RPM_HEADER(pkg), RPMTAG_CHANGELOGTIME, (hTYP_t)&timetype,
(hPTR_t*)×, (hCNT_t)&count)) {
return cl;
}
|
- (Array<RPM::Conflict>) conflicts
Conflict list for this package
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_get_conflicts(VALUE pkg)
{
return rpm_package_get_dependency(pkg,RPMTAG_CONFLICTNAME,RPMTAG_CONFLICTVERSION,RPMTAG_CONFLICTFLAGS,rpm_conflict_new);
}
|
- (Object) copy_to
- (Object) delete_tag
Deletes a tag of the package header
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_delete_tag(VALUE pkg, VALUE tag)
{
rpmTag tagval = NUM2INT(tag);
VALUE val;
val = rpm_package_aref(pkg, tag);
headerRemoveEntry(RPM_HEADER(pkg), tagval);
return val;
}
|
- (Object) dump
- (Array<RPM::File>) files
File list for this package
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_get_files(VALUE pkg)
{
VALUE files;
VALUE basenames = rpm_package_aref(pkg, INT2NUM(RPMTAG_BASENAMES));
VALUE dirnames = rpm_package_aref(pkg, INT2NUM(RPMTAG_DIRNAMES));
VALUE diridxs = rpm_package_aref(pkg, INT2NUM(RPMTAG_DIRINDEXES));
VALUE statelist = rpm_package_aref(pkg, INT2NUM(RPMTAG_FILESTATES));
VALUE flaglist = rpm_package_aref(pkg, INT2NUM(RPMTAG_FILEFLAGS));
VALUE sizelist = rpm_package_aref(pkg, INT2NUM(RPMTAG_FILESIZES));
VALUE modelist = rpm_package_aref(pkg, INT2NUM(RPMTAG_FILEMODES));
VALUE mtimelist = rpm_package_aref(pkg, INT2NUM(RPMTAG_FILEMTIMES));
VALUE rdevlist = rpm_package_aref(pkg, INT2NUM(RPMTAG_FILERDEVS));
VALUE linklist = rpm_package_aref(pkg, INT2NUM(RPMTAG_FILELINKTOS));
VALUE md5list = rpm_package_aref(pkg, INT2NUM(RPMTAG_FILEMD5S));
VALUE ownerlist = rpm_package_aref(pkg, INT2NUM(RPMTAG_FILEUSERNAME));
VALUE grouplist = rpm_package_aref(pkg, INT2NUM(RPMTAG_FILEGROUPNAME));
register int i;
files = rb_ary_new();
if (!NIL_P(basenames)) {
for (i = 0; i < RARRAY_LEN(basenames); i++) {
static char buf[BUFSIZ];
VALUE file;
buf[0] = '\0';
stpcpy(stpcpy(buf, RSTRING_PTR((RARRAY_PTR(dirnames))[
NUM2INT(RARRAY_PTR(diridxs)[i])])),
RSTRING_PTR((RARRAY_PTR(basenames)[i])));
file = rpm_file_new(
buf,
RSTRING_PTR((RARRAY_PTR(md5list)[i])),
(NIL_P(linklist)
? NULL
: RSTRING_PTR((RARRAY_PTR(linklist)[i]))),
NUM2UINT(RARRAY_PTR(sizelist)[i]),
NUM2INT(RARRAY_PTR(mtimelist)[i]),
(NIL_P(ownerlist)
? NULL
: RSTRING_PTR((RARRAY_PTR(ownerlist)[i]))),
(NIL_P(grouplist)
? NULL
: RSTRING_PTR((RARRAY_PTR(grouplist)[i]))),
NUM2UINT(RARRAY_PTR(rdevlist)[i]),
NUM2UINT(RARRAY_PTR(modelist)[i]),
(NIL_P(flaglist)
? RPMFILE_NONE
: NUM2INT(RARRAY_PTR(flaglist)[i])),
(NIL_P(statelist)
? RPMFILE_STATE_NORMAL
: NUM2INT(RARRAY_PTR(statelist)[i])));
rb_ary_push(files, file);
}
|
- (Object) inspect
- (String) name
This package name
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_get_name(VALUE pkg)
{
VALUE name;
const char* n;
headerNVR(RPM_HEADER(pkg), &n, NULL, NULL);
name = n ? rb_str_new2(n) : Qnil;
return name;
}
|
- (Array<RPM::Obsolete>) obsoletes
Obsoletes list for this package
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_get_obsoletes(VALUE pkg)
{
return rpm_package_get_dependency(pkg,RPMTAG_OBSOLETENAME,RPMTAG_OBSOLETEVERSION,RPMTAG_OBSOLETEFLAGS,rpm_obsolete_new);
}
|
- (Array<RPM::Provide>) provides
Provides list for this package
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_get_provides(VALUE pkg)
{
return rpm_package_get_dependency(pkg,RPMTAG_PROVIDENAME,RPMTAG_PROVIDEVERSION,RPMTAG_PROVIDEFLAGS,rpm_provide_new);
}
|
- (Array<RPM::Require>) requires
Require list for this package
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_get_requires(VALUE pkg)
{
return rpm_package_get_dependency(pkg,RPMTAG_REQUIRENAME,RPMTAG_REQUIREVERSION,RPMTAG_REQUIREFLAGS,rpm_require_new);
}
|
- (Number) signature
This package signature
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_get_signature(VALUE pkg)
{
VALUE signature = rb_ivar_get(pkg, id_signature);
if (NIL_P(signature)) {
char *sigmd5;
sigmd5 = headerSprintf(RPM_HEADER(pkg),"%{sigmd5}
|
- (Object) sprintf
- (String) to_s
String representation of the package: "name-version-release-arch"
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_to_s(VALUE pkg)
{
char buf[BUFSIZ];
VALUE name = rpm_package_get_name(pkg);
VALUE ver = rpm_package_get_version(pkg);
VALUE arch = rpm_package_get_arch(pkg);
if (NIL_P(name)) {
buf[0] = '\0';
}
|
- (Version) version
Version for this package
|
# File 'ext/rpm/package.c'
VALUE
rpm_package_get_version(VALUE pkg)
{
VALUE ver;
const char* v;
const char* r;
VALUE e;
headerNVR(RPM_HEADER(pkg), NULL, &v, &r);
if (!v) {
ver = Qnil;
}
|