Skip to content

Commit

Permalink
Switching to a distutils base
Browse files Browse the repository at this point in the history
  • Loading branch information
epage committed Aug 15, 2011
1 parent baf8139 commit 8bba5df
Show file tree
Hide file tree
Showing 24 changed files with 935 additions and 1,292 deletions.
141 changes: 100 additions & 41 deletions Makefile
@@ -1,11 +1,19 @@
PROJECT_NAME=REPLACEME
SOURCE_PATH=src
PACKAGE_NAME=$(PROJECT_NAME)

SOURCE_PATH=$(PACKAGE_NAME)
SOURCE=$(shell find $(SOURCE_PATH) -iname "*.py")
PROGRAM=$(SOURCE_PATH)/$(PROJECT_NAME).py
DATA_TYPES=*.ini *.map *.glade *.png
DATA=$(foreach type, $(DATA_TYPES), $(shell find $(SOURCE_PATH) -iname "$(type)"))

PROGRAM=REPLACEME
ICON_SIZES=26 32 48 64 80
ICONS=$(foreach size, $(ICON_SIZES), data/icons/$(size)/$(PROJECT_NAME).png)
PACKAGE_VARIANTS=fremantle harmattan ubuntu
DESKTOP_FILES=$(foreach variant, $(PACKAGE_VARIANTS), data/$(variant)/$(PROJECT_NAME).desktop)
SETUP_FILES=$(foreach variant, $(PACKAGE_VARIANTS), ./setup.$(variant).py)
DIST_BASE_PATH=./dist
DIST_PATHS=$(foreach variant, $(PACKAGE_VARIANTS), $(DIST_BASE_PATH)_$(variant)) $(DIST_BASE_PATH)_diablo

OBJ=$(SOURCE:.py=.pyc)
BUILD_PATH=./build
TAG_FILE=~/.ctags/$(PROJECT_NAME).tags
TODO_FILE=./TODO

Expand All @@ -20,12 +28,13 @@ PROFILE_VIEW=python -m pstats .profile
TODO_FINDER=support/todo.py
CTAGS=ctags-exuberant


.PHONY: all run profile debug test build lint tags todo clean distclean

all: test

run: $(OBJ)
$(SOURCE_PATH)/$(PROJECT_NAME).py
$(PROGRAM)

profile: $(OBJ)
$(PROFILE_GEN) $(PROGRAM)
Expand All @@ -37,36 +46,43 @@ debug: $(OBJ)
test: $(OBJ)
$(UNIT_TEST)

package: $(OBJ)
rm -Rf $(BUILD_PATH)

mkdir -p $(BUILD_PATH)/generic
cp $(SOURCE_PATH)/constants.py $(BUILD_PATH)/generic
cp $(SOURCE_PATH)/$(PROJECT_NAME).py $(BUILD_PATH)/generic
$(foreach file, $(DATA), cp $(file) $(BUILD_PATH)/generic/$(subst /,-,$(file)) ; )
$(foreach file, $(SOURCE), cp $(file) $(BUILD_PATH)/generic/$(subst /,-,$(file)) ; )
cp support/$(PROJECT_NAME).desktop $(BUILD_PATH)/generic
cp support/icons/hicolor/26x26/hildon/$(PROJECT_NAME).png $(BUILD_PATH)/generic/26x26-$(PROJECT_NAME).png
cp support/icons/hicolor/64x64/hildon/$(PROJECT_NAME).png $(BUILD_PATH)/generic/64x64-$(PROJECT_NAME).png
cp support/icons/hicolor/scalable/hildon/$(PROJECT_NAME).png $(BUILD_PATH)/generic/scale-$(PROJECT_NAME).png
cp support/builddeb.py $(BUILD_PATH)/generic
cp support/py2deb.py $(BUILD_PATH)/generic
cp support/fake_py2deb.py $(BUILD_PATH)/generic

