#!/usr/bin/env python

# ====================================================================
#    Licensed to the Subversion Corporation (SVN Corp.) under one
#    or more contributor license agreements.  See the NOTICE file
#    distributed with this work for additional information
#    regarding copyright ownership.  The SVN Corp. licenses this file
#    to you under the Apache License, Version 2.0 (the
#    "License"); you may not use this file except in compliance
#    with the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing,
#    software distributed under the License is distributed on an
#    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#    KIND, either express or implied.  See the License for the
#    specific language governing permissions and limitations
#    under the License.
# ====================================================================

from distutils.core import setup

# Since this script is only used for building the installer,
# we can assume the modules have already been built.
from svn.core import SVN_VER_NUMBER

setup (name = "svn-python",
       description = "Subversion Python Bindings",
       maintainer = "Subversion Developers <dev@subversion.tigris.org>",
       url = "http://subversion.tigris.org",
       version = SVN_VER_NUMBER,
       packages = ["libsvn", "svn"],
       package_data = {"libsvn": ["*.dll", "*.pyd"]})
