Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lib/imagery: fix missing SONAME #2363

Merged
merged 1 commit into from
May 9, 2022
Merged

Conversation

neteler
Copy link
Member

@neteler neteler commented May 8, 2022

The change implemented in #2269 actually didn't fix the SONAME problem (see issue #2268), at least on Fedora:

# status after PR 2269:
readelf -d /usr/lib64/grass80/lib/libgrass_imagery.so

Dynamic section at offset 0x16860 contains 31 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/lib64/grass80/lib]
 0x000000000000000c (INIT)               0x5000
 0x000000000000000d (FINI)               0x11e8c
 0x0000000000000019 (INIT_ARRAY)         0x17848
...

==> The SONAME is still missing which means that #2269 did not solve it (tested on Fedora).

With this PR (see e.g. also lib/display/Makefile) the SONAME appears:

readelf -d /home/mneteler/software/grass80/dist.x86_64-pc-linux-gnu/lib/libgrass_imagery.so

Dynamic section at offset 0x14db8 contains 30 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000e (SONAME)             Library soname: [libgrass_imagery.8.0.so]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/local/grass80/lib]
 0x000000000000000c (INIT)               0x5000
 0x000000000000000d (FINI)               0x10864
 0x0000000000000019 (INIT_ARRAY)         0x15da0
...

which is a requirement to compile, install and run the GDAL-GRASS driver (https://github.com/OSGeo/gdal-grass).

Can @t0b3 please check if this works on Gentoo as well?

The change implemented in OSGeo#2269 actually didn't fix the SONAME problem:

```
readelf -d /usr/lib64/grass80/lib/libgrass_imagery.so

Dynamic section at offset 0x16860 contains 31 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/lib64/grass80/lib]
 0x000000000000000c (INIT)               0x5000
 0x000000000000000d (FINI)               0x11e8c
 0x0000000000000019 (INIT_ARRAY)         0x17848
...
```

==> The SONAME is still missing which means that OSGeo#2269 did not solve it (tested on Fedora).

With this PR the SONAME appears:

```
readelf -d /home/mneteler/software/grass80/dist.x86_64-pc-linux-gnu/lib/libgrass_imagery.so

Dynamic section at offset 0x14db8 contains 30 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000e (SONAME)             Library soname: [libgrass_imagery.8.0.so]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/local/grass80/lib]
 0x000000000000000c (INIT)               0x5000
 0x000000000000000d (FINI)               0x10864
 0x0000000000000019 (INIT_ARRAY)         0x15da0
...
```

which is a requirement to compile, install and run the GDAL-GRASS driver (https://github.com/OSGeo/gdal-grass).
@neteler neteler added the bug Something isn't working label May 8, 2022
@neteler neteler added this to the 8.0.2 milestone May 8, 2022
@neteler neteler requested a review from nilason May 8, 2022 09:50
@neteler neteler self-assigned this May 8, 2022
@t0b3
Copy link
Contributor

t0b3 commented May 8, 2022

@neteler thanks for asking. On gentoo this patch has been introduced on top of grass-8.0.1
gentoo/gentoo@9cd5e5a

I since then I get this and output and gdal compiles fine

$ readelf -d /usr/lib64/grass80/lib/libgrass_imagery.so 

Dynamic section at offset 0x14dc8 contains 29 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000e (SONAME)             Library soname: [libgrass_imagery.8.0.so]
...

also with current master as of now I get

readelf -d /var/tmp/portage/sci-geosciences/grass-9999/image/usr/lib64/grass83/lib/libgrass_imagery.so 

Dynamic section at offset 0x14db8 contains 30 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.3.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.3.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.3.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000e (SONAME)             Library soname: [libgrass_imagery.8.3.so]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/grass83/lib]
...

@t0b3
Copy link
Contributor

t0b3 commented May 8, 2022

I just tested this PR and AFAICT it won't hurt neither. Result is still the same 👍

Copy link
Contributor

@nilason nilason left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no SONAME involved in Mac dylibs. This PR doesn't make any difference in either direction, so if needed on some platforms I will not object.
It's not obvious to me with a quick look, what part of Vars.make that make it work on Fedora though. On the other hand, quite a few of the other libs are also including this file.

@neteler neteler merged commit ff63100 into OSGeo:main May 9, 2022
@neteler neteler deleted the libimagery_soname branch May 9, 2022 10:37
neteler added a commit that referenced this pull request May 9, 2022
The change implemented in #2269 actually didn't fix the SONAME problem (see issue #2268), at least on Fedora:

```
# status after PR 2269:
readelf -d /usr/lib64/grass80/lib/libgrass_imagery.so

Dynamic section at offset 0x16860 contains 31 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/lib64/grass80/lib]
 0x000000000000000c (INIT)               0x5000
 0x000000000000000d (FINI)               0x11e8c
 0x0000000000000019 (INIT_ARRAY)         0x17848
...
```

==> The SONAME is still missing which means that #2269 did not solve it (tested on Fedora).

With this PR (see e.g. also `lib/display/Makefile`) the SONAME appears:

```
readelf -d /home/mneteler/software/grass80/dist.x86_64-pc-linux-gnu/lib/libgrass_imagery.so

Dynamic section at offset 0x14db8 contains 30 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000e (SONAME)             Library soname: [libgrass_imagery.8.0.so]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/local/grass80/lib]
 0x000000000000000c (INIT)               0x5000
 0x000000000000000d (FINI)               0x10864
 0x0000000000000019 (INIT_ARRAY)         0x15da0
...
```

which is a requirement to compile, install and run the GDAL-GRASS driver (https://github.com/OSGeo/gdal-grass).
neteler added a commit that referenced this pull request May 9, 2022
The change implemented in #2269 actually didn't fix the SONAME problem (see issue #2268), at least on Fedora:

```
# status after PR 2269:
readelf -d /usr/lib64/grass80/lib/libgrass_imagery.so

Dynamic section at offset 0x16860 contains 31 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/lib64/grass80/lib]
 0x000000000000000c (INIT)               0x5000
 0x000000000000000d (FINI)               0x11e8c
 0x0000000000000019 (INIT_ARRAY)         0x17848
...
```

==> The SONAME is still missing which means that #2269 did not solve it (tested on Fedora).

With this PR (see e.g. also `lib/display/Makefile`) the SONAME appears:

```
readelf -d /home/mneteler/software/grass80/dist.x86_64-pc-linux-gnu/lib/libgrass_imagery.so

Dynamic section at offset 0x14db8 contains 30 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000e (SONAME)             Library soname: [libgrass_imagery.8.0.so]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/local/grass80/lib]
 0x000000000000000c (INIT)               0x5000
 0x000000000000000d (FINI)               0x10864
 0x0000000000000019 (INIT_ARRAY)         0x15da0
...
```

which is a requirement to compile, install and run the GDAL-GRASS driver (https://github.com/OSGeo/gdal-grass).
neteler added a commit that referenced this pull request May 9, 2022
The change implemented in #2269 actually didn't fix the SONAME problem (see issue #2268), at least on Fedora:

```
# status after PR 2269:
readelf -d /usr/lib64/grass80/lib/libgrass_imagery.so

Dynamic section at offset 0x16860 contains 31 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/lib64/grass80/lib]
 0x000000000000000c (INIT)               0x5000
 0x000000000000000d (FINI)               0x11e8c
 0x0000000000000019 (INIT_ARRAY)         0x17848
...
```

==> The SONAME is still missing which means that #2269 did not solve it (tested on Fedora).

With this PR (see e.g. also `lib/display/Makefile`) the SONAME appears:

```
readelf -d /home/mneteler/software/grass80/dist.x86_64-pc-linux-gnu/lib/libgrass_imagery.so

Dynamic section at offset 0x14db8 contains 30 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000e (SONAME)             Library soname: [libgrass_imagery.8.0.so]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/local/grass80/lib]
 0x000000000000000c (INIT)               0x5000
 0x000000000000000d (FINI)               0x10864
 0x0000000000000019 (INIT_ARRAY)         0x15da0
...
```

which is a requirement to compile, install and run the GDAL-GRASS driver (https://github.com/OSGeo/gdal-grass).
@neteler neteler modified the milestones: 8.0.2, 7.8.8 May 9, 2022
ninsbl pushed a commit to ninsbl/grass that referenced this pull request Oct 26, 2022
The change implemented in OSGeo#2269 actually didn't fix the SONAME problem (see issue OSGeo#2268), at least on Fedora:

```
# status after PR 2269:
readelf -d /usr/lib64/grass80/lib/libgrass_imagery.so

Dynamic section at offset 0x16860 contains 31 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/lib64/grass80/lib]
 0x000000000000000c (INIT)               0x5000
 0x000000000000000d (FINI)               0x11e8c
 0x0000000000000019 (INIT_ARRAY)         0x17848
...
```

==> The SONAME is still missing which means that OSGeo#2269 did not solve it (tested on Fedora).

With this PR (see e.g. also `lib/display/Makefile`) the SONAME appears:

```
readelf -d /home/mneteler/software/grass80/dist.x86_64-pc-linux-gnu/lib/libgrass_imagery.so

Dynamic section at offset 0x14db8 contains 30 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000e (SONAME)             Library soname: [libgrass_imagery.8.0.so]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/local/grass80/lib]
 0x000000000000000c (INIT)               0x5000
 0x000000000000000d (FINI)               0x10864
 0x0000000000000019 (INIT_ARRAY)         0x15da0
...
```

which is a requirement to compile, install and run the GDAL-GRASS driver (https://github.com/OSGeo/gdal-grass).
ninsbl pushed a commit to ninsbl/grass that referenced this pull request Feb 17, 2023
The change implemented in OSGeo#2269 actually didn't fix the SONAME problem (see issue OSGeo#2268), at least on Fedora:

```
# status after PR 2269:
readelf -d /usr/lib64/grass80/lib/libgrass_imagery.so

Dynamic section at offset 0x16860 contains 31 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/lib64/grass80/lib]
 0x000000000000000c (INIT)               0x5000
 0x000000000000000d (FINI)               0x11e8c
 0x0000000000000019 (INIT_ARRAY)         0x17848
...
```

==> The SONAME is still missing which means that OSGeo#2269 did not solve it (tested on Fedora).

With this PR (see e.g. also `lib/display/Makefile`) the SONAME appears:

```
readelf -d /home/mneteler/software/grass80/dist.x86_64-pc-linux-gnu/lib/libgrass_imagery.so

Dynamic section at offset 0x14db8 contains 30 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000e (SONAME)             Library soname: [libgrass_imagery.8.0.so]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/local/grass80/lib]
 0x000000000000000c (INIT)               0x5000
 0x000000000000000d (FINI)               0x10864
 0x0000000000000019 (INIT_ARRAY)         0x15da0
...
```

which is a requirement to compile, install and run the GDAL-GRASS driver (https://github.com/OSGeo/gdal-grass).
neteler added a commit to nilason/grass that referenced this pull request Nov 7, 2023
The change implemented in OSGeo#2269 actually didn't fix the SONAME problem (see issue OSGeo#2268), at least on Fedora:

```
# status after PR 2269:
readelf -d /usr/lib64/grass80/lib/libgrass_imagery.so

Dynamic section at offset 0x16860 contains 31 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/lib64/grass80/lib]
 0x000000000000000c (INIT)               0x5000
 0x000000000000000d (FINI)               0x11e8c
 0x0000000000000019 (INIT_ARRAY)         0x17848
...
```

==> The SONAME is still missing which means that OSGeo#2269 did not solve it (tested on Fedora).

With this PR (see e.g. also `lib/display/Makefile`) the SONAME appears:

```
readelf -d /home/mneteler/software/grass80/dist.x86_64-pc-linux-gnu/lib/libgrass_imagery.so

Dynamic section at offset 0x14db8 contains 30 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_gis.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_raster.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libgrass_vector.8.0.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000e (SONAME)             Library soname: [libgrass_imagery.8.0.so]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/local/grass80/lib]
 0x000000000000000c (INIT)               0x5000
 0x000000000000000d (FINI)               0x10864
 0x0000000000000019 (INIT_ARRAY)         0x15da0
...
```

which is a requirement to compile, install and run the GDAL-GRASS driver (https://github.com/OSGeo/gdal-grass).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants