48 lines
No EOL
1.4 KiB
Text
48 lines
No EOL
1.4 KiB
Text
# creates or applies a permissions script that can be used to set file
|
|
# permissions in situations where they are lost (like svn)
|
|
|
|
.SILENT:
|
|
|
|
permissions_applied=permissions_applied~
|
|
|
|
ifndef PERMISSIONS_SCRIPT
|
|
PERMISSIONS_SCRIPT=file_permissions.sh
|
|
endif
|
|
|
|
ifndef PERMISSIONS_ROOT
|
|
ifdef INSTALL_FROM
|
|
PERMISSIONS_ROOT=$(INSTALL_FROM)
|
|
else
|
|
PERMISSIONS_ROOT=.
|
|
endif
|
|
endif
|
|
|
|
_create_permissions_script:
|
|
# create permissions_script
|
|
echo "cd \$$(dirname \$$0)" > $(PERMISSIONS_SCRIPT)
|
|
find $(PERMISSIONS_ROOT) -name '*' -exec stat -c 'chmod %a %n' {} \; | \
|
|
grep -v ".svn" | grep -v "~$$" >> $(PERMISSIONS_SCRIPT)
|
|
sort $(PERMISSIONS_SCRIPT) -o $(PERMISSIONS_SCRIPT)
|
|
echo "exit 0" >> $(PERMISSIONS_SCRIPT)
|
|
touch $(PERMISSIONS_SCRIPT)
|
|
|
|
all: $(permissions_applied)
|
|
# initial permissions have been applied so just remake the permissions script
|
|
$(MAKE) _create_permissions_script
|
|
|
|
$(permissions_applied): $(PERMISSIONS_SCRIPT)
|
|
# there is a permissions script but it has not yet been applied
|
|
# this project must have just been checked out from svn or a new project
|
|
# in both cases we simply just need to execute the script and set the tag
|
|
bash $(permissions_script)
|
|
touch $(permissions_applied)
|
|
|
|
$(PERMISSIONS_SCRIPT):
|
|
# there is no permissions script so this must be a new project
|
|
# lets create a permissions script
|
|
$(MAKE) _create_permissions_script
|
|
|
|
clean:
|
|
rm -f $(PERMISSIONS_SCRIPT) $(permissions_applied)
|
|
|
|
.PHONY: clean all _create_permissions_script |