summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorMarc Kleine-Budde <mkl@pengutronix.de>2009-07-27 00:04:12 +0200
committerMarc Kleine-Budde <mkl@pengutronix.de>2009-08-06 23:26:29 +0200
commitc34a78cd247faef29c7a7b7c4cc7e7a53f9bd1d4 (patch)
tree35c580c07e9e7ccc542d33f7f0948c9d249ff78f /bin
parentb2da912193bb458b827ceb4cbf484abfdc584d96 (diff)
downloadptxdist-c34a78cd247faef29c7a7b7c4cc7e7a53f9bd1d4.tar.gz
ptxdist-c34a78cd247faef29c7a7b7c4cc7e7a53f9bd1d4.tar.xz
[ptxdist] create PTXDIST_PLATFORMDIR with sudo support
This patch add support for platformdir pointing to locations which are not writable in the frist place. This feature is needed for production releases, see next patches. Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'bin')
-rwxr-xr-xbin/ptxdist81
1 files changed, 39 insertions, 42 deletions
diff --git a/bin/ptxdist b/bin/ptxdist
index ac0fdfb54..363e6608f 100755
--- a/bin/ptxdist
+++ b/bin/ptxdist
@@ -346,36 +346,27 @@ check_config() {
#
-# run different checks on the given directory prefix and creates a
-# default layout of directories
+# first create and then run some tests on given directory
#
-check_dirs_prefix() {
- local testfile
-
- local prefix="${1}"
-
- if [ -z "${prefix}" ]; then
- echo
- echo
- echo "${PROMPT}check_dirs_prefix(): error prefix is not defined"
- echo
- echo
- exit 1
- fi
+# $1: the directory to create
+#
+check_dirs_mkdir() {
+ local dir="${1}"
- if echo "${prefix}" | grep -q " "; then
+ # check for spaces
+ if echo "${dir}" | grep -q " "; then
echo
- echo "error: some important dir ('${prefix}')"
+ echo "error: some important dir ('${dir}')"
echo " contains spaces, this will probably not work, sorry"
echo
exit 1
fi
- if [ ! -d "${prefix}" ]; then
- mkdir -p "${prefix}" 2> /dev/null
- if [ ${?} -ne 0 ]; then
+ # create dir if not exiting
+ if [ ! -d "${dir}" ]; then
+ if ! mkdir -m755 -p -- "${dir}" 2> /dev/null; then
echo
- echo "error: '${prefix}'"
+ echo "error: '${dir}'"
echo " does not exist and cannot be created!"
echo " Please create that dir with write permissions for you."
echo
@@ -385,20 +376,19 @@ check_dirs_prefix() {
exit 1
fi
echo
- echo sudo mkdir -p "${prefix}"
- sudo mkdir -p "${prefix}"
- echo
- echo sudo chown $UID "${prefix}"
- sudo chown $UID "${prefix}"
+ echo sudo mkdir -p "${dir}"
+ sudo mkdir -p "${dir}"
+ echo sudo chown $UID "${dir}"
+ sudo chown $UID "${dir}"
fi
fi
- testfile="${prefix}/.secret-world-domination-project"
- touch "${testfile}" 2> /dev/null
- if [ ${?} -ne 0 ]; then
+ # test r/w
+ local testfile="${dir}/.secret-world-domination-project"
+ if ! touch "${testfile}" 2> /dev/null; then
echo
- echo "error: '${prefix}'"
- echo " does exist, but is not writeable."
+ echo "error: '${dir}'"
+ echo " does exist, but is not writable."
echo " Change the permissions and try again."
echo
read -t 5 -p "press enter to let sudo do the job!"
@@ -407,23 +397,20 @@ check_dirs_prefix() {
exit 1
fi
echo
- echo sudo chown $UID "${prefix}"
- sudo chown $UID "${prefix}"
- echo sudo chmod u+w "${prefix}"
- sudo chmod u+w "${prefix}"
+ echo sudo chown $UID "${dir}"
+ sudo chown $UID "${dir}"
+ echo sudo chmod u+w "${dir}"
+ sudo chmod u+w "${dir}"
- touch "${testfile}" 2> /dev/null
- if [ ${?} -ne 0 ]; then
+ if ! touch "${testfile}" 2> /dev/null; then
echo
- echo "error: cannot make '${prefix}' writeable, giving up"
+ echo "error: cannot make '${dir}' writable, giving up"
echo
exit 1
fi
fi
rm -- "${testfile}"
-
- mkdir -p "${prefix}"/{etc,lib,{,s}bin,include,{,share/}man/man{1,2,3,4,5,6,7,8,9}}
}
@@ -441,12 +428,22 @@ check_dirs() {
# check for r/w and create standard directory layout
local dir
for dir in \
+ "${PTXDIST_PLATFORMDIR}" \
+ "${ptxconf_sysroot_host}" \
+ "${ptxconf_sysroot_cross}" \
+ "${ptxconf_sysroot_target}" \
+ ; do
+ check_dirs_mkdir "${dir}"
+ done
+
+ # create standard direcory layout
+ for dir in \
"${ptxconf_sysroot_host}" \
"${ptxconf_sysroot_cross}" \
"${ptxconf_sysroot_target}" \
"${ptxconf_sysroot_target}/usr" \
; do
- check_dirs_prefix "${dir}"
+ mkdir -m755 -p -- "${dir}"/{etc,lib,{,s}bin,include,{,share/}man/man{1,2,3,4,5,6,7,8,9}}
done
# create build and output dirs
@@ -462,7 +459,7 @@ check_dirs() {
"${PTXDIST_GEN_CONFIG_DIR}" \
; do
if [ \! -d "${dir}" ]; then
- mkdir -m 755 -p "${dir}" || ptxd_bailout "cannot create dir: '${dir}'"
+ mkdir -m 755 -p -- "${dir}" || ptxd_bailout "cannot create dir: '${dir}'"
fi
done