diff options
Diffstat (limited to 'for-group')
-rwxr-xr-x | for-group | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/for-group b/for-group deleted file mode 100755 index e5c55f9..0000000 --- a/for-group +++ /dev/null @@ -1,114 +0,0 @@ -#! /bin/bash -# -# Running examples: -# -# $ ./for-group group_name configure [OPTIONS] -# $ ./for-group group_name make [OPTIONS] -# -# This is a wrapper for the configure and Make steps designed for a group -# of users (sharing the same group name) working on the project in the same -# build directory. -# -# When the configuration (normally done with `./configure') and build -# (normally done with `.local/bin/make') steps are done with this script, -# all the files that are created within the project will have these -# properties: -# -# 1) Group owner will be the group specified in the command-line. -# 2) The permission flags give write access to the group members. -# -# Copyright (C) 2019, Mohammad Akhlaghi <mohammad@akhlaghi.org> -# -# This script is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This script is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# A copy of the GNU General Public License is available at -# <http://www.gnu.org/licenses/>. - - - - - -# Script settings -# --------------- -# Stop the script if there are any errors. -set -e - - - - - -# See if any argument are given at all. -if [ "x$1" = x ]; then - echo "$0: At least two arguments are necessary:" - echo - echo " To configure: $ ./for-group group_name configure" - echo " To build: $ ./for-group group_name make" - exit 1 -fi - - - - - -# Prepare any other argument to pass onto the `./configure' or `make' -# commands. `$@' is the list of command-line tokens given to the this -# (`./for-group') script. Therefore, the first token in it is the group -# name and the second is the script name. As a result, we want anything -# after the third token. -options=$(echo "$@" | awk '{for(i=3;i<=NF;++i) printf("%s ", $i)}') - - - - - -# Make sure the given group is usable. -if sg "$1" "echo test &> /dev/null" &> /dev/null; then - if [ "x$2" = xconfigure ]; then script="./configure" - elif [ "x$2" = xmake ]; then script=".local/bin/make" - else - echo "$0: a third argument is necessary." - echo "It specifies the action: either 'configure' or 'make'" - exit 1 - fi -else - echo "$0: '$1' is not a usable group name on this system."; - echo "TIP: you can use the 'groups' command to see your groups." - exit 1 -fi - - - - - -# Define the group, and set the permission so the user and group both have -# read and write permissions. Then run the respective script. -# -# We are also exporting a special variable so `./configure' and Make can -# prepare for sanity checks and avoid re-doing the whole analysis with a -# typo (not using this script properly after configuration). -export reproducible_paper_group_name="$1" -sg "$1" "umask u+r,u+w,g+r,g+w,o-r,o-w,o-x && $script $options" - - - - - -# Group writing permissions for dependencies directory -# -# The common build process sets the writing permissions of the installed -# programs/libraries to `755'. So group members can't write over a -# file. This creates problems when another group member wants to update the -# software for example. We thus need to manually add the group writing flag -# to all installed software files. -if [ "x$2" = xconfigure ]; then - echo "Enabling group writing permission on all installed software..." - .local/bin/chmod -R g+w .local/; -fi |