char *path;
char *cmd;
+ if (conf->noaction)
+ return 0;
+
+ /* XXX: CLEANUP: There must be a better way to handle maintainer
+ scripts when running with offline_root mode and/or a dest other
+ than '/'. I've been playing around with some clever chroot
+ tricks and I might come up with something workable. */
+ /*
+ * Attempt to provide a restricted environment for offline operation
+ * Need the following set as a minimum:
+ * OPKG_OFFLINE_ROOT = absolute path to root dir
+ * D = absolute path to root dir (for OE generated postinst)
+ * PATH = something safe (a restricted set of utilities)
+ */
+
+ if (conf->offline_root) {
+ if (conf->offline_root_path) {
+ setenv("PATH", conf->offline_root_path, 1);
+ } else {
+ opkg_message(conf, OPKG_NOTICE,
+ "(offline root mode: not running %s.%s)\n", pkg->name, script);
+ return 0;
+ }
+ setenv("OPKG_OFFLINE_ROOT", conf->offline_root, 1);
+ setenv("D", conf->offline_root, 1);
+ }
+
/* XXX: FEATURE: When conf->offline_root is set, we should run the
maintainer script within a chroot environment. */
}
opkg_message(conf, OPKG_INFO, "Running script %s\n", path);
- if (conf->noaction) return 0;
-
- /* XXX: CLEANUP: There must be a better way to handle maintainer
- scripts when running with offline_root mode and/or a dest other
- than '/'. I've been playing around with some clever chroot
- tricks and I might come up with something workable. */
- /*
- * Attempt to provide a restricted environment for offline operation
- * Need the following set as a minimum:
- * OPKG_OFFLINE_ROOT = absolute path to root dir
- * D = absolute path to root dir (for OE generated postinst)
- * PATH = something safe (a restricted set of utilities)
- */
-
- bool AllowOfflineMode = false;
- if (conf->offline_root) {
- setenv("OPKG_OFFLINE_ROOT", conf->offline_root, 1);
- setenv("D", conf->offline_root, 1);
- if (NULL == conf->offline_root_path || '\0' == conf->offline_root_path[0]) {
- setenv("PATH", "/dev/null", 1);
- } else {
- setenv("PATH", conf->offline_root_path, 1);
- AllowOfflineMode = true;
- }
- }
setenv("PKG_ROOT",
pkg->dest ? pkg->dest->root_dir : conf->default_dest->root_dir, 1);
return 0;
}
- if (conf->offline_root && !AllowOfflineMode) {
- fprintf(stderr, "(offline root mode: not running %s.%s)\n", pkg->name, script);
- free(path);
- return 0;
- }
-
sprintf_alloc(&cmd, "%s %s", path, args);
free(path);