image_optim_pack 0.8.0.20220131-x86_64-darwin → 0.9.1-x86_64-darwin
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/docker-build.yml +16 -0
- data/.github/workflows/livecheck.yml +38 -0
- data/.rubocop.yml +2 -0
- data/CHANGELOG.markdown +12 -0
- data/Dockerfile +16 -4
- data/Makefile +58 -27
- data/README.markdown +8 -2
- data/Vagrantfile +4 -0
- data/acknowledgements/pngout.txt +9 -0
- data/checksums.mk +6 -3
- data/image_optim_pack.gemspec +1 -1
- data/script/livecheck +71 -51
- data/script/platform_downloads +2 -2
- data/script/run +3 -1
- data/vendor/darwin-x86_64/advpng +0 -0
- data/vendor/darwin-x86_64/jpeg-recompress +0 -0
- data/vendor/darwin-x86_64/jpegoptim +0 -0
- data/vendor/darwin-x86_64/pngout +0 -0
- metadata +8 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1074691c5a78cb0525c78b798d38fb0768bcaaeb245e86ffb857bccb3d3db861
|
4
|
+
data.tar.gz: 85523cadda763d6643e3ce32f7a66a13ef7d2812b06323f06abdb382b6f397ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d27cad83a29914f4448bb303bbc85833fbd4c350c5246c68395075cd6f8a42c8b5bc16b7609ee9f362266ffea51799a1f0d15a620619b6abe72c7b3111abed78
|
7
|
+
data.tar.gz: 800a0a2bbd6cfccca8e198bc1da1b2e39645ad6f78110380c1354ded0d3956ad9919fd5590ac7f4ce28909b1248f8b6dbc397f7b3814ae1bee7064e22981a6a4
|
@@ -0,0 +1,16 @@
|
|
1
|
+
name: docker-build
|
2
|
+
on:
|
3
|
+
push:
|
4
|
+
tags:
|
5
|
+
- '*'
|
6
|
+
jobs:
|
7
|
+
docker-build:
|
8
|
+
runs-on: ubuntu-latest
|
9
|
+
steps:
|
10
|
+
- uses: actions/checkout@v2
|
11
|
+
- uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
|
12
|
+
with:
|
13
|
+
registry: ghcr.io
|
14
|
+
username: ${{ github.actor }}
|
15
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
16
|
+
- run: make docker-push
|
@@ -0,0 +1,38 @@
|
|
1
|
+
name: livecheck
|
2
|
+
on:
|
3
|
+
schedule:
|
4
|
+
- cron: 34 5 * * *
|
5
|
+
workflow_dispatch:
|
6
|
+
inputs:
|
7
|
+
retry:
|
8
|
+
description: 'Retry attempt'
|
9
|
+
required: true
|
10
|
+
type: number
|
11
|
+
jobs:
|
12
|
+
livecheck:
|
13
|
+
runs-on: ubuntu-latest
|
14
|
+
steps:
|
15
|
+
- uses: actions/checkout@v2
|
16
|
+
- uses: ruby/setup-ruby@v1
|
17
|
+
with:
|
18
|
+
ruby-version: '3.1'
|
19
|
+
bundler-cache: true
|
20
|
+
- run: |
|
21
|
+
bundle exec script/livecheck || if (( $? == 1 )); then
|
22
|
+
exit 1
|
23
|
+
else
|
24
|
+
echo '::set-output name=RETRY::1'
|
25
|
+
fi
|
26
|
+
id: livecheck
|
27
|
+
- if: ${{ steps.livecheck.outputs.RETRY }}
|
28
|
+
env:
|
29
|
+
RETRY: ${{ inputs.retry }}
|
30
|
+
RETRIES: 10
|
31
|
+
GITHUB_TOKEN: ${{ secrets.RETRY_TOKEN }}
|
32
|
+
run: |
|
33
|
+
if (( ${RETRY:-0} < $RETRIES )); then
|
34
|
+
sleep 300
|
35
|
+
gh workflow run livecheck --repo $GITHUB_REPOSITORY --ref $GITHUB_REF_NAME -f retry=$(( $RETRY + 1 ))
|
36
|
+
else
|
37
|
+
exit 1
|
38
|
+
fi
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.markdown
CHANGED
@@ -2,6 +2,18 @@
|
|
2
2
|
|
3
3
|
## unreleased
|
4
4
|
|
5
|
+
## v0.9.1 (2022-08-29)
|
6
|
+
|
7
|
+
* libmozjpeg 4.1.1 [@toy](https://github.com/toy)
|
8
|
+
|
9
|
+
## v0.9.0 (2022-06-11)
|
10
|
+
|
11
|
+
* Add [pngout](http://advsys.net/ken/utils.htm) (since January 2021 license allows redistrubition for freely distributed non-commercial projects) [#24](https://github.com/toy/image_optim_pack/issues/24) [@toy](https://github.com/toy)
|
12
|
+
|
13
|
+
## v0.8.0.20220418 (2022-04-18)
|
14
|
+
|
15
|
+
* advancecomp 2.3 and jpegoptim 1.4.7 [@toy](https://github.com/toy)
|
16
|
+
|
5
17
|
## v0.8.0.20220131 (2022-01-31)
|
6
18
|
|
7
19
|
* liblcms 2.13 [@toy](https://github.com/toy)
|
data/Dockerfile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
FROM alpine
|
1
|
+
FROM alpine as base
|
2
2
|
ENV LD_LIBRARY_PATH=/usr/local/lib
|
3
3
|
WORKDIR /tmp
|
4
4
|
|
@@ -85,7 +85,7 @@ ARG JPEGARCHIVE_SHA256
|
|
85
85
|
COPY download/jpegarchive-$JPEGARCHIVE_VER.tar.gz download/
|
86
86
|
RUN ./extract jpegarchive && \
|
87
87
|
cd build/jpegarchive && \
|
88
|
-
make install
|
88
|
+
CFLAGS=-fcommon make install
|
89
89
|
|
90
90
|
FROM libjpeg as jpegoptim
|
91
91
|
ARG JPEGOPTIM_VER
|
@@ -105,7 +105,7 @@ RUN ./extract optipng && \
|
|
105
105
|
./configure && \
|
106
106
|
make install
|
107
107
|
|
108
|
-
FROM rust:1
|
108
|
+
FROM rust:1-alpine as oxipng
|
109
109
|
RUN apk add --no-cache build-base
|
110
110
|
COPY script/extract ./
|
111
111
|
ARG OXIPNG_VER
|
@@ -125,6 +125,14 @@ RUN ./extract pngcrush && \
|
|
125
125
|
make && \
|
126
126
|
install -c pngcrush /usr/local/bin
|
127
127
|
|
128
|
+
FROM build as pngout
|
129
|
+
ARG PNGOUT_LINUX_STATIC_VER
|
130
|
+
ARG PNGOUT_LINUX_STATIC_SHA256
|
131
|
+
COPY download/pngout_linux_static-$PNGOUT_LINUX_STATIC_VER.tar.gz download/
|
132
|
+
RUN ./extract pngout_linux_static && \
|
133
|
+
cd build/pngout_linux_static && \
|
134
|
+
cp amd64/pngout-static /usr/local/bin/pngout
|
135
|
+
|
128
136
|
FROM liblcms as pngquant
|
129
137
|
ARG PNGQUANT_VER
|
130
138
|
ARG PNGQUANT_SHA256
|
@@ -145,6 +153,9 @@ RUN ./extract pngquant && \
|
|
145
153
|
FROM base as image_optim
|
146
154
|
RUN apk add --no-cache libstdc++ ruby npm perl dumb-init
|
147
155
|
|
156
|
+
COPY README.markdown /
|
157
|
+
COPY acknowledgements /acknowledgements
|
158
|
+
|
148
159
|
COPY --from=advancecomp /usr/local/bin/advpng /usr/local/bin/
|
149
160
|
COPY --from=gifsicle /usr/local/bin/gifsicle /usr/local/bin/
|
150
161
|
COPY --from=jhead /usr/local/bin/jhead /usr/local/bin/
|
@@ -154,6 +165,7 @@ COPY --from=libjpeg /usr/local/bin/jpegtran /usr/local/bin/
|
|
154
165
|
COPY --from=optipng /usr/local/bin/optipng /usr/local/bin/
|
155
166
|
COPY --from=oxipng /usr/local/bin/oxipng /usr/local/bin/
|
156
167
|
COPY --from=pngcrush /usr/local/bin/pngcrush /usr/local/bin/
|
168
|
+
COPY --from=pngout /usr/local/bin/pngout /usr/local/bin/
|
157
169
|
COPY --from=pngquant /usr/local/bin/pngquant /usr/local/bin/
|
158
170
|
|
159
171
|
COPY --from=libjpeg /usr/local/lib/libjpeg.so.9 /usr/local/lib/
|
@@ -163,5 +175,5 @@ COPY --from=liblcms /usr/local/lib/liblcms2.so.2 /usr/local/lib/
|
|
163
175
|
|
164
176
|
RUN npm -g install svgo
|
165
177
|
RUN gem install --no-document image_optim
|
166
|
-
ENTRYPOINT ["dumb-init", "image_optim"
|
178
|
+
ENTRYPOINT ["dumb-init", "image_optim"]
|
167
179
|
CMD ["--help"]
|
data/Makefile
CHANGED
@@ -2,19 +2,23 @@ all :
|
|
2
2
|
|
3
3
|
# ====== VERSIONS ======
|
4
4
|
|
5
|
-
ADVANCECOMP_VER := 2.
|
5
|
+
ADVANCECOMP_VER := 2.3
|
6
6
|
GIFSICLE_VER := 1.93
|
7
7
|
JHEAD_VER := 3.04
|
8
8
|
JPEGARCHIVE_VER := 2.2.0
|
9
|
-
JPEGOPTIM_VER := 1.4.
|
9
|
+
JPEGOPTIM_VER := 1.4.7
|
10
10
|
LIBJPEG_VER := 9e
|
11
11
|
LIBLCMS_VER := 2.13
|
12
|
-
LIBMOZJPEG_VER := 4.
|
12
|
+
LIBMOZJPEG_VER := 4.1.1
|
13
13
|
LIBPNG_VER := 1.6.37
|
14
14
|
LIBZ_VER := 1.2.11
|
15
15
|
OPTIPNG_VER := 0.7.7
|
16
16
|
OXIPNG_VER := 5.0.1
|
17
17
|
PNGCRUSH_VER := 1.8.13
|
18
|
+
PNGOUT_VER := 20200115
|
19
|
+
PNGOUT_LINUX_VER := $(PNGOUT_VER)
|
20
|
+
PNGOUT_LINUX_STATIC_VER := $(PNGOUT_VER)
|
21
|
+
PNGOUT_DARWIN_VER := $(PNGOUT_VER)
|
18
22
|
PNGQUANT_VER := 2.17.0
|
19
23
|
|
20
24
|
# ====== CHECKSUMS ======
|
@@ -57,12 +61,13 @@ sha256sum := $(shell if command -v sha256sum >/dev/null 2>&1; then echo sha256su
|
|
57
61
|
ARCHIVES :=
|
58
62
|
|
59
63
|
# $1 - name of archive
|
64
|
+
# $2 - extension to use (instead of default tar.gz)
|
60
65
|
define archive
|
61
66
|
ARCHIVES += $1
|
62
67
|
$1_DIR := $(BUILD_DIR)/$(call downcase,$1)
|
63
|
-
$
|
64
|
-
$1_EXTRACTED := $$($1_DIR)/__$$(notdir $$($
|
65
|
-
$$($1_EXTRACTED) : $$($
|
68
|
+
$1_ARC := $(DL_DIR)/$(call downcase,$1)-$($1_VER).$(or $2,tar.gz)
|
69
|
+
$1_EXTRACTED := $$($1_DIR)/__$$(notdir $$($1_ARC))__
|
70
|
+
$$($1_EXTRACTED) : $$($1_ARC)
|
66
71
|
mkdir -p $(BUILD_DIR)
|
67
72
|
rm -rf $$(@D)
|
68
73
|
echo "$$($1_SHA256) $$<" | $(sha256sum) -c
|
@@ -73,11 +78,13 @@ endef
|
|
73
78
|
|
74
79
|
# $1 - name of archive
|
75
80
|
# $2 - url of archive with [VER] for replace with version
|
81
|
+
# $3 - extension to use
|
76
82
|
define archive-dl
|
77
|
-
$(call archive,$1)
|
83
|
+
$(call archive,$1,$3)
|
78
84
|
# download archive from url
|
79
|
-
$$($
|
85
|
+
$$($1_ARC) :
|
80
86
|
mkdir -p $(DL_DIR)
|
87
|
+
test -w $(DL_DIR)
|
81
88
|
while ! mkdir $$@.lock 2> /dev/null; do sleep 1; done
|
82
89
|
wget -q -O $$@.tmp $(subst [VER],$($1_VER),$(strip $2))
|
83
90
|
mv $$@.tmp $$@
|
@@ -88,7 +95,7 @@ $(eval $(call archive-dl,ADVANCECOMP, https://github.com/amadvance/advancecomp/r
|
|
88
95
|
$(eval $(call archive-dl,GIFSICLE, https://www.lcdf.org/gifsicle/gifsicle-[VER].tar.gz))
|
89
96
|
$(eval $(call archive-dl,JHEAD, https://www.sentex.ca/~mwandel/jhead/jhead-[VER].tar.gz))
|
90
97
|
$(eval $(call archive-dl,JPEGARCHIVE, https://github.com/danielgtaylor/jpeg-archive/archive/v[VER].tar.gz))
|
91
|
-
$(eval $(call archive-dl,JPEGOPTIM, https://
|
98
|
+
$(eval $(call archive-dl,JPEGOPTIM, https://github.com/tjko/jpegoptim/archive/v[VER].tar.gz))
|
92
99
|
$(eval $(call archive-dl,LIBJPEG, https://www.ijg.org/files/jpegsrc.v[VER].tar.gz))
|
93
100
|
$(eval $(call archive-dl,LIBLCMS, https://prdownloads.sourceforge.net/lcms/lcms2-[VER].tar.gz?download))
|
94
101
|
$(eval $(call archive-dl,LIBMOZJPEG, https://github.com/mozilla/mozjpeg/archive/v[VER].tar.gz))
|
@@ -97,25 +104,28 @@ $(eval $(call archive-dl,LIBZ, https://prdownloads.sourceforge.net/libpng
|
|
97
104
|
$(eval $(call archive-dl,OPTIPNG, https://prdownloads.sourceforge.net/optipng/optipng-[VER].tar.gz?download))
|
98
105
|
$(eval $(call archive-dl,OXIPNG, https://github.com/shssoichiro/oxipng/archive/refs/tags/v[VER].tar.gz))
|
99
106
|
$(eval $(call archive-dl,PNGCRUSH, https://prdownloads.sourceforge.net/pmt/pngcrush-[VER]-nolib.tar.gz?download))
|
107
|
+
$(eval $(call archive-dl,PNGOUT_LINUX,http://www.jonof.id.au/files/kenutils/pngout-[VER]-linux.tar.gz))
|
108
|
+
$(eval $(call archive-dl,PNGOUT_LINUX_STATIC,http://www.jonof.id.au/files/kenutils/pngout-[VER]-linux-static.tar.gz))
|
109
|
+
$(eval $(call archive-dl,PNGOUT_DARWIN,http://www.jonof.id.au/files/kenutils/pngout-[VER]-macos.zip,zip))
|
100
110
|
$(eval $(call archive-dl,PNGQUANT, https://pngquant.org/pngquant-[VER]-src.tar.gz))
|
101
111
|
|
102
|
-
download : $(foreach archive,$(ARCHIVES),$($(archive)
|
112
|
+
download : $(foreach archive,$(ARCHIVES),$($(archive)_ARC))
|
103
113
|
.PHONY : download
|
104
114
|
|
105
115
|
download-tidy-up :
|
106
|
-
rm -f $(filter-out $(foreach archive,$(ARCHIVES),$($(archive)
|
116
|
+
rm -f $(filter-out $(foreach archive,$(ARCHIVES),$($(archive)_ARC)),$(wildcard $(DL_DIR)/*.*))
|
107
117
|
.PHONY : download-tidy-up
|
108
118
|
|
109
119
|
checksum : download
|
110
|
-
@$(sha256sum) $(foreach archive,$(ARCHIVES),$($(archive)
|
120
|
+
@$(sha256sum) $(foreach archive,$(ARCHIVES),$($(archive)_ARC))
|
111
121
|
.PHONY : checksum
|
112
122
|
|
113
123
|
checksum-verify : download
|
114
|
-
@printf '%s %s\n' $(foreach archive,$(ARCHIVES),$($(archive)_SHA256) $($(archive)
|
124
|
+
@printf '%s %s\n' $(foreach archive,$(ARCHIVES),$($(archive)_SHA256) $($(archive)_ARC)) | $(sha256sum) -c
|
115
125
|
.PHONY : checksum-verify
|
116
126
|
|
117
127
|
checksum-update : download
|
118
|
-
@printf '%s := %s\n' $(foreach archive,$(ARCHIVES),$(archive)_SHA256 $(shell $(sha256sum) $($(archive)
|
128
|
+
@printf '%s := %s\n' $(foreach archive,$(ARCHIVES),$(archive)_SHA256 $(shell $(sha256sum) $($(archive)_ARC) | cut -d ' ' -f 1)) > checksums.mk
|
119
129
|
.PHONY : checksum-update
|
120
130
|
|
121
131
|
# ====== PRODUCTS ======
|
@@ -129,7 +139,7 @@ define target-build
|
|
129
139
|
$1_PATH := $(or $3,$(call downcase,$1))
|
130
140
|
$1_BASENAME := $$(notdir $$($1_PATH))
|
131
141
|
$1_DIR := $($(or $2,$1)_DIR)
|
132
|
-
$
|
142
|
+
$1_ARC := $($(or $2,$1)_ARC)
|
133
143
|
$1_EXTRACTED := $($(or $2,$1)_EXTRACTED)
|
134
144
|
$1_TARGET := $$($1_DIR)/$$($1_PATH)
|
135
145
|
$$($1_TARGET) : DIR := $$($1_DIR)
|
@@ -139,6 +149,7 @@ endef
|
|
139
149
|
# $1 - product name
|
140
150
|
# $2 - archive name ($1 if empty)
|
141
151
|
# $3 - basename ($1 if empty)
|
152
|
+
# $4 - don't strip the target
|
142
153
|
define target
|
143
154
|
$(call target-build,$1,$2,$3)
|
144
155
|
PRODUCTS += $1
|
@@ -147,7 +158,7 @@ $1_DESTINATION := $$(OUTPUT_DIR)/$$($1_BASENAME)
|
|
147
158
|
$$($1_DESTINATION) : $$($1_TARGET)
|
148
159
|
mkdir -p $(OUTPUT_DIR)
|
149
160
|
temppath=`mktemp "$(BUILD_DIR)"/tmp.XXXXXXXXXX` && \
|
150
|
-
strip $$< -Sx -o "$$$$temppath" && \
|
161
|
+
$(if $4,cp $$< "$$$$temppath",strip $$< -Sx -o "$$$$temppath") && \
|
151
162
|
chmod 755 "$$$$temppath" && \
|
152
163
|
mv "$$$$temppath" $$@
|
153
164
|
# short name target
|
@@ -168,6 +179,11 @@ $(eval $(call target,LIBZ,,libz$(DLEXT)))
|
|
168
179
|
$(eval $(call target,OPTIPNG,,src/optipng/optipng))
|
169
180
|
$(eval $(call target,OXIPNG,,target/release/oxipng))
|
170
181
|
$(eval $(call target,PNGCRUSH))
|
182
|
+
ifdef IS_DARWIN
|
183
|
+
$(eval $(call target,PNGOUT,PNGOUT_DARWIN,,NOSTRIP))
|
184
|
+
else
|
185
|
+
$(eval $(call target,PNGOUT,PNGOUT_LINUX,,NOSTRIP))
|
186
|
+
endif
|
171
187
|
$(eval $(call target,PNGQUANT))
|
172
188
|
|
173
189
|
# ====== TARGETS ======
|
@@ -190,21 +206,21 @@ ldd-version :; $(ldd) --version
|
|
190
206
|
|
191
207
|
define check_exists
|
192
208
|
@test -f $(OUTPUT_DIR)/$1 || \
|
193
|
-
{ printf "
|
209
|
+
{ printf "%s: $(ANSI_RED)not found$(ANSI_RESET)\n" "$1"; exit 1; }
|
194
210
|
endef
|
195
211
|
|
196
212
|
define check_version
|
197
|
-
@$(OUTPUT_DIR)/$1 $2 | fgrep -q $3 || \
|
198
|
-
{ printf "
|
213
|
+
@$(OUTPUT_DIR)/$1 $2 | fgrep -q "$3" || \
|
214
|
+
{ printf "%s: $(ANSI_RED)Expected %s, got %s$(ANSI_RESET)\n" "$1" "$3" "$$($(OUTPUT_DIR)/$1 $2)"; exit 1; }
|
199
215
|
endef
|
200
216
|
|
201
217
|
define check_arch
|
202
218
|
@file -b $(OUTPUT_DIR)/$1 | fgrep -q '$(ARCH_STRING)' || \
|
203
|
-
{ printf "
|
219
|
+
{ printf "%s: $(ANSI_RED)Expected %s, got %s$(ANSI_RESET)\n" "$1" "$(ARCH_STRING)" "$$(file -b $(OUTPUT_DIR)/$1)"; exit 1; }
|
204
220
|
endef
|
205
221
|
|
206
222
|
define check_output
|
207
|
-
@printf "
|
223
|
+
@printf "%s: $(ANSI_GREEN)%s$(ANSI_RESET) / $(ANSI_MAGENTA)%s$(ANSI_RESET)\n" "$1" "$3" "$(ARCH_STRING)"
|
208
224
|
endef
|
209
225
|
|
210
226
|
define check_shlib
|
@@ -248,12 +264,10 @@ test :
|
|
248
264
|
$(call check_bin,optipng,--version,$(OPTIPNG_VER))
|
249
265
|
$(call check_bin,oxipng,--version,$(OXIPNG_VER))
|
250
266
|
$(call check_bin,pngcrush,-version 2>&1,$(PNGCRUSH_VER))
|
267
|
+
$(call check_bin,pngout,2>&1 | head -n 1,$(shell perl -mTime::Piece -e 'print Time::Piece->strptime("$(PNGOUT_VER)", "%Y%m%d")->strftime("%b %e %Y")'))
|
251
268
|
$(call check_bin,pngquant,--help,$(PNGQUANT_VER))
|
252
269
|
.PHONY : test
|
253
270
|
|
254
|
-
livecheck :; @script/livecheck
|
255
|
-
.PHONY : livecheck
|
256
|
-
|
257
271
|
update-versions :
|
258
272
|
script/livecheck --update
|
259
273
|
make checksum-update
|
@@ -266,15 +280,25 @@ DOCKER_TAG := $(shell date +%Y%m%d)
|
|
266
280
|
|
267
281
|
docker-build : download
|
268
282
|
@docker build \
|
283
|
+
--pull \
|
269
284
|
$(foreach archive,$(ARCHIVES),--build-arg $(archive)_VER=$($(archive)_VER) --build-arg $(archive)_SHA256=$($(archive)_SHA256)) \
|
270
|
-
-t $(DOCKER_IMAGE):$(DOCKER_TAG) \
|
271
285
|
-t $(DOCKER_IMAGE):latest \
|
272
286
|
.
|
287
|
+
@docker tag \
|
288
|
+
$(DOCKER_IMAGE):latest \
|
289
|
+
$(DOCKER_IMAGE):$(DOCKER_TAG)
|
273
290
|
.PHONY : docker-build
|
274
291
|
|
275
|
-
docker-
|
276
|
-
@docker
|
292
|
+
docker-test : docker-build
|
293
|
+
@docker run \
|
294
|
+
--rm \
|
295
|
+
$(DOCKER_IMAGE):latest \
|
296
|
+
--info
|
297
|
+
.PHONY : docker-test
|
298
|
+
|
299
|
+
docker-push : docker-test
|
277
300
|
@docker push $(DOCKER_IMAGE):latest
|
301
|
+
@docker push $(DOCKER_IMAGE):$(DOCKER_TAG)
|
278
302
|
.PHONY : docker-push
|
279
303
|
|
280
304
|
# ====== CLEAN ======
|
@@ -480,6 +504,13 @@ $(PNGCRUSH_TARGET) :
|
|
480
504
|
LDFLAGS="$(XORIGIN) $(LDFLAGS)"
|
481
505
|
$(call chrpath_origin,$@)
|
482
506
|
|
507
|
+
## pngout
|
508
|
+
$(PNGOUT_TARGET) :
|
509
|
+
ifdef IS_LINUX
|
510
|
+
cd $(DIR) && ln -sf $(ARCH:x86_64=amd64)/pngout .
|
511
|
+
endif
|
512
|
+
cd $(DIR) && touch pngout
|
513
|
+
|
483
514
|
## pngquant
|
484
515
|
$(eval $(call depend,PNGQUANT,LIBLCMS LIBPNG LIBZ))
|
485
516
|
$(PNGQUANT_TARGET) :
|
data/README.markdown
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
[![Gem Version](https://img.shields.io/gem/v/image_optim_pack?logo=rubygems)](https://rubygems.org/gems/image_optim_pack)
|
2
2
|
[![Build Status](https://img.shields.io/github/workflow/status/toy/image_optim_pack/check/master?logo=github)](https://github.com/toy/image_optim_pack/actions/workflows/check.yml)
|
3
|
+
[![Rubocop](https://img.shields.io/github/workflow/status/toy/image_optim_pack/rubocop/master?label=rubocop&logo=rubocop)](https://github.com/toy/image_optim_pack/actions/workflows/rubocop.yml)
|
4
|
+
[![Docker build](https://img.shields.io/github/workflow/status/toy/image_optim_pack/docker-build?label=docker+build&logo=docker)](https://github.com/toy/image_optim_pack/actions/workflows/docker-build.yml)
|
5
|
+
[![Livecheck](https://img.shields.io/github/workflow/status/toy/image_optim_pack/livecheck/master?label=livecheck&logo=github)](https://github.com/toy/image_optim_pack/actions/workflows/livecheck.yml)
|
3
6
|
[![Code Climate](https://img.shields.io/codeclimate/maintainability/toy/image_optim_pack?logo=codeclimate)](https://codeclimate.com/github/toy/image_optim_pack)
|
4
7
|
[![Depfu](https://img.shields.io/depfu/toy/image_optim_pack)](https://depfu.com/github/toy/image_optim_pack)
|
5
8
|
[![Inch CI](https://inch-ci.org/github/toy/image_optim_pack.svg?branch=master)](https://inch-ci.org/github/toy/image_optim_pack)
|
@@ -10,7 +13,7 @@ Precompiled binaries for [`image_optim`](https://github.com/toy/image_optim).
|
|
10
13
|
|
11
14
|
Contains binaries for Mac OS X (>= 10.9, x86\_64) and Linux (i686 and x86\_64).
|
12
15
|
|
13
|
-
A test application with latest `image_optim` and `image_optim_pack` is available on
|
16
|
+
A test application with latest `image_optim` and `image_optim_pack` is available on render: https://iopack.onrender.com/.
|
14
17
|
|
15
18
|
## Binaries and libraries
|
16
19
|
|
@@ -38,6 +41,9 @@ A test application with latest `image_optim` and `image_optim_pack` is available
|
|
38
41
|
* [oxipng](https://github.com/shssoichiro/oxipng) by Joshua Holmer ([license](acknowledgements/oxipng.txt))
|
39
42
|
* [pngcrush](https://pmt.sourceforge.io/pngcrush/) by Glenn Randers-Pehrson, portions by Greg Roelofs ([license](acknowledgements/pngcrush.txt))
|
40
43
|
* contains [cexcept](http://www.nicemice.net/cexcept/) interface by Adam M. Costello and Cosmin Truta ([license](acknowledgements/cexcept.txt))
|
44
|
+
* [pngout](http://advsys.net/ken/utils.htm) by Ken Silverman ([license](acknowledgements/pngout.txt))
|
45
|
+
* Linux and BSD ports by Jonathon Fowler (http://www.jonof.id.au/pngout)
|
46
|
+
* Mac OS X port by Ken Silverman, with assistance by Jonathon Fowler
|
41
47
|
* [pngquant](https://pngquant.org/) by Kornel Lesiński based on code by Greg Roelofs and Jef Poskanzer after an idea by Stefan Schneider ([license](acknowledgements/pngquant.txt))
|
42
48
|
* [zlib](https://zlib.net/) by Jean-Loup Gailly and Mark Adler ([license](acknowledgements/zlib.txt))
|
43
49
|
|
@@ -77,7 +83,7 @@ script/run darwin 64 # Build only platforms matching darwin or 64
|
|
77
83
|
make # Build all tools and copy them to vendor/OS-ARCH for current OS and ARCH, then test
|
78
84
|
make all # same
|
79
85
|
|
80
|
-
|
86
|
+
script/livecheck # Check versions
|
81
87
|
make update-versions # Update versions in Makefile
|
82
88
|
|
83
89
|
make download # Download archives
|
data/Vagrantfile
CHANGED
@@ -0,0 +1,9 @@
|
|
1
|
+
PNGOUT / KZIP license:
|
2
|
+
|
3
|
+
I have gotten a lot of requests about bundling the command line executables, or releasing the source code to KZIP and PNGOUT. This is my license (updated 01/16/2021):
|
4
|
+
|
5
|
+
* The command line versions of PNGOUT.EXE and KZIP.EXE are free for use, as are the Mac and Linux ports.
|
6
|
+
* You may use PNGOUT- or KZIP-compressed content for non-commercial or commercial purposes.
|
7
|
+
* Redistributing, repackaging, or reusing the PNGOUT or KZIP executable is permitted for non-commercial projects that are distributed freely.
|
8
|
+
* For commercial requests (such as bundling with a commercial product), please write to my business partner, David Blake.
|
9
|
+
* When bundling, my credit (both my name and website) must be clearly displayed in some reasonable fashion that can be seen by an average user.
|
data/checksums.mk
CHANGED
@@ -1,14 +1,17 @@
|
|
1
|
-
ADVANCECOMP_SHA256 :=
|
1
|
+
ADVANCECOMP_SHA256 := 811f661dfbbdddefdcb5eaf133e403ca2af99328b850b22c1249f7bebe657578
|
2
2
|
GIFSICLE_SHA256 := 92f67079732bf4c1da087e6ae0905205846e5ac777ba5caa66d12a73aa943447
|
3
3
|
JHEAD_SHA256 := ef89bbcf4f6c25ed88088cf242a47a6aedfff4f08cc7dc205bf3e2c0f10a03c9
|
4
4
|
JPEGARCHIVE_SHA256 := 3da16a5abbddd925dee0379aa51d9fe0cba33da0b5703be27c13a2dda3d7ed75
|
5
|
-
JPEGOPTIM_SHA256 :=
|
5
|
+
JPEGOPTIM_SHA256 := c52616f2fb8d481315871680f9943b0f58c553d1e0c49a6bd4691a3e66d7e6de
|
6
6
|
LIBJPEG_SHA256 := 4077d6a6a75aeb01884f708919d25934c93305e49f7e3f36db9129320e6f4f3d
|
7
7
|
LIBLCMS_SHA256 := 0c67a5cc144029cfa34647a52809ec399aae488db4258a6a66fba318474a070f
|
8
|
-
LIBMOZJPEG_SHA256 :=
|
8
|
+
LIBMOZJPEG_SHA256 := 66b1b8d6b55d263f35f27f55acaaa3234df2a401232de99b6d099e2bb0a9d196
|
9
9
|
LIBPNG_SHA256 := daeb2620d829575513e35fecc83f0d3791a620b9b93d800b763542ece9390fb4
|
10
10
|
LIBZ_SHA256 := c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
|
11
11
|
OPTIPNG_SHA256 := 4f32f233cef870b3f95d3ad6428bfe4224ef34908f1b42b0badf858216654452
|
12
12
|
OXIPNG_SHA256 := aff72d2f627617f3f36d9796e65b83eb34f24d2c94f3a55612ade2df8ab8d946
|
13
13
|
PNGCRUSH_SHA256 := fed0aaf5c098aa8c7f78c75365cd18d7341417326ecbdba547876b7b4f3df4be
|
14
|
+
PNGOUT_LINUX_SHA256 := ac38bba6f0de29033de866538c3afa64341319b695bbe388efbc5fd9e830e928
|
15
|
+
PNGOUT_LINUX_STATIC_SHA256 := 7a78ea475d65a00981bf418e5dfa3b34e42d6460fb992340802873bb14b08597
|
16
|
+
PNGOUT_DARWIN_SHA256 := 3272fa947eeafc1ac0086e1f14935f9efa21d090a555e6892255fe5c88f6686e
|
14
17
|
PNGQUANT_SHA256 := a27cf0e64db499ccb3ddae9b36036e881f78293e46ec27a9e7a86a3802fcda66
|
data/image_optim_pack.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'image_optim_pack'
|
5
|
-
s.version = '0.
|
5
|
+
s.version = '0.9.1'
|
6
6
|
s.summary = %q{Precompiled binaries for image_optim: advpng, gifsicle, jhead, jpeg-recompress, jpegoptim, jpegtran, optipng, pngcrush, pngquant}
|
7
7
|
s.homepage = "https://github.com/toy/#{s.name}"
|
8
8
|
s.authors = ['Ivan Kuchin']
|
data/script/livecheck
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require 'yaml'
|
5
4
|
require 'uri'
|
6
5
|
require 'net/http'
|
7
6
|
require 'openssl'
|
@@ -10,6 +9,69 @@ require 'fspath'
|
|
10
9
|
|
11
10
|
# Fetch and compare latest tool/library versions
|
12
11
|
class Livecheck
|
12
|
+
CONFIG = {
|
13
|
+
advancecomp: {
|
14
|
+
url: 'https://github.com/amadvance/advancecomp/releases.atom',
|
15
|
+
regexp: %r{<id>tag:github.com,2008:Repository/\d+/\D+?(\d+(?:\.\d+)*)</id>},
|
16
|
+
},
|
17
|
+
gifsicle: {
|
18
|
+
url: 'https://www.lcdf.org/gifsicle/',
|
19
|
+
regexp: /gifsicle-(\d+(?:\.\d+)*)\.tar\.gz/,
|
20
|
+
},
|
21
|
+
jhead: {
|
22
|
+
url: 'https://www.sentex.ca/~mwandel/jhead/',
|
23
|
+
regexp: /jhead-(\d+(?:\.\d+)*)/,
|
24
|
+
},
|
25
|
+
jpegoptim: {
|
26
|
+
url: 'https://github.com/tjko/jpegoptim/tags.atom',
|
27
|
+
regexp: %r{<id>tag:github.com,2008:Repository/\d+/\D+?(\d+(?:\.\d+)*)</id>},
|
28
|
+
},
|
29
|
+
jpegarchive: {
|
30
|
+
url: 'https://github.com/danielgtaylor/jpeg-archive/releases.atom',
|
31
|
+
regexp: %r{<id>tag:github.com,2008:Repository/\d+/\D+?(\d+(?:\.\d+)*)</id>},
|
32
|
+
},
|
33
|
+
libjpeg: {
|
34
|
+
url: 'https://www.ijg.org/files/',
|
35
|
+
regexp: /jpegsrc.v(.*?).tar.gz/,
|
36
|
+
},
|
37
|
+
liblcms: {
|
38
|
+
url: 'https://sourceforge.net/projects/lcms/rss?path=/lcms',
|
39
|
+
regexp: %r{/lcms/(\d+(?:\.\d+)*)/},
|
40
|
+
},
|
41
|
+
libmozjpeg: {
|
42
|
+
url: 'https://github.com/mozilla/mozjpeg/releases.atom',
|
43
|
+
regexp: %r{<id>tag:github.com,2008:Repository/\d+/\D+?(\d+(?:\.\d+)*)</id>},
|
44
|
+
},
|
45
|
+
libpng: {
|
46
|
+
url: 'https://sourceforge.net/projects/libpng/rss?path=/libpng16',
|
47
|
+
regexp: %r{/libpng\d*/(\d+(?:\.\d+)*)/},
|
48
|
+
},
|
49
|
+
libz: {
|
50
|
+
url: 'https://sourceforge.net/projects/libpng/rss?path=/zlib',
|
51
|
+
regexp: %r{/zlib/(\d+(?:\.\d+)*)/},
|
52
|
+
},
|
53
|
+
optipng: {
|
54
|
+
url: 'https://sourceforge.net/projects/optipng/rss',
|
55
|
+
regexp: %r{/OptiPNG/optipng-(\d+(?:\.\d+)*)/},
|
56
|
+
},
|
57
|
+
oxipng: {
|
58
|
+
url: 'https://github.com/shssoichiro/oxipng/releases.atom',
|
59
|
+
regexp: %r{<id>tag:github.com,2008:Repository/\d+/v(\d+(?:\.\d+)*)</id>},
|
60
|
+
},
|
61
|
+
pngcrush: {
|
62
|
+
url: 'https://sourceforge.net/projects/pmt/rss?path=/pngcrush',
|
63
|
+
regexp: %r{/pngcrush/(\d+(?:\.\d+)*)/},
|
64
|
+
},
|
65
|
+
pngout: {
|
66
|
+
url: 'http://www.jonof.id.au/kenutils.html',
|
67
|
+
regexp: %r{/files/kenutils/pngout-(\d{8})-linux.tar.gz},
|
68
|
+
},
|
69
|
+
pngquant: {
|
70
|
+
url: 'https://pngquant.org/releases.html',
|
71
|
+
regexp: %r{<span itemprop='version'>(\d+(?:\.\d+)*)</span>},
|
72
|
+
},
|
73
|
+
}.freeze
|
74
|
+
|
13
75
|
# Commands
|
14
76
|
class Cli
|
15
77
|
VERSION_REGEXP = /^([A-Z]+)_VER *:= *(.*)$/.freeze
|
@@ -22,11 +84,15 @@ class Livecheck
|
|
22
84
|
def run
|
23
85
|
dump_changes
|
24
86
|
|
25
|
-
return unless @update
|
26
87
|
return unless livechecks.any?(&:changed?)
|
27
88
|
|
89
|
+
exit 1 unless @update
|
90
|
+
|
28
91
|
update_changelog
|
29
92
|
update_makefile
|
93
|
+
rescue StandardError => e
|
94
|
+
warn e
|
95
|
+
exit 2
|
30
96
|
end
|
31
97
|
|
32
98
|
private
|
@@ -119,8 +185,6 @@ class Livecheck
|
|
119
185
|
end
|
120
186
|
end
|
121
187
|
|
122
|
-
CONFIG = YAML.load(DATA).freeze
|
123
|
-
|
124
188
|
attr_reader :name, :current_version
|
125
189
|
|
126
190
|
def initialize(name, current_version)
|
@@ -144,7 +208,7 @@ class Livecheck
|
|
144
208
|
private
|
145
209
|
|
146
210
|
def config
|
147
|
-
CONFIG[name] || fail(ArgumentError, "Livecheck for #{name} not defined")
|
211
|
+
CONFIG[name.to_sym] || fail(ArgumentError, "Livecheck for #{name} not defined")
|
148
212
|
end
|
149
213
|
|
150
214
|
def get(url)
|
@@ -155,9 +219,9 @@ private
|
|
155
219
|
end
|
156
220
|
|
157
221
|
def fetch_versions
|
158
|
-
body = get(config[
|
222
|
+
body = get(config[:url])
|
159
223
|
|
160
|
-
version_regex =
|
224
|
+
version_regex = config[:regexp]
|
161
225
|
|
162
226
|
versions = body.scan(version_regex).map{ |match| Version.new(*match) }.sort
|
163
227
|
fail "No versions found for #{name} in body:\n#{body}" if versions.empty?
|
@@ -167,47 +231,3 @@ private
|
|
167
231
|
end
|
168
232
|
|
169
233
|
Livecheck::Cli.new(ARGV).run
|
170
|
-
|
171
|
-
__END__
|
172
|
-
advancecomp:
|
173
|
-
url: https://github.com/amadvance/advancecomp/releases.atom
|
174
|
-
regexp: <id>tag:github.com,2008:Repository/\d+/\D+?(\d+(?:\.\d+)*)</id>
|
175
|
-
gifsicle:
|
176
|
-
url: https://www.lcdf.org/gifsicle/
|
177
|
-
regexp: gifsicle-(\d+(?:\.\d+)*)\.tar\.gz
|
178
|
-
jhead:
|
179
|
-
url: https://www.sentex.ca/~mwandel/jhead/
|
180
|
-
regexp: jhead-(\d+(?:\.\d+)*)
|
181
|
-
jpegoptim:
|
182
|
-
url: https://github.com/tjko/jpegoptim/tags.atom
|
183
|
-
regexp: <id>tag:github.com,2008:Repository/\d+/\D+?(\d+(?:\.\d+)*)</id>
|
184
|
-
jpegarchive:
|
185
|
-
url: https://github.com/danielgtaylor/jpeg-archive/releases.atom
|
186
|
-
regexp: <id>tag:github.com,2008:Repository/\d+/\D+?(\d+(?:\.\d+)*)</id>
|
187
|
-
libjpeg:
|
188
|
-
url: https://www.ijg.org/files/
|
189
|
-
regexp: jpegsrc.v(.*?).tar.gz
|
190
|
-
liblcms:
|
191
|
-
url: https://sourceforge.net/projects/lcms/rss?path=/lcms
|
192
|
-
regexp: /lcms/(\d+(?:\.\d+)*)/
|
193
|
-
libmozjpeg:
|
194
|
-
url: https://github.com/mozilla/mozjpeg/releases.atom
|
195
|
-
regexp: <id>tag:github.com,2008:Repository/\d+/\D+?(\d+(?:\.\d+)*)</id>
|
196
|
-
libpng:
|
197
|
-
url: https://sourceforge.net/projects/libpng/rss?path=/libpng16
|
198
|
-
regexp: /libpng\d*/(\d+(?:\.\d+)*)/
|
199
|
-
libz:
|
200
|
-
url: https://sourceforge.net/projects/libpng/rss?path=/zlib
|
201
|
-
regexp: /zlib/(\d+(?:\.\d+)*)/
|
202
|
-
optipng:
|
203
|
-
url: https://sourceforge.net/projects/optipng/rss
|
204
|
-
regexp: /OptiPNG/optipng-(\d+(?:\.\d+)*)/
|
205
|
-
oxipng:
|
206
|
-
url: https://github.com/shssoichiro/oxipng/releases.atom
|
207
|
-
regexp: <id>tag:github.com,2008:Repository/\d+/v(\d+(?:\.\d+)*)</id>
|
208
|
-
pngcrush:
|
209
|
-
url: https://sourceforge.net/projects/pmt/rss?path=/pngcrush
|
210
|
-
regexp: /pngcrush/(\d+(?:\.\d+)*)/
|
211
|
-
pngquant:
|
212
|
-
url: https://pngquant.org/releases.html
|
213
|
-
regexp: <span itemprop='version'>(\d+(?:\.\d+)*)</span>
|
data/script/platform_downloads
CHANGED
@@ -36,9 +36,9 @@ version_time = begin
|
|
36
36
|
end.sort
|
37
37
|
time_pairs << [nil, Time.now]
|
38
38
|
|
39
|
-
time_pairs.each_cons(2).
|
39
|
+
time_pairs.each_cons(2).to_h do |(version_n, created_at), (_, next_created_at)|
|
40
40
|
[version_n, next_created_at - created_at]
|
41
|
-
end
|
41
|
+
end
|
42
42
|
end
|
43
43
|
|
44
44
|
table = Terminal::Table.new
|
data/script/run
CHANGED
@@ -57,7 +57,9 @@ for vm in $(perl -pe "s/.*?'(.+?-.+?)'\s+=>\s+'.+?\/.+?'.*|.*/\$1/" Vagrantfile
|
|
57
57
|
passes-filter "$vm" || continue
|
58
58
|
header "$vm"
|
59
59
|
|
60
|
-
[[ -
|
60
|
+
if [[ -z "$NO_UP" ]]; then
|
61
|
+
vagrant status "$vm" | grep -q running || vagrant up "$vm"
|
62
|
+
fi
|
61
63
|
|
62
64
|
# create ssh config
|
63
65
|
ssh_config=".vagrant/ssh_config.$vm"
|
data/vendor/darwin-x86_64/advpng
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: image_optim_pack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: x86_64-darwin
|
6
6
|
authors:
|
7
7
|
- Ivan Kuchin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: image_optim
|
@@ -100,6 +100,8 @@ extra_rdoc_files: []
|
|
100
100
|
files:
|
101
101
|
- ".dockerignore"
|
102
102
|
- ".github/workflows/check.yml"
|
103
|
+
- ".github/workflows/docker-build.yml"
|
104
|
+
- ".github/workflows/livecheck.yml"
|
103
105
|
- ".github/workflows/rubocop.yml"
|
104
106
|
- ".gitignore"
|
105
107
|
- ".rubocop.yml"
|
@@ -130,6 +132,7 @@ files:
|
|
130
132
|
- acknowledgements/optipng.txt
|
131
133
|
- acknowledgements/oxipng.txt
|
132
134
|
- acknowledgements/pngcrush.txt
|
135
|
+
- acknowledgements/pngout.txt
|
133
136
|
- acknowledgements/pngquant.txt
|
134
137
|
- acknowledgements/smallfry.txt
|
135
138
|
- acknowledgements/zlib.txt
|
@@ -169,6 +172,7 @@ files:
|
|
169
172
|
- vendor/darwin-x86_64/optipng
|
170
173
|
- vendor/darwin-x86_64/oxipng
|
171
174
|
- vendor/darwin-x86_64/pngcrush
|
175
|
+
- vendor/darwin-x86_64/pngout
|
172
176
|
- vendor/darwin-x86_64/pngquant
|
173
177
|
homepage: https://github.com/toy/image_optim_pack
|
174
178
|
licenses:
|
@@ -176,7 +180,7 @@ licenses:
|
|
176
180
|
metadata:
|
177
181
|
bug_tracker_uri: https://github.com/toy/image_optim_pack/issues
|
178
182
|
changelog_uri: https://github.com/toy/image_optim_pack/blob/master/CHANGELOG.markdown
|
179
|
-
documentation_uri: https://www.rubydoc.info/gems/image_optim_pack/0.
|
183
|
+
documentation_uri: https://www.rubydoc.info/gems/image_optim_pack/0.9.1
|
180
184
|
source_code_uri: https://github.com/toy/image_optim_pack
|
181
185
|
post_install_message:
|
182
186
|
rdoc_options: []
|
@@ -193,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
193
197
|
- !ruby/object:Gem::Version
|
194
198
|
version: '0'
|
195
199
|
requirements: []
|
196
|
-
rubygems_version: 3.3.
|
200
|
+
rubygems_version: 3.3.11
|
197
201
|
signing_key:
|
198
202
|
specification_version: 4
|
199
203
|
summary: 'Precompiled binaries for image_optim: advpng, gifsicle, jhead, jpeg-recompress,
|