Es neesmu viens!!

2012. gada 8. novembris, 4:52 pm, atsauksmēm

Es zināju! Es zināju, ka neesmu viens ar savu kompilēšanas un pārlieku liela daudzuma atkarību sāpi! Diemžēl gadi iet, bet nekas nemainās.

> It is my personal opinion (and not popular) that gnuradio and openbts
> are difficult to build and get working properly within a reasonable
> amount of time. Its a roadblock. I've been thinking the above may
> bootstrap the community and userbase.

You're preaching to the choir here. I installed everything on a blank-slate Ubuntu 9.04 system the other day. It took over 4 hours. More than half of that was installing GNU Radio and its kitchen-sink dependency list. Why do I need to install FFTW just to get linusrp? Did they *really* have to use Omnithread and Boost when pthreads and the C++ standard libraries are right there? It's like you have to download and compile the whole internet to get this little driver. It's crazy.

<rant>
This touches on a pet peeve of mine in open source projects in general, which is the tendency to use too many external packages. You need to make a serious cost-benefit analysis before you add a dependency to a project, especially a cascading dependency, where you depend on package A, but A depends on B, but B depends on C, etc., and at every step you take the risk of something not building correctly on your target system. Just because a library is available doesn't mean you have to use it. Seriously consider limiting yourself to primary sources, like the stuff that comes with g++, instead. Here are some observations:

* The probability of being able to port an application to a new target system is inversely proportional to the total number of package dependencies.

* The number of weeks that can pass without having to patch your application to keep up with API changes in other packages is also inversely proportional to the number of packages you use.

* The complexity of all of your #defines and configuration options and installation dependencies is proportional to both the number of packages you reference and the age of your application. In other words, your installation process gets more complicated over time and gets more complicated faster if you use more external packages, because those packages are also changing over time.

In short, the more crap you pile on, the less portable, upgradable and maintainable your application will be. This is the dark side of open source development. Don't give in to it.

Maybe you're talking about some other painful aspect of the installation process, but this is the one that irks me.
</rant>

Skaidrs? Es nomērīju. Tiek savilkts mēslu daudzums trīs gigabaitu apjomā. Tas taču nav normāli!

Pa to laiku esmu uzlicis Gnuradio no portiem, taču tā ir pasena 3.3.0 versija (hmm.. kāpēc gan neviens negrib atjaunināt portu..?), kas manā gadījumā ir tikpat kā bezjēdzīga, jo man vajag vismaz 3.5 versiju, taču to jau es zināju, bet doma bija tāda, ka vispirms uzlikšu šo, līdz ar to dabūšu visas atkarības, un tad uzkompilēšu 3.6.2. Protams, ka 3.6.2 nekompilējas, jo tam kaut kas trūkst, bet Gnuradio wiki rakstīts, ka visas atkarības uzskaitītas README failā, savukārt, README failā skaidri un gaiši minēts, ka visas atkarības jāmeklē wiki, lai nav jāuztur vairāki saraksti. Turklāt procesa gaitā ir salūzusi viena no Python versijām, bez kuras noteikti 3.6.2 nevar dabūt gatavu, un vispār viss ir slikti. FUCK OSS!!

(Es vēl nepadevos.)

Dēt!

2012. gada 6. novembris, 9:29 am, 15 atsauksmes

Murmulēšana. Kāds tur brīnums, ka *nix joprojām pēc cik tur padsmit gadiem tā īsti nevar iedzīvoties uz parasta lietotāja galda, ja tam zem pārsega ir tāāāāds sūds?

Es lietoju Mac OS X. Man savajadzējās kādu programmu, kas nav plaša patēriņa produkts, un visām platformām to piedāvā labākajās *nix tradīcijās – koda veidā. Neko ļaunu nenojauzdams, sāku instalēt.

mac:~ xf$ sudo port install gnuradio
Password:
---> Computing dependencies for gnuradio
---> Dependencies to be installed: gnuradio-atsc gnuradio-core gnuradio-gruel boost bzip2 expat icu libiconv gperf zlib cppunit autoconf help2man gettext ncurses p5.12-locale-gettext perl5.12 gdbm m4 perl5 automake libtool fftw-3-single fftw-3 gawk readline xz gsl texinfo guile gmp pkgconfig python26 db46 libedit openssl python_select sqlite3 swig-python swig bison gsed pcre py26-numpy py26-nose nosetests_select py26-distribute gnuradio-audio-jack jack libsamplerate libsndfile flac libogg libvorbis libxml2 libxslt gnuradio-audio-osx gnuradio-audio-portaudio portaudio gnuradio-companion gnuradio-wxgui py26-opengl py26-opengl-accelerate py26-pil freetype lcms tiff jpeg py26-tkinter tk Xft2 fontconfig xrender xorg-libX11 xorg-bigreqsproto xorg-inputproto xorg-kbproto xorg-libXau xorg-xproto xorg-libXdmcp xorg-libxcb python27 xorg-libpthread-stubs xorg-xcb-proto xorg-xcmiscproto xorg-xextproto xorg-xf86bigfontproto xorg-xtrans xorg-renderproto tcl xorg-libXScrnSaver xorg-libXext xorg-util-macros xorg-scrnsaverproto py26-wxpython wxWidgets-python freeglut mesa makedepend py27-libxml2 xorg-dri2proto xorg-glproto xorg-libXfixes xorg-fixesproto xorg-libXi xorg-libXmu xorg-libXt xorg-libsm xorg-libice xorg-libXrandr xorg-randrproto xorg-libXxf86vm xorg-xf86vidmodeproto gtk2 atk glib2 libffi gobject-introspection cairo libpixman libpng xorg-xcb-util gdk-pixbuf2 jasper hicolor-icon-theme pango shared-mime-info intltool p5.12-getopt-long p5.12-pathtools p5.12-scalar-list-utils p5.12-xml-parser xorg-libXcomposite xorg-compositeproto xorg-libXcursor xorg-libXdamage xorg-damageproto xorg-libXinerama xorg-xineramaproto py26-cheetah py26-gtk libglade2 py26-cairo py26-py py26-gobject py26-lxml gnuradio-cvsd-vocoder gnuradio-examples gnuradio-gpio usrp libusb-legacy sdcc29 gputils gnuradio-gsm-fr-vocoder gnuradio-msdd6000 gnuradio-noaa gnuradio-pager gnuradio-qtgui py26-pyqt4 py26-sip qt4-mac dbus libmng qwt-devel qwtplot3d gnuradio-radar-mono gnuradio-radio-astronomy gnuradio-sounder gnuradio-trellis gnuradio-usrp gnuradio-utils gnuradio-video-sdl libsdl

Kāpēc? Kāpēc? KĀPĒC? Kāpēc vienai programmai vajag tik daudz sūdu vilkt līdzi? Kāpēc tai vajag gan Python 2.6, gan 2.7? Kāpēc vajag divas Perl versijas? Kāpēc gnuradio kompilējas tikai ar Boost 1.49, bet jaunākā versija ir Boost 1.51, ko porti arī, protams, dabū, un tādēļ viss apstājas? Kāpēc to visu nevar uzprogrammēt normāli? Kāpēc to visu nevar sakompilēt jau gatavu un izsniegt lietotājam vienā paciņā? Kāpēc uz Mac programmas ir vienā .app failā, bet ar *nix tas ir tāds čakars bez rezultāta divu dienu garumā? Kāpēc? KĀPĒC? Kam tas ir izdevīgi? Man vajag tikai vienu programmu, nevis simtiem megabaitu (nemaz nepārspīlēju) ar citām!