~intgr/listen/tweaks

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
#/usr/bin/make -f
# vim: ts=4
#

VERSION ?= 0.5.99

#0 = don't check dependencies usefull to make distribued packages
CHECK_DEPENDS ?= 1

PYTHON  = python
PREFIX ?= /usr
LIBDIR  = $(PREFIX)/lib/listen
BINDIR  = $(PREFIX)/bin
DATADIR = $(PREFIX)/share
LOCALEDIR = $(DATADIR)/locale
MANDIR  = $(DATADIR)/man
DBUSDIR  = $(DATADIR)/dbus-1


GTKMOZEMBED_PATH = $(shell pkg-config --libs-only-L mozilla-gtkmozembed 2>/dev/null || pkg-config --libs-only-L firefox-gtkmozembed 2>/dev/null | sed -e "s/-L//g" -e "s/[  ]//g" )

CONFIGURE_IN = sed -e 's!GTKMOZEMBED_PATH!MOZILLA_FIVE_HOME=$(GTKMOZEMBED_PATH) LD_LIBRARY_PATH=$(GTKMOZEMBED_PATH)!g' -e 's!PYTHON!$(PYTHON)!g' -e 's!LIBDIR!$(LIBDIR)!g' -e 's!DATADIR!$(DATADIR)!g' -e 's!PREFIX!$(PREFIX)!g' -e 's!BINDIR!$(BINDIR)!g' -e 's!LOCALEDIR!$(LOCALEDIR)!g'

FILES_IN = misc/listen.in misc/org.gnome.Listen.service.in src/dists.py.in

DIST_DIR = src data misc mmkeys po 
DIST_FILE = check.py copy gpl.txt INSTALL Makefile README TODO
DIST_TAR_EXCLUDE = (src/gnomevfswrap.py$$|src/cairo-test.py$$|data/_img.*)
DIST_INSTALL ?= dists/
DIST_BUILD_DEB ?= 1

PO = $(shell find ./po -name *.po -print | sed -e 's!.po!!g')

all: check mmkeys.so po-data
	docbook2x-man misc/listen.1.docbook --to-stdout | gzip > misc/listen.1.gz
	for fn in $(FILES_IN) ; do \
		IN=`cat $$fn | $(CONFIGURE_IN)`; \
		F_OUT=`echo $$fn | sed -e 's/\.in$$//g'`; \
		echo "$$IN" > $$F_OUT; \
	done
	@echo "Done"
	@echo "Type: make install now"

check: 
	@if [ $(CHECK_DEPENDS) -eq 1 ]; then \
		/bin/echo -n "Checking for Python... "; \
		which $(PYTHON) || ( echo "Not found." && /bin/false ); \
		$(PYTHON) ./check.py; \
	fi

mmkeys.so:
	${MAKE} -C mmkeys
	cp mmkeys/mmkeys.so src/mmkeys.so

clean: po-clean	
	rm -rf build
	rm -f tags
	rm -f misc/listen.1.gz
	rm -rf $(DIST_INSTALL)
	find . -type f -name '*.pyc'  -print | xargs rm -rf
	find . -type f -name '*.pyo'  -print | xargs rm -rf
	rm -f src/*.so
	for fn in $(FILES_IN) ; do \
		F=`echo $$fn | sed -e 's/\.in$$//g'`; \
		rm -f $$F; \
	done
	rm -f listen.1
	${MAKE} -C mmkeys clean

dist-clean: clean 
	rm -f .project tags
	find . -type d -name '.svn'  -print | xargs rm -rf
	find . -name '*.bak'  -exec rm -rf {} \;
	find . -name '*~'  -exec rm -rf {} \;
	find . -name '.*'  -exec rm -rf {} \; 

make-install-dirs:
	mkdir -p $(DESTDIR)$(BINDIR)
	mkdir -p $(DESTDIR)$(LIBDIR)/source
	mkdir -p $(DESTDIR)$(LIBDIR)/player
	mkdir -p $(DESTDIR)$(LIBDIR)/plugins/webradio
	mkdir -p $(DESTDIR)$(LIBDIR)/plugins/generic
	mkdir -p $(DESTDIR)$(LIBDIR)/plugins/lyrics
	mkdir -p $(DESTDIR)$(LIBDIR)/plugins/player
	mkdir -p $(DESTDIR)$(LIBDIR)/widget/webinfo
	
	mkdir -p $(DESTDIR)$(DATADIR)/listen/img/source
	mkdir -p $(DESTDIR)$(DATADIR)/pixmaps
	mkdir -p $(DESTDIR)$(DATADIR)/applications
	mkdir -p $(DESTDIR)$(DATADIR)/man/man1
	mkdir -p $(DESTDIR)$(DATADIR)/dbus-1/services
	
	for lang in $(PO); do mkdir -p $(DESTDIR)$(LOCALEDIR)/$$lang/LC_MESSAGES; done

install: make-install-dirs
	install -m 644 src/*.py $(DESTDIR)$(LIBDIR)
	install -m 755 src/listen $(DESTDIR)$(LIBDIR)
	install -m 644 src/mmkeys.so $(DESTDIR)$(LIBDIR)
	install -m 644 src/source/*.py $(DESTDIR)$(LIBDIR)/source
	install -m 644 src/player/*.py $(DESTDIR)$(LIBDIR)/player
	install -m 644 src/widget/*.py $(DESTDIR)$(LIBDIR)/widget
	install -m 644 src/widget/webinfo/*.py $(DESTDIR)$(LIBDIR)/widget/webinfo
	install -m 644 src/plugins/*.py $(DESTDIR)$(LIBDIR)/plugins
	install -m 644 src/plugins/generic/*.py $(DESTDIR)$(LIBDIR)/plugins/generic
	install -m 644 src/plugins/webradio/*.py $(DESTDIR)$(LIBDIR)/plugins/webradio
	install -m 644 src/plugins/lyrics/*.py $(DESTDIR)$(LIBDIR)/plugins/lyrics
	install -m 644 src/plugins/player/*.py $(DESTDIR)$(LIBDIR)/plugins/player
	
	install -m 644 data/*.glade $(DESTDIR)$(DATADIR)/listen
	install -m 644 data/img/*.png $(DESTDIR)$(DATADIR)/listen/img
	install -m 644 data/img/source/*.png $(DESTDIR)$(DATADIR)/listen/img/source
	install -m 644 data/img/listen.png $(DESTDIR)$(DATADIR)/pixmaps/
	
	install -m 644 misc/listen.desktop $(DESTDIR)$(DATADIR)/applications/
	install -m 644 misc/listen.1.gz $(DESTDIR)$(MANDIR)/man1/
	install -m 644 misc/org.gnome.Listen.service $(DESTDIR)$(DBUSDIR)/services
	
	for lang in $(PO); do install -m 644 po/$$lang.mo $(DESTDIR)$(LOCALEDIR)/$$lang/LC_MESSAGES/listen.mo; done
	
	install -m 755 misc/listen $(DESTDIR)$(BINDIR)


po-data:
	for lang in $(PO); do msgfmt po/$$lang.po -o po/$$lang.mo;done
	intltool-merge -d po misc/listen.desktop.in misc/listen.desktop

po-gen:
	intltool-extract --type=gettext/glade data/trackedit.glade
	intltool-extract --type=gettext/glade data/queuemanager.glade
	intltool-extract --type=gettext/ini misc/listen.desktop.in
	xgettext --from-code=UTF-8 -k_ -kN_ -o po/listen.pot src/*.py src/*/*.py data/*.h misc/*.h src/*/*/*.py
	for lang in $(PO); do msgmerge -U po/$$lang.po po/listen.pot; done

po-clean:
	rm -rf data/*.h
	rm -rf misc/*.h
	rm -rf po/*.mo

header:
	for f in $$(find src/ -type f -name '*.py'); do \
		tag_path=$$(echo $$f | sed -e 's,^src\(.*\)/[^/]*$$,\1,g' -e 's,\([^/]*\),..,g') ;\
		sed -i -e '/^# vim:/d' $$f ;\
		sed -i -e '/^# -*- coding:/d' $$f ;\
		sed -i -e "/^###$$/{N;N;s,^\(###\n#\n# Listen \),# -*- coding: utf-8 -*-\n# vim: ts=4\n\1,}" $$f ;\
	done

dists: clean
	mkdir -p $(DIST_INSTALL)
	mkdir -p build/listen-$(VERSION)
	for dir in $(DIST_DIR); do \
		mkdir -p build/listen-$(VERSION)/$$dir/; \
		cp -rf $$dir/ build/listen-$(VERSION)/; \
	done
	cp $(DIST_FILE) build/listen-$(VERSION)
	${MAKE} -C build/listen-$(VERSION)/ dist-clean
	
	#
	# Prepare all tar ...
	cd build && find listen-$(VERSION) -print | egrep '$(DIST_TAR_EXCLUDE)' > exclude_dists
	cd build && tar czfX ../$(DIST_INSTALL)/listen-$(VERSION).tar.gz exclude_dists listen-$(VERSION)/
	cd build && tar cjfX ../$(DIST_INSTALL)/listen-$(VERSION).tar.bz2 exclude_dists listen-$(VERSION)/
	
	#
	# Prepare debian pakcage if is possible...
	# For svn version and debian based system only
	if [ -d debian ] && [ $(DIST_BUILD_DEB) -eq 1 ]; then \
		mkdir -p $(DIST_INSTALL)/packages/; \
		rm -rf build/listen-$(VERSION); \
		tar -xzf $(DIST_INSTALL)/listen-$(VERSION).tar.gz -C build/; \
		cp -rf debian build/listen-$(VERSION)/debian; \
		${MAKE} -C build/listen-$(VERSION)/ dist-clean; \
		cd build/listen-$(VERSION) && (dpkg-buildpackage -rfakeroot || true) ; \
		cd ../..; \
		mv build/listen_* $(DIST_INSTALL)packages/ ; \
	fi 
	
	rm -rf build

tags:
	python -OO utils/ptags.py $$(find src/ -type f -name '*.py'  -print )