zoukankan      html  css  js  c++  java
  • gitea 源码阅读笔记 002 生成无依赖单文件可执行包

    gitea bindata static

    gitea 可以通过 make generate 生成一个单文件可执行程序,
    该文件不需要任何其它依赖,直接可以单独执行。

    对于用户的安装、升级和生成docker image等都会方便很多。

    makefile

    gitea安装指南有说:

    TAGS="bindata" make generate build
    

    那么,上面这句执行后,发生了什么?

    1. 强制指定了TAGS变量 makefile里会自动读取
    2. 执行任务
      1. generate 任务
      2. build 任务

    generate 任务

    从makefile看

    GO ?= go
    
    ## 使用go list 列出目录中所有导入包
    ## 过滤掉所有包含 /vendor/ 目录的结果
    ## 过滤掉 code.gitea.io/gitea/integrations
    PACKAGES ?= $(filter-out code.gitea.io/gitea/integrations,$(shell $(GO) list ./... | grep -v /vendor/))
    
    .PHONY: generate
    generate:
    	@hash go-bindata > /dev/null 2>&1; if [ $$? -ne 0 ]; then 
    		$(GO) get -u github.com/jteeuwen/go-bindata/...; 
    	fi
    	$(GO) generate $(PACKAGES)
    

    通过注释,基本已经清楚generate需要做的动作了。

    1. 列出所有导入包
    2. 过滤掉不需要的路径
    3. 使用 go generate 指令执行go源码文件内设定的指令

    背景知识

    1. makefile
      1. hash 指令
      2. text functions
    2. go build tags
    3. go generate
  • 相关阅读:
    设计模式之桥接模式(Java语言描述)
    我和CSDN的那些事
    设计模式之合成模式(Java语言描述)
    CAP原理和BASE思想
    finsh初步
    RTT第一个工程
    时钟芯片默认时间
    嵌入式MCU
    RTT工程管理
    反馈及运放基础了解
  • 原文地址:https://www.cnblogs.com/morya/p/7882355.html
Copyright © 2011-2022 走看看