Skip to content

Commit

Permalink
Merge branch 'master' into bee-cache
Browse files Browse the repository at this point in the history
* master:
  bee-cache-inventory: get symlink destination with readlink() if missing
  manpages: Fix bee-update.1 manpage alias
  beesh: Allow bee-file to partially rename packages
  beelib: export BEE_BINDIR
  bee-init: Fix missing shift
  beesh: Fix build archive if pkg was renamed in bee-file
  beesh: remove some deprecated variables
  beesh: Allow to rename package from within bee-file (quick fix version)
  bee-init: Allow empty url if output file is specified
  Makefile: remove HELPER_BEE_C variable references
  Makefile: remove compile option -lcrypt from bee-cache-inventory
  Makefile: remove target 'compat'
  Makefile: install info-dir hook
  hooks: info-dir: fix missing value for BEE_METAFORMAT in old bee packages
  filelist2content: strip $root from symlink targets
  filelist2content: remove trailing whitespaces
  bee-cache-update: Fix missing return after cachedir cleanup
  • Loading branch information
mariux committed Aug 13, 2012
2 parents 3361347 + 36f68c4 commit b5c0315
Show file tree
Hide file tree
Showing 9 changed files with 130 additions and 38 deletions.
22 changes: 4 additions & 18 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,6 @@ sed-rules = -e 's,@PREFIX@,${PREFIX},g' \
-e 's,@BEE_VERSION@,${BEE_VERSION},g' \
-e 's,@DATADIR@,${DATADIR},g'

sed-compat-bashlt4 = -e 'sx\$${\([a-zA-Z_]*\),,}x\$$(tr A-Z a-z <<<\$${\1})xg' \
-e 'sx\$${\([a-zA-Z_]*\)^^}x\$$(tr a-z A-Z <<<\$${\1})xg'

PROGRAMS_C+=beecut
PROGRAMS_C+=beeflock
PROGRAMS_C+=beegetopt
Expand Down Expand Up @@ -103,6 +100,7 @@ HELPER_HOOKS_SHELL+=gdk-pixbuf-query-loaders
HELPER_HOOKS_SHELL+=mandb
HELPER_HOOKS_SHELL+=systemd-tmpfiles
HELPER_HOOKS_SHELL+=gconf-install-schemas
HELPER_HOOKS_SHELL+=info-dir

MANPAGES+=bee.1
MANPAGES+=bee-check.1
Expand All @@ -119,23 +117,12 @@ CONFIG_TEMPLATES+=fallback
CONFIG_FILES+=skiplist
CONFIG_FILES+=beerc

COMPAT_BASHLT4+=beesh.sh
COMPAT_BASHLT4+=bee-check.sh
COMPAT_BASHLT4+=buildtypes/autogen.sh
COMPAT_BASHLT4+=buildtypes/configure.sh
COMPAT_BASHLT4+=buildtypes/make.sh

.SUFFIXES: .in .sh .sh.in

all: build

build: shellscripts buildtypes cprograms manpages

compat: compat-bashlt4

compat-bashlt4: ${COMPAT_BASHLT4}
$(call quiet-command, sed ${sed-compat-bashlt4} -i ${COMPAT_BASHLT4}, "COMPAT $^" )

SHELLSCRIPTS=$(PROGRAMS_SHELL) $(HELPER_BEE_SHELL) $(HELPER_SHELL)

BEEVERSION_OBJECTS=beeversion.o bee_version_parse.o bee_version_compare.o bee_version_output.o
Expand All @@ -151,7 +138,7 @@ bee_MANPAGES=$(addprefix manpages/,${MANPAGES})
bee_BUILDTYPES=$(addsuffix .sh,$(addprefix buildtypes/,$(BUILDTYPES)))

shellscripts: $(addsuffix .sh,$(SHELLSCRIPTS)) $(LIBRARY_SHELL)
cprograms: $(PROGRAMS_C) ${HELPER_BEE_C} ${HELPER_C}
cprograms: $(PROGRAMS_C) ${HELPER_C}
manpages: ${bee_MANPAGES}
buildtypes: ${bee_BUILDTYPES}

Expand All @@ -177,7 +164,7 @@ beeflock: $(addprefix src/, ${BEEFLOCK_OBJECTS})
$(call quiet-command,${CC} ${LDFLAGS} -o $@ $^,"LD $@")

bee-cache-inventory: $(addprefix src/, ${BEECACHEINVENTORY_OBJECTS})
$(call quiet-command,${CC} ${LDFLAGS} -lcrypt -o $@ $^,"LD $@")
$(call quiet-command,${CC} ${LDFLAGS} -o $@ $^,"LD $@")

