summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/libalpm/add.c6
-rw-r--r--lib/libalpm/alpm.h2
-rw-r--r--lib/libalpm/remove.c4
-rw-r--r--src/pacman/pacman.c3
4 files changed, 9 insertions, 6 deletions
diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c
index 2cd88bc6..80117731 100644
--- a/lib/libalpm/add.c
+++ b/lib/libalpm/add.c
@@ -319,7 +319,7 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
}
/* pre_upgrade scriptlet */
- if(info->scriptlet) {
+ if(info->scriptlet && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
_alpm_runscriptlet(handle->root, info->data, "pre_upgrade", info->version, oldpkg ? oldpkg->version : NULL);
}
@@ -359,7 +359,7 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
_alpm_log(PM_LOG_FLOW1, "adding package %s-%s", info->name, info->version);
/* pre_install scriptlet */
- if(info->scriptlet) {
+ if(info->scriptlet && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
_alpm_runscriptlet(handle->root, info->data, "pre_install", info->version, NULL);
}
} else {
@@ -668,7 +668,7 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
}
/* run the post-install script if it exists */
- if(info->scriptlet) {
+ if(info->scriptlet && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
snprintf(pm_install, PATH_MAX, "%s%s/%s/%s-%s/install", handle->root, handle->dbpath, db->treename, info->name, info->version);
if(pmo_upgrade) {
_alpm_runscriptlet(handle->root, pm_install, "post_upgrade", info->version, oldpkg ? oldpkg->version : NULL);
diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index 18a1712b..134d40b7 100644
--- a/lib/libalpm/alpm.h
+++ b/lib/libalpm/alpm.h
@@ -218,7 +218,7 @@ enum {
#define PM_TRANS_FLAG_NODEPS 0x040
#define PM_TRANS_FLAG_ALLDEPS 0x080
#define PM_TRANS_FLAG_NOCONFLICTS 0x100
-#define PM_TRANS_FLAG_NOSCRIPLET 0x200
+#define PM_TRANS_FLAG_NOSCRIPTLET 0x200
/* Transaction Events */
enum {
diff --git a/lib/libalpm/remove.c b/lib/libalpm/remove.c
index fd040e38..f8afa3a1 100644
--- a/lib/libalpm/remove.c
+++ b/lib/libalpm/remove.c
@@ -153,7 +153,7 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
_alpm_log(PM_LOG_FLOW1, "removing package %s-%s", info->name, info->version);
/* run the pre-remove scriptlet if it exists */
- if(info->scriptlet) {
+ if(info->scriptlet && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
snprintf(pm_install, PATH_MAX, "%s/%s-%s/install", db->path, info->name, info->version);
_alpm_runscriptlet(handle->root, pm_install, "pre_remove", info->version, NULL);
}
@@ -235,7 +235,7 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
if(trans->type != PM_TRANS_TYPE_UPGRADE) {
/* run the post-remove script if it exists */
- if(info->scriptlet) {
+ if(info->scriptlet && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
char pm_install[PATH_MAX];
snprintf(pm_install, PATH_MAX, "%s/%s-%s/install", db->path, info->name, info->version);
_alpm_runscriptlet(handle->root, pm_install, "post_remove", info->version, NULL);
diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index 3d62ee69..d9728d87 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -309,6 +309,7 @@ int parseargs(int argc, char *argv[])
{"ignore", required_argument, 0, 1002},
{"debug", required_argument, 0, 1003},
{"noprogressbar", no_argument, 0, 1004},
+ {"noscriptlet", no_argument, 0, 1005},
{0, 0, 0, 0}
};
char root[PATH_MAX];
@@ -329,6 +330,7 @@ int parseargs(int argc, char *argv[])
case 1002: config->op_s_ignore = list_add(config->op_s_ignore, strdup(optarg)); break;
case 1003: config->debug = atoi(optarg); break;
case 1004: config->noprogressbar = 1; break;
+ case 1005: config->flags |= PM_TRANS_FLAG_NOSCRIPTLET; break;
case 'A': config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_ADD); break;
case 'D':
config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_DEPTEST);
@@ -496,6 +498,7 @@ void usage(int op, char *myname)
printf(" --config <path> set an alternate configuration file\n");
printf(" --noconfirm do not ask for anything confirmation\n");
printf(" --noprogressbar do not show a progress bar when downloading files\n");
+ printf(" --noscriptlet do not execute the install scriptlet if there is any\n");
printf(" -v, --verbose be verbose\n");
printf(" -r, --root <path> set an alternate installation root\n");
printf(" -b, --dbpath <path> set an alternate database location\n");