在现有的自制软件公式中添加变量?

时间:2015-09-21 07:26:49

标签: homebrew

我想修改dtc公式,以构建与Beaglebone Black(和其他设备树ARM板)一起使用的专用dtc版本。问题是多方面的。 dtc公式提供瓶装版本,并安装1.4.0。我想安装一个来自更新源的版本,但不是绝对最新版本,并应用其他地方提供的补丁。我可以在OS X上手动构建它,但我不知道在自制软件中使用它的最佳方法。

我想把它变成一个变种。可以是完全独立的公式,也可以是当前公式中可以使用命令行参数选择的公式。但是,我并不精通酿造,知道如何最好地做到这一点。

我尝试创建名为" dtc-dyn"但它并不像名字中的破折号。

我也想把它变成一个瓶子,对其他人来说也是如此。方便,但这似乎更复杂。

我尝试修改当前的dtc并删除所有瓶子,然后修改URL,版本和添加系统步骤。但是有些操作失败了(从原始构建脚本运行时似乎有效):

def install
    git_sha = "f6dbc6ca9618391e4f30c415a0a09b7af35f7647"

    system "git checkout master -f"
    system "git pull"
    system "git checkout #{git_sha} -b #{git_sha}-build"
    system "git pull --no-edit https://github.com/pantoniou/dtc dt-overlays5"
    system "make clean"
    system "make all"
end

可悲的是,这不起作用:

$ brew install dtc
==> Cloning git://git.kernel.org/pub/scm/utils/dtc/dtc.git
Updating /Library/Caches/Homebrew/dtc--git
==> Checking out branch master
==> git checkout master -f
==> git pull
==> git checkout f6dbc6ca9618391e4f30c415a0a09b7af35f7647 -b f6dbc6ca9618391e4f30c415a0a09b7af35f7647-build
2015-09-21 00:22:37 -0700

git checkout f6dbc6ca9618391e4f30c415a0a09b7af35f7647 -b f6dbc6ca9618391e4f30c415a0a09b7af35f7647-build

fatal: reference is not a tree: f6dbc6ca9618391e4f30c415a0a09b7af35f7647

READ THIS: https://git.io/brew-troubleshooting

可以找到原始脚本here

无论如何,最好的方法是什么?我认为基于一些示例脚本的某种选项,但我不确定如何避免瓶子业务。谢谢!

第二种方法

好的,经过更多的文档阅读和实验,我尝试了这个:

class Dtc < Formula
  desc "Device tree compiler"
  homepage "http://www.devicetree.org/"
  url "https://mirrors.kernel.org/debian/pool/main/d/device-tree-compiler/device-tree-compiler_1.4.0+dfsg.orig.tar.gz"
  mirror "https://mirrors.ocf.berkeley.edu/debian/pool/main/d/device-tree-compiler/device-tree-compiler_1.4.0+dfsg.orig.tar.gz"
  sha256 "f5f9a1aea478ee6dbcece8907fd4551058fe72fc2c2a7be972e3d0b7eec4fa43"
  version "1.4.0"

  option "with-symbols", "Add symbols/fixup support (-@ option)."

  bottle…

  if build.with? "symbols"
    url "http://git.kernel.org/pub/scm/utils/dtc/dtc.git", :revision => "f6dbc6ca9618391e4f30c415a0a09b7af35f7647"
    system "git", "pull", "--no-edit", "https://github.com/pantoniou/dtc", "dt-overlays5"
  end

  def install
    system "make"
    system "make", "DESTDIR=#{prefix}", "PREFIX=", "install"
    mv lib/"libfdt.dylib.1", lib/"libfdt.1.dylib"
  end
end

不幸的是,git pull失败了,因为它在克隆git repo之前就这样做了,而且它不在正确的目录中。我首先考虑补丁做...但是它还不清楚如何通过git pull应用补丁。我试过这个:

  if build.with? "symbols"
    url "http://git.kernel.org/pub/scm/utils/dtc/dtc.git", :revision => "f6dbc6ca9618391e4f30c415a0a09b7af35f7647"
    patch do
        system "git", "pull", "--no-edit", "https://github.com/pantoniou/dtc", "dt-overlays5"
    end
  end

但它仍然试图在克隆存储库之前进行git pull。并将其归结为它。

0 个答案:

没有答案