devel@ where you _can_ ask
 help / color / mirror / Atom feed
From: "Константин Яблочкин" <yakonstb@yandex.ru>
To: "devel@ where you _can_ ask" <devel-newbies@lists.altlinux.org>
Subject: [newbies] brlcad uninstallable TCL dependencies and packaged /usr/bin/tclsh which shouldn't be there
Date: Wed, 23 Nov 2016 16:35:42 +0300
Message-ID: <1380341479908142@web30o.yandex.ru> (raw)

Сейчас не ставятся зависимости. Указал:
PreReq: tcl, tcl-dnotebook, tcl-dom, tcl-dp, tcl-gpg, tcl-img, tcl-incrtcl, tcl-iwidgets, tcl-ldap, tcl-memchan, tcl-readline, tcl-snack, tcl-soap, tcl-syslog, tcl-tdom, tcl-thread, tcl-tile, tcl-tix, tcl-tktable, tcl-tktray, tcl-tkXwin, tcl-tls, tcl-togl, tcl-trf, tcl-udp, tcl-vfs, tcl-xml, tcl-xmpp, tcl-xslt, tcl-zlib, tcllib, tk

Пишет:
<quote>
[root@host-221 ~]# apt-get install brlcad
Reading Package Lists... Done
Building Dependency Tree... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.

Since you only requested a single operation it is extremely likely that
the package is simply not installable and a bug report against
that package should be filed.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
  brlcad: PreDepends: tcl-dom but it is not installable
          PreDepends: tcl-xml but it is not installable
          Depends: tcl(ArcherCore) but it is not installable
          Depends: tcl(DbPage) but it is not installable
          Depends: tcl(ExamplePage) but it is not installable
          Depends: tcl(FbPage) but it is not installable
          Depends: tcl(FeedbackDialog) but it is not installable
          Depends: tcl(FullColorPage) but it is not installable
          Depends: tcl(GeometryBrowser) but it is not installable
          Depends: tcl(GhostPage) but it is not installable
          Depends: tcl(GraphEditor) but it is not installable
          Depends: tcl(HelpPage) but it is not installable
          Depends: tcl(HighlightedPage) but it is not installable
          Depends: tcl(LinePage) but it is not installable
          Depends: tcl(ManBrowser) but it is not installable
          Depends: tcl(PictureTypeA) but it is not installable
          Depends: tcl(PictureTypeB) but it is not installable
          Depends: tcl(PictureTypeC) but it is not installable
          Depends: tcl(PictureTypeD) but it is not installable
          Depends: tcl(PictureTypeE) but it is not installable
          Depends: tcl(PictureTypeF) but it is not installable
          Depends: tcl(Tkhtml) but it is not installable
          Depends: tcl(Wizard) but it is not installable
          Depends: tcl(hv3) but it is not installable
          Depends: tcl(ttk::theme::default) but it is not installable
E: Broken packages
[root@host-221 ~]# 
</quote>

Если сделать rpm -iv --nodeps, пишет, что с пакетом идут файлы и конфликтуют:
[root@host-221 ~]# rpm -iv --nodeps brlcad-7.26.0-alt2.3.x86_64.rpm 
Preparing packages for installation...
file /usr/bin/tclsh from install of brlcad-7.26.0-alt2.3 conflicts with file from package tcl-8.5.9-alt2
file /usr/bin/wish from install of brlcad-7.26.0-alt2.3 conflicts with file from package tk-8.5.9-alt3
[root@host-221 ~]# 

Хотя, я делал в спеке удаление %buildroot/usr/bin после установки пакета.

И пока не удаётся сделать, чтобы cmake видел qt5 и libbullet. Далее спек
=====СПЕК======
Name: brlcad
Version: 7.26.0
# patch 2 altrelease 3
Release: alt2.3

Summary: BRL-CAD is a powerful open source cross-platform solid modeling system that includes interactive geometry editing, high-performance ray-tracing for rendering and geometric analysis, a system performance analysis benchmark suite, geometry libraries for application developers, and more than 30 years of active development.

License: LGPL
Group: Engineering
Url: https://brlcad.org/