mkdir -p $(BUILD_PATH)/diablo
cp -R $(BUILD_PATH)/generic/* $(BUILD_PATH)/diablo
cd $(BUILD_PATH)/diablo ; python builddeb.py diablo
mkdir -p $(BUILD_PATH)/fremantle
cp -R $(BUILD_PATH)/generic/* $(BUILD_PATH)/fremantle
cd $(BUILD_PATH)/fremantle ; python builddeb.py fremantle
mkdir -p $(BUILD_PATH)/debian
cp -R $(BUILD_PATH)/generic/* $(BUILD_PATH)/debian
cd $(BUILD_PATH)/debian ; python builddeb.py debian

upload:
dput fremantle-extras-builder $(BUILD_PATH)/fremantle/$(PROJECT_NAME)*.changes
dput diablo-extras-builder $(BUILD_PATH)/diablo/$(PROJECT_NAME)*.changes
cp $(BUILD_PATH)/debian/*.deb ./www/$(PROJECT_NAME).deb
_package_prep: $(OBJ) $(ICONS) $(SETUP_FILES) $(DESKTOP_FILES)

package_diablo: _package_prep
rm -Rf $(DIST_BASE_PATH)_diablo/*
./setup.fremantle.py sdist_diablo \
-d $(DIST_BASE_PATH)_diablo \
--install-purelib=/usr/lib/python2.5/site-packages
package_fremantle: _package_prep
rm -Rf $(DIST_BASE_PATH)_fremantle/*
./setup.fremantle.py sdist_fremantle \
-d $(DIST_BASE_PATH)_fremantle \
--install-purelib=/usr/lib/python2.5/site-packages
package_harmattan: _package_prep
rm -Rf $(DIST_BASE_PATH)_harmattan/*
./setup.harmattan.py sdist_harmattan \
-d $(DIST_BASE_PATH)_harmattan \
--install-purelib=/usr/lib/python2.6/dist-packages
package_ubuntu: _package_prep
rm -Rf $(DIST_BASE_PATH)_ubuntu/*
./setup.ubuntu.py sdist_ubuntu \
-d $(DIST_BASE_PATH)_ubuntu
mkdir $(DIST_BASE_PATH)_ubuntu/build
cd $(DIST_BASE_PATH)_ubuntu/build ; tar -zxvf ../*.tar.gz
cd $(DIST_BASE_PATH)_ubuntu/build ; dpkg-buildpackage -tc -rfakeroot -us -uc

package: package_diablo package_fremantle package_harmattan package_ubuntu

upload_diablo:
dput diablo-extras-builder $(DIST_BASE_PATH)_diablo/$(PROJECT_NAME)*.changes
upload_fremantle:
dput fremantle-extras-builder $(DIST_BASE_PATH)_fremantle/$(PROJECT_NAME)*.changes
upload_harmattan:
./support/obs_upload.sh $(PROJECT_NAME) harmattan dist_harmattan
upload_ubuntu:
cp $(DIST_BASE_PATH)_ubuntu/*.deb www/$(PROJECT_NAME).deb

upload: upload_diablo upload_fremantle upload_harmattan upload_ubuntu

lint: $(OBJ)
$(foreach file, $(SOURCE), $(LINT) $(file) ; )
Expand All @@ -77,18 +93,61 @@ todo: $(TODO_FILE)

clean:
rm -Rf $(OBJ)
rm -Rf $(BUILD_PATH)
rm -Rf $(TODO_FILE)
rm -f $(ICONS) $(SETUP_FILES) $(DESKTOP_FILES)
rm -Rf $(DIST_PATHS) ./build

distclean:
rm -Rf $(OBJ)
rm -Rf $(BUILD_PATH)
rm -Rf $(TAG_FILE)
distclean: clean
find $(SOURCE_PATH) -name "*.*~" | xargs rm -f
find $(SOURCE_PATH) -name "*.swp" | xargs rm -f
find $(SOURCE_PATH) -name "*.bak" | xargs rm -f
find $(SOURCE_PATH) -name ".*.swp" | xargs rm -f


$(SETUP_FILES): VARIANT=$(word 2, $(subst ., ,$@))

setup.fremantle.py: setup.py src/constants.py
cog.py -c \
-D DESKTOP_FILE_PATH=/usr/share/applications/hildon \
-D INPUT_DESKTOP_FILE=data/$(VARIANT)/$(PROJECT_NAME).desktop \
-D ICON_CATEGORY=hildon \
-D ICON_SIZES=26,32,48 \
-o $@ $<
chmod +x $@

setup.harmattan.py: setup.py src/constants.py
cog.py -c \
-D DESKTOP_FILE_PATH=/usr/share/applications \
-D INPUT_DESKTOP_FILE=data/$(VARIANT)/$(PROJECT_NAME).desktop \
-D ICON_CATEGORY=apps \
-D ICON_SIZES=64,80 \
-o $@ $<
chmod +x $@

setup.ubuntu.py: setup.py src/constants.py
cog.py -c \
-D DESKTOP_FILE_PATH=/usr/share/applications \
-D INPUT_DESKTOP_FILE=data/$(VARIANT)/$(PROJECT_NAME).desktop \
-D ICON_CATEGORY=apps \
-D ICON_SIZES=32,48 \
-o $@ $<
chmod +x $@

$(ICONS): SIZE=$(word 3, $(subst /, ,$@))
$(ICONS): data/$(PROJECT_NAME).png support/scale.py
mkdir -p $(dir $@)
support/scale.py --input $< --output $@ --size $(SIZE)

$(DESKTOP_FILES): VARIANT=$(word 2, $(subst /, ,$@))
$(DESKTOP_FILES): data/template.desktop
mkdir -p $(dir $@)
cog.py -d \
-D VARIANT=$(VARIANT) \
-D PROGRAM=$(PROGRAM) \
-D ICON_NAME=$(PROJECT_NAME) \
-o $@ $<


$(TAG_FILE): $(OBJ)
mkdir -p $(dir $(TAG_FILE))
$(CTAGS) -o $(TAG_FILE) $(SOURCE)
Expand Down
16 changes: 16 additions & 0 deletions README
@@ -1,4 +1,20 @@
Setting up a project
===================
grep --color -Irn "REPLACEME" .
grep for REPLACEME which is scattered throughout the files.
find . -iname "*REPLACEME*"
To find files that need renaming
Rename "src" to your project name
ln -s PROJECT_NAME src
Update support/obs_upload.sh with your OBS project path

Examples:
https://github.com/epage/ejpi
https://github.com/epage/Gonvert


Building a package
===================
Run
make package
make upload
8 changes: 1 addition & 7 deletions src/REPLACEME.py → REPLACEME
Expand Up @@ -2,13 +2,7 @@
# -*- coding: utf-8 -*-


import sys


sys.path.append("/opt/REPLACEME/lib")


import REPLACEME_qt
from REPLACEME import REPLACEME_qt


if __name__ == "__main__":
Expand Down
66 changes: 66 additions & 0 deletions data/REPLACEME-base.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file added data/REPLACEME.colors
Empty file.
Binary file added data/REPLACEME.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
35 changes: 35 additions & 0 deletions data/REPLACEME.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 27 additions & 0 deletions data/template.desktop
@@ -0,0 +1,27 @@
[Desktop Entry]
Name=REPLACEME
GenericName=REPLACEME
Comment=REPLACEME
#[[[cog
# if VARIANT == "fremantle":
# cog.outl("Exec=/usr/bin/run-standalone.sh /usr/local/bin/%s" % PROGRAM)
# elif VARIANT == "harmattan":
# cog.outl("Exec=/usr/bin/invoker --single-instance --type=e /usr/local/bin/%s" % PROGRAM)
# elif VARIANT == "ubuntu":
# cog.outl("Exec=/usr/local/bin/%s" % PROGRAM)
# else:
# raise RuntimeError("Unsupported desktop file flavor %r" % PROGRAM)
#
# if VARIANT == "harmattan":
# cog.outl("Icon=/usr/share/icons/hicolor/80x80/apps/%s.png" % ICON_NAME)
# else:
# cog.outl("Icon=%s" % ICON_NAME)
#]]]
Exec=/usr/local/bin/ejpi-calc
Icon=ejpi
#[[[end]]]
Categories=Utility;Qt;
Type=Application
Encoding=UTF-8
Version=1.0
X-Osso-Type=application/x-executable

0 comments on commit 8bba5df

Please sign in to comment.