Hello Alex, Alex Vong <alexvong1...@gmail.com> writes:
> [Resending...] > > Hello guix, > > I find out that there are a lof of erroneous uses of regex in the > invokation of FIND-FILES. The correct usage should be: > > (find-files "." "\\.c$") > > Instead people write: > > (find-files "." ".*\\.c") > > which match unwanted files. > > For examples, in the procedure CUSTOM-GCC, the correct regex should be: > > "(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)$" > > instead of: > > ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)" > > Please correct me if I am wrong. > > Right now, the erroneous use of regex in CUSTOM-GCC casues the 'bin/' > directory of the output of gccgo, gcc-objc and gcc-objc++ to be empty. I've done the following experiment to validate your findings: Modified gcc.scm as follows: --8<---------------cut here---------------start------------->8--- 1 file changed, 4 insertions(+), 4 deletions(-) gnu/packages/gcc.scm | 8 ++++---- modified gnu/packages/gcc.scm @@ -631,10 +631,10 @@ as the 'native-search-paths' field." `(modify-phases ,phases (add-after 'install 'remove-broken-or-conflicting-files (lambda* (#:key outputs #:allow-other-keys) - (for-each delete-file - (find-files (string-append (assoc-ref outputs "out") "/bin") - ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)")) - #t)))))))) + ;; (for-each delete-file + ;; (find-files (string-append (assoc-ref outputs "out") "/bin") + ;; ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)")) + #f)))))))) (define %generic-search-paths ;; This is the language-neutral search path for GCC. Entries in $CPATH are --8<---------------cut here---------------end--------------->8--- Then built it with --8<---------------cut here---------------start------------->8--- ./pre-inst-env guix build -K gcc-objc --8<---------------cut here---------------start------------->8--- The copied the resulting store item under a writable location; e.g.: --8<---------------cut here---------------start------------->8--- cp -r /gnu/store/7pmfv7bs9krrjdmfnky2q0i1kdhcvmzj-gcc-objc-8.3.0 /tmp/gccgcc-objc-8.3.0 --8<---------------cut here---------------end--------------->8--- And initialize a git repo in that dir: --8<---------------cut here---------------start------------->8--- cd /tmp/gccgcc-objc-8.3.0; git init && git add . && git commit -m init --8<---------------cut here---------------end--------------->8--- Then fired up Guile, and ran the following: $ guile > ,use (guix build utils) > (define old-regexp ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)") > (define new-regexp "(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)$") > (for-each delete-file (find-files "./bin" old-regexp)) This resulted in the following files being deleted: --8<---------------cut here---------------start------------->8--- git status On branch master Changes not staged for commit: (use "git add/rm <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) deleted: bin/c++ deleted: bin/cpp deleted: bin/g++ deleted: bin/gcc deleted: bin/gcc-ar deleted: bin/gcc-nm deleted: bin/gcc-ranlib deleted: bin/gcov deleted: bin/gcov-dump deleted: bin/gcov-tool deleted: bin/x86_64-unknown-linux-gnu-c++ deleted: bin/x86_64-unknown-linux-gnu-g++ deleted: bin/x86_64-unknown-linux-gnu-gcc deleted: bin/x86_64-unknown-linux-gnu-gcc-8.3.0 deleted: bin/x86_64-unknown-linux-gnu-gcc-ar deleted: bin/x86_64-unknown-linux-gnu-gcc-nm deleted: bin/x86_64-unknown-linux-gnu-gcc-ranlib no changes added to commit (use "git add" and/or "git commit -a") --8<---------------cut here---------------end--------------->8--- And the bin directory is empty, as you found: --8<---------------cut here---------------start------------->8--- ls -al bin/ total 0 drwxr-xr-x 1 mcournoyer users 0 Sep 21 04:31 ./ drwxr-xr-x 1 mcournoyer users 52 Sep 21 04:27 ../ --8<---------------cut here---------------end--------------->8--- Resetting the git repo (git reset --hard), and using the new regexp instead: --8<---------------cut here---------------start------------->8--- (for-each delete-file (find-files "./bin" new-regexp)) --8<---------------cut here---------------end--------------->8--- We now obtain: --8<---------------cut here---------------start------------->8--- git status On branch master Changes not staged for commit: (use "git add/rm <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) deleted: bin/c++ deleted: bin/cpp deleted: bin/g++ deleted: bin/gcc deleted: bin/gcc-ar deleted: bin/gcc-nm deleted: bin/gcc-ranlib deleted: bin/gcov deleted: bin/x86_64-unknown-linux-gnu-c++ deleted: bin/x86_64-unknown-linux-gnu-g++ deleted: bin/x86_64-unknown-linux-gnu-gcc deleted: bin/x86_64-unknown-linux-gnu-gcc-8.3.0 deleted: bin/x86_64-unknown-linux-gnu-gcc-ar deleted: bin/x86_64-unknown-linux-gnu-gcc-nm deleted: bin/x86_64-unknown-linux-gnu-gcc-ranlib no changes added to commit (use "git add" and/or "git commit -a") --8<---------------cut here---------------end--------------->8--- Which is mostly the same except that gcov-dump and gcov-tool are preserved: --8<---------------cut here---------------start------------->8--- ls -al ./bin total 2292 drwxr-xr-x 1 mcournoyer users 36 Sep 21 04:49 ./ drwxr-xr-x 1 mcournoyer users 52 Sep 21 04:27 ../ -rwxr-xr-x 1 mcournoyer users 1155104 Sep 21 04:46 gcov-dump -rwxr-xr-x 1 mcournoyer users 1185632 Sep 21 04:46 gcov-tool --8<---------------cut here---------------end--------------->8--- That doesn't seem right either. Maxim