Copy & Paste

88 views
Skip to first unread message

ph h

unread,
Apr 13, 2022, 10:36:38 PM4/13/22
to sage-devel
Dear All,

At the top of 'sage/src/bin/sage' script:

<quote>
# WARNING: this function is copy/pasted from both src/bin/sage-env and
# the top-level "sage" script. Please keep them synchronized.
resolvelinks() {
</quote>

Is there any other way to keep them in sync without using Copy&Paste?

Just curiosity.

Regards,

phiho


Michael Orlitzky

unread,
Apr 13, 2022, 11:21:06 PM4/13/22
to sage-...@googlegroups.com
On Wed, 2022-04-13 at 19:36 -0700, ph h wrote:
> Dear All,
>
> At the top of 'sage/src/bin/sage' script:
>
> <quote>
> # WARNING: this function is copy/pasted from both src/bin/sage-env and
> # the top-level "sage" script. Please keep them synchronized.
> resolvelinks() {
> </quote>
>
> Is there any other way to keep them in sync without using Copy&Paste?
>

I think I'm at least partly responsible for that. There are a few ways
we could de-duplicate those scripts, but it's not clear that any of
them are less complex or easier to maintain than copy/paste for now.

Personally, I would rather see the time spent investigating whether or
not we truly need the symlink-free path in the instances where
resolvelinks() is currently used. I would guess not -- that there is a
better solution to whatever other problem prompted the resolvelinks()
function. But I don't know what that problem was. And to remove the
function and "see what happens" would be committing yourself to
answering bug reports from weird sage installs for the next twelve
months.


ph h

unread,
Apr 14, 2022, 7:55:08 PM4/14/22
to sage-...@googlegroups.com
Hi,

<quote>
Personally, I would rather see the time spent investigating whether or
not we truly need the symlink-free path in the instances where
resolvelinks() is currently used. I would guess not -- that there is a
better solution to whatever other problem prompted the resolvelinks()
function. But I don't know what that problem was. And to remove the
function and "see what happens" would be committing yourself to
answering bug reports from weird sage installs for the next twelve
months.
</quote>

Now your concern is truly appreciated.

 "Find in File" in "Visual Studio Code" reveals duplications in 24 files in 13 directories (please find the results appended below)

It is amazing that SageMath is still maintainable up to now,  release 9.6
Maybe 'resolvelinks' is just  the tip of an iceberg (something more important is missing?)

Best wishes,

phiho

# Query: resolvelinks()
# ContextLines: 1

24 results - 24 files

sage/sage:
  32  # meantime however the two should be kept synchronized.
  33: resolvelinks() {
  34      # $in is what still needs to be converted (normally has no starting slash)

sage/build/pkgs/sagelib/src/bin/sage:
  4  # the top-level "sage" script. Please keep them synchronized.
  5: resolvelinks() {
  6      # $in is what still needs to be converted (normally has no starting slash)

sage/build/pkgs/sagelib/src/bin/sage-env:
  35  #
  36: resolvelinks() {
  37      # $in is what still needs to be converted (normally has no starting slash)

sage/build/pkgs/sagemath_categories/src/bin/sage:
  4  # the top-level "sage" script. Please keep them synchronized.
  5: resolvelinks() {
  6      # $in is what still needs to be converted (normally has no starting slash)

sage/build/pkgs/sagemath_categories/src/bin/sage-env:
  35  #
  36: resolvelinks() {
  37      # $in is what still needs to be converted (normally has no starting slash)

sage/build/pkgs/sagemath_objects/src/bin/sage:
  4  # the top-level "sage" script. Please keep them synchronized.
  5: resolvelinks() {
  6      # $in is what still needs to be converted (normally has no starting slash)

sage/build/pkgs/sagemath_objects/src/bin/sage-env:
  35  #
  36: resolvelinks() {
  37      # $in is what still needs to be converted (normally has no starting slash)

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/bin/sage:
  4  # the top-level "sage" script. Please keep them synchronized.
  5: resolvelinks() {
  6      # $in is what still needs to be converted (normally has no starting slash)

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/bin/sage-env:
  35  #
  36: resolvelinks() {
  37      # $in is what still needs to be converted (normally has no starting slash)

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/build/scripts-3.10/sage:
  4  # the top-level "sage" script. Please keep them synchronized.
  5: resolvelinks() {
  6      # $in is what still needs to be converted (normally has no starting slash)

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/build/scripts-3.10/sage-env:
  35  #
  36: resolvelinks() {
  37      # $in is what still needs to be converted (normally has no starting slash)

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_categories/src/bin/sage:
  4  # the top-level "sage" script. Please keep them synchronized.
  5: resolvelinks() {
  6      # $in is what still needs to be converted (normally has no starting slash)

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_categories/src/bin/sage-env:
  35  #
  36: resolvelinks() {
  37      # $in is what still needs to be converted (normally has no starting slash)

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_objects/src/bin/sage:
  4  # the top-level "sage" script. Please keep them synchronized.
  5: resolvelinks() {
  6      # $in is what still needs to be converted (normally has no starting slash)

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_objects/src/bin/sage-env:
  35  #
  36: resolvelinks() {
  37      # $in is what still needs to be converted (normally has no starting slash)

sage/pkgs/sage-conf_pypi/sage_root/src/bin/sage-env:
  35  #
  36: resolvelinks() {
  37      # $in is what still needs to be converted (normally has no starting slash)

sage/pkgs/sagemath-categories/bin/sage:
  4  # the top-level "sage" script. Please keep them synchronized.
  5: resolvelinks() {
  6      # $in is what still needs to be converted (normally has no starting slash)

sage/pkgs/sagemath-categories/bin/sage-env:
  35  #
  36: resolvelinks() {
  37      # $in is what still needs to be converted (normally has no starting slash)

sage/pkgs/sagemath-objects/bin/sage:
  4  # the top-level "sage" script. Please keep them synchronized.
  5: resolvelinks() {
  6      # $in is what still needs to be converted (normally has no starting slash)

sage/pkgs/sagemath-objects/bin/sage-env:
  35  #
  36: resolvelinks() {
  37      # $in is what still needs to be converted (normally has no starting slash)

sage/pkgs/sagemath-standard/bin/sage:
  4  # the top-level "sage" script. Please keep them synchronized.
  5: resolvelinks() {
  6      # $in is what still needs to be converted (normally has no starting slash)

sage/pkgs/sagemath-standard/bin/sage-env:
  35  #
  36: resolvelinks() {
  37      # $in is what still needs to be converted (normally has no starting slash)

sage/src/bin/sage:
  4  # the top-level "sage" script. Please keep them synchronized.
  5: resolvelinks() {
  6      # $in is what still needs to be converted (normally has no starting slash)

sage/src/bin/sage-env:
  35  #
  36: resolvelinks() {
  37      # $in is what still needs to be converted (normally has no starting slash)

# Query: resolvelinks
# ContextLines: 1

36 results - 24 files

sage/sage:
  110      # resolved
  111:     SAGE_ROOT=`resolvelinks "$0"` || \
  112      SAGE_ROOT="$0"

sage/build/pkgs/sagelib/src/bin/sage:
  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/build/pkgs/sagelib/src/bin/sage-env:
  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/build/pkgs/sagemath_categories/src/bin/sage:
  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/build/pkgs/sagemath_categories/src/bin/sage-env:
  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/build/pkgs/sagemath_objects/src/bin/sage:
  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/build/pkgs/sagemath_objects/src/bin/sage-env:
  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/bin/sage:
  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/bin/sage-env:
  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/build/scripts-3.10/sage:
  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/build/scripts-3.10/sage-env:
  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_categories/src/bin/sage:
  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_categories/src/bin/sage-env:
  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_objects/src/bin/sage:
  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_objects/src/bin/sage-env:
  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/pkgs/sage-conf_pypi/sage_root/src/bin/sage-env:
  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/pkgs/sagemath-categories/bin/sage:
  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/pkgs/sagemath-categories/bin/sage-env:
  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/pkgs/sagemath-objects/bin/sage:
  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/pkgs/sagemath-objects/bin/sage-env:
  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/pkgs/sagemath-standard/bin/sage:
  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/pkgs/sagemath-standard/bin/sage-env:
  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/src/bin/sage:
  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/src/bin/sage-env:
  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

(resolvelinks()  and   resolvelinks combined)

# Query: resolvelinks
# ContextLines: 1

60 results - 24 files

sage/sage:
   32  # meantime however the two should be kept synchronized.
   33: resolvelinks() {
   34      # $in is what still needs to be converted (normally has no starting slash)

  110      # resolved
  111:     SAGE_ROOT=`resolvelinks "$0"` || \
  112      SAGE_ROOT="$0"

sage/build/pkgs/sagelib/src/bin/sage:
   4  # the top-level "sage" script. Please keep them synchronized.
   5: resolvelinks() {
   6      # $in is what still needs to be converted (normally has no starting slash)

  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/build/pkgs/sagelib/src/bin/sage-env:
   35  #
   36: resolvelinks() {
   37      # $in is what still needs to be converted (normally has no starting slash)

  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/build/pkgs/sagemath_categories/src/bin/sage:
   4  # the top-level "sage" script. Please keep them synchronized.
   5: resolvelinks() {
   6      # $in is what still needs to be converted (normally has no starting slash)

  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/build/pkgs/sagemath_categories/src/bin/sage-env:
   35  #
   36: resolvelinks() {
   37      # $in is what still needs to be converted (normally has no starting slash)

  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/build/pkgs/sagemath_objects/src/bin/sage:
   4  # the top-level "sage" script. Please keep them synchronized.
   5: resolvelinks() {
   6      # $in is what still needs to be converted (normally has no starting slash)

  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/build/pkgs/sagemath_objects/src/bin/sage-env:
   35  #
   36: resolvelinks() {
   37      # $in is what still needs to be converted (normally has no starting slash)

  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/bin/sage:
   4  # the top-level "sage" script. Please keep them synchronized.
   5: resolvelinks() {
   6      # $in is what still needs to be converted (normally has no starting slash)

  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/bin/sage-env:
   35  #
   36: resolvelinks() {
   37      # $in is what still needs to be converted (normally has no starting slash)

  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/build/scripts-3.10/sage:
   4  # the top-level "sage" script. Please keep them synchronized.
   5: resolvelinks() {
   6      # $in is what still needs to be converted (normally has no starting slash)

  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/build/scripts-3.10/sage-env:
   35  #
   36: resolvelinks() {
   37      # $in is what still needs to be converted (normally has no starting slash)

  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_categories/src/bin/sage:
   4  # the top-level "sage" script. Please keep them synchronized.
   5: resolvelinks() {
   6      # $in is what still needs to be converted (normally has no starting slash)

  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_categories/src/bin/sage-env:
   35  #
   36: resolvelinks() {
   37      # $in is what still needs to be converted (normally has no starting slash)

  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_objects/src/bin/sage:
   4  # the top-level "sage" script. Please keep them synchronized.
   5: resolvelinks() {
   6      # $in is what still needs to be converted (normally has no starting slash)

  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_objects/src/bin/sage-env:
   35  #
   36: resolvelinks() {
   37      # $in is what still needs to be converted (normally has no starting slash)

  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/pkgs/sage-conf_pypi/sage_root/src/bin/sage-env:
   35  #
   36: resolvelinks() {
   37      # $in is what still needs to be converted (normally has no starting slash)

  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/pkgs/sagemath-categories/bin/sage:
   4  # the top-level "sage" script. Please keep them synchronized.
   5: resolvelinks() {
   6      # $in is what still needs to be converted (normally has no starting slash)

  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/pkgs/sagemath-categories/bin/sage-env:
   35  #
   36: resolvelinks() {
   37      # $in is what still needs to be converted (normally has no starting slash)

  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/pkgs/sagemath-objects/bin/sage:
   4  # the top-level "sage" script. Please keep them synchronized.
   5: resolvelinks() {
   6      # $in is what still needs to be converted (normally has no starting slash)

  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/pkgs/sagemath-objects/bin/sage-env:
   35  #
   36: resolvelinks() {
   37      # $in is what still needs to be converted (normally has no starting slash)

  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/pkgs/sagemath-standard/bin/sage:
   4  # the top-level "sage" script. Please keep them synchronized.
   5: resolvelinks() {
   6      # $in is what still needs to be converted (normally has no starting slash)

  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/pkgs/sagemath-standard/bin/sage-env:
   35  #
   36: resolvelinks() {
   37      # $in is what still needs to be converted (normally has no starting slash)

  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  

sage/src/bin/sage:
   4  # the top-level "sage" script. Please keep them synchronized.
   5: resolvelinks() {
   6      # $in is what still needs to be converted (normally has no starting slash)

  80  # a symlink (Trac #30888).
  81: SELF=$(resolvelinks "${0}")
  82  

sage/src/bin/sage-env:
   35  #
   36: resolvelinks() {
   37      # $in is what still needs to be converted (normally has no starting slash)

  338      # non-existing directory.
  339:     DOT_SAGE=`resolvelinks "$HOME/.sage"`
  340  

  630          # The activate script needs to be sourced using its actual path.
  631:         nodeenv_activate=`resolvelinks "$nodeenv_activate"`
  632  


--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/2deae4f7c986bad7542756d2ff32189f99d2a7db.camel%40orlitzky.com.

John H Palmieri

unread,
Apr 14, 2022, 8:25:55 PM4/14/22
to sage-devel
I think your search is following some symbolic links: only three of these instances are under version control (git):

    % git grep 'resolvelinks()'
    sage:resolvelinks() {
    src/bin/sage:resolvelinks() {
    src/bin/sage-env:resolvelinks() {

The last one should probably have a comment in line with the first two.

François Bissey

unread,
Apr 14, 2022, 10:01:56 PM4/14/22
to sage-...@googlegroups.com
You do realise that those files under sage/build/pkgs and sage/pkgs are actually symlinks to a single instance?
> To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/2f6814e0-701b-4c55-a119-e49d94ecf5can%40googlegroups.com.

ph h

unread,
Apr 15, 2022, 2:09:50 AM4/15/22
to sage-...@googlegroups.com
Hi,

Thank you for your response, it is much appreciated.

<quote>
I think your search is following some symbolic links: only three of these instances are under version control (git):

    % git grep 'resolvelinks()'
    sage:resolvelinks() {
    src/bin/sage:resolvelinks() {
    src/bin/sage-env:resolvelinks() {

The last one should probably have a comment in line with the first two
</quote>

You are correct, not all of the files reported by VSCode are duplications, some are symlinks, my bad

The full listing of these files (both actual and symlink):

11 actual files: 6 'sage' files, 5 of them are of size 40187,  one is  5369. and 5 'sage-env' of size 21981
13 symlinks: 6 for 'sage' and 7 for 'sage-env'

24 total as reported by VSCode

Please find appended below the said listings.

It is much appreciated if someone would kindly verify and correct any errors in these numbers.

BTW, is symlink a solution for "Copy & Paste"?
By another way, are there reasons that "Copy & Paste & Symlinks" is better than just symlinks.

Regards,

phiho

~/sage-9.6$ ls -l sage/sage
-rwxrwxrwx 1 hph hph 5369 Apr 13 19:58 sage/sage
~/sage-9.6$

~/sage-9.6$ ls -l sage/build/pkgs/sagelib/src/bin/sage
-rwxrwxrwx 1 hph hph 40187 Apr 10 19:49 sage/build/pkgs/sagelib/src/bin/sage
~/sage-9.6$ ls -l sage/build/pkgs/sagelib/src/bin/sage-env
-rw-rw-rw- 1 hph hph 21981 Apr 10 19:49 sage/build/pkgs/sagelib/src/bin/sage-env
~/sage-9.6$

~/sage-9.6$ ls -l sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/bin/sage
-rwxrwxrwx 1 hph hph 40187 Apr 10 19:49 sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/bin/sage
~/sage-9.6$ ls -l sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/bin/sage-env
-rw-rw-rw- 1 hph hph 21981 Apr 10 19:49 sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/bin/sage-env
~/sage-9.6$

~/sage-9.6$ ls -l sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/build/scripts-3.10/sage
-rwxrwxrwx 1 hph hph 40187 Apr 10 19:49 sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/build/scripts-3.10/sage
~/sage-9.6$ ls -l sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/build/scripts-3.10/sage-env
-rwxrwxrwx 1 hph hph 21981 Apr 10 19:49 sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagelib/src/build/scripts-3.10/sage-env
~/sage-9.6$

~/sage-9.6$ ls -l sage/pkgs/sagemath-standard/bin/sage
-rwxrwxrwx 1 hph hph 40187 Apr 10 19:49 sage/pkgs/sagemath-standard/bin/sage
~/sage-9.6$ ls -l sage/pkgs/sagemath-standard/bin/sage-env
-rw-rw-rw- 1 hph hph 21981 Apr 10 19:49 sage/pkgs/sagemath-standard/bin/sage-env
~/sage-9.6$

~/sage-9.6$ ls -l sage/src/bin/sage
-rwxrwxrwx 1 hph hph 40187 Apr 10 19:49 sage/src/bin/sage
~/sage-9.6$ ls -l sage/src/bin/sage-env
-rw-rw-rw- 1 hph hph 21981 Apr 10 19:49 sage/src/bin/sage-env
~/sage-9.6$

~/sage-9.6$ ls -l sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_categories/src/bin/sage
lrwxrwxrwx 1 hph hph 21 Apr 10 19:49 sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_categories/src/bin/sage -> ../../../src/bin/sage
~/sage-9.6$ ls -l sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_categories/src/bin/sage-env
lrwxrwxrwx 1 hph hph 25 Apr 10 19:49 sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_categories/src/bin/sage-env -> ../../../src/bin/sage-env
~/sage-9.6$

~/sage-9.6$ ls -l sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_objects/src/bin/sage
lrwxrwxrwx 1 hph hph 21 Apr 10 19:49 sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_objects/src/bin/sage -> ../../../src/bin/sage
~/sage-9.6$ ls -l sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_objects/src/bin/sage-env
lrwxrwxrwx 1 hph hph 25 Apr 10 19:49 sage/pkgs/sage-conf_pypi/sage_root/build/pkgs/sagemath_objects/src/bin/sage-env -> ../../../src/bin/sage-env
~/sage-9.6$

~/sage-9.6$ ls -l sage/pkgs/sage-conf_pypi/sage_root/src/bin/sage-env
lrwxrwxrwx 1 hph hph 31 Apr 10 19:49 sage/pkgs/sage-conf_pypi/sage_root/src/bin/sage-env -> ../../../../../src/bin/sage-env
~/sage-9.6$

~/sage-9.6$ ls -l sage/pkgs/sagemath-categories/bin/sage
lrwxrwxrwx 1 hph hph 21 Apr 10 19:49 sage/pkgs/sagemath-categories/bin/sage -> ../../../src/bin/sage
~/sage-9.6$ ls -l sage/pkgs/sagemath-categories/bin/sage-env
lrwxrwxrwx 1 hph hph 25 Apr 10 19:49 sage/pkgs/sagemath-categories/bin/sage-env -> ../../../src/bin/sage-env
~/sage-9.6$

~/sage-9.6$ ls -l sage/pkgs/sagemath-objects/bin/sage
lrwxrwxrwx 1 hph hph 21 Apr 10 19:49 sage/pkgs/sagemath-objects/bin/sage -> ../../../src/bin/sage
~/sage-9.6$ ls -l sage/pkgs/sagemath-objects/bin/sage-env
lrwxrwxrwx 1 hph hph 25 Apr 10 19:49 sage/pkgs/sagemath-objects/bin/sage-env -> ../../../src/bin/sage-env
~/sage-9.6$

~/sage-9.6$ ls -l sage/build/pkgs/sagemath_categories/src/bin/sage
lrwxrwxrwx 1 hph hph 21 Apr 10 19:49 sage/build/pkgs/sagemath_categories/src/bin/sage -> ../../../src/bin/sage
~/sage-9.6$ ls -l sage/build/pkgs/sagemath_categories/src/bin/sage-env
lrwxrwxrwx 1 hph hph 25 Apr 10 19:49 sage/build/pkgs/sagemath_categories/src/bin/sage-env -> ../../../src/bin/sage-env
~/sage-9.6$

~/sage-9.6$ ls -l sage/build/pkgs/sagemath_objects/src/bin/sage
lrwxrwxrwx 1 hph hph 21 Apr 10 19:49 sage/build/pkgs/sagemath_objects/src/bin/sage -> ../../../src/bin/sage
~/sage-9.6$ ls -l sage/build/pkgs/sagemath_objects/src/bin/sage-env
lrwxrwxrwx 1 hph hph 25 Apr 10 19:49 sage/build/pkgs/sagemath_objects/src/bin/sage-env -> ../../../src/bin/sage-env
~/sage-9.6$


You received this message because you are subscribed to a topic in the Google Groups "sage-devel" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/sage-devel/NLo0tDg7Az0/unsubscribe.
To unsubscribe from this group and all its topics, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/2f6814e0-701b-4c55-a119-e49d94ecf5can%40googlegroups.com.

John H Palmieri

unread,
Apr 15, 2022, 2:16:05 PM4/15/22
to sage-devel
You say, "It is much appreciated if someone would kindly verify and correct any errors in these numbers." I tried to do that and you don't seem to have believed me. I will repeat myself: there are three different instances of this in the Sage library. The others are either symlinks or they are copies made during the Sage build process.

ph h

unread,
Apr 15, 2022, 3:26:31 PM4/15/22
to sage-...@googlegroups.com
Hi,

Your patience is much appreciated.

> I think your search is following some symbolic links: only three of these instances are under version control (git):
Sorry, it is not that your are not believed, but just a little confusion about that " following some symbolic links"

>  there are three different instances of this in the Sage library. The others are either symlinks or they are copies made during the Sage build process.

Thank you so much for your clarification on the automated 'Copy&Paste' on top of making symlinks during the build process. It is very enlightening.

Regards,

phiho



Reply all
Reply to author
Forward
0 new messages