dependency.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package alpm
  2. /*
  3. #include <alpm.h>
  4. */
  5. import "C"
  6. import (
  7. "fmt"
  8. "unsafe"
  9. )
  10. // FindSatisfier searches a DbList for a package that satisfies depstring
  11. // Example "glibc>=2.12"
  12. func (l DbList) FindSatisfier(depstring string) (*Package, error) {
  13. cDepString := C.CString(depstring)
  14. defer C.free(unsafe.Pointer(cDepString))
  15. pkgList := (*C.struct___alpm_list_t)(unsafe.Pointer(l.list))
  16. pkgHandle := (*C.struct___alpm_handle_t)(unsafe.Pointer(l.handle.ptr))
  17. ptr := C.alpm_find_dbs_satisfier(pkgHandle, pkgList, cDepString)
  18. if ptr == nil {
  19. return nil,
  20. fmt.Errorf("unable to satisfy dependency %s in Dblist", depstring)
  21. }
  22. return &Package{ptr, l.handle}, nil
  23. }
  24. // FindSatisfier finds a package that satisfies depstring from PkgList
  25. func (l PackageList) FindSatisfier(depstring string) (*Package, error) {
  26. cDepString := C.CString(depstring)
  27. defer C.free(unsafe.Pointer(cDepString))
  28. pkgList := (*C.struct___alpm_list_t)(unsafe.Pointer(l.list))
  29. ptr := C.alpm_find_satisfier(pkgList, cDepString)
  30. if ptr == nil {
  31. return nil,
  32. fmt.Errorf("unable to find dependency %s in PackageList", depstring)
  33. }
  34. return &Package{ptr, l.handle}, nil
  35. }