]> git.saurik.com Git - apt.git/commitdiff
[ABI] merged the libudev-dlopen branch, this allows to pass
authorMichael Vogt <michael.vogt@ubuntu.com>
Thu, 23 Jul 2009 08:41:38 +0000 (10:41 +0200)
committerMichael Vogt <michael.vogt@ubuntu.com>
Thu, 23 Jul 2009 08:41:38 +0000 (10:41 +0200)
"apt-udev-auto" to Acquire::Cdrom::mount and the cdrom method will
dynamically find/mount the cdrom device (if libhal is available)

1  2 
apt-pkg/cdrom.cc
apt-pkg/cdrom.h
apt-pkg/makefile
debian/changelog
methods/makefile

diff --combined apt-pkg/cdrom.cc
index 8796805bbab301af77679a7c31aeaf5c7b021c04,8be26e2bcabddd2138e3762bbae2f6b707dbe1c7..72d8e4d4174af464d9c9c8ddc6f9361f20eb0441
@@@ -16,7 -16,7 +16,7 @@@
  #include <unistd.h>
  #include <stdio.h>
  #include <algorithm>
+ #include <dlfcn.h>
  
  #include "indexcopy.h"
  
@@@ -160,7 -160,7 +160,7 @@@ bool pkgCdrom::FindPackages(string CD
     
     return !_error->PendingError();
  }
 -
 +                                                                      /*}}}*/
  // Score - We compute a 'score' for a path                            /*{{{*/
  // ---------------------------------------------------------------------
  /* Paths are scored based on how close they come to what I consider
@@@ -210,6 -210,7 +210,6 @@@ int pkgCdrom::Score(string Path
  
     return Res;
  }
 -
                                                                        /*}}}*/
  // DropBinaryArch - Dump dirs with a string like /binary-<foo>/               /*{{{*/
  // ---------------------------------------------------------------------
@@@ -247,7 -248,8 +247,7 @@@ bool pkgCdrom::DropBinaryArch(vector<st
     
     return true;
  }
 -
 -
 +                                                                      /*}}}*/
  // DropRepeats - Drop repeated files resulting from symlinks          /*{{{*/
  // ---------------------------------------------------------------------
  /* Here we go and stat every file that we found and strip dup inodes. */
@@@ -302,6 -304,7 +302,6 @@@ bool pkgCdrom::DropRepeats(vector<strin
     return true;
  }
                                                                        /*}}}*/
 -
  // ReduceSourceList - Takes the path list and reduces it              /*{{{*/
  // ---------------------------------------------------------------------
  /* This takes the list of source list expressed entires and collects
@@@ -510,8 -513,9 +510,8 @@@ bool pkgCdrom::WriteSourceList(string N
     
     return true;
  }
 -
 -
 -bool pkgCdrom::Ident(string &ident, pkgCdromStatus *log)
 +                                                                      /*}}}*/
 +bool pkgCdrom::Ident(string &ident, pkgCdromStatus *log)              /*{{{*/
  {
     stringstream msg;
  
  
     return true;
  }
 -
 -
 -bool pkgCdrom::Add(pkgCdromStatus *log)
 +                                                                      /*}}}*/
 +bool pkgCdrom::Add(pkgCdromStatus *log)                                       /*{{{*/
  {
     stringstream msg;
  
  
     return true;
  }
 -
 -
 -pkgUdevCdromDevices::pkgUdevCdromDevices() 
 +                                                                      /*}}}*/
++pkgUdevCdromDevices::pkgUdevCdromDevices()                                    /*{{{*/
+    : libudev_handle(NULL)
+ {
+ }
++                                                                      /*}}}*/
+ bool
 -pkgUdevCdromDevices::Dlopen()
++pkgUdevCdromDevices::Dlopen()                                         /*{{{*/
+ {
+    // alread open
+    if(libudev_handle != NULL)
+       return true;
+    // see if we can get libudev
+    void *h = ::dlopen("libudev.so.0", RTLD_LAZY);
+    if(h == NULL)
+       return false;
+    // get the pointers to the udev structs
+    libudev_handle = h;
+    udev_new = (udev* (*)(void)) dlsym(h, "udev_new");
+    udev_enumerate_add_match_property = (int (*)(udev_enumerate*, const char*, const char*))dlsym(h, "udev_enumerate_add_match_property");
+    udev_enumerate_scan_devices = (int (*)(udev_enumerate*))dlsym(h, "udev_enumerate_scan_devices");
+    udev_enumerate_get_list_entry = (udev_list_entry* (*)(udev_enumerate*))dlsym(h, "udev_enumerate_get_list_entry");
+    udev_device_new_from_syspath = (udev_device* (*)(udev*, const char*))dlsym(h, "udev_device_new_from_syspath");
+    udev_enumerate_get_udev = (udev* (*)(udev_enumerate*))dlsym(h, "udev_enumerate_get_udev");
+    udev_list_entry_get_name = (const char* (*)(udev_list_entry*))dlsym(h, "udev_list_entry_get_name");
+    udev_device_get_devnode = (const char* (*)(udev_device*))dlsym(h, "udev_device_get_devnode");
+    udev_enumerate_new = (udev_enumerate* (*)(udev*))dlsym(h, "udev_enumerate_new");
+    udev_list_entry_get_next = (udev_list_entry* (*)(udev_list_entry*))dlsym(h, "udev_list_entry_get_next");
+    udev_device_get_property_value = (const char* (*)(udev_device *, const char *))dlsym(h, "udev_device_get_property_value");
+    return true;
+ }
 -
++                                                                      /*}}}*/
+ vector<CdromDevice>
 -pkgUdevCdromDevices::Scan()
++pkgUdevCdromDevices::Scan()                                             /*{{{*/
+ {
+    vector<CdromDevice> cdrom_devices;
+    struct udev_enumerate *enumerate;
+    struct udev_list_entry *l, *devices;
+    struct udev *udev_ctx;
+    if(libudev_handle == NULL)
+       return cdrom_devices;
+    udev_ctx = udev_new();
+    enumerate = udev_enumerate_new (udev_ctx);
+    udev_enumerate_add_match_property(enumerate, "ID_CDROM", "1");
+    udev_enumerate_scan_devices (enumerate);
+    devices = udev_enumerate_get_list_entry (enumerate);
+    for (l = devices; l != NULL; l = udev_list_entry_get_next (l))
+    {
+       CdromDevice cdrom;
+       struct udev_device *udevice;
+       udevice = udev_device_new_from_syspath (udev_enumerate_get_udev (enumerate), udev_list_entry_get_name (l));
+       if (udevice == NULL)
+        continue;
+       const char* devnode = udev_device_get_devnode(udevice);
+       const char* mountpath = udev_device_get_property_value(udevice, "FSTAB_DIR");
+       // fill in the struct
+       cdrom.DeviceName = string(devnode);
+       if (mountpath) {
+        cdrom.MountPath = mountpath;
+        string s = string(mountpath);
+        cdrom.Mounted = IsMounted(s);
+       } else {
+        cdrom.Mounted = false;
+        cdrom.MountPath = "";
+       }
+       cdrom_devices.push_back(cdrom);
+    } 
+    return cdrom_devices;
+ }
++                                                                      /*}}}*/
 -
 -pkgUdevCdromDevices::~pkgUdevCdromDevices()
++pkgUdevCdromDevices::~pkgUdevCdromDevices()                             /*{{{*/
+ { 
+    dlclose(libudev_handle);
+ }
++                                                                      /*}}}*/
diff --combined apt-pkg/cdrom.h
index 608cb0e2fa5fa993785f909691c1c9fdbb413ef9,13e7203f41c7016e67cebd3cc97e76b4635ff33f..14ca1d8104dc163136e02a68426fca9a0283fdc6
@@@ -8,7 -8,7 +8,7 @@@
  
  using namespace std;
  
 -class pkgCdromStatus
 +class pkgCdromStatus                                                  /*{{{*/
  {
   protected:
     int totalSteps;
@@@ -29,8 -29,8 +29,8 @@@
     // Progress indicator for the Index rewriter
     virtual OpProgress* GetOpProgress() {return NULL; };
  };
 -
 -class pkgCdrom 
 +                                                                      /*}}}*/
 +class pkgCdrom                                                                /*{{{*/
  {
   protected:
     enum {
     bool Ident(string &ident, pkgCdromStatus *log);
     bool Add(pkgCdromStatus *log);
  };
 +                                                                      /*}}}*/
  
 -struct CdromDevice
+ // class that uses libudev to find cdrom devices dynamically
 -
 -class pkgUdevCdromDevices
++struct CdromDevice                                                    /*{{{*/
+ {
+    string DeviceName;
+    bool Mounted;
+    string MountPath;
+ };
 -
 -
++                                                                      /*}}}*/
++class pkgUdevCdromDevices                                             /*{{{*/
+ {
+  protected:
+    // libudev dlopen stucture
+    void *libudev_handle;
+    struct udev* (*udev_new)(void);
+    int (*udev_enumerate_add_match_property)(struct udev_enumerate *udev_enumerate, const char *property, const char *value);
+    int (*udev_enumerate_scan_devices)(struct udev_enumerate *udev_enumerate);
+    struct udev_list_entry* (*udev_enumerate_get_list_entry)(struct udev_enumerate *udev_enumerate);
+    struct udev_device* (*udev_device_new_from_syspath)(struct udev *udev, const char *syspath);
+    struct udev* (*udev_enumerate_get_udev)(struct udev_enumerate *udev_enumerate);
+    const char* (*udev_list_entry_get_name)(struct udev_list_entry *list_entry);
+    const char* (*udev_device_get_devnode)(struct udev_device *udev_device);
+    struct udev_enumerate *(*udev_enumerate_new) (struct udev *udev);
+    struct udev_list_entry *(*udev_list_entry_get_next)(struct udev_list_entry *list_entry);
+    const char* (*udev_device_get_property_value)(struct udev_device *udev_device, const char *key);
+    // end libudev dlopen
+    
+  public:
+    pkgUdevCdromDevices();
+    virtual ~pkgUdevCdromDevices();
+    // try to open 
+    bool Dlopen();
+    vector<CdromDevice> Scan();
+ };
++                                                                      /*}}}*/
  #endif
diff --combined apt-pkg/makefile
index 059f8532bcca95fc38cf8689a5508556d4288f67,387151baf7aed74e8be883e2f95b917bd6979006..92ef58967a98f1183384b5b02746710530ee220f
@@@ -13,9 -13,9 +13,9 @@@ include ../buildlib/defaults.ma
  # methods/makefile - FIXME
  LIBRARY=apt-pkg
  LIBEXT=$(GLIBC_VER)$(LIBSTDCPP_VER)
 -MAJOR=4.7
 +MAJOR=4.8
  MINOR=0
- SLIBS=$(PTHREADLIB) $(INTLLIBS) -lutil
+ SLIBS=$(PTHREADLIB) $(INTLLIBS) -lutil -ldl
  APT_DOMAIN:=libapt-pkg$(MAJOR)
  
  # Source code for the contributed non-core things
diff --combined debian/changelog
index ff1483dfc491b824c05c2ada045f44dd44c2dbcc,cce7fc0f779b39aabb829c454178af66d134f20b..30edf07577cdac9047e57607397389912299e7ba
@@@ -1,54 -1,22 +1,54 @@@
 -apt (0.7.22) unstable; urgency=low
 +apt (0.7.22) UNRELEASED; urgency=low
  
 -  * add Acquire::Cdrom::mount "apt-udev-auto" magic to allow
 -    dynamically finding the cdrom device
 -
 - -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 22 Jul 2009 18:00:53 +0200
 -
 -apt (0.7.21) UNRELEASED; urgency=low
 -
 -  [ Osamu Aoki ]
 -  * Updated cron script to support backups by hardlinks and 
 -    verbose levels.  All features turned off by default. 
 -  * Added more error handlings.  Closes: #438803, #462734, #454989, 
 -  * Refactored condition structure to make download and upgrade performed 
 -    if only previous steps succeeded. Closes: #341970
 -  * Documented all cron script related configuration items in 
 -    configure-index.
 +  The 'not dead yet' release
 +  
 +  [ Christian Perrier ]
 +  * Documentation translations:
 +    - Fix a typo in apt-get(8) French translation. Closes: #525043
 +      Thanks to Guillaume Delacour for spotting it.
 +    - Updated apt.conf(5) manpgae French translation.
 +      Thanks to Aurélien Couderc.
 +  * Translations:
 +    - fr.po
 +    - sk.po. Closes: #525857 
 +    - ru.po. Closes: #526816
 +    - eu.po. Closes: #528985
 +    - zh_CN.po. Closes: #531390
 +    - fr.po
 +    - it.po. Closes: #531758
 +    - ca.po. Closes: #531921
 +    - de.po. Closes: #536430
 +  * Added translations
 +    - ast.po (Asturian by Marcos Alvareez Costales).
 +      Closes: #529007, #529730, #535328
 +  
 +  [ David Kalnischkies ]
 +  * [ABI break] support '#' in apt.conf and /etc/apt/preferences
 +    (closes: #189866)
 +  * [ABI break] Allow pinning by codename (closes: #97564)
 +  * support running "--simulate" as user
 +  * add depth information to the debug output and show what depends
 +    type triggers a autoinst (closes: #458389)
 +  * add Debug::pkgDepCache::Marker with more detailed debug output 
 +    (closes: #87520)
 +  * add Debug::pkgProblemResolver::ShowScores and make the scores
 +    adjustable
 +  * do not write state file in simulate mode (closes: #433007)
 +  * add hook for MarkInstall and MarkDelete (closes: #470035)
 +  * fix typo in apt-pkg/acquire.cc which prevents Dl-Limit to work
 +    correctly when downloading from multiple sites (Closes: #534752)
 +  * add the various foldmarkers in apt-pkg & cmdline (no code change)
 +  * versions with a pin of -1 shouldn't be a candidate (Closes: #355237)
 +  * prefer mmap as memory allocator in MMap instead of a static char
 +    array which can (at least in theory) grow dynamic
 +  * eliminate (hopefully all) segfaults in pkgcachegen.cc and mmap.cc
 +    which can arise if cache doesn't fit into the mmap (Closes: #535218)
 +  * display warnings instead of errors if the parts dirs doesn't exist
  
    [ Michael Vogt ]
 +  * honor the dpkg hold state in new Marker hooks (closes: #64141)
 +  * debian/apt.cron.daily:
 +    - if the timestamp is too far in the future, delete it
    * apt-pkg/acquire.cc:
      - make the max pipeline depth of the acquire queue configurable
        via Acquire::Max-Pipeline-Depth
@@@ -56,8 -24,6 +56,8 @@@
      - add Dpkg::UseIoNice boolean option to run dpkg with ionice -c3
        (off by default)
      - send "dpkg-exec" message on the status fd when dpkg is run
 +    - provide DPkg::Chroot-Directory config option (useful for testing)
 +    - fix potential hang when in a backgroud process group
    * apt-pkg/algorithms.cc:
      - consider recommends when making the scores for the problem 
        resolver
    * methods/http.cc:
      - ignore SIGPIPE, we deal with EPIPE from write in 
        HttpMethod::ServerDie() (LP: #385144)
 -
 - -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 28 May 2009 17:51:42 +0200
 -
 -  [ Michael Vogt ]
 +  * Only run Download-Upgradable and Unattended-Upgrades if the initial
 +    update was successful Closes: #341970
    * apt-pkg/indexcopy.cc:
      - support having CDs with no Packages file (just a Packages.gz)
        by not forcing a verification on non-existing files
       (LP: #255545)
      - remove the gettext from a string that consists entirely 
        of variables (LP: #56792)
 -  * doc/makefile:
 -    - add examples/apt-https-method-example.conf
    * apt-pkg/cacheiterators.h:
      - add missing checks for Owner == 0 in end()
 -  * apt-pkg/deb/dpkgpm.cc:
 -    - fix potential hang when in a backgroud process group
    * apt-pkg/indexrecords.cc:
      - fix some i18n issues
    * apt-pkg/contrib/strutl.h:
      - add new strprintf() function to make i18n strings easier
 -  * methods/gpgv.cc:
      - fix compiler warning
 -  * cmdline/apt-get.cc:
 -    - fix "apt-get source pkg=ver" if binary name != source name
 -      and show a message (LP: #202219)
 -    - fix "apt-get source pkg" if there is a binary package and
 -      a source package of the same name but from different 
 -      packages (LP: #330103)
    * apt-pkg/deb/debsystem.cc:
      - make strings i18n able 
 -  * apt-pkg/contrib/strutl.cc:
 -    - fix TimeToStr i18n (LP: #289807)
 -  * [ABI break] merge support for http redirects, thanks to
 -    Jeff Licquia and Anthony Towns
 -  * [ABI break] use int for the package IDs (thanks to Steve Cotton)
 -  * apt-pkg/pkgcache.cc:
 -    - do not run "dpkg --configure pkg" if pkg is in trigger-awaited
 -      state (LP: #322955)
 -  * methods/https.cc:
 -    - add Acquire::https::AllowRedirect support
 -  * methods/gpgv.cc:
 -    - properly check for expired and revoked keys (closes: #433091)
    * fix problematic use of tolower() when calculating the version 
      hash by using locale independant tolower_ascii() function. 
      Thanks to M. Vefa Bicakci (LP: #80248)
    * build fixes for g++-4.4
    * cmdline/apt-mark:
      - add "showauto" option to show automatically installed packages
 +  * document --install-recommends and --no-install-recommends
 +    (thanks to Dereck Wonnacott, LP: #126180)
 +  * doc/apt.conf.5.xml:
 +    - merged patch from Aurélien Couderc to improve the text
 +      (thanks!)
++  * [ABI] merged the libudev-dlopen branch, this allows to pass
++    "apt-udev-auto" to Acquire::Cdrom::mount and the cdrom method will  
++    dynamically find/mount the cdrom device (if libhal is available)
 +
 +  [ Julian Andres Klode ]
 +  * apt-pkg/contrib/configuration.cc: Fix a small memory leak in
 +    ReadConfigFile.
 +  * Introduce support for the Enhances field. (Closes: #137583) 
 +  * Support /etc/apt/preferences.d, by adding ReadPinDir() (Closes: #535512)
 +  * configure-index: document Dir::Etc::SourceParts and some other options
 +    (Closes: #459605)
 +  * Remove Eugene V. Lyubimkin from uploaders as requested.
 +  * apt-pkg/contrib/hashes.cc, apt-pkg/contrib/md5.cc:
 +    - Support reading until EOF if Size=0 to match behaviour of
 +      SHA1Summation and SHA256Summation
 +
 +  [ Osamu Aoki ]
 +  * Updated cron script to support backups by hardlinks and 
 +    verbose levels.  All features turned off by default. 
 +  * Added more error handlings.  Closes: #438803, #462734, #454989, 
 +  * Documented all cron script related configuration items in 
 +    configure-index.
  
    [ Dereck Wonnacott ]
    * apt-ftparchive might write corrupt Release files (LP: #46439)
    * Apply --important option to apt-cache depends (LP: #16947) 
 -  * Clarify the --help for 'purge' (LP: #243948)
  
 + -- Julian Andres Klode <jak@debian.org>  Fri, 03 Jul 2009 08:27:35 +0200
 +
 +apt (0.7.21) unstable; urgency=low
 +
 +  [ Christian Perrier ]
 +  * Translations:
 +    - bg.po. Closes: #513211
 +    - zh_TW.po. Closes: #513311
 +    - nb.po. Closes: #513843
 +    - fr.po. Closes: #520430
 +    - sv.po. Closes: #518070
 +    - sk.po. Closes: #520403
 +    - it.po. Closes: #522222
 +    - sk.po. Closes: #520403
 +  
 +  [ Jamie Strandboge ]
 +  * apt.cron.daily: catch invalid dates due to DST time changes
 +    in the stamp files
 +
 +  [ Michael Vogt ]
 +  * methods/gpgv.cc:
 +    - properly check for expired and revoked keys (closes: #433091)
 +  * apt-pkg/contrib/strutl.cc:
 +    - fix TimeToStr i18n (LP: #289807)
 +  * [ABI break] merge support for http redirects, thanks to
 +    Jeff Licquia and Anthony Towns
 +  * [ABI break] use int for the package IDs (thanks to Steve Cotton)
 +  * apt-pkg/pkgcache.cc:
 +    - do not run "dpkg --configure pkg" if pkg is in trigger-awaited
 +      state (LP: #322955)
 +  * methods/https.cc:
 +    - add Acquire::https::AllowRedirect support
 +  * Clarify the --help for 'purge' (LP: #243948)
 +  * cmdline/apt-get.cc
 +    - fix "apt-get source pkg" if there is a binary package and
 +      a source package of the same name but from different 
 +      packages (LP: #330103)
  
    [ Colin Watson ]
    * cmdline/acqprogress.cc:
      - Call pkgAcquireStatus::Pulse even if quiet, so that we still get
        dlstatus messages on the status-fd (LP: #290234).
  
 - -- Michael Vogt <michael.vogt@ubuntu.com>  Fri, 12 Sep 2008 11:34:24 +0200
 + -- Michael Vogt <mvo@debian.org>  Tue, 14 Apr 2009 14:12:51 +0200
 +
 +apt (0.7.20.2) unstable; urgency=medium
 +
 +  [ Eugene V. Lyubimkin ]
 +  * Urgency set to medium due to RC bug fix.
 +  * doc/apt.ent, apt-get.8.xml:
 +    - Fix invalid XML entities. (Closes: #514402)
 +
 + -- Eugene V. Lyubimkin <jackyf.devel@gmail.com>  Sat, 07 Feb 2009 16:48:21 +0200
 +
 +apt (0.7.20.1) unstable; urgency=low
 +
 +  [ Michael Vogt ]
 +  * apt-pkg/pkgcachegen.cc:
 +    - fix apt-cache search for localized description 
 +      (closes: #512110)
 +  
 +  [ Christian Perrier ]
 +  * Translations:
 +    - fr.po: fix spelling error to "défectueux". Thanks to Thomas Péteul.
 +
 + -- Michael Vogt <mvo@debian.org>  Tue, 20 Jan 2009 09:35:05 +0100
  
  apt (0.7.20) unstable; urgency=low
  
        (Closes: #457265)
      - Mentioned 'APT::Periodic' and 'APT::Archives' groups of options.
        (Closes: #438559)
 -
 -  [ Michael Vogt ]
 -  * apt-pkg/depcache.cc:
 -    - when checking for new important deps, skip critical ones
 -      (LP: #236360)
 -  * document --install-recommends and --no-install-recommends
 -    (thanks to Dereck Wonnacott, LP: #126180)
 -  * make "apt-get build-dep" installed packages marked automatic
 -    by default. This can be changed by setting the value of
 -    APT::Get::Build-Dep-Automatic to false (thanks to Aaron 
 -    Haviland, closes: #44874, LP: #248268)
 -
 - -- Eugene V. Lyubimkin <jackyf.devel@gmail.com>  Sat, 06 Dec 2008 20:57:00 +0200
 -
 -apt (0.7.20~exp2) unstable; urgency=low
 -
 -  [ Eugene V. Lyubimkin ]
 +    - Mentioned '/* ... */' comments. (Closes: #507601)
    * doc/examples/sources.list:
      - Removed obsolete commented non-us deb-src entry, replaced it with
        'deb-src security.debian.org' one. (Closes: #411298)
    * apt-pkg/contrib/mmap.cc:
      - Added instruction how to work around MMap error in MMap error message.
        (Closes: #385674, 436028)
 +  * COPYING:
 +    - Actualized. Removed obsolete Qt section, added GPLv2 clause.
 +      (Closes: #440049, #509337)
 +
 +  [ Michael Vogt ]
 +  * add option to "apt-get build-dep" to mark the needed 
 +    build-dep packages as automatic installed. 
 +    This is controlled via the value of
 +    APT::Get::Build-Dep-Automatic and is set "false" by default.  
 +    Thanks to Aaron Haviland, closes: #448743
 +  * apt-inst/contrib/arfile.cc:
 +    - support members ending with '/' as well (thanks to Michal Cihr,
 +      closes: #500988)
  
    [ Christian Perrier ]
    * Translations:
 +    - Finnish updated. Closes: #508449 
 +    - Galician updated. Closes: #509151
 +    - Catalan updated. Closes: #509375
 +    - Vietnamese updated. Closes: #509422
 +    - Traditional Chinese added. Closes: #510664
      - French corrected (remove awful use of first person) 
  
 - -- Michael Vogt <mvo@debian.org>  Tue, 02 Dec 2008 20:30:14 +0100
 + -- Michael Vogt <mvo@debian.org>  Mon, 05 Jan 2009 08:59:20 +0100
  
  apt (0.7.19) unstable; urgency=low
  
        is a request to install only one package and it is not installable.
        (Closes: #419521)
  
 -
    [ Michael Vogt ]
      - fix SIGHUP handling (closes: #463030)
  
diff --combined methods/makefile
index 589f9fa1c649284d237b1eb052550a0b699c7513,c447b47320ca77d90fe4e90b69f6e24a97633b4c..134166ba32f12a39c992d1a8d1fa730e378b2df1
@@@ -7,7 -7,7 +7,7 @@@ include ../buildlib/defaults.ma
  BIN := $(BIN)/methods
  
  # FIXME..
 -LIB_APT_PKG_MAJOR = 4.7
 +LIB_APT_PKG_MAJOR = 4.8
  APT_DOMAIN := libapt-pkg$(LIB_APT_PKG_MAJOR)
  
  # The file method
@@@ -40,7 -40,7 +40,7 @@@ include $(PROGRAM_H
  
  # The cdrom method
  PROGRAM=cdrom
- SLIBS = -lapt-pkg $(INTLLIBS)
+ SLIBS = -lapt-pkg -ldl $(INTLLIBS)
  LIB_MAKES = apt-pkg/makefile
  SOURCE = cdrom.cc
  include $(PROGRAM_H)