Giter Site home page Giter Site logo

goxc's Introduction

goxc build status

NOTE: goxc has long been in maintenance mode. Ever since Go1.5 supported simple cross-compilation, this tool lost much of its value. There are still many aspects of goxc which I'm very proud of, and some packaging features in particular, which are still useful. I'm very much a go user, but I myself haven't had any need for goxc for a long while.

If you see something you'd like to add to goxc, please go ahead, fork and PR. Good PRs will earn you commit access to the repo. Thanks for everyone's help over the years.

goxc is a build tool for Go, with a focus on cross-compiling and packaging.

By default, goxc [g]zips (& .debs for Linux) the programs, and generates a 'downloads page' in markdown (with a Jekyll header).

goxc is written in Go but uses os.exec to call 'go build' with the appropriate flags & env variables for each supported platform.

goxc was inspired by Dave Cheney's Bash script golang-crosscompile.

  • goxc crosscompiles to all platforms at once.
  • The artifacts are saved into a directory structure along with a markdown file of relative links.
  • Artifacts are packaged as zips, tgzs, or debs. Defaults for each OS/architecture.
  • AND, goxc can now upload your files to github releases OR bintray.com.
  • See ‘Github Releases’ section below.

Notable Features

  • Cross-compilation, to all supported platforms, or a specified subset.
    • Validation of toolchain & verification of cross-compiled artifacts
    • Specify target platform, via 'Build Constraint'-like syntax (via commandline flag e.g. -bc="windows linux,!arm", or via config)
  • Automatic (re-)building toolchain to all or specified platforms.
  • 'task' based invocation, similar to 'make' or 'ant'. e.g. goxc xc or goxc clean go-test
    • The 'default' task alias will, test, cross-compile, verify, package up your artifacts for each platform, and generate a 'downloads page' with links to each platform.
    • Various go tools available via tasks: go-test, go-vet, go-fmt, go-install, go-clean.
    • You can modify task behaviour via configuration or commandline flags.
  • JSON-based configuration files for repeatable builds.
    • Most config data can be written via flags (using -wc option) - less JSON fiddliness.
    • Includes support for multiple configurations per-project.
    • Per-task configuration options.
    • 'Override' config files for 'local environment' - working-copy-specific, or branch-specific, configurations.
  • Packaging & distribution
    • Zip (or tar.gz) archiving of cross-compiled artifacts & accompanying resources (READMEs etc)
    • Packaging into .debs (for Debian/Ubuntu Linux)
    • Upload to github.com releases.
    • bintray.com integration (deploys binaries to bintray.com). bintray.com registration required
    • 'downloads page' generation (markdown/html format; templatable).
  • Versioning:
    • track your version number via configuration data.
    • version number interpolation at compile-time (uses go's -ldflags compiler option to populate given constants or global variables with build version or build date)
    • version number interpolation of source code. goxc interpolate-source (new task available in 0.10.x).
    • the bump task facilitates increasing the app version number.
    • the tag task creates a tag in your vcs (currently only 'git' supported).
  • support for multiple binaries per project (goxc now searches subdirectories for 'main' packages)
  • support for multiple Go installations - choose at runtime with -goroot= flag.

Installation

goxc requires the go source and the go toolchain.

  1. Install go from source. (Requires gcc (or MinGW) and 'hg')

    • OSX Users Note: If you are using XCode 5 (OSX 10.9), it is best to go straight to Go 1.2rc5 (or greater). This is necessary because Apple have replaced the standard gcc with llvm-gcc, and Go 1.1 compilation tools depend on the usual gcc.

      • There is another workaround incase Go 1.2rc5 is not an option:

          brew tap homebrew/versions
          brew install apple-gcc42
          go get github.com/laher/goxc
          CC=`brew list apple-gcc42 | grep bin/gcc-4.2` goxc -t
        
  2. Install goxc:

    go get github.com/laher/goxc
    
  3. a. (just once per Go version): to pre-build the toolchains for all platforms:

    goxc -t
    
    • Note that rebuilding the toolchain is only required for Go up until v1.4. This step will become unnecessary in Go 1.5.
    • Note that, until goxc v0.16.0, rebuilding the toolchain was triggered automatically. This has now been switched off (by default). Automatic rebuilding was causing a number of subtle bugs for different users, and has been switched off since v0.16.0.
    • Also note that building the toolchain takes a while. Cross-compilation itself is quite fast.

Basic Usage

cd path/to/app/dir
goxc

More options

Use goxc -h to list all options.

  • e.g. To restrict by OS and Architecture (using the same syntax as Go Build Constraints):

     goxc -bc="linux,!arm windows,386 darwin"
    
  • e.g. To set a destination root directory and artifact version number:

     goxc -d=my/jekyll/site/downloads -pv=0.1.1
    
  • 'Package version' can be compiled into your app if you define a VERSION variable in your main package.

"Tasks"

goxc performs a number of operations, defined as 'tasks'. You can specify tasks as commandline arguments

  • goxc -t performs one task called 'toolchain'. It's the equivalent of goxc -d=~ toolchain
  • The default task is actually several tasks, which can be summarised as follows:
    • validate (tests the code) -> compile (cross-compiles code) -> package ([g]zips up the executables and builds a 'downloads' page)
  • You can specify one or more tasks, such as goxc go-fmt xc
  • You can skip tasks with '-tasks-='. Skip the 'package' stage with goxc -tasks-=package
  • For a list of tasks and 'aliases', run goxc -h tasks
  • Several tasks have options available for overriding. You can specify them in config or via flags. Just use goxc <taskname> -task-setting=value <othertask>
  • For more info on a particular task, run goxc -h <taskname>. This will also show you the options available for that task.
  • The easiest way to see how to configure tasks in config is to write some task config via -wc, e.g. goxc -wc xc -GOARM=5

Outcome

By default, artifacts are generated and then immediately archived into (outputdir).

Examples:

  • /my/outputdir/0.1.1/myapp_0.1.1_linux_arm.tar.gz
  • /my/outputdir/0.1.1/myapp_0.1.1_windows_386.zip
  • /my/outputdir/0.1.1/myapp_0.1.1_linux_386.deb

The version number is specified with -pv=0.1.1 .

By default, the output directory is ($GOBIN)/(appname)-xc, and the version is 'unknown', but you can specify these.

e.g.

  goxc -pv=0.1.1 -d=/home/me/myuser-github-pages/myapp/downloads/

NOTE: it's bad idea to use project-level github-pages - your repo will become huge. User-level gh-pages are an option, but it's better to use the 'bintray' tasks.:

If non-archived, artifacts generated into a directory structure as follows:

(outputdir)/(version)/(OS)_(ARCH)/(appname)(.exe?)

Be careful if you want to build a project with multiple executables. You need to add {{.ExeName}} to your OutPath-setting in your '.goxc.json'. So it may look like the following code snippet.

"OutPath": "{{.Dest}}{{.PS}}{{.AppName}}{{.PS}}{{.Version}}{{.PS}}{{.ExeName}}_{{.Version}}_{{.Os}}_{{.Arch}}{{.Ext}}"

Configuration file

For repeatable builds (and some extra options), it is recomended to use goxc with one or more configuration file(s) to save and re-run compilations.

To create a config file (.goxc.json), just use the -wc (write config) option.

goxc -wc -d=../site/downloads -bc="linux windows" xc -GOARM=7

You can also use multiple config files to support different paremeters for each platform.

The following would add a 'local' config file, .goxc.local.json. This file's contents will override .goxc.json. The idea of the .local.json files is to git-ignore them - for any local parameters which you only want on this particular computer, but not for other users or even for yourself on other computers/OS's.

goxc -wlc -d=../site/downloads

The configuration file(s) feature is documented in much more detail in the wiki

Github Releases

This is the good stuff, so let’s go from the top.

  • First, install Go from source, and goxc. See ‘Installation’, above

  • If you haven’t already, build toolchain (all platforms!). This takes a while.

	goxc -t
  • Write a config file .goxc.json with info about your repo
	goxc -wc default publish-github -owner=<username> 
	goxc -wc default publish-github -repository=<reponame>
	cat .goxc.json
  • Bump a version, to get a meaningful version number.
	goxc bump
  • Go to your github account and create a personal access token

https://github.com/settings/tokens

  • Write a local config file .goxc.local.json with your key info, ensuring that the key doesn’t end up in your git repo. See more about config files in the wiki
	goxc -wlc default publish-github -apikey=123456789012
	echo ".goxc.local.json" >> .gitignore

Note that you can put a dummy key into the commandline and edit the file later with the real key.

  • Now, cross-compile, package and upload. All in one go.
	goxc

There’s heaps of ways to reconfigure each task to get the outcome you really want, but this produces some pretty sensible defaults. Have fun.

Limitations

  • Tested on Linux and Mac recently. Windows - some time ago now.
  • Currently goxc is only designed to build standalone Go apps without linked libraries. You can try but YMMV
  • The API is not considered stable yet, so please don't start embedding goxc method calls in your code yet - unless you 'Contact us' first! Then I can freeze some API details as required.
  • Bug: issue with config overriding. Empty strings do not currently override non-empty strings. e.g. -pi="" doesnt override the associated config setting PackageInfo

License

Copyright 2013 Am Laher

Licensed 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.

See also

goxc's People

Contributors

0x6e6562 avatar 3rf avatar abesto avatar anoopengineer avatar attilaolah avatar aussielunix avatar bengadbois avatar dchest avatar dmitshur avatar dwickern avatar korustar avatar laher avatar lalloni avatar matrixik avatar meatballhat avatar michaelhood avatar moul avatar murphm8 avatar natefinch avatar pallinder avatar pdf avatar willnorris avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

goxc's Issues

Build artifacts on Windows have prefix

For gh, I tried to compile on Windows. I unzip the build artifact and all files have the prefix gh_0.24.2-snapshot_windows_386. For example gh_0.24.2-snapshot_windows_386\gh.exe. Other platforms don't have the problem.

See screenshot:

screen shot 2013-11-07 at 11 38 04 am

Cross-compile to OpenBSD 5.4

Hello,

I've cross-compiled from Ubuntu 12.04 LTS to OpenBSD 5.4.

On OpenBSD I've got this error on execution:

runtime: panic before malloc heap initialized
fatal error: runtime: cannot reserve arena virtual address space

J.H

Being able to run custom `go build` command

I'm using godep to manage dependency. But it requires me to run godep go build to build with my dependencies managed. I'm wondering if it makes sense to being able to run that as part of the goxc build.

Thanks,
Owen

LdFlags option overrides PackageVersion

When setting Windows specific LdFlags it overrides the PackageVersion setting which means my Windows builds don't get a version number.

"BuildSettings": {
"LdFlags": "-H windowsgui"
}

Bintray Multiple Repositories

I'd like to use bintray to publish .debs and OSX packages. Right now goxc is publishing into a generic bintray repo, which works for the OSX packages using homebrew. Bintray can also automatically generate metadata for apt-get, provided you denote the target repo as being of type Debian. So I was wondering if you can configure goxc to publish into multiple repos on bintray?

For reference, my current JSON config looks like this:

{
    "ArtifactsDest": "build",
    "Tasks": [
        "xc", "package", "bintray"
    ],
    "BuildConstraints": "darwin,linux",
    "ConfigVersion": "0.9",
    "TaskSettings" : {
        "bintray" : {
            "package" : "rmq",
            "subject": "relops",
            "repository": "rmq",
            "downloadspage": "bintray.md"
        }
    }
}

Bintray 413 Request Entity Too Large

I was wondering whether anybody else has seen an HTTP 413 error when running the bintray plugin. I'm getting the following error:

[goxc:bintray] 2014/08/01 10:21:32 Not included: downloads.md (pattern *.zip,*.tar.gz,*.deb)
relative path rmq_0.2.57_amd64.deb, full path /home/travis/gopath/src/github.com/relops/rmq/build/0.2.57/rmq_0.2.57_amd64.deb
[goxc:bintray] 2014/08/01 10:21:32 Adding Header - Content-Length: 2778110
[goxc:bintray] 2014/08/01 10:21:33 Http response received
[goxc:bintray] 2014/08/01 10:21:33 Error code: 413 Request Entity Too Large
[goxc:bintray] 2014/08/01 10:21:33 Error body: Request Entity Too Large
[goxc:bintray] 2014/08/01 10:21:33 Stopping after 'bintray' failed with error 'Error code: 413, message: 413 Request Entity Too Large'
[goxc] 2014/08/01 10:21:33 RunTasks returned error Error code: 413, message: 413 Request Entity Too Large

Exclude sources in some folder

I'm using godep to manage my dependencies. But the goxc build also include the Godeps folder during build. Is there a way to exclude it from build?

Build errors are:

[goxc:go-install] 2013/11/24 18:15:07 invoking '/opt/boxen/homebrew/Cellar/go/1.1.2/libexec/bin/go install' from '/Users/owen_ou/gocode/src/github.com/jingweno/gh/Godeps/_workspace/src/github.com/kr/text/mc'
mc.go:13:2: cannot find package "github.com/kr/pty" in any of:
    /opt/boxen/homebrew/Cellar/go/1.1.2/libexec/src/pkg/github.com/kr/pty (from $GOROOT)
    /Users/owen_ou/gocode/src/github.com/kr/pty (from $GOPATH)
[goxc:go-install] 2013/11/24 18:15:07 'go' returned error: exit status 1
[goxc:go-install] 2013/11/24 18:15:07 Stopping after 'go-install' failed with error 'exit status 1'

armel DEB works on RaspberryPi too although it is armhf

Here is the output of dpkg:

max@raspberrypi /tmp $ LANG=C sudo dpkg -i goup_0.1.0_armel.deb 
dpkg: error processing goup_0.1.0_armel.deb (--install):
 package architecture (armel) does not match system (armhf)
Errors were encountered while processing:
 goup_0.1.0_armel.deb

I installed it afterwards with --force-architecture and my tool ran just fine. You can download it here: http://dump.danjou.de/goup/0.1.0/

Enable CI for linux and darwin

Hi there, I love goxc! Full disclosure: I work for Travis CI. I submit this issue as an individual, not as a Travis representative. I noticed the note in the README about not really being tested on Mac, and wanted to present the option of testing on Travis with multi-os enabled such that tests can be run on linux/amd64 and darwin/amd64. Thoughts? ❤️

new features desired for bintray task

I am using bintray task to upload automatically. My use case is to upload one binary for every platform. Works very well! Here are some improvements desired:

  1. Automatically show files in the download list.

Now after uploading, I still need to manually click every file to make it show in the download list.

  1. Automatically replace files if same version of file is uploaded again.

Sometimes, I made a tiny change right after uploading a new version. In order to replace the previously uploaded file, I need to manually delete each file, and then upload newer builds.

changes for 0.6

I want to push through all the planned 'breaking changes' at once, for v0.6, so that after this I can concentrate on adding functionality.

The biggest change is to make goxc feel more like a build tool, by specifying task names as commandline args.

Note that I need to assess each of these further during the development.
Any feedback on this welcome.

Version 0.6 Proposed Changes

1. BREAKING change Change meaning of non-flag arguments:

  • Currently, first arg represents 'working directory' (default = '.')
  • Problem: 'tasks' option is too wordy for frequent use, while working directory is not used much. Discouraged if poss!
  • Proposal: 'tasks list' (default='default'). e.g. goxc clean go-test compile archive
  • add -wd option for working directory

2. Change settings file format:

  • Problem: too verbose.
  • Remove 'Settings' level. Move all contents up to top-level
  • alter settings file interpreter: use map[string]interface{}s all the way down, and add more detailed error reporting.
  • old settings files (FormatVersion 0.5.0) are still valid

3. Add 'BuildConstraints' option as alternative to OS/Arch

Keeping OS/Arch, because BuildConstraints can be a bit ungainly (esp because of using !s in commandline), although it is useful for more granular filtering.
Instead, just apply BuildConstraints after OS/Arch. no longer a 'breaking' change

  • Currently:
    • Config: Os: 'os1', Arch: 'arch1'
    • Resolves to: ['os1/arch1']
    • Problem 1: Doesn't allow for per-OS platform granlularity.
    • Problem 2: doesn't allow for unknown OSes.
  • Proposal:
    • Config: BuildConstraints : 'os1,arch1 os2 os3,!arch1'
    • Resolves to: [ 'os1/arch1', 'os2/arch1', 'os2/arch2', 'os3/arch2' ]
    • Add 'bc' flag and BuildConstraints setting (side-by-side with os/arch, to begin with).
    • allow unrecognised (undefined in constants) platforms? (TODO later in 0.6.x)

4. Change name of non-default config files:

  • Was configname.json
  • problem: other tools can't easily recognise a goxc json file.
  • proposal: Will be configname.goxc.json
  • Note: could allow & warn for old naming convention TODO

Resources and sub folders

Hi,

I have a project that looks a bit like this:

main.go
templates/1.template
templates/2.template
templates/3.template
conf/config.json

I'd like the template and conf directories to end up in the final packaged tar.gz.
I've setup the following .goxc.json:

{
    "PackageVersion": "1.0.0",
    "PrereleaseInfo": "snapshot",
    "ConfigVersion": "0.9",

    "Resources": {
        "Include": "conf,templates",
        "Exclude": "*.go"
    }
}

However, it seems when the tar.gz is built, it flattens it down to one single directory:

paul@macbook:/tmp$ tar xvzf /Users/paul/dev/go/bin/myproject-xc/1.0.0-snapshot/myproject_1.0.0-snapshot_linux_amd64.tar.gz
x myproject_1.0.0-snapshot_linux_amd64/myproject
x myproject_1.0.0-snapshot_linux_amd64/1.template
x myproject_1.0.0-snapshot_linux_amd64/2.template
x myproject_1.0.0-snapshot_linux_amd64/3.template
x myproject_1.0.0-snapshot_linux_amd64/config.json

Is there any way to preserve the directory structure with resource includes?

Thanks!

Compile a single file outside GOPATH

I was writing a very small program, which just a single file (package main) at ~/Desktop, then I tried goxc -d=dist, it gave me some info:

goxc -d=dist
[goxc] 2014/02/07 20:56:10 Working directory: '/Users/Gizak/Desktop', Config name: 'default'
[goxc] 2014/02/07 20:56:10 Using Go root: /usr/local/go
[goxc] 2014/02/07 20:56:10 Found 'main package' dirs (len 1): [/Users/Gizak/Desktop]
[goxc] 2014/02/07 20:56:10 Running tasks: [go-vet go-test go-install xc codesign copy-resources archive-zip archive-tar-gz pkg-build rmbin downloads-page]
[goxc:go-vet] 2014/02/07 20:56:10 invoking '/usr/local/go/bin/go vet ./...' from '/Users/Gizak/Desktop'
go tool: no such tool "vet"; to install:
go get code.google.com/p/go.tools/cmd/vet
[goxc:go-vet] 2014/02/07 20:56:10 'go' returned error: exit status 3
[goxc:go-vet] 2014/02/07 20:56:10 Go-vet failed (goxc just treats this as a warning for now)
[goxc:go-vet] 2014/02/07 20:56:10 Task go-vet succeeded
[goxc:go-test] 2014/02/07 20:56:10 invoking '/usr/local/go/bin/go test -i ./...' from '/Users/Gizak/Desktop'
[goxc:go-test] 2014/02/07 20:56:10 Task go-test succeeded
[goxc:go-install] 2014/02/07 20:56:10 invoking '/usr/local/go/bin/go install -ldflags " -X main.BUILD_DATE '2014-02-07T20:56:10-05:00' -X main.VERSION 'unknown' "' from '/Users/Gizak/Desktop'
go install: no install location for directory /Users/Gizak/Desktop outside GOPATH
[goxc:go-install] 2014/02/07 20:56:10 'go' returned error: exit status 1
[goxc:go-install] 2014/02/07 20:56:10 Stopping after 'go-install' failed with error 'exit status 1'

And I was wondering, is goxc able to compile this way?

need a "quiet" option

When including a directory with many files (such as an HTML directory for a web app) the output becomes unusable as every file is listed (it appears) twice.

An option to not list every mapped file would be very useful.

Compilation broken on OSX due to clang system compiler

OS: OSX 10.9
Toolchain: XCode 5.0.2

GCC on OSX is the llvm-gcc clang frontend, not the real GCC (I think my understanding is correct, please correct me if I'm wrong).

clang -print-libgcc-file-name doesn't print the full path to libgcc which causes errors while compiling.

I worked around it by symlinking /usr/bin/gcc to my apple-gcc42 install from homebrew

To install apple-gcc42:

brew tap homebrew/versions
brew install apple-gcc42

Is there a way to specify the compiler to use via a flag? Maybe this would be the way to make goxc -t work properly on OSX. Without having to do messy symlinking over system symlinks.

References:
https://code.google.com/p/go/source/detail?r=537555f45dcc
Homebrew/legacy-homebrew#17913

TarGz archives should include a top-level directory

Unix/Linux users are used to tarballs containing only a single directory at their base (mirroring the name of the tarball). Goxc puts multiple files in the root, which is likely to ruffle some feathers.

Goxc's current behavior:

% tar tzf inbucket_20131001-snapshot_linux_386.tar.gz
inbucket
README.md
LICENSE
bin/dist-unix.sh

Conventional behavior:

% tar tzf inbucket_20131001-snapshot_linux_386.tar.gz
inbucket_20131001-snapshot_linux_386/inbucket
inbucket_20131001-snapshot_linux_386/README.md
inbucket_20131001-snapshot_linux_386/LICENSE
inbucket_20131001-snapshot_linux_386/bin/dist-unix.sh

I poked around to see if I could fix this myself, but I didn't see a way to get the proper name (sans .tar.gz extension) down to the archive.TarGz methods.

goxc does only build files with the host architecture

I am just trying the goxc tool for the first time, and after goxc -t and goxc -tasks-=package on my program I get the following:

darwin_386/wam85: Mach-O 64-bit executable x86_64
darwin_amd64/wam85: Mach-O 64-bit executable x86_64
linux_386/wam85: Mach-O 64-bit executable x86_64
linux_amd64/wam85: Mach-O 64-bit executable x86_64
windows_386/wam85.exe: Mach-O 64-bit executable x86_64
windows_amd64/wam85.exe: Mach-O 64-bit executable x86_64

I am on darwin/amd64, and the go build tree is from this mornings hg checkout. I used a config like this to make the toolchain:

goxc -arch="386 amd64" -os="linux darwin windows" -wc

goxc -t doesn't work at all

Here is my output, could anyone tell me what's going on here? Thanks in advance.

$ goex -t
[goxc] 2013/12/24 09:24:30 Building toolchain, so getting config from HOME directory. To use current directory's config, use the wd option (i.e. goxc -t -wd=.)
[goxc] 2013/12/24 09:24:30 user dir: /Users/bom_d_van
[goxc] 2013/12/24 09:24:30 Working directory: '/Users/bom_d_van', Config name: 'default'
[goxc] 2013/12/24 09:24:30 Setting GoRoot to /usr/local/go
[goxc] 2013/12/24 09:24:30 Go root: /usr/local/go
[goxc] 2013/12/24 09:24:30 Toolchain task only - not searching for main dirs
[goxc] 2013/12/24 09:24:30 Running tasks: [toolchain] on packages []
[goxc:toolchain] 2013/12/24 09:24:30 Please do NOT try to quit during a build-toolchain. This can leave your Go toolchain in a non-working state.
[goxc:toolchain] 2013/12/24 09:24:30 Invoking '/usr/local/go/src/make.bash --no-clean' from /usr/local/go/src
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_ljfTSu', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[goxc:toolchain] 2013/12/24 09:24:30 Build Toolchain: wait error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:30 Error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:30 Invoking '/usr/local/go/src/make.bash --no-clean' from /usr/local/go/src
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_YH6JmU', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[goxc:toolchain] 2013/12/24 09:24:31 Build Toolchain: wait error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:31 Error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:31 Invoking '/usr/local/go/src/make.bash --no-clean' from /usr/local/go/src
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_SWAfrT', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[goxc:toolchain] 2013/12/24 09:24:31 Build Toolchain: wait error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:31 Error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:31 Invoking '/usr/local/go/src/make.bash --no-clean' from /usr/local/go/src
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_sP2KUI', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[goxc:toolchain] 2013/12/24 09:24:32 Build Toolchain: wait error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:32 Error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:32 Invoking '/usr/local/go/src/make.bash --no-clean' from /usr/local/go/src
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_OkEYXj', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[goxc:toolchain] 2013/12/24 09:24:32 Build Toolchain: wait error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:32 Error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:32 Invoking '/usr/local/go/src/make.bash --no-clean' from /usr/local/go/src
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_4VdVLi', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[goxc:toolchain] 2013/12/24 09:24:33 Build Toolchain: wait error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:33 Error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:33 Invoking '/usr/local/go/src/make.bash --no-clean' from /usr/local/go/src
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_DUpI8i', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[goxc:toolchain] 2013/12/24 09:24:33 Build Toolchain: wait error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:33 Error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:33 Invoking '/usr/local/go/src/make.bash --no-clean' from /usr/local/go/src
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_QaARrN', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[goxc:toolchain] 2013/12/24 09:24:34 Build Toolchain: wait error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:34 Error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:34 Invoking '/usr/local/go/src/make.bash --no-clean' from /usr/local/go/src
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_jCjMR0', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[goxc:toolchain] 2013/12/24 09:24:34 Build Toolchain: wait error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:34 Error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:34 Invoking '/usr/local/go/src/make.bash --no-clean' from /usr/local/go/src
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_UsCqt0', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[goxc:toolchain] 2013/12/24 09:24:35 Build Toolchain: wait error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:35 Error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:35 Invoking '/usr/local/go/src/make.bash --no-clean' from /usr/local/go/src
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_JvPPMP', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[goxc:toolchain] 2013/12/24 09:24:35 Build Toolchain: wait error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:35 Error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:35 Invoking '/usr/local/go/src/make.bash --no-clean' from /usr/local/go/src
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_Lgjjph', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[goxc:toolchain] 2013/12/24 09:24:36 Build Toolchain: wait error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:36 Error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:36 Invoking '/usr/local/go/src/make.bash --no-clean' from /usr/local/go/src
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_MdWTcF', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[goxc:toolchain] 2013/12/24 09:24:36 Build Toolchain: wait error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:36 Error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:36 Invoking '/usr/local/go/src/make.bash --no-clean' from /usr/local/go/src
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_LDJAjw', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[goxc:toolchain] 2013/12/24 09:24:37 Build Toolchain: wait error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:37 Error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:37 Invoking '/usr/local/go/src/make.bash --no-clean' from /usr/local/go/src
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_IrlJMG', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[goxc:toolchain] 2013/12/24 09:24:37 Build Toolchain: wait error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:37 Error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:37 Invoking '/usr/local/go/src/make.bash --no-clean' from /usr/local/go/src
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_pwdRsC', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[goxc:toolchain] 2013/12/24 09:24:38 Build Toolchain: wait error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:38 Error: exit status 1
[goxc:toolchain] 2013/12/24 09:24:38 No successes!
[goxc:toolchain] 2013/12/24 09:24:38 Stopping after 'toolchain' failed with error 'exit status 1'

go get github.com/laher/goxc failing [windows]

I'm not sure if I'm doing something wrong... just trying to follow the instructions in the README. I've installed Go from source and it's working. When attempting go get github.com/laher/goxc, the response indicates several missing files. I'm running Windows 8.1.

C:\Users\Corey\Documents\workspace\Experiments\goxc>go get github.com/laher/goxc
# github.com/laher/goxc/core
open src\github.com\laher\goxc\core\constants.go: No such file or directory
# github.com/laher/argo/ar
open src\github.com\laher\argo\ar\common.go: No such file or directory
# github.com/laher/goxc/typeutils
open src\github.com\laher\goxc\typeutils\mapstringinterfaceutils.go: No such file or directory
# github.com/debber/debber-v0.3/targz
open src\github.com\debber\debber-v0.3\targz\reader.go: No such file or directory
# github.com/laher/goxc/source
open src\github.com\laher\goxc\source\parser.go: No such file or directory

I'm hoping I just missed something easy.

go returned unspecified error

Hello! I'm having trouble when running goxc -bc="windows,386" -d=dist -q with Go 1.4 in my project's folder (/home/nick/apps/project). Thank you in advance for looking at this!

Note: though it advices me to run goxc -t, I've already done that.

It returns the following (sorry for so long output):

nick@ubuntu:~/apps/project$ goxc -d=dist -bc="windows,386" -q
[goxc:xc] 2014/12/12 22:30:07 Toolchain not ready for {windows 386}. Re-building toolchain. (stat /home/nick/go/bin/windows_386/go.exe: no such file or directory)
# Building C bootstrap tool.
cmd/dist

# Building compilers and Go bootstrap tool for host, linux/amd64.
lib9
libbio
liblink
cmd/cc
cmd/gc
cmd/6l
cmd/8l
cmd/6a
cmd/8a
cmd/6c
cmd/8c
cmd/6g
cmd/8g
runtime
errors
sync/atomic
sync
io
unicode
unicode/utf8
unicode/utf16
bytes
math
strings
strconv
bufio
sort
container/heap
encoding/base64
syscall
time
os
reflect
fmt
encoding
encoding/json
flag
path/filepath
path
io/ioutil
log
regexp/syntax
regexp
go/token
go/scanner
go/ast
go/parser
os/exec
os/signal
net/url
text/template/parse
text/template
go/doc
go/build
cmd/go
runtime (windows/386)

# Building packages and commands for host, linux/amd64.
runtime
errors
sync/atomic
unicode
unicode/utf8
math
sync
sort
io
syscall
hash
container/heap
encoding
unicode/utf16
hash/crc32
container/list
bytes
strings
bufio
text/tabwriter
time
path
crypto/subtle
crypto/cipher
crypto/hmac
internal/syscall
html
compress/bzip2
strconv
math/rand
hash/adler32
container/ring
hash/crc64
hash/fnv
image/color
image/color/palette
os
math/cmplx
reflect
regexp/syntax
crypto
crypto/md5
encoding/base64
path/filepath
net/url
io/ioutil
os/exec
regexp
crypto/aes
crypto/rc4
fmt
encoding/binary
crypto/sha1
crypto/sha256
crypto/sha512
crypto/des
encoding/pem
os/signal
cmd/pprof/internal/svg
encoding/ascii85
encoding/base32
image
index/suffixarray
runtime/race
cmd/internal/goobj
cmd/internal/rsc.io/arm/armasm
cmd/internal/rsc.io/x86/x86asm
debug/dwarf
debug/gosym
debug/plan9obj
debug/elf
debug/macho
debug/pe
flag
log
go/token
encoding/json
encoding/xml
go/scanner
cmd/internal/objfile
go/ast
text/template/parse
cmd/addr2line
compress/flate
go/parser
go/printer
text/template
compress/gzip
math/big
cmd/cgo
go/format
go/doc
cmd/fix
crypto/elliptic
go/build
encoding/asn1
crypto/ecdsa
crypto/rand
crypto/dsa
crypto/x509/pkix
crypto/rsa
encoding/hex
mime
net/http/internal
runtime/pprof
cmd/nm
cmd/gofmt
cmd/objdump
runtime/cgo
cmd/pack
cmd/pprof/internal/profile
html/template
cmd/pprof/internal/tempfile
cmd/yacc
archive/tar
cmd/pprof/internal/plugin
cmd/pprof/internal/report
cmd/pprof/internal/symbolizer
cmd/pprof/internal/symbolz
archive/zip
compress/lzw
compress/zlib
cmd/pprof/internal/commands
database/sql/driver
database/sql
cmd/pprof/internal/driver
encoding/csv
net
encoding/gob
image/draw
image/jpeg
image/gif
image/png
os/user
runtime/debug
testing
testing/iotest
testing/quick
text/scanner
crypto/x509
net/textproto
log/syslog
mime/multipart
net/mail
crypto/tls
net/http
net/smtp
cmd/go
cmd/pprof/internal/fetch
expvar
net/http/cgi
cmd/pprof
net/http/cookiejar
net/http/fcgi
net/http/httptest
net/http/httputil
net/http/pprof
net/rpc
net/rpc/jsonrpc

# Building packages and commands for windows/386.
runtime
errors
sync/atomic
unicode
unicode/utf8
math
sync
unicode/utf16
sort
io
syscall
hash
container/heap
encoding
hash/crc32
container/list
crypto/subtle
crypto/cipher
bytes
strings
bufio
text/tabwriter
time
path
crypto/hmac
html
compress/bzip2
hash/adler32
container/ring
hash/crc64
hash/fnv
image/color
log/syslog
runtime/race
strconv
math/rand
image/color/palette
math/cmplx
os
reflect
regexp/syntax
crypto
crypto/md5
encoding/base64
net/url
path/filepath
crypto/aes
io/ioutil
regexp
os/exec
crypto/rc4
crypto/sha1
crypto/sha256
crypto/sha512
encoding/pem
fmt
encoding/binary
net
os/signal
crypto/des
cmd/pprof/internal/svg
encoding/ascii85
encoding/base32
image
cmd/internal/goobj
cmd/internal/rsc.io/arm/armasm
cmd/internal/rsc.io/x86/x86asm
debug/dwarf
debug/gosym
debug/elf
debug/macho
debug/pe
debug/plan9obj
flag
log
go/token
cmd/internal/objfile
encoding/json
encoding/xml
go/scanner
go/ast
cmd/addr2line
text/template/parse
compress/flate
go/parser
go/printer
text/template
compress/gzip
math/big
encoding/hex
mime
cmd/cgo
go/format
go/doc
cmd/fix
crypto/elliptic
go/build
encoding/asn1
crypto/ecdsa
crypto/rand
crypto/rsa
crypto/dsa
crypto/x509/pkix
net/textproto
crypto/x509
mime/multipart
net/http/internal
runtime/pprof
cmd/nm
cmd/gofmt
crypto/tls
cmd/objdump
cmd/pack
cmd/pprof/internal/profile
net/http
html/template
cmd/pprof/internal/plugin
cmd/pprof/internal/tempfile
cmd/pprof/internal/symbolizer
cmd/pprof/internal/symbolz
cmd/yacc
archive/tar
cmd/pprof/internal/report
archive/zip
compress/lzw
compress/zlib
cmd/go
cmd/pprof/internal/fetch
database/sql/driver
cmd/pprof/internal/commands
database/sql
cmd/pprof/internal/driver
encoding/csv
encoding/gob
expvar
cmd/pprof
image/draw
image/gif
image/jpeg
image/png
index/suffixarray
net/http/cgi
net/http/cookiejar
net/http/fcgi
net/http/httptest
net/http/httputil
net/http/pprof
net/mail
net/rpc
net/smtp
os/user
runtime/debug
net/rpc/jsonrpc
testing
testing/iotest
testing/quick
text/scanner


---
Installed Go for windows/386 in /home/nick/go
Installed commands in /home/nick/go/path/bin
[goxc:xc] 2014/12/12 22:30:23 'go' returned error: exit status 1
[goxc:xc] 2014/12/12 22:30:23 Error: exit status 1
[goxc:xc] 2014/12/12 22:30:23 Have you run `goxc -t` for this platform (386,windows)???
[goxc:xc] 2014/12/12 22:30:23 Multiple errors (returning first one): [exit status 1]
[goxc:xc] 2014/12/12 22:30:23 Stopping after 'xc' failed with error 'exit status 1'
[goxc] 2014/12/12 22:30:23 RunTasks error: exit status 1

Providing necessary information

go env

GOARCH="amd64"
GOBIN="/home/nick/go/path/bin"
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/nick/go/path"
GORACE=""
GOROOT="/home/nick/go"
GOTOOLDIR="/home/nick/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"

go version

go version go1.4 linux/amd64

goxc cannot handle multiple entries in $GOPATH

For users with multiple entries in $GOPATH, it uses the concatenated path as the output directory.

i.e. if you have GOPATH=/foo/bar:/baz/spaz, goxc will use the path "/foo/bar:/baz/spaz/bin/..." to save binaries.

The simple solution is in https://github.com/laher/goxc/blob/master/goxc.go, you can add a filepath.SplitList when you read GOPATH, and use the first one.

The correct solution is to use go/build, and examine p.Root. Appending 'bin' to this will get you what you want. This will also match the behaviour of the go tool.

Empty deb

I'm trying to build a DEB for a really simple executable. Notice the .deb is 420 bytes, not many KB as I would expect. I am running on OSX 10.9.

~/src/inspeqtor (master=)$ goxc
[goxc] 2014/06/19 13:27:53 Working directory: '/Users/mikep/src/inspeqtor', Config name: 'default'
[goxc] 2014/06/19 13:27:53 Using Go root: /usr/local/Cellar/go/1.3/libexec
[goxc] 2014/06/19 13:27:53 Warning: could not find any main dirs: <nil>
[goxc] 2014/06/19 13:27:53 Running tasks: [go-vet go-test go-install xc codesign copy-resources archive-zip archive-tar-gz pkg-build rmbin downloads-page]
[goxc:go-vet] 2014/06/19 13:27:53 invoking '/usr/local/Cellar/go/1.3/libexec/bin/go vet ./...' from '/Users/mikep/src/inspeqtor'
[goxc:go-vet] 2014/06/19 13:27:53 Task go-vet succeeded
[goxc:go-test] 2014/06/19 13:27:53 invoking '/usr/local/Cellar/go/1.3/libexec/bin/go test ./...' from '/Users/mikep/src/inspeqtor'
?       inspeqtor   [no test files]
[goxc:go-test] 2014/06/19 13:27:54 Task go-test succeeded
[goxc:go-install] 2014/06/19 13:27:54 Task go-install succeeded
[goxc:xc] 2014/06/19 13:27:54 Parallelizing xc for 1 platforms, using max 3 of 4 processors
[goxc:xc] 2014/06/19 13:27:54 mainDirs : []
[goxc:xc] 2014/06/19 13:27:54 Task xc succeeded
[goxc:codesign] 2014/06/19 13:27:54 Task codesign succeeded
[goxc:copy-resources] 2014/06/19 13:27:54 resources: []
[goxc:copy-resources] 2014/06/19 13:27:54 Task copy-resources succeeded
[goxc:archive-zip] 2014/06/19 13:27:54 Task archive-zip succeeded
[goxc:archive-tar-gz] 2014/06/19 13:27:54 Parallelizing archive-tar-gz for 1 platforms, using max 3 of 4 processors
[goxc:archive-tar-gz] 2014/06/19 13:27:54 Artifact(s) archived to /Users/mikep/src/inspeqtor/output/1.0.0/inspeqtor_1.0.0_linux_amd64.tar.gz
[goxc:archive-tar-gz] 2014/06/19 13:27:54 Task archive-tar-gz succeeded
[goxc:pkg-build] 2014/06/19 13:27:54 Task pkg-build succeeded
[goxc:rmbin] 2014/06/19 13:27:54 Task rmbin succeeded
[goxc:downloads-page] 2014/06/19 13:27:54 Task downloads-page succeeded
~/src/inspeqtor (master=)$ ls -l output/1.0.0/
total 24
-rw-------  1 mikep  staff  249 Jun 19 13:27 downloads.md
-rw-r--r--  1 mikep  staff  420 Jun 19 13:27 inspeqtor_1.0.0_amd64.deb
-rw-r--r--  1 mikep  staff   32 Jun 19 13:27 inspeqtor_1.0.0_linux_amd64.tar.gz
~/src/inspeqtor (master=)$ ls
conf.d        inspeqtor.go  inspeqtor.yml monitrun.txt  output
~/src/inspeqtor (master=)$ ls -l
total 136
drwxr-xr-x  5 mikep  staff    170 Jun 17 20:32 conf.d
-rw-r--r--  1 mikep  staff   1446 Jun 17 19:59 inspeqtor.go
-rw-r--r--  1 mikep  staff     32 Jun 16 13:12 inspeqtor.yml
-rw-r--r--  1 mikep  staff  61206 Jun 17 20:34 monitrun.txt
drwxr-xr-x  3 mikep  staff    102 Jun 19 13:15 output
~/src/inspeqtor (master=)$ more .goxc.json 
{
        "ArtifactsDest": "output",
        "Arch": "amd64",
        "Os": "linux",
        "PackageVersion": "1.0.0",
        "ConfigVersion": "0.9"
}

Pass -short flag to go-test.

Hey im having some issue passing the -short flag to the go-test task. Looking in the code briefly Im not sure its possible right now. It would be super helpful for my build flow at the moment im just skipping the tests and running them independently. Anyway love the project let me know if I missed something.

Incompatible Version Toolchaining?

I'm running goxc -t to build my toolchain, but subsequent builds of my project now take 10x longer:

➜  update_service git:(master) ✗ time GOPATH=/Users/leehambley/Projects/update_service go build -v *.go
github.com/mgutz/ansi
runtime/cgo
net
crypto/x509
net/textproto
mime/multipart
crypto/tls
net/http
command-line-arguments
GOPATH=/Users/leehambley/Projects/update_service go build -v *.go  1.78s user 0.64s system 101% cpu 2.389 total

The advice from #go-nuts is "your compiler, and source directories don't match in versions"... recommended solution cd go/src; ./all.bash

That leaves me with the current situation:

[goxc:xc] 2013/08/01 09:03:45 'go' returned error: exit status 1
[goxc:xc] 2013/08/01 09:03:45 Error: exit status 1
[goxc:xc] 2013/08/01 09:03:45 Have you run `goxc -t` for this platform???
[goxc:xc] 2013/08/01 09:03:45 No successes!
[goxc:xc] 2013/08/01 09:03:45 Stopping after 'xc' failed with error 'exit status 1'

Is goxc bundling an older version those standard libraries? I'm using go 1.1.1 directly from Google's repository installed from source on the latest OSX?

Source Package not working at all

I used the pkg-source task to build a source package so that I could upload to launchpad.

But, it's not working at all. I had to make some changes to debian/control and debian/changelog files to actually make it a valid source package.

Then came the failing builds. Here's the log

Main error being.

cd /build/buildd/whitespaces-1.0.0~1/src && find * -name '*.go' -exec dirname {} \; | xargs -n1 go install
/bin/sh: 1: cd: can't cd to /build/buildd/whitespaces-1.0.0~1/src

I would like to work with you to fix this issue and probably even build a launchpad task.

Toolchain compilation on Windows messes up environment variables.

On a fresh 64-bit Go 1.1.2 installation on Windows 8, I get this terminal session (note the status of environment variables before and after building the toolchain):

PS C:\Users\Selvek\Dev\Go\src\github.com\sellweek\TOGY> goxc -version
 goxc version: 0.8.x
  build date: unknown
PS C:\Users\Selvek\Dev\Go\src\github.com\sellweek\TOGY> go env
set GOARCH=amd64
set GOBIN=
set GOCHAR=6
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\Selvek\Dev\Go
set GORACE=
set GOROOT=C:\Go
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set CC=gcc
set GOGCCFLAGS=-g -O2 -m64 -mthreads
set CGO_ENABLED=1
PS C:\Users\Selvek\Dev\Go\src\github.com\sellweek\TOGY> goxc -t
[goxc] 2013/11/01 22:16:48 Building toolchain, so getting config from HOME directory. To use current directory's config,
 use the wd option (i.e. goxc -t -wd=.)
[goxc] 2013/11/01 22:16:50 user dir: C:\Users\Selvek
[goxc] 2013/11/01 22:16:50 Working directory: 'C:\Users\Selvek', Config name: 'default'
[goxc] 2013/11/01 22:16:50 Toolchain task only - not searching for main dirs
[goxc] 2013/11/01 22:16:50 Running tasks: [toolchain] on packages []
[goxc:toolchain] 2013/11/01 22:16:50 Please do NOT try to quit during a build-toolchain. This can leave your Go toolchai
n in a non-working state.
[goxc:toolchain] 2013/11/01 22:16:50 Invoking 'C:\Go\src\make.bat --no-clean' from C:\Go\src
# Building C bootstrap tool.
cmd/dist

# Building compilers and Go bootstrap tool.
lib9
libbio
libmach
misc/pprof
cmd/addr2line
cmd/cov
cmd/nm
cmd/objdump
cmd/pack
cmd/prof
cmd/cc
cmd/gc
cmd/8l
cmd/8a
cmd/8c
cmd/8g
pkg/runtime
pkg/errors
pkg/sync/atomic
pkg/sync
pkg/io
pkg/unicode
pkg/unicode/utf8
pkg/unicode/utf16
pkg/bytes
pkg/math
pkg/strings
pkg/strconv
pkg/bufio
pkg/sort
pkg/container/heap
pkg/encoding/base64
pkg/syscall
pkg/time
pkg/os
pkg/reflect
pkg/fmt
pkg/encoding/json
pkg/flag
pkg/path/filepath
pkg/path
pkg/io/ioutil
pkg/log
pkg/regexp/syntax
pkg/regexp
pkg/go/token
pkg/go/scanner
pkg/go/ast
pkg/go/parser
pkg/os/exec
pkg/os/signal
pkg/net/url
pkg/text/template/parse
pkg/text/template
pkg/go/doc
pkg/go/build
cmd/go
        1 file(s) moved.

# Building packages and commands.
runtime
errors
sync/atomic
unicode
unicode/utf8
math
unicode/utf16
sync
sort
io
syscall
container/heap
bytes
strings
bufio
path
text/tabwriter
hash
time
crypto/cipher
crypto
crypto/md5
hash/crc32
crypto/subtle
crypto/sha1
crypto/hmac
crypto/sha256
html
os
compress/bzip2
hash/adler32
container/list
strconv
math/rand
container/ring
path/filepath
os/signal
crypto/sha512
hash/crc64
net
reflect
regexp/syntax
io/ioutil
net/url
regexp
os/exec
fmt
encoding/binary
encoding/base64
crypto/aes
debug/dwarf
crypto/des
flag
go/token
text/template/parse
log
go/scanner
debug/elf
debug/macho
go/ast
debug/pe
text/template
encoding/json
encoding/xml
go/parser
go/doc
go/printer
compress/flate
math/big
go/build
cmd/cgo
go/format
cmd/api
cmd/fix
compress/gzip
crypto/elliptic
crypto/ecdsa
crypto/rand
crypto/rc4
crypto/rsa
crypto/dsa
encoding/asn1
crypto/x509/pkix
encoding/hex
encoding/pem
crypto/x509
crypto/tls
mime
net/textproto
mime/multipart
net/http
archive/zip
cmd/go
encoding/gob
expvar
index/suffixarray
html/template
runtime/pprof
text/scanner
cmd/vet
cmd/gofmt
net/http/pprof
cmd/godoc
cmd/yacc
archive/tar
compress/lzw
compress/zlib
database/sql/driver
database/sql
debug/gosym
encoding/ascii85
encoding/base32
encoding/csv
hash/fnv
image/color
image
image/draw
image/gif
image/jpeg
image/png
log/syslog
math/cmplx
net/http/cgi
net/http/cookiejar
net/http/httptest
net/http/httputil
net/http/fcgi
net/mail
net/rpc
net/smtp
os/user
runtime/cgo
net/rpc/jsonrpc
runtime/debug
# runtime/cgo
realgcc.exe: warning: '-x c' after last input file has no effect
realgcc.exe: no input files
runtime/race
testing
testing/iotest
testing/quick
[goxc:toolchain] 2013/11/01 22:17:17 Invoking 'C:\Go\src\make.bat --no-clean' from C:\Go\src
# Building C bootstrap tool.
cmd/dist

# Building compilers and Go bootstrap tool.
lib9
libbio
libmach
misc/pprof
cmd/addr2line
cmd/cov
cmd/nm
cmd/objdump
cmd/pack
cmd/prof
cmd/cc
cmd/gc
cmd/8l
cmd/6l
cmd/8a
cmd/6a
cmd/8c
cmd/6c
cmd/8g
cmd/6g
pkg/runtime
pkg/errors
pkg/sync/atomic
pkg/sync
pkg/io
pkg/unicode
pkg/unicode/utf8
pkg/unicode/utf16
pkg/bytes
pkg/math
pkg/strings
pkg/strconv
pkg/bufio
pkg/sort
pkg/container/heap
pkg/encoding/base64
pkg/syscall
pkg/time
pkg/os
pkg/reflect
pkg/fmt
pkg/encoding/json
pkg/flag
pkg/path/filepath
pkg/path
pkg/io/ioutil
pkg/log
pkg/regexp/syntax
pkg/regexp
pkg/go/token
pkg/go/scanner
pkg/go/ast
pkg/go/parser
pkg/os/exec
pkg/os/signal
pkg/net/url
pkg/text/template/parse
pkg/text/template
pkg/go/doc
pkg/go/build
cmd/go
pkg/runtime (windows/amd64)
        1 file(s) moved.

# Building tools for local system. windows/386
runtime/cgo
# runtime/cgo
realgcc.exe: warning: '-x c' after last input file has no effect
realgcc.exe: no input files
[goxc:toolchain] 2013/11/01 22:17:28 Task toolchain succeeded
PS C:\Users\Selvek\Dev\Go\src\github.com\sellweek\TOGY> go env
set GOARCH=386
set GOBIN=
set GOCHAR=8
set GOEXE=.exe
set GOHOSTARCH=386
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\Selvek\Dev\Go
set GORACE=
set GOROOT=C:\Go
set GOTOOLDIR=C:\Go\pkg\tool\windows_386
set CC=gcc
set GOGCCFLAGS=-g -O2 -m32 -mthreads
set CGO_ENABLED=1

Config confusion and possible bugs

First of all, thank you very much for your work on this project. It if very helpful.

I have two config files:

.goxc.json

{
    "PackageVersion": "0.2.1",
    "PrereleaseInfo": "",
    "ConfigVersion": "0.9",
    "Os": "linux darwin",
    "Resources": {
        "Include": "INSTALL*,README*,LICENSE*,*.xml,config.json",
        "Exclude": "*.go"
    }
}

windows.gozxc.json

{
    "Os": "windows",
    "ConfigVersion": "0.9",
    "BuildSettings": {
        "LdFlags": "-H windowsgui"
    }
}
  1. The windows builds only have the LdFlags specified in config and don't include build time and version flags. Is this intended behavior? If so, how can I emulate this via command line flags to include date in the same format and version from base config file? I would like to have the version specified in only one place.

In other words, I was expecting:

build -ldflags "-H windowsgui -X main.BUILD_DATE '2014-01-30T19:29:12-08:00' -X main.VERSION '0.2.1' "

  1. I expected that goxc xc would compile linux, darwin, and windows (with the appropriate windows specific LdFlag) but only linux and darwin are compiled.

I worked around this by issuing two separate commands:

goxc -d=./public/ -c=windows xc
goxc -d=./public/ xc

Is this the best way to do this?

Thanks again for your hard work and am looking forward to your response.

Auto copy additional files

One more request:
auto copy additional files, like config.ini, folder with templates etc.
Would be best probably with some kind of config file.

[resources]
config.ini
templates/

Best regards,
Dobrosław Żybort

run goxc problem

goxc -os=linux -arch=386 -bc=linux -z="false" -tasks=xc -v

...
[goxc:xc] 2014/04/02 17:24:35 Stopping after 'xc' failed with error 'The xc task will attempt to compile multiple binaries to the same path (/projectx/snapshot/linux_386/com.nroed.datawarehouse). Please make sure {{.Os}} and {{.Arch}} variables are used in the OutPath'
[goxc] 2014/04/02 17:24:35 RunTasks returned error The xc task will attempt to compile multiple binaries to the same path (/projectx/snapshot/linux_386/com.nroed.datawarehouse). Please make sure {{.Os}} and {{.Arch}} variables are used in the OutPath

`goxc` doesn't respect `AppName` configuration

It seems that the AppName configuration in .goxc.json is not treated the same as the -n=... command line flags.

If I run goxc -n=foobar xc pkg-build then my output DEB is at ./build/1.0.0/foobar_1.0.0_amd64.deb. However, if I run goxc -n=foobar -wc xc pkg-build and then goxc xc pkg-build then my output DEB is at ./build/1.0.0/X_1.0.0_amd64.deb, where X is the name of the current directory.

Debian prefix /usr/bin/

Currently the path to binaries is hard coded to /usr/bin/{{bin-name}}.

It would be nice to be able to specify a different prefix.

Write config example is misleading, GOARM=5 not used during toolchain compile

Hey everyone. I ran into a little issue while trying to include a .goxc.json file a project of mine.

I started off with the example in the README.md, goxc -wc xc -GOARM=5, then added filtering:

{
  "Arch": "arm",
  "Os": "linux",
  "Tasks": [
    "xc"
  ],
  "TaskSettings": {
    "xc": {
      "GOARM": "5"
    }
  },
  "ConfigVersion": "0.9"
}

which to me seemed like it should result in a config file such that subsequent calls of goxc should generate armv5 binaries.

However what I ran into is that the toolchain is not built using GOARM=5, thus the binaries produced result in "Illegal Instruction" when run. Running GOARM=5 goxc for the first toolchain build worked as expected, as well as adding task settings for the toolchain task:

    "toolchain": {
      "GOARM": "5"
    }

I didn't see the toolchain task settings mentioned in the wiki, I just peeked at the code and played guess and check :)

To me this behavior seems a little odd. I know that explicitly calling goxc -t will not use the .goxc.json settings in the current directory and instead use those from $HOME, but when goxc implicitly builds the toolchain it uses the local settings. When using the local config, the intent can be determined via the xc task settings, so it feels strange that it continues without error to produce a toolchain that doesn't fulfill the local intent.

The other strange thing I noticed is that when using Go 1.2.2 it doesn't seem to have this behavior, so I am wondering if there is an upstream change such that a toolchain built with GOARM=6 (the default IIRC) cannot build GOARM=5 binaries.

TasksExclude ignored in config file

After running this command:
goxc -tasks-="go-vet" -wc
My .goxc.json file looks like this:

{
    "ArtifactsDest": "",
    "TasksExclude": [
        "go-vet"
    ],
    "Arch": "386 amd64",
    "Os": "windows",
    "Resources": {
        "Include": "config.json"
    },
    "PackageVersion": "1.2.1",
    "FormatVersion": "0.6"
}

After running goxc in the same folder, I get this output:

[goxc] 2013/05/14 19:41:01 Working directory: '.', Config name: ''
[goxc] 2013/05/14 19:41:01 Warning!! Unrecognised Setting 'TasksExclude' (value [go-vet])
[goxc] 2013/05/14 19:41:01 Running tasks: [go-test go-install xc codesign copy-resources archive pkg-build rmbin downloa
ds-page]

Other properties of config file are loaded normally, since my main.VERSION variable is populated.

Platform: Windows 8, amd64
Go version: 1.1

How to not include the whole dir structure leading to README in zipped files.

When I try to build my binaries with the following configuration:

{
        "ArtifactsDest": "./binaries",
        "Resources": {},
        "PackageVersion": "1.0.0",
        "FormatVersion": "0.8"
}

from this directory /home/fkalter/gopath/src/github.com/FreekKalter/gls
The zip files it creates has the following content:

gls_1.0_linux_386/
  |
  |- gls (the compiled exutable)
  |- home
        |- fkalter
               |- gopath 
                         |- src
                              |- github.com
                                          |-FreekKalter
                                                      |- gls 
                                                           |-README.md

How do i include the readme in the root of the zip file?

Specify outname name of binary

With go build I can specify -o to customize the name of the binary it builds:

go build -o my-awesome-project

Is there a way to achieve this with goxc? (Apologies for the silly question!)

Support adding resources for an individual build

goxc supports including resources to all builds with the Resources config. Is it easy to support including resources for an individual build? Say for Darwin.

The use case that I have is I need to attach some shell scripts to the Darwin builds which are packaged as tar.gz files. But the resources end up showing up in all builds (the shell scripts only apply for Darwin). Example see: https://github.com/jingweno/gh/releases/0.11.0.

Another problem I found with attaching resources is it can only attach files in the root directory, if I put the files in a subdirectory it will fail to include in the final build zip files. A sample config file:

"Resources": {
    "Include": "INSTALL*,README*,LICENSE*,./subdir/gh.*",
    "Exclude": "*.go"
}

Let me know if anything I could help.

Many thanks,
Owen

bintray task cannot handle nested directories

My Resources list includes an "etc" directory, inside that there is a "redhat-el6" directory with more files in it. The bintray task seems to handle the first level of directories fine, but then fails on the second level.

[goxc:bintray] 2013/09/13 15:33:54 Stopping after 'bintray' failed with error 'Put https://api.bintray.com//content/jhillyerd/golang/inbucket/0.1-snapshot/etc/redhat-el6: read /home/james/target/inbucket-xc/0.1-snapshot/etc/redhat-el6: is a directory'

Config file

Would be nice to have some kind of config file, like .goxc.
Then we can simply run goxc . in project folder

destination = ./out/
zip = false
verbose = true
[platforms]
windows = 386
linux = amd64

Best regards,
Dobrosław Żybort

Pass Through Options For ldflags

It's really cool the way that you pass through ldflags. It'd be great if we could specify other flags to export, perhaps as a map[string]string of something like:

build_time: date +"%m-%d-%Y"
something_else: ....

Not running tests

It seems that the go-test task passes "-i" to go test.

-i
    Install packages that are dependencies of the test.
    Do not run the test.

If I intentionally break some unit tests and then run "goxc go-test", I get "Task go-test succeeded" and it doesn't seem to actually run the tests.

Can't compile github.com/alecthomas/gozmq with goxc

Please help me sort this out, thanks.

I had tried many combinations, for example:

goxc -os=linux -arch=amd64 -build-tags=zmq_2_x
# or 
goxc -os=linux -arch=amd64 -build-ldflags=zmq_3_x
# or
goxc -os=linux -arch=amd64 -build-ccflags=zmq_3_x
# etc

And it always goes wrong.

[goxc] 2014/03/07 16:42:02 Working directory: '/Users/bom_d_van/Code/go/workspace/src/snippets/mygoxc', Config name: 'default'
[goxc] 2014/03/07 16:42:02 Using Go root: /usr/local/go
[goxc] 2014/03/07 16:42:02 Found 'main package' dirs (len 1): [/Users/bom_d_van/Code/go/workspace/src/snippets/mygoxc]
[goxc] 2014/03/07 16:42:02 Running tasks: [go-vet go-test go-install xc codesign copy-resources archive-zip archive-tar-gz pkg-build rmbin downloads-page]
[goxc:go-vet] 2014/03/07 16:42:02 invoking '/usr/local/go/bin/go vet ./...' from '/Users/bom_d_van/Code/go/workspace/src/snippets/mygoxc'
go tool: no such tool "vet"; to install:
    go get code.google.com/p/go.tools/cmd/vet
[goxc:go-vet] 2014/03/07 16:42:02 'go' returned error: exit status 3
[goxc:go-vet] 2014/03/07 16:42:02 Go-vet failed (goxc just treats this as a warning for now)
[goxc:go-vet] 2014/03/07 16:42:02 Task go-vet succeeded
[goxc:go-test] 2014/03/07 16:42:02 invoking '/usr/local/go/bin/go test -i ./...' from '/Users/bom_d_van/Code/go/workspace/src/snippets/mygoxc'
[goxc:go-test] 2014/03/07 16:42:02 Task go-test succeeded
[goxc:go-install] 2014/03/07 16:42:02 invoking '/usr/local/go/bin/go install -ldflags zmq_3_x' from '/Users/bom_d_van/Code/go/workspace/src/snippets/mygoxc'
[goxc:go-install] 2014/03/07 16:42:02 Task go-install succeeded
[goxc:xc] 2014/03/07 16:42:02 Parallelizing xc for 1 platforms, using max 7 of 8 processors
[goxc:xc] 2014/03/07 16:42:02 mainDirs : [/Users/bom_d_van/Code/go/workspace/src/snippets/mygoxc]
[goxc:xc] 2014/03/07 16:42:02 building mygoxc for platform {linux amd64}.
[goxc:xc] 2014/03/07 16:42:02 specified env vars for 'go': [GOOS=linux GOARCH=amd64]
[goxc:xc] 2014/03/07 16:42:02 invoking '/usr/local/go/bin/go build -ldflags zmq_3_x -o /Users/bom_d_van/Code/go/workspace/src/snippets/mygoxc/snapshot/linux_amd64/mygoxc .' from '/Users/bom_d_van/Code/go/workspace/src/snippets/mygoxc'
# github.com/alecthomas/gozmq
../../github.com/alecthomas/gozmq/zmqgen_2_2.go:18: undefined: Socket
../../github.com/alecthomas/gozmq/zmqgen_2_2.go:18: undefined: SocketType
../../github.com/alecthomas/gozmq/zmqgen_2_2.go:27: undefined: Socket
../../github.com/alecthomas/gozmq/zmqgen_2_2.go:36: undefined: Socket
../../github.com/alecthomas/gozmq/zmqgen_2_2.go:44: undefined: Socket
../../github.com/alecthomas/gozmq/zmqgen_2_2.go:53: undefined: Socket
../../github.com/alecthomas/gozmq/zmqgen_2_2.go:62: undefined: Socket
../../github.com/alecthomas/gozmq/zmqgen_2_2.go:70: undefined: Socket
../../github.com/alecthomas/gozmq/zmqgen_2_2.go:78: undefined: Socket
../../github.com/alecthomas/gozmq/zmqgen_2_2.go:86: undefined: Socket
../../github.com/alecthomas/gozmq/zmqgen_2_2.go:86: too many errors
[goxc:xc] 2014/03/07 16:42:02 'go' returned error: exit status 2
[goxc:xc] 2014/03/07 16:42:02 Error: exit status 2
[goxc:xc] 2014/03/07 16:42:02 Have you run `goxc -t` for this platform (amd64,linux)???
[goxc:xc] 2014/03/07 16:42:02 Multiple errors (returning first one): [exit status 2]
[goxc:xc] 2014/03/07 16:42:02 Stopping after 'xc' failed with error 'exit status 2'
[goxc] 2014/03/07 16:42:02 RunTasks returned error exit status 2

I already run goxc -t and I could use goxc to compile go programs that do not use gozmq.

Binaries not building

Hey @laher. I have recently changed to Mac from Linux. Running goxc on https://github.com/pksunkara/whitespaces is not building the binaries. As you can see from the below output, goxc is not bundling the binaries into the zip files.

Can you fix it soon? Thanks.

pksunkara@apicave →  make goxc
goxc
[goxc] 2015/04/02 02:23:06 Warning: could not establish list of source packages. Using working directory
[goxc] 2015/04/02 02:23:06 Warning: could not find any main dirs: <nil>
[goxc:go-vet] 2015/04/02 02:23:06 Task go-vet succeeded
?       github.com/pksunkara/whitespaces    [no test files]
[goxc:go-test] 2015/04/02 02:23:07 Task go-test succeeded
[goxc:go-install] 2015/04/02 02:23:07 Task go-install succeeded
[goxc:xc] 2015/04/02 02:23:07 Parallelizing xc for 22 platforms, using max 3 of 4 processors
[goxc:xc] 2015/04/02 02:23:07 Task xc succeeded
[goxc:codesign] 2015/04/02 02:23:07 Task codesign succeeded
[goxc:copy-resources] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:copy-resources] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:copy-resources] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:copy-resources] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:copy-resources] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:copy-resources] 2015/04/02 02:23:07 resources: [README.md LICENSE]
[goxc:copy-resources] 2015/04/02 02:23:07 Copying file /Users/pksunkara/Coding/pksunkara/whitespaces/README.md to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/README.md
[goxc:copy-resources] 2015/04/02 02:23:07 Copying file /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/LICENSE
[goxc:copy-resources] 2015/04/02 02:23:07 Task copy-resources succeeded
[goxc:archive-zip] 2015/04/02 02:23:07 Parallelizing archive-zip for 19 platforms, using max 3 of 4 processors
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_darwin_amd64.zip
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_darwin_386.zip
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_freebsd_386.zip
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_freebsd_amd64.zip
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_freebsd_arm.zip
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_openbsd_386.zip
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_openbsd_amd64.zip
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_windows_386.zip
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_windows_amd64.zip
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_netbsd_386.zip
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_netbsd_amd64.zip
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_netbsd_arm.zip
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_plan9_386.zip
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_dragonfly_386.zip
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_dragonfly_amd64.zip
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_nacl_386.zip
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_nacl_amd64p32.zip
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_nacl_arm.zip
[goxc:archive-zip] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-zip] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-zip] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-zip] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_solaris_amd64.zip
[goxc:archive-zip] 2015/04/02 02:23:07 Task archive-zip succeeded
[goxc:archive-tar-gz] 2015/04/02 02:23:07 Parallelizing archive-tar-gz for 3 platforms, using max 3 of 4 processors
[goxc:archive-tar-gz] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-tar-gz] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-tar-gz] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-tar-gz] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-tar-gz] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-tar-gz] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_linux_386.tar.gz
[goxc:archive-tar-gz] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-tar-gz] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-tar-gz] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-tar-gz] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-tar-gz] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-tar-gz] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_linux_amd64.tar.gz
[goxc:archive-tar-gz] 2015/04/02 02:23:07 IncludeGlobs: [INSTALL* README* LICENSE*]
[goxc:archive-tar-gz] 2015/04/02 02:23:07 ExcludeGlobs: [*.go]
[goxc:archive-tar-gz] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/README.md for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-tar-gz] 2015/04/02 02:23:07 Globbing /Users/pksunkara/Coding/pksunkara/whitespaces/LICENSE for exclusion /Users/pksunkara/Coding/pksunkara/whitespaces/*.go
[goxc:archive-tar-gz] 2015/04/02 02:23:07 Resources to include: [README.md LICENSE]
[goxc:archive-tar-gz] 2015/04/02 02:23:07 Artifact(s) archived to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_linux_arm.tar.gz
[goxc:archive-tar-gz] 2015/04/02 02:23:07 Task archive-tar-gz succeeded
[goxc:deb] 2015/04/02 02:23:07 WARNING - no debian 'control' file found. Use `debber` to generate proper debian metadata
[goxc:deb] 2015/04/02 02:23:07 Wrote deb to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_i386.deb
[goxc:deb] 2015/04/02 02:23:07 WARNING - no debian 'control' file found. Use `debber` to generate proper debian metadata
[goxc:deb] 2015/04/02 02:23:07 Wrote deb to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_amd64.deb
[goxc:deb] 2015/04/02 02:23:07 WARNING - no debian 'control' file found. Use `debber` to generate proper debian metadata
[goxc:deb] 2015/04/02 02:23:07 Wrote deb to /Users/pksunkara/Coding/pksunkara/whitespaces/build/1.1.1/whitespaces_1.1.1_armhf.deb
[goxc:deb] 2015/04/02 02:23:07 Task deb succeeded
[goxc:deb-dev] 2015/04/02 02:23:07 WARNING - no debian 'control' file found. Use `debber` to generate proper debian metadata
[goxc:deb-dev] 2015/04/02 02:23:07 Task deb-dev succeeded
[goxc:rmbin] 2015/04/02 02:23:07 Task rmbin succeeded
[goxc:downloads-page] 2015/04/02 02:23:07 Task downloads-page succeeded

Can't install generated .deb files on ubuntu

Hi,

we're using goxc at Gemnasium to create a xc executable of our command line client, and apparently the last release can't be installed on ubuntu:

dpkg: error processing archive gemnasium-toolbelt_0.2.6_amd64.deb (--install):
parsing file '/var/lib/dpkg/tmp.ci/control' near line 7 package 'gemnasium-toolbelt':
`Depends' field, invalid package name `${shlibs': must start with an alphanumeric character
Errors were encountered while processing:
gemnasium-toolbelt_0.2.6_amd64.deb

The previous version 0.2.5 was in december, and didn't have this issue.

Thanks,
Philippe

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.