Re: xsrc libdrm update policy
Robert Bagdan <[email protected]> Mon, 8 Jun 2026 18:21:17 +0200
| Newsgroups | gmane.os.netbsd.devel.x11 |
|---|---|
| Message-ID | <CADsetiqp3TsCcL27HOyX3dGuQ68LZV2+KJjjkvB1mtU4FkaYtg@mail.gmail.com> |
> > One tool we have to detect ABI changes or breakage is .expsym files. > > 1. Create an empty file src/external/mit/xorg/lib/libdrm/drm.expsym > and make sure the build fails (you can just run `nbmake-$ARCH -C > src/external/mit/xorg/lib/libdrm dependall' if you've already done > a distribution build, no need to repeat the whole distribution > build). > > 2. Fill the .expsym file with the `update-symbols' target. > > 3. Try updating libdrm itself, and rebuild it. If the build fails, > you can try `update-symbols' again. > > At the end of step (3), you may get one of: > > WARNING: Symbols added, minor bump required! > WARNING: Symbols deleted, major bump required! > I did it*, and didn't get warnings**, src/external/mit/xorg/lib/libdrm/drm.expsym is the same with 2.4.124 and 2.4.134. * Just rm -rf xsrc/external/mit/libdrm/dist, cp -R libdrm-2.4.134 xsrc/external/mit/libdrm/dist, and apply patches from pkgsrc's libdrm with some manual fix. ** The last lines: .... # build libdrm/libdrm.so.3.8 rm -f libdrm.so.3.8 /usr/src/obj/tooldir.NetBSD-11.0_RC4-amd64/bin/x86_64--netbsd-gcc -shared -Wl,-soname,libdrm.so.3 -Wl,--warn-shared- textrel -Wl,-Map=libdrm.so.3.map --sysroot=/ -Wl,-z,relro -Wl,-rpath,/usr/X11R7/lib -L=/usr/X11R7/lib -o libdrm.so. 3.8.tmp -Wl,-rpath-link,/lib -L=/lib -Wl,-x -Wl,--whole-archive libdrm_pic.a -Wl,--no-whole-archive -L/usr/src/lib /libm/obj -lm -L/usr/src/lib/libpci/obj -lpci mv -f libdrm.so.3.8.tmp libdrm.so.3.8 ln -sf libdrm.so.3.8 libdrm.so.3.tmp mv -f libdrm.so.3.tmp libdrm.so.3 ln -sf libdrm.so.3.8 libdrm.so.tmp mv -f libdrm.so.tmp libdrm.so # create libdrm/libdrm.so.3.8.actsym /usr/src/obj/tooldir.NetBSD-11.0_RC4-amd64/bin/x86_64--netbsd-nm --dynamic --extern-only --defined-only --with-symbol- versions libdrm.so.3.8 | cut -d' ' -f3 | grep -Fvx -e _end -e _fini -e _init | LC_ALL=C sort -u >libdrm.so.3. 8.actsym.tmp mv -f libdrm.so.3.8.actsym.tmp libdrm.so.3.8.actsym # create libdrm/libdrm.so.3.8.diffsym if diff -u /usr/src/external/mit/xorg/lib/libdrm/drm.expsym libdrm.so.3.8.actsym >libdrm.so.3.8.diffsym.tmp; then mv -f libdrm.so.3.8.diffsym.tmp libdrm.so.3.8.diffsym; else ret=$?; cat libdrm.so.3.8.diffsym.tmp; echo libdrm.so.3.8 : error: actual symbols differ from expected symbols >&2; exit $ret; fi yamato# make -C src/external/mit/xorg/lib/libdrm update-symbols cp libdrm.so.3.8.actsym /usr/src/external/mit/xorg/lib/libdrm/drm.expsym yamato# -- Regards, kikadf