summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog.proto16
-rw-r--r--Makefile.am2
-rw-r--r--doc/makepkg.8.txt14
-rw-r--r--scripts/makepkg.sh.in3
-rw-r--r--scripts/repo-add.sh.in4
-rw-r--r--scripts/repo-remove.sh.in4
-rw-r--r--src/pacman/add.c5
-rw-r--r--src/pacman/query.c15
-rw-r--r--src/pacman/remove.c4
-rw-r--r--src/pacman/sync.c2
-rw-r--r--src/pacman/util.c28
-rw-r--r--src/pacman/util.h1
12 files changed, 84 insertions, 14 deletions
diff --git a/ChangeLog.proto b/ChangeLog.proto
new file mode 100644
index 00000000..87e86e72
--- /dev/null
+++ b/ChangeLog.proto
@@ -0,0 +1,16 @@
+2007-12-01 Your Name <youremail@domain.com>
+
+ * pkgver-pkgrel :
+ new upstream release.
+ Reason we changed stuff.
+ Another reason we changed stuff.
+
+ * gcc-4.1.patch :
+ Removed, no longer needed.
+
+2007-11-01 Your Name <youremail@domain.com>
+
+ * 1.0-5 :
+ added ChangeLog.
+ the last line should end with just one newline.
+ you can cat the file to check it displays fine.
diff --git a/Makefile.am b/Makefile.am
index 6453555e..dc085429 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -9,7 +9,7 @@ EXTRA_DIST = HACKING
# Sample makepkg prototype files
pkgdatadir = ${datadir}/${PACKAGE}
-dist_pkgdata_DATA = PKGBUILD.proto proto.install
+dist_pkgdata_DATA = PKGBUILD.proto proto.install ChangeLog.proto
# run the pactest test suite
check-local: src/pacman
diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt
index f3f5d7c9..59108f1b 100644
--- a/doc/makepkg.8.txt
+++ b/doc/makepkg.8.txt
@@ -28,6 +28,11 @@ build the package, install the package into a temporary root, make
customizations, generate meta-info, and package the whole thing up for pacman
to use.
+NOTE: makepkg uses your current locale by default and does not unset it when
+building packages. If you wish to share your build output with others when
+seeking help or for other purposes, you may wish to run "`LC_ALL=C makepkg`" so
+your logs and output are not localized.
+
Options
-------
*\--asroot*::
@@ -83,7 +88,7 @@ Options
if required and generate integrity checks. The integrity checks
generated are determined by the value of the INTEGRITY_CHECK array in
linkman:makepkg.conf[5]. This output can be redirected into your
- PKGBUILD for source validation (`makepkg -g >> PKGBUILD`).
+ PKGBUILD for source validation using "`makepkg -g >> PKGBUILD`".
*-h, \--help*::
Output syntax and command line options.
@@ -97,6 +102,13 @@ Options
Install or upgrade the package after a successful build using
linkman:pacman[8].
+*-L, \--log*::
+ Enable makepkg build logging. This will use the *tee* program to send
+ output of the `build()` function to both the console and to a text file in
+ the build directory named `pkgname-pkgver-pkgrel-arch.log`. As mentioned
+ above, the build log will be localized so you may want to set your locale
+ accordingly if sharing the log output with others.
+
*-m, \--nocolor*::
Disable color in output messages.
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 0997386e..68ad5978 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -810,6 +810,9 @@ create_package() {
if [ "$CARCH" != "" ]; then
echo "arch = $CARCH" >>.PKGINFO
fi
+ if [ "$(check_option force)" = "y" ]; then
+ echo "force = true" >> .PKGINFO
+ fi
local it
for it in "${license[@]}"; do
diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index c37a12fa..efd3bc03 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -136,7 +136,7 @@ db_write_entry()
# blank out all variables and set pkgfile
local pkgfile=$(readlink -f "$1")
local pkgname pkgver pkgdesc url builddate packager csize size \
- group depend backup license replaces provides conflict \
+ group depend backup license replaces provides conflict force \
_groups _depends _backups _licenses _replaces _provides _conflicts \
startdir
@@ -209,7 +209,7 @@ db_write_entry()
[ -n "$builddate" ] && echo -e "%BUILDDATE%\n$builddate\n" >>desc
[ -n "$packager" ] && echo -e "%PACKAGER%\n$packager\n" >>desc
write_list_entry "REPLACES" "$_replaces" "desc"
- [ $FORCE -eq 1 ] && echo -e "%FORCE%\n" >>desc
+ [ $FORCE -eq 1 -o -n "$force" ] && echo -e "%FORCE%\n" >>desc
# create depends entry
msg2 "$(gettext "Creating 'depends' db entry...")"
diff --git a/scripts/repo-remove.sh.in b/scripts/repo-remove.sh.in
index 05bec390..fe230b02 100644
--- a/scripts/repo-remove.sh.in
+++ b/scripts/repo-remove.sh.in
@@ -25,7 +25,6 @@ export TEXTDOMAINDIR='@localedir@'
myver='@PACKAGE_VERSION@'
confdir='@sysconfdir@'
-FORCE=0
REPO_DB_FILE=""
msg() {
@@ -169,6 +168,9 @@ if [ $success -eq 1 ]; then
esac
bsdtar -c${TAR_OPT}f "$REPO_DB_FILE" *
+ else
+ error "$(gettext "All packages have been removed from the database. Deleting '%s'.")" "$REPO_DB_FILE"
+ rm "$REPO_DB_FILE"
fi
popd 2>&1 >/dev/null
diff --git a/src/pacman/add.c b/src/pacman/add.c
index 975d26be..debe5c47 100644
--- a/src/pacman/add.c
+++ b/src/pacman/add.c
@@ -115,8 +115,9 @@ int pacman_add(alpm_list_t *targets)
for(i = targets; i; i = alpm_list_next(i)) {
char *targ = alpm_list_getdata(i);
if(alpm_trans_addtarget(targ) == -1) {
- fprintf(stderr, _("error: failed to add target '%s' (%s)"), targ,
- alpm_strerrorlast());
+ printf("failed.\n");
+ fprintf(stderr, _("error: '%s': %s\n"),
+ targ, alpm_strerrorlast());
add_cleanup();
return(1);
}
diff --git a/src/pacman/query.c b/src/pacman/query.c
index fd2f7927..e999a328 100644
--- a/src/pacman/query.c
+++ b/src/pacman/query.c
@@ -70,6 +70,7 @@ static int query_fileowner(alpm_list_t *targets)
int found = 0;
char *filename = alpm_list_getdata(t);
char *bname;
+ char *dname;
char *rpath;
struct stat buf;
alpm_list_t *i, *j;
@@ -88,10 +89,14 @@ static int query_fileowner(alpm_list_t *targets)
}
bname = mbasename(filename);
+ dname = mdirname(filename);
+ rpath = resolve_path(dname);
+ free(dname);
- if(!(rpath = resolve_path(filename))) {
+ if(!rpath) {
fprintf(stderr, _("error: cannot determine real path for '%s': %s\n"),
filename, strerror(errno));
+ free(rpath);
ret++;
continue;
}
@@ -100,7 +105,7 @@ static int query_fileowner(alpm_list_t *targets)
pmpkg_t *info = alpm_list_getdata(i);
for(j = alpm_pkg_get_files(info); j && !found; j = alpm_list_next(j)) {
- char path[PATH_MAX], *ppath;
+ char path[PATH_MAX], *ppath, *pdname;
snprintf(path, PATH_MAX, "%s%s",
alpm_option_get_root(), (const char *)alpm_list_getdata(j));
@@ -109,10 +114,12 @@ static int query_fileowner(alpm_list_t *targets)
continue;
}
- ppath = resolve_path(path);
+ pdname = mdirname(path);
+ ppath = resolve_path(pdname);
+ free(pdname);
if(ppath && strcmp(ppath, rpath) == 0) {
- printf(_("%s is owned by %s %s\n"), rpath,
+ printf(_("%s is owned by %s %s\n"), filename,
alpm_pkg_get_name(info), alpm_pkg_get_version(info));
found = 1;
}
diff --git a/src/pacman/remove.c b/src/pacman/remove.c
index 56837fa2..0722057f 100644
--- a/src/pacman/remove.c
+++ b/src/pacman/remove.c
@@ -108,8 +108,8 @@ int pacman_remove(alpm_list_t *targets)
char *targ = alpm_list_getdata(i);
if(alpm_trans_addtarget(targ) == -1) {
printf("failed.\n");
- fprintf(stderr, _("error: failed to add target '%s' (%s)\n"), targ,
- alpm_strerrorlast());
+ fprintf(stderr, _("error: '%s': %s\n"),
+ targ, alpm_strerrorlast());
remove_cleanup();
FREELIST(finaltargs);
return(1);
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index 582192a4..27218d61 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -568,7 +568,7 @@ static int sync_trans(alpm_list_t *targets, int sync_only)
}
if(pm_errno != PM_ERR_PKG_NOT_FOUND) {
fprintf(stderr, _("error: '%s': %s\n"),
- (char *)i->data, alpm_strerrorlast());
+ targ, alpm_strerrorlast());
retval = 1;
goto cleanup;
}
diff --git a/src/pacman/util.c b/src/pacman/util.c
index 42b0c98d..2dae832f 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -187,6 +187,34 @@ char *mbasename(const char *path)
return (char *)p;
}
+/** Parse the dirname of a program from a path.
+* The path returned should be freed.
+* @param path path to parse dirname from
+*
+* @return everything preceding the final '/'
+*/
+char *mdirname(const char *path)
+{
+ char *ret, *last;
+
+ /* null or empty path */
+ if(path == NULL || path == '\0') {
+ return(strdup("."));
+ }
+
+ ret = strdup(path);
+ last = strrchr(ret, '/');
+
+ if(last != NULL) {
+ /* we found a '/', so terminate our string */
+ *last = '\0';
+ return(ret);
+ }
+ /* no slash found */
+ free(ret);
+ return(strdup("."));
+}
+
/* output a string, but wrap words properly with a specified indentation
*/
void indentprint(const char *str, int indent)
diff --git a/src/pacman/util.h b/src/pacman/util.h
index 00c88949..0273512e 100644
--- a/src/pacman/util.h
+++ b/src/pacman/util.h
@@ -41,6 +41,7 @@ int getcols();
int makepath(const char *path);
int rmrf(const char *path);
char *mbasename(const char *path);
+char *mdirname(const char *path);
void indentprint(const char *str, int indent);
char *strtoupper(char *str);
char *strtrim(char *str);