View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002928 | OpenFOAM | Patch | public | 2018-05-12 18:02 | 2018-05-15 11:55 |
Reporter | wyldckat | Assigned To | chris | ||
Priority | low | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Summary | 0002928: 'foamSearch' will not work if executed from within a read-only directory | ||||
Description | 'foamSearch' is currently designed to rely on a temporary file for gathering the output from several searches made with 'foamDictionary'. However, since the path to the file is not set to the system's default temporary path and is instead using the local directory from which the command was executed, this means that it will break when something like the following is done (using OpenFOAM 5 Deb packages): $ tut # goes to '/opt/openfoam5/tutorials', which is read-only $ foamSearch . fvSchemes ddtSchemes.default mktemp: failed to create file via template ‘tmp.XXXXXX’: Permission denied No keyword ddtSchemes.default found in fvSchemes files One solution is to use "/tmp" as the default path for the temporary file; another solution is to simply drop the need for a temporary file and instead pipe the output from the 'for' loop to the existing sorting pipe. Attached are the following files, which provides the latter solution: - 'foamSearch' - the file already with the patch applied, for replacing the file 'bin/foamSearch' on both OpenFOAM 5.x and dev. - 'foamSearch_piped.patch' - the proposed patch. Changes made in the proposed patch: 1. The last for 'loop' is piped directly to the 'sort' pipe line. 2. Added a line break between the examples given by '-help', to that it's a bit easier to tell them apart. 3. Updated the Copyright year. | ||||
Additional Information | Have a vague memory of having seen this issue in the past myself, but was reminded more recently by this bug report: https://develop.openfoam.com/Development/OpenFOAM-plus/issues/700 | ||||
Tags | No tags attached. | ||||
|
foamSearch (2,791 bytes)
#!/bin/sh #------------------------------------------------------------------------------ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2016-2018 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------- # License # This file is part of OpenFOAM. # # OpenFOAM 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. # # OpenFOAM 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. # # You should have received a copy of the GNU General Public License # along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. # # Script # foamSearch # # Description # Searches a directory for dictionary files of a particular name and # extracts entries of a particular keyword, sorting into a unique list. # # Requires foamDictionary. # #------------------------------------------------------------------------------ Script=${0##*/} usage() { cat<<USAGE Usage: $Script [OPTIONS] <directory> <filename> <keyword> options: -count | -c prefix lines by the number of occurrences -help | -h print the usage Searches the <directory> for files named <filename> and extracts entries with <keyword>. Sorts result into a list of unique entries (removing repeats). Examples: * Default ddtSchemes entries in the fvSchemes files in all tutorials: foamSearch $FOAM_TUTORIALS fvSchemes ddtSchemes.default * Relaxations factors for U in fvSolutions files in all tutorials: foamSearch -c $FOAM_TUTORIALS fvSolution relaxationFactors.equations.U USAGE } error() { while [ "$#" -ge 1 ]; do echo "$1"; shift; done usage exit 1 } case "$1" in (-c | -count) count="-c" shift ;; (-h | -help) usage && exit 0 ;; -*) error "$1 is not a valid option/filename" ;; esac [ "$#" -eq 3 ] || error "Wrong number of arguments: expected 3, found $#" [ -d "$1" ] || error "$1 is not a directory" files=$(find "$1" -name "$2") [ -n "$files" ] || error "No file $2 found in $1" for f in $files do foamDictionary -entry "$3" "$f" 2>/dev/null done | \ sort | uniq $count | sed '/^[\t 1-9]*$/d' || \ echo "No keyword $3 found in $2 files" #------------------------------------------------------------------------------ |
|
foamSearch_piped.patch (1,628 bytes)
diff --git a/bin/foamSearch b/bin/foamSearch index 5ef36b7..3ff7d1e 100755 --- a/bin/foamSearch +++ b/bin/foamSearch @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2016-2017 OpenFOAM Foundation +# \\ / A nd | Copyright (C) 2016-2018 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------- # License @@ -48,6 +48,7 @@ Searches the <directory> for files named <filename> and extracts entries with Examples: * Default ddtSchemes entries in the fvSchemes files in all tutorials: foamSearch $FOAM_TUTORIALS fvSchemes ddtSchemes.default + * Relaxations factors for U in fvSolutions files in all tutorials: foamSearch -c $FOAM_TUTORIALS fvSolution relaxationFactors.equations.U USAGE @@ -75,19 +76,14 @@ esac [ "$#" -eq 3 ] || error "Wrong number of arguments: expected 3, found $#" [ -d "$1" ] || error "$1 is not a directory" -tmp=$(mktemp tmp.XXXXXX) files=$(find "$1" -name "$2") [ -n "$files" ] || error "No file $2 found in $1" for f in $files do - foamDictionary -entry "$3" "$f" 2>/dev/null >> "$tmp" -done - -[ -s "$tmp" ] && \ - sort "$tmp" | uniq $count | sed '/^[\t 1-9]*$/d' || \ + foamDictionary -entry "$3" "$f" 2>/dev/null +done | \ + sort | uniq $count | sed '/^[\t 1-9]*$/d' || \ echo "No keyword $3 found in $2 files" -rm "$tmp" 2>/dev/null - #------------------------------------------------------------------------------ |
|
Resolved in dev: https://github.com/OpenFOAM/OpenFOAM-dev/commit/163dc7 Resolved in 5.x: https://github.com/OpenFOAM/OpenFOAM-5.x/commit/8fb577 |
Date Modified | Username | Field | Change |
---|---|---|---|
2018-05-12 18:02 | wyldckat | New Issue | |
2018-05-12 18:02 | wyldckat | Status | new => assigned |
2018-05-12 18:02 | wyldckat | Assigned To | => chris |
2018-05-12 18:02 | wyldckat | File Added: foamSearch | |
2018-05-12 18:02 | wyldckat | File Added: foamSearch_piped.patch | |
2018-05-15 11:55 | chris | Note Added: 0009577 | |
2018-05-15 11:55 | chris | Status | assigned => resolved |
2018-05-15 11:55 | chris | Resolution | open => fixed |