Packager: Konstantin Yablochkin <yakonstb@altlinux.org>
PreReq: tcl, tcl-dnotebook, tcl-dom, tcl-dp, tcl-gpg, tcl-img, tcl-incrtcl, tcl-iwidgets, tcl-ldap, tcl-memchan, tcl-readline, tcl-snack, tcl-soap, tcl-syslog, tcl-tdom, tcl-thread, tcl-tile, tcl-tix, tcl-tktable, tcl-tktray, tcl-tkXwin, tcl-tls, tcl-togl, tcl-trf, tcl-udp, tcl-vfs, tcl-xml, tcl-xmpp, tcl-xslt, tcl-zlib, tcllib, tk
BuildPreReq: cmake, rpm-macros-cmake, gcc5-c++, tcl-devel, tk, tklib, tcl-incrtcl-devel, tcl-incrtk-devel, tcl-togl-devel, tcl-trf-devel, tcl-blt-devel, tcl-iwidgets, tcl-img, tcl-dom-devel, libGL-devel, libX11-devel, libuuid-devel, libsocket-devel, libGLES-devel, libGLU-devel, libGLUT-devel, libGLee-devel, libGLw-devel, libQGLViewer-qt5-devel, qt5-gstreamer1-devel, libqtermwidget-qt5-devel, qt5-3d-devel, qt5-base-devel, qt5-connectivity-devel, qt5-declarative-devel, qt5-location-devel, qt5-multimedia-devel, qt5-phonon-devel, qt5-quick1-devel, qt5-quickcontrols2-devel, qt5-script-devel, qt5-sensors-devel, qt5-serialbus-devel, qt5-serialport-devel, qt5-speech-devel, qt5-svg-devel, qt5-tools-devel, qt5-wayland-devel, qt5-webchannel-devel, qt5-webengine-devel, qt5-webkit-devel, qt5-websockets-devel, qt5-x11extras-devel, qt5-xmlpatterns-devel, zlib-devel, bzlib-devel, lzlib-devel, libpng-devel, libpnglite-devel, libpng++-devel, libpcre-devel, libpcre2-devel, libpcrecpp-devel, libexpat-devel, libbullet3-devel
#BuildPreReq: cmake, rpm-macros-cmake, gcc5-c++, tcl-devel, tk, tklib, tcl-incrtcl-devel, tcl-incrtk-devel, tcl-togl-devel, tcl-trf-devel, tcl-blt-devel, tcl-iwidgets, tcl-img, tcl-dom-devel, libbullet-devel, libGL-devel, libX11-devel, libqt4-devel, libuuid-devel, libsocket-devel, libGLES-devel, libGLU-devel, libGLUT-devel, libGLee-devel, libGLw-devel
Source: brlcad-7.26.0.tar
Patch0: %name-rel-7-26-0-2.patch

%description
BRL-CAD is a powerful cross-platform Open Source combinatorial
Constructive Solid Geometry (CSG) solid modeling system that
includes interactive 3D solid geometry editing, high-performance
ray-tracing support for rendering and geometric analysis,
network-distributed framebuffer support, image and signal-processing
tools, path-tracing and photon mapping support for realistic image
synthesis, a system performance analysis benchmark suite, an
embedded scripting interface, and libraries for robust
high-performance geometric representation and analysis.

%prep
%setup
%patch0 -p0

%build

# tcl scripts start with #!/bin/sh. Replacing with #!/usr/bin/tclsh
export excl_mark='!'
mkdir tcl-origin
for i in `find -iname "*.tcl"` src/tclscripts/rtwizard/rtwizard ; do
  if test "x${i}" = "x*" ; then
    break
  fi
  j=`basename "${i}"`
  cp $i tcl-origin/
  sed -e "s/^#${excl_mark}\/bin\/sh$/#${excl_mark}\/usr\/bin\/tclsh/g" tcl-origin/${j} > ${i}
done


# manually written configure script. Also can enable things one by one. Or manually call cmake.
# can't go to /usr, it uses it's own libraries which would go into /usr/lib and potentially cause conflict (read next)
./configure --prefix=/usr/libexec/brlcad --enable-all
########cmake . -DBRLCAD_BUNDLED_LIBS=ON -DBRLCAD_ROOT_OVERRIDE=1
#########(ok, we are doing this with /usr, giving cmake override flag ()
# if --prefix=/usr, cmake will tell this:
#
#  }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
#
#  It is STRONGLY recommended that you DO NOT install BRL-CAD into /usr as
#  BRL-CAD provides several libraries that may conflict with other libraries
#  (e.g.  librt, libbu, libbn) on certain system configurations.
#
#  Since our libraries predate all those that we're known to conflict with and
#  are at the very core of our geometry services and project heritage, we have
#  no plans to change the names of our libraries at this time.
#
#  INSTALLING INTO /usr CAN MAKE A SYSTEM COMPLETELY UNUSABLE.  If you choose
#  to continue installing into /usr, you do so entirely at your own risk.  You
#  have been warned.
#
#  }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
#Call Stack (most recent call first):
#  CMakeLists.txt:204 (message)
#
#
#Pausing 15 seconds...
#CMake Error at CMakeLists.txt:154 (_message):
#  If you wish to proceed using /usr as your prefix, define
#  BRLCAD_ROOT_OVERRIDE=1 for CMake
%make_build

%install
%makeinstall_std

# it will install /usr/bin/wish, /usr/bin/tcltk, which it shouldn't. Remove
rm %buildroot/usr/bin -rfv

# create wrappers for binaries. Wrappers go into /usr/bin
mkdir -p %buildroot/usr/bin
pushd %buildroot/usr/libexec/brlcad/bin
for i in * ; do
  if test "x${i}" = "x*" ; then
    break
  fi
  case "${i}" in
    # copy .py files
    *.py) cp "${i}" %buildroot/usr/bin/
      ;;
    # and create wrappers for others
    *)
      excl_mark='!'
      echo -en "#${excl_mark}/bin/bash\n/usr/libexec/brlcad/bin/${i} \"\$@\"\n" > %buildroot/usr/bin/${i}
      chmod +x %buildroot/usr/bin/${i}
      ;;
  esac
done
popd
####### we are installing into /usr, so no wrappers are needed. the trick is to move libs into libs/brlcad. And point executables there, which is already done by patch1 which modifies cmake files
#####pushd %buildroot/usr
#####mkdir -p brlcadkj
#####mv lib brlcad/
#####mkdir libexec
#####mv brlcad libexec/
#####popd

# change "#!/bin/sh" to "#!/usr/bin/wish" in listed files
mkdir wish-origin
for i in %buildroot/usr/libexec/brlcad/lib/tk8.5/demos/browse %buildroot/usr/libexec/brlcad/lib/tk8.5/demos/hello %buildroot/usr/libexec/brlcad/lib/tk8.5/demos/ixset %buildroot/usr/libexec/brlcad/lib/tk8.5/demos/rmt %buildroot/usr/libexec/brlcad/lib/tk8.5/demos/rolodex %buildroot/usr/libexec/brlcad/lib/tk8.5/demos/square %buildroot/usr/libexec/brlcad/lib/tk8.5/demos/tcolor %buildroot/usr/libexec/brlcad/lib/tk8.5/demos/timer %buildroot/usr/libexec/brlcad/lib/tk8.5/demos/widget ; do
  j=`basename "${i}"`
  cp ${i} wish-origin/
  excl_mark='!'
  sed -e "s/^#${excl_mark}\/bin\/sh$/#${excl_mark}\/usr\/bin\/wish/g" wish-origin/${j} > ${i}
done


# binaries won't pass test with default mode. They have /usr/libexec/brlcad/lib in RPATH
RPM_VERIFY_ELF_METHOD="relaxed"



%find_lang %name


%files -f %name.lang
%doc AUTHORS ChangeLog NEWS BUGS CHANGES COPYING HACKING INSTALL README TODO
/usr/libexec/brlcad
/usr/bin/*

%changelog
* Sun Nov 20 2016 Konstantin Yabochkin <yakonstb@altlinux.org> 7.26.0-alt2.3
- initial build


=====КОНЕЦ=====

Чтобы воспроизвести, надо скачать tar и patch из upstream, переименоват патч (приписать к нему "brlcad-" в начало), сделать такой .gear-rules:
tar: brlcad
copy: *.patch

папку из upstream-tarball переименовать в brlcad (убрать версию из имени) и положить рядом с .gear, куда и patch и спек. (имя спека brlcad.spec)

https://yadi точка sk слэш d слэш YfACle_0zJb3M    <---- тут соотв. SRPM

                 reply	other threads:[~2016-11-23 13:35 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1380341479908142@web30o.yandex.ru \
    --to=yakonstb@yandex.ru \
    --cc=devel-newbies@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

devel@ where you _can_ ask

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel-newbies/0 devel-newbies/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel-newbies devel-newbies/ http://lore.altlinux.org/devel-newbies \
		devel-newbies@lists.altlinux.org devel-newbies@lists.altlinux.ru devel-newbies@lists.altlinux.com
	public-inbox-index devel-newbies

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel-newbies


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git