From 71d3ee7b5bf15aa1c4f61142c25b71f85a0a3b2f Mon Sep 17 00:00:00 2001 From: Caner Candan Date: Wed, 22 Dec 2010 17:24:34 +0100 Subject: [PATCH 1/3] added install_symlink script --- eo/install_symlink.py.cmake | 66 +++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100755 eo/install_symlink.py.cmake diff --git a/eo/install_symlink.py.cmake b/eo/install_symlink.py.cmake new file mode 100755 index 000000000..274470577 --- /dev/null +++ b/eo/install_symlink.py.cmake @@ -0,0 +1,66 @@ +#!/usr/bin/env python + +#NAME = "@PROJECT_NAME@" +NAME = "eo" +SOURCE = "@CMAKE_SOURCE_DIR@" +BINARY = "@CMAKE_BINARY_DIR@" +PREFIX = "/usr" + +LIBRARIES = ["libcma.a", "libeo.a", "libeoutils.a", "libes.a", "libga.a"] + +import os, sys + +def isroot(): + if os.getuid() != 0: + print '[WARNING] you have to be root' + return False + return True + +def uninstall(): + # remove libraries' symlink + for lib in LIBRARIES: + os.remove( "%s/lib/%s" % (PREFIX, lib) ) + + # remove headers' symlink + os.remove( "%s/include/%s" % (PREFIX,NAME) ) + + # remove doc's symlink + os.remove( "%s/share/%s/doc" % (PREFIX, NAME) ) + + # remove share directory + os.rmdir( "%s/share/%s" % (PREFIX, NAME) ) + + # remove pkgconfig's symlink + os.remove( "%s/lib/pkgconfig/%s.pc" % (PREFIX, NAME) ) + + print 'All symlinks have been removed.' + +def install(): + # create symlink for libraries + for lib in LIBRARIES: + os.symlink( "%s/lib/%s" % (BINARY, lib), "%s/lib/%s" % (PREFIX, lib) ) + + # create symlink for headers + os.symlink( "%s/src" % SOURCE, "%s/include/%s" % (PREFIX,NAME) ) + + # create share directory + os.mkdir( "%s/share/%s" % (PREFIX, NAME) ) + + # create symlink for doc + os.symlink( "%s/doc" % BINARY, "%s/share/%s/doc" % (PREFIX, NAME) ) + + # create symlink for pkgconfig + os.symlink( "%s/%s.pc" % (BINARY, NAME), "%s/lib/pkgconfig/%s.pc" % (PREFIX, NAME) ) + + print 'All symlinks have been installed.' + +if __name__ == '__main__': + if not isroot(): + sys.exit() + + if len(sys.argv) < 2: + print 'Usage: %s [install|uninstall]' % sys.argv[0] + sys.exit() + + if sys.argv[1] == 'install': install() + elif sys.argv[1] == 'uninstall': uninstall() From f5db4b56dc06bb348912a72ba18888c56892c33e Mon Sep 17 00:00:00 2001 From: Caner Candan Date: Wed, 22 Dec 2010 17:25:40 +0100 Subject: [PATCH 2/3] changed cmakelists.txt to generate install symlink script --- eo/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/eo/CMakeLists.txt b/eo/CMakeLists.txt index ca2f8580a..891c0251e 100644 --- a/eo/CMakeLists.txt +++ b/eo/CMakeLists.txt @@ -59,6 +59,9 @@ INCLUDE(Dart OPTIONNAL) # now create config headers CONFIGURE_FILE(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) +# now create config install_symlink script file +CONFIGURE_FILE(install_symlink.py.cmake ${CMAKE_CURRENT_BINARY_DIR}/install_symlink.py) + # Set a special flag if the environment is windows (should do the same in a config.g file) IF (WIN32) ADD_DEFINITIONS(-D_WINDOWS=1) From 6e2041d58a0bc82f4999003c3e29f837fe68dde0 Mon Sep 17 00:00:00 2001 From: Caner Candan Date: Wed, 22 Dec 2010 18:23:45 +0100 Subject: [PATCH 3/3] * now symlink script more generic --- eo/install_symlink.py.cmake | 52 ++++++++++++++----------------------- 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/eo/install_symlink.py.cmake b/eo/install_symlink.py.cmake index 274470577..0a867f4b0 100755 --- a/eo/install_symlink.py.cmake +++ b/eo/install_symlink.py.cmake @@ -6,7 +6,16 @@ SOURCE = "@CMAKE_SOURCE_DIR@" BINARY = "@CMAKE_BINARY_DIR@" PREFIX = "/usr" +DATA = { + 'dirs': [ "%s/share/%s" % (PREFIX, NAME) ], + 'links': [ ("%s/src" % SOURCE, "%s/include/%s" % (PREFIX, NAME)), + ("%s/doc" % BINARY, "%s/share/%s/doc" % (PREFIX, NAME)), + ("%s/%s.pc" % (BINARY, NAME), "%s/lib/pkgconfig/%s.pc" % (PREFIX, NAME)), + ] + } + LIBRARIES = ["libcma.a", "libeo.a", "libeoutils.a", "libes.a", "libga.a"] +DATA['links'] += [ ("%s/lib/%s" % (BINARY, lib), "%s/lib/%s" % (PREFIX, lib)) for lib in LIBRARIES ] import os, sys @@ -17,50 +26,27 @@ def isroot(): return True def uninstall(): - # remove libraries' symlink - for lib in LIBRARIES: - os.remove( "%s/lib/%s" % (PREFIX, lib) ) - - # remove headers' symlink - os.remove( "%s/include/%s" % (PREFIX,NAME) ) - - # remove doc's symlink - os.remove( "%s/share/%s/doc" % (PREFIX, NAME) ) - - # remove share directory - os.rmdir( "%s/share/%s" % (PREFIX, NAME) ) - - # remove pkgconfig's symlink - os.remove( "%s/lib/pkgconfig/%s.pc" % (PREFIX, NAME) ) - + for dummy, link in DATA['links']: os.remove(link) + for dirname in DATA['dirs']: os.rmdir(dirname) print 'All symlinks have been removed.' def install(): - # create symlink for libraries - for lib in LIBRARIES: - os.symlink( "%s/lib/%s" % (BINARY, lib), "%s/lib/%s" % (PREFIX, lib) ) - - # create symlink for headers - os.symlink( "%s/src" % SOURCE, "%s/include/%s" % (PREFIX,NAME) ) - - # create share directory - os.mkdir( "%s/share/%s" % (PREFIX, NAME) ) - - # create symlink for doc - os.symlink( "%s/doc" % BINARY, "%s/share/%s/doc" % (PREFIX, NAME) ) - - # create symlink for pkgconfig - os.symlink( "%s/%s.pc" % (BINARY, NAME), "%s/lib/pkgconfig/%s.pc" % (PREFIX, NAME) ) - + for dirname in DATA['dirs']: os.mkdir(dirname) + for src, dst in DATA['links']: os.symlink(src, dst) print 'All symlinks have been installed.' +def data(): + from pprint import pprint + pprint(DATA, width=200) + if __name__ == '__main__': if not isroot(): sys.exit() if len(sys.argv) < 2: - print 'Usage: %s [install|uninstall]' % sys.argv[0] + print 'Usage: %s [install|uninstall|data]' % sys.argv[0] sys.exit() if sys.argv[1] == 'install': install() elif sys.argv[1] == 'uninstall': uninstall() + elif sys.argv[1] == 'data': data()