source: trunk/package/opkg/patches/003-fs_overlay_support.patch @ 23174

Last change on this file since 23174 was 23174, checked in by jow, 6 years ago

[package] opkg: reenable global upgrade, refresh patches

File size: 1.9 KB
  • libopkg/opkg_conf.c

    This patch adds a new configuration option (overlay_root) specifying 
    what mount point opkg should check for available storage space.
    
    Signed-off-by: Nicolas Thill <nico@openwrt.org>
    
    
    a b opkg_option_t options[] = { 
    6363          { "download_only", OPKG_OPT_TYPE_BOOL, &_conf.download_only }, 
    6464          { "nodeps", OPKG_OPT_TYPE_BOOL, &_conf.nodeps }, 
    6565          { "offline_root", OPKG_OPT_TYPE_STRING, &_conf.offline_root }, 
     66          { "overlay_root", OPKG_OPT_TYPE_STRING, &_conf.overlay_root }, 
    6667          { "proxy_passwd", OPKG_OPT_TYPE_STRING, &_conf.proxy_passwd }, 
    6768          { "proxy_user", OPKG_OPT_TYPE_STRING, &_conf.proxy_user }, 
    6869          { "query-all", OPKG_OPT_TYPE_BOOL, &_conf.query_all }, 
  • libopkg/opkg_conf.h

    a b struct opkg_conf 
    7878     int check_signature; 
    7979     int nodeps; /* do not follow dependencies */ 
    8080     char *offline_root; 
     81     char *overlay_root; 
    8182     int query_all; 
    8283     int verbosity; 
    8384     int noaction; 
  • libopkg/opkg_install.c

    a b  
    2121#include <time.h> 
    2222#include <signal.h> 
    2323#include <unistd.h> 
     24#include <sys/stat.h> 
    2425 
    2526#include "pkg.h" 
    2627#include "pkg_hash.h" 
    static int 
    192193verify_pkg_installable(pkg_t *pkg) 
    193194{ 
    194195        unsigned long kbs_available, pkg_size_kbs; 
    195         char *root_dir; 
     196        char *root_dir = NULL; 
     197        struct stat s; 
    196198 
    197199        if (conf->force_space || pkg->installed_size == 0) 
    198200                return 0; 
    199201 
    200         root_dir = pkg->dest ? pkg->dest->root_dir : 
    201                                                 conf->default_dest->root_dir; 
     202        if( pkg->dest ) 
     203        { 
     204                if( !strcmp(pkg->dest->name, "root") && conf->overlay_root 
     205                    && !stat(conf->overlay_root, &s) && (s.st_mode & S_IFDIR) ) 
     206                        root_dir = conf->overlay_root; 
     207                else 
     208                        root_dir = pkg->dest->root_dir; 
     209        } 
     210 
     211        if( !root_dir ) 
     212                root_dir = conf->default_dest->root_dir; 
     213 
    202214        kbs_available = get_available_kbytes(root_dir); 
    203215 
    204216        pkg_size_kbs = (pkg->installed_size + 1023)/1024; 
Note: See TracBrowser for help on using the repository browser.