Giter Site home page Giter Site logo

kit's Introduction

Kit

A dependency management tool for Obj-C/Xcode projects.

Install

$ brew install haskell-platform
# Make sure ~/Library/Haskell/bin is on your PATH. (~/.cabal/bin for older versions of the platform)
$ cabal install kit

Usage

See functionalkit for an example of a publishable dependency. The important part of it is the KitSpec file in the root. It follows a default structure.

Documentation is slowly emerging in the wiki.

kit's People

Contributors

gabriella439 avatar nkpart avatar rkeniger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kit's Issues

Add upper bound to `errors` dependency

errors-2.0 will switch to use ExceptT instead of EitherT. If that will break your package then add an upper bound of errors < 2.0 to your dependencies.

Use force_load for sucking in categories

Any kits that contain categories need linker flags added to the master project to force loading of all members of static libraries. This is typically done with -all_load -ObjC on OTHER_LDFLAGS, but a nicer way is to use -force_load.

The exact directive required is -force_load $(TARGET_BUILD_DIR)/libKitDeps.a

It would be nice if the kit.xcconfig could somehow make this happen automatically. It may need to differentiate between it's own linker flags and those of the parent project.

Add a Kit generator

Go beyond just creating a KitSpec, should create a full xcode project that builds a static lib as well. Might be able to use the current xcodeproj template?

Add support for bundle targets

I think this needs to be completely specified in the KitSpec (ie. no default bundling).

eg.
source-directory: Source
bundles:
- name: Three20
directory: Three20.bundle

dev-packages kit not found if dep version isn't published

Kit requires that all dependencies are locally published before it looks for the kit in dev-packages. Although it will always use the kit in dev-packages.

Fix: check if the kit is in dev-packages before failing

say we've published
foo-0.0.1
foo-0.0.2

The kit file contains something like this.
name : bar
version : 1.0.0
"dependencies": [ { "name": "foo", "version": "0.0.3" } ]

And i have in dev-packages/foo

I get (although version number should be irrelevant)
kit error: Missing foo-0.0.3

Allow for project-local dependencies

If a kit wanted to depend on a kit that wasn't in a repository, it should be able to do so. I'm thinking that the version field is dropped for these kits, in place of a path.

The path should point to either a kit package, or to a directory containing a specified kit.

See cabal-dev for something similar.

Kit 0.7.6 build fail

[17 of 19] Compiling Kit.CmdArgs ( Kit/CmdArgs.hs, dist/build/kit/kit-tmp/Kit/CmdArgs.o )

Kit/CmdArgs.hs:35:88: Not in scope: `versionArg'

Kit/CmdArgs.hs:35:116: Not in scope: `helpArg'
cabal: Error: some packages failed to install:
kit-0.7.6 failed during the building phase. The exception was:
ExitFailure 1

Barebone osx install + cabal update + cabal install + Xcode 4

Building yaml-0.4.1...
[1 of 1] Compiling Text.Libyaml ( Text/Libyaml.hs, dist/build/Text/Libyaml.o )
[1 of 1] Compiling Text.Libyaml ( Text/Libyaml.hs, dist/build/Text/Libyaml.p_o )

c/helper.c:1:20: error: stdlib.h: No such file or directory

c/helper.c:2:20: error: string.h: No such file or directory

c/helper.c:3:19: error: stdio.h: No such file or directory
In file included from c/helper.h:4,

             from c/helper.c:4:0: 

c/yaml.h:149:0:
error: expected specifier-qualifier-list before ‘size_t’

c/yaml.h:308:0:
error: expected specifier-qualifier-list before ‘size_t’

c/yaml.h:438:0:
error: expected specifier-qualifier-list before ‘size_t’

c/yaml.h:735:0:
error: expected specifier-qualifier-list before ‘size_t’

c/yaml.h:988:0:
error: expected declaration specifiers or ‘...’ before ‘size_t’

c/yaml.h:989:0:
error: expected declaration specifiers or ‘...’ before ‘size_t’

c/yaml.h:1003:0:
error: expected specifier-qualifier-list before ‘size_t’

c/yaml.h:1095:0:
error: expected specifier-qualifier-list before ‘size_t’

c/yaml.h:1344:0:
error: expected declaration specifiers or ‘...’ before ‘size_t’

c/yaml.h:1357:0:
error: expected declaration specifiers or ‘...’ before ‘FILE’

c/yaml.h:1478:0:
error: expected declaration specifiers or ‘...’ before ‘size_t’