%.o: %.c
$(call quiet-command,${CC} ${CFLAGS} -o $@ -c $^,"CC $@")
Expand All @@ -194,7 +181,6 @@ bee-cache-inventory: $(addprefix src/, ${BEECACHEINVENTORY_OBJECTS})
clean:
$(call quiet-command,rm -f $(addsuffix .sh,${SHELLSCRIPTS}) $(LIBRARY_SHELL) $(HELPER_SHELL),"CLEAN <various>.sh")
$(call quiet-command,rm -f ${PROGRAMS_C},"CLEAN ${PROGRAMS_C}")
$(call quiet-command,rm -f ${HELPER_BEE_C},"CLEAN ${HELPER_BEE_C}")
$(call quiet-command,rm -f ${HELPER_C},"CLEAN ${HELPER_C}")
$(call quiet-command,rm -f src/*.o,"CLEAN c object files")
$(call quiet-command,rm -f ${bee_MANPAGES},"CLEAN manpages")
Expand All @@ -215,7 +201,7 @@ ${DESTDIR}${BINDIR}/%: % install-dir-bindir
${DESTDIR}${BINDIR}/%: %.sh install-dir-bindir
$(call quiet-install,0755,$<,$@)

install-tools: $(addprefix ${DESTDIR}${LIBEXECDIR}/bee/bee.d/,${HELPER_BEE_SHELL} ${HELPER_BEE_C})
install-tools: $(addprefix ${DESTDIR}${LIBEXECDIR}/bee/bee.d/,${HELPER_BEE_SHELL})

install-dir-tools:
$(call quiet-installdir,0755,${DESTDIR}${LIBEXECDIR}/bee/bee.d)
Expand Down
4 changes: 2 additions & 2 deletions hooks/info-dir.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ fi

. ${BEE_METADIR}/${pkg}/META

if [ ! "${BEEMETAFORMAT}" -ge 2 ] ; then
if [ ! "${BEEMETAFORMAT:=0}" -ge 2 ] ; then
exit 0
fi

Expand All @@ -63,4 +63,4 @@ case "${action}" in
${INSTALLINFO} --delete ${i} ${DIRFILE} >/dev/null
done
;;
esac
esac
2 changes: 1 addition & 1 deletion manpages/bee-update.1.in
Original file line number Diff line number Diff line change
@@ -1 +1 @@
.so bee-install.1
.so man1/bee-install.1
37 changes: 34 additions & 3 deletions src/bee-cache-inventory.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ struct item {
char *type;
char *filename;
char *destination;
char free_destination;
};

struct inventory_meta {
Expand Down Expand Up @@ -146,6 +147,28 @@ int substitute(char *data, char from, char to)
return 1;
}

char *read_symlink(const char *filename)
{
ssize_t ret;
char buffer[PATH_MAX + 1] = {0};
char *copy;

ret = readlink(filename, buffer, PATH_MAX);

if (ret == -1) {
fprintf(stderr, "bee-cache-inventory: warning: "
"cannot restore empty symlink destination for file '%s': %m\n", filename);
return NULL;
}

copy = strdup(buffer);

if (!copy)
fprintf(stderr, "bee-cache-inventory: read_symlink: strdup: %m\n");

return copy;
}

BEE_STATIC_INLINE char *_extract_pattern(struct item *item, char **dest, char *hint, char *pattern, char size, int failok)
{
char *p;
Expand Down Expand Up @@ -182,12 +205,17 @@ int do_separation(char *line, struct item *item)
/* get possible symlink destination */
q = strstr(item->filename, "//");
if (q) {
*q = '\0';
item->destination = q + 2;

if (!*item->destination) {
fprintf (stderr, "bee-cache-inventory: syntax error: empty destination for file '%s'\n", item->filename);
return 0;
item->destination = read_symlink(item->filename);

if (!item->destination)
item->destination = item->filename;
else
item->free_destination = 1;
}
*q = '\0';
}

*(p-6) = 0;
Expand Down Expand Up @@ -344,6 +372,9 @@ int inventory_fhfh(FILE *infh, FILE *outfh, struct inventory_meta meta)

print_item(outfh, item, meta);

if (item.free_destination)
/* symlink destination was generated by read_symlink */
free(item.destination);
}

return 1;
Expand Down
1 change: 1 addition & 0 deletions src/bee-cache-update.sh.in
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ function create_pkgbcfile()
if [ ! -d "${PKGMETADIR}" ] ; then
# cleanup cache if metadir does not exist
rm -f "${PKGBCFILE}" "${PKGBCRFILE}"
return 0
elif [ ! -e "${CONTENTFILE}" ] ; then
if [ -e "${PKGBCFILE}" ] ; then
print_info "moving ${PKGBCFILE} to ${PKGBCRFILE}.."
Expand Down
4 changes: 2 additions & 2 deletions src/bee-init.sh.in
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ function create_beefile_from_template {
function initialize() {
surl=${1}

shift
[ ! -z "${surl}" ] && shift

pname=${OPT_OUTPUT}

Expand Down Expand Up @@ -398,7 +398,7 @@ while true ; do

*)
shift
if [ -z "${1}" ] ; then
if [ -z "${1}" -a -z "${OPT_OUTPUT}" ] ; then
usage
exit 1
fi
Expand Down
1 change: 1 addition & 0 deletions src/beelib.config.sh.in
Original file line number Diff line number Diff line change
Expand Up @@ -366,6 +366,7 @@ function config_export() {
export BEE_TMP_TMPDIR
export BEE_TMP_BUILDROOT

export BEE_BINDIR
export BEE_SYSCONFDIR
export BEE_DATADIR
export BEE_LIBEXECDIR
Expand Down
92 changes: 82 additions & 10 deletions src/beesh.sh.in
Original file line number Diff line number Diff line change
Expand Up @@ -534,7 +534,7 @@ function bee_pkg_pack() {
${D}/CONTENT )

beefilename=${BEE##*/}
beefiledest=${BEE_BEEDIR}/${beefilename}
beefiledest=${BEE_BEEDIR}/${PKGALLPKG}.bee

print_info "-> saving bee-file ${beefilename} .."
print_info "${COLOR_CYAN}${beefiledest}"
Expand All @@ -543,7 +543,7 @@ function bee_pkg_pack() {
mkdir -pv ${BEE_BEEDIR}
fi

cp -v ${BEE} ${BEE_BEEDIR}
cp -v ${BEE} ${beefiledest}
}


Expand All @@ -569,7 +569,7 @@ function bee_archivebuild() {
--absolute-names \
${S} ${B} \
${bee_FETCHED_FILES[@]} \
${BEE_BEEDIR}/${BEE##*/} \
${BEE_BEEDIR}/${PKGALLPKG}.bee \
--transform="s,^${BEEWORKDIR},${PKGALLPKG}," \
--transform="s,^${F},${PKGALLPKG}/files," \
--transform="s,^${BEE_BEEDIR},${PKGALLPKG}/files,"
Expand Down Expand Up @@ -600,6 +600,81 @@ function load_buildmagic() {
fi
}

function save_current_package_variables() {
oPKGNAME=${PKGNAME}
oPKGEXTRANAME=${PKGEXTRANAME}
oPKGFULLNAME=${PKGFULLNAME}
oPKGVERSION=${PKGVERSION}
oPKGEXTRAVERSION=${PKGEXTRAVERSION}
oPKGFULLVERSION=${PKGFULLVERSION}
oPKGREVISION=${PKGREVISION}
}

function verify_new_package_variables() {
nPKGFULLNAME="${PKGNAME}${PKGEXTRANAME:+_${PKGEXTRANAME}}"

if [ "${oPKGFULLNAME}" != "${PKGFULLNAME}" ] ; then
if [ "${oPKGFULLNAME}" != "${nPKGFULLNAME}" ] ; then
print_error "${BEE##*/}: Changing PKGFULLNAME and one of PKGNAME or PKGEXTRANAME is not supported."
exit 1
fi
PKGNAME=${PKGFULLNAME//_*}
PKGEXTRANAME=${PKGFULLNAME#*_}
fi
PKGFULLNAME="${PKGNAME}${PKGEXTRANAME:+_${PKGEXTRANAME}}"

nPKGFULLVERSION="${PKGVERSION}${PKGEXTRAVERSION:+_${PKGEXTRAVERSION}}"
if [ "${oPKGFULLVERSION}" != "${PKGFULLVERSION}" ] ; then
if [ "${oPKGFULLVERSION}" != "${nPKGFULLVERSION}" ] ; then
print_error "${BEE##*/}: Changing PKGFULLVERSION and one of PKGVERSION or PKGEXTRAVERSION is not supported."
exit 1
fi
PKGVERSION=${PKGFULLVERSION//_*}
PKGEXTRAVERSION=${PKGFULLVERSION#*_}
fi
PKGFULLVERSION="${PKGVERSION}${PKGEXTRAVERSION:+_${PKGEXTRAVERSION}}"
}

function extract_new_package_variables() {
if [ "${PKGNAME}" != "${oPKGNAME}" ] ; then
# pkgname changed! we allow prefixing 'anything-' to the packagename
if [ "${PKGNAME}" != "${PKGNAME/-${oPKGNAME}}-${oPKGNAME}" ] ; then
print_error "${BEE##*/}: Invalid change in PKGNAME(${PKGNAME}) detected. Only prefixing 'something-' is supported."
exit 1
fi
print_info "${COLOR_YELLOW}PKGNAME changed from '${oPKGNAME}' to '${PKGNAME}'"
fi
if [ "${PKGEXTRANAME}" != "${oPKGEXTRANAME}" ] ; then
if [ ! -z "${oPKGEXTRANAME}" -a "${PKGEXTRANAME}" != "${oPKGEXTRANAME}_${PKGEXTRANAME#${oPKGEXTRANAME}_}" ] ; then
print_error "${BEE##*/}: Invalid change in PKGEXTRANAME(${PKGEXTRANAME}) detected. Only appending '_something' is supported."
exit 1
fi
print_info "${COLOR_YELLOW}PKGEXTRANAME changed from '${oPKGEXTRANAME}' to '${PKGEXTRANAME}'"
fi
if [ "${PKGVERSION}" != "${oPKGVERSION}" ] ; then
print_error "${BEE##*/}: Invalid change in PKGVERSION(${PKGVERSION}) detected. Changing PKGVERSION is not supported."
exit 1
fi
if [ "${PKGEXTRAVERSION}" != "${oPKGEXTRAVERSION}" ] ; then
if [ ! -z "${oPKGEXTRAVERSION}" -a "${PKGEXTRAVERSION}" != "${oPKGEXTRAVERSION}_${PKGEXTRAVERSION#${oPKGEXTRAVERSION}_}" ] ; then
print_error "${BEE##*/}: Invalid change in PKGEXTRAVERSION(${PKGEXTRAVERSION}) detected. Only appending '_something' is supported."
exit 1
fi
print_info "${COLOR_YELLOW}PKGEXTRAVERSION changed from '${oPKGEXTRAVERSION}' to '${PKGEXTRAVERSION}'"
fi
if [ "${PKGREVISION}" != "${oPKGREVISION}" ] ; then
print_error "${BEE##*/}: Invalid change in PKGREVISION(${PKGREVISION}) detected. Changing PKGREVISION is not supported."
exit 1
fi

PKGFULLPKG=${PKGFULLNAME}-${PKGFULLVERSION}-${PKGREVISION}

# since PKGARCH is now known reconstruct PKGALLPKG
: ${PKGALLPKG:=${PKGFULLPKG}.${PKGARCH}}

eval $(${BEE_BINDIR}/beeversion ${PKGALLPKG})
}

###############################################################################
###############################################################################
###############################################################################
Expand Down Expand Up @@ -764,12 +839,7 @@ if [ -z "${PKGNAME}" -o -z "${PKGVERSION}" -o -z "${PKGREVISION}" ] ; then
exit 1
fi

PN=${PKGNAME}
PV=( ${PKGVERSION[@]} )
PS=${PKGEXTRAVERSION}
PR=${PKGREVISION}

P=${PKGFULLNAME}-${PKGFULLVERSION}

BEEPKGROOT="${BEE_TMP_BUILDROOT}/${PKGNAME}"
BEEWORKDIR="${BEEPKGROOT}/${PKGFULLPKG}"
Expand All @@ -787,14 +857,16 @@ D=${BEEWORKDIR}/image
# clear PKGALLPKG since we can't trust PKGARCH in this state
PKGALLPKG=

save_current_package_variables

# source file.bee
. ${BEE}

# now set PKGARCH if set or changed by user via ARCH=.. and not given via file.arch.bee
: ${PKGARCH:=${ARCH}}

# since PKGARCH is now known reconstruct PKGALLPKG
: ${PKGALLPKG:=${PKGFULLPKG}.${PKGARCH}}
verify_new_package_variables
extract_new_package_variables

config_handle_deprecated_beefile
expand_prefix_variables
Expand Down
5 changes: 3 additions & 2 deletions src/filelist2content.sh.in
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,10 @@ function do_f2c() {
exit 1
fi

echo -n ":md5=${md5%% *}"
echo -n ":md5=${md5%% *}"
elif [ "${type}" = "symlink" ] ; then
file="${file}//$(readlink ${root}${file})"
target=$(readlink ${root}${file})
file="${file}//${target#${root}}"
elif [ "${type}" = "block" -o "${type}" = "char" ] ; then
echo -n ":major=${major}"
echo -n ":minor=${minor}"
Expand Down

0 comments on commit b5c0315

Please sign in to comment.