c/yaml.h:1561:0:
error: expected specifier-qualifier-list before ‘size_t’

c/yaml.h:1567:0:
error: expected specifier-qualifier-list before ‘FILE’

c/yaml.h:1693:0:
error: expected specifier-qualifier-list before ‘size_t’

c/yaml.h:1703:0:
error: expected specifier-qualifier-list before ‘size_t’

c/yaml.h:1715:0:
error: expected specifier-qualifier-list before ‘size_t’

c/yaml.h:1806:0:
error: expected declaration specifiers or ‘...’ before ‘size_t’

c/yaml.h:1806:0:
error: expected declaration specifiers or ‘...’ before ‘size_t’

c/yaml.h:1819:0:
error: expected declaration specifiers or ‘...’ before ‘FILE’

In file included from c/helper.c:4:0:

c/helper.h:11:0:
error: expected declaration specifiers or ‘...’ before ‘size_t’

c/helper.c:12:0:
error: expected declaration specifiers or ‘...’ before ‘size_t’
c/helper.c: In function ‘buffer_append’:

c/helper.c:18:0:
error: ‘size’ undeclared (first use in this function)

c/helper.c:18:0:
error: (Each undeclared identifier is reported only once

c/helper.c:18:0: error: for each function it appears in.)

c/helper.c:22:0:
warning: implicit declaration of function ‘realloc’

c/helper.c:22:0:
warning: assignment makes pointer from integer without a cast

c/helper.c:28:0:
warning: implicit declaration of function ‘memcpy’

c/helper.c:28:0:
warning: incompatible implicit declaration of built-in function ‘memcpy’
c/helper.c: In function ‘get_parser_error_context’:

c/helper.c:56:0:
error: ‘yaml_parser_t’ has no member named ‘context’
c/helper.c: In function ‘get_parser_error_offset’:

c/helper.c:61:0:
error: ‘yaml_parser_t’ has no member named ‘offset’
c/helper.c: In function ‘get_scalar_length’:

c/helper.c:91:0:
error: ‘struct ’ has no member named ‘length’
c/helper.c: In function ‘get_scalar_tag_len’:

c/helper.c:103:0:
warning: implicit declaration of function ‘strlen’

c/helper.c:103:0:
warning: incompatible implicit declaration of built-in function ‘strlen’
c/helper.c: In function ‘get_scalar_style’:

c/helper.c:108:0:
error: ‘struct ’ has no member named ‘style’
c/helper.c: In function ‘yaml_parser_set_input_filename’:

c/helper.c:133:0:
error: ‘FILE’ undeclared (first use in this function)

c/helper.c:133:0:
error: ‘in’ undeclared (first use in this function)

c/helper.c:133:0:
warning: implicit declaration of function ‘fopen’

c/helper.c:135:0:
error: too many arguments to function ‘yaml_parser_set_input_file’
c/helper.c: At top level:

c/helper.c:138:0: error: expected ‘)’ before ‘*’ token
cabal: Error: some packages failed to install:
cmdargs-0.6.8 failed during the building phase. The exception was:
ExitFailure 1
data-object-yaml-0.3.3.5 depends on yaml-0.4.1 which failed to install.
kit-0.6.7 depends on yaml-0.4.1 which failed to install.
yaml-0.4.1 failed during the building phase. The exception was:
ExitFailure 1

Missing flag --> KitDeps.xcodeproj

SKIP_INSTALL = YES

If this flag is not added to KitDeps.xcodeproj it is impossible to create an .ipa using build and archive. Xcode 3.xxx never handled this flag properly but now Xcode 4 is and it is causing an issue.

Cannot override ARCHS setting

"ARCHS" ~> val "$(ARCHS_STANDARD_32_BIT)" seems to be a bit hardcoded.

I don't always want ARCHS_STANDARD_32_BIT and when I don't I'm screwed.

Split up the Kit.xcconfig into Parent and KitDeps version

Currently it's shared by both the KitDeps project and the Parent. This needs to change to allow more parent-only settings (that will break the kitdeps project if it uses them).

Leave Kits/Kit.xcconfig for the parent, add a new file for the KitDeps project, make it hidden so the user doesn't accidentally use it.

Support for libraries

Would be nice for kit to support kitted projects that contain pre-built .a files, and automatically link them correctly at build time. Would be handy for kitting projects such as flurry that require a few headers and a proprietary binary.

Prefix needs to be dependency ordered

Including a kit that includes a kit that includes a kit constructs a prefix file in what appears to be alphabetical order. It should instead be in recursive depth-first order.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.