@@ -58,53 +58,54 @@ import("xim.libxpkg.pkginfo")
5858import (" xim.libxpkg.log" )
5959import (" xim.libxpkg.xvm" )
6060
61+ -- Sandbox file enumeration helper (os.files(glob) is sandbox-nil).
62+ local function _ls_glob (globpat )
63+ local out = {}
64+ local h = io.popen (" ls -1 " .. globpat .. " 2>/dev/null" )
65+ if not h then return out end
66+ for line in h :lines () do
67+ if line ~= " " then table.insert (out , path .filename (line )) end
68+ end
69+ h :close ()
70+ return out
71+ end
72+
73+ local function _sys_usr_includedir ()
74+ return path .join (system .subos_sysrootdir (), " usr/include" )
75+ end
76+ local function _sys_usr_libdir ()
77+ return path .join (system .subos_sysrootdir (), " usr/lib" )
78+ end
79+
6180local function libxau_libs ()
6281 local libdir = path .join (pkginfo .install_dir (), " lib/x86_64-linux-gnu" )
6382 if not os .isdir (libdir ) then
6483 libdir = path .join (pkginfo .install_dir (), " lib" )
6584 end
66-
67- local out = {}
68-
69- -- Scan for all libXau*.so* files
70- for _ , file in ipairs (os .files (path .join (libdir , " libXau*.so*" ))) do
71- local name = path .filename (file )
72- table.insert (out , name )
73- end
74-
75- -- If no files found via glob, return default set
85+ local out = _ls_glob (path .join (libdir , " libXau*.so*" ))
7686 if # out == 0 then
77- table.insert (out , " libXau.so" )
78- table.insert (out , " libXau.so.6" )
87+ out = { " libXau.so" , " libXau.so.6" }
7988 end
80-
8189 return out
8290end
8391
84- local sys_usr_includedir = path .join (system .subos_sysrootdir (), " usr/include" )
85-
8692function install ()
87- local scode_libxau_dir = path .absolute (" libXau-" .. pkginfo .version ())
88- local build_libxau_dir = " build-libxau"
89-
90- log .info (" 1.Creating build dir -" .. build_libxau_dir )
91- os .tryrm (build_libxau_dir )
92- os .mkdir (build_libxau_dir )
93-
94- log .info (" 2.Configuring libxau with autotools..." )
95- os .cd (build_libxau_dir )
96- local libxau_prefix = pkginfo .install_dir ()
97- system .exec (" " .. scode_libxau_dir .. " /configure"
98- .. " --prefix=" .. libxau_prefix
99- .. " --disable-static"
100- .. " --enable-shared"
101- )
102-
103- log .info (" 3.Building libxau..." )
104- system .exec (string.format (" make -j%d" , os .cpuinfo (" ncpu" ) or 4 ))
105-
106- log .info (" 4.Installing libxau..." )
107- system .exec (" make install" )
93+ -- sandbox template (#49 bzip2)
94+ local runtime_dir = path .directory (pkginfo .install_file ())
95+ local scode_dir = path .join (runtime_dir , " libXau-" .. pkginfo .version ())
96+ local build_dir = path .join (runtime_dir , " build-libxau" )
97+ local prefix = pkginfo .install_dir ()
98+
99+ os .tryrm (build_dir )
100+ os .mkdir (build_dir )
101+
102+ log .info (" Configuring + building + installing libxau (autotools)..." )
103+ system .exec (string.format (
104+ " sh -c 'export PKG_CONFIG_PATH=%s/usr/lib/pkgconfig; "
105+ .. " cd %s && %s/configure --prefix=%s --disable-static --enable-shared "
106+ .. " && make -j8 && make install'" ,
107+ system .subos_sysrootdir (), build_dir , scode_dir , prefix
108+ ))
108109
109110 return os .isdir (pkginfo .install_dir ())
110111end
@@ -116,63 +117,50 @@ function config()
116117 libdir = path .join (pkginfo .install_dir (), " lib" )
117118 end
118119
119- local config = {
120+ local cfg = {
120121 type = " lib" ,
121122 version = " libxau-" .. pkginfo .version (),
122123 bindir = libdir ,
123124 }
124125
125126 for _ , lib in ipairs (libxau_libs ()) do
126- config .alias = lib
127- config .filename = lib
128- xvm .add (lib , config )
127+ cfg .alias = lib
128+ cfg .filename = lib
129+ xvm .add (lib , cfg )
129130 end
130131
131132 log .info (" Adding header files to sysroot..." )
132- local libxau_hdr_dir = path .join (pkginfo .install_dir (), " include" )
133- os .mkdir (sys_usr_includedir )
134-
135- -- Copy X11 headers
136- local x11_include_dir = path .join (libxau_hdr_dir , " X11" )
137- if os .isdir (x11_include_dir ) then
138- os .cp (x11_include_dir , sys_usr_includedir , { force = true })
133+ local sys_inc = _sys_usr_includedir ()
134+ os .mkdir (sys_inc )
135+ local x11_dir = path .join (pkginfo .install_dir (), " include" , " X11" )
136+ if os .isdir (x11_dir ) then
137+ os .cp (x11_dir , sys_inc , { force = true })
139138 end
140139
141- -- Copy pkgconfig files
142- local sys_pc_dir = path .join (system .subos_sysrootdir (), " usr/lib/pkgconfig" )
140+ local sys_pc_dir = path .join (_sys_usr_libdir (), " pkgconfig" )
143141 os .mkdir (sys_pc_dir )
144- local pc_dirs = {
145- path .join (pkginfo .install_dir (), " lib/pkgconfig" ),
146- path .join (pkginfo .install_dir (), " lib/x86_64-linux-gnu/pkgconfig" ),
147- }
148- for _ , pc_dir in ipairs (pc_dirs ) do
149- if os .isdir (pc_dir ) then
150- for _ , pc in ipairs (os .files (path .join (pc_dir , " xau*.pc" ))) do
151- os .cp (pc , sys_pc_dir )
152- end
142+ for _ , pc_subdir in ipairs ({" lib/pkgconfig" , " lib/x86_64-linux-gnu/pkgconfig" }) do
143+ local src = path .join (pkginfo .install_dir (), pc_subdir )
144+ if os .isdir (src ) then
145+ system .exec (string.format (
146+ " sh -c 'cp -f %s/xau*.pc %s/ 2>/dev/null || true'" ,
147+ src , sys_pc_dir
148+ ))
153149 end
154150 end
155151
156152 xvm .add (" libxau" )
157-
158153 return true
159154end
160155
161156function uninstall ()
162157 xvm .remove (" libxau" )
163-
164158 for _ , lib in ipairs (libxau_libs ()) do
165159 xvm .remove (lib , " libxau-" .. pkginfo .version ())
166160 end
167-
168- -- Remove header files (only Xauth.h)
169- os .tryrm (path .join (sys_usr_includedir , " X11/Xauth.h" ))
170-
171- -- Remove pkgconfig files
172- local sys_pc_dir = path .join (system .subos_sysrootdir (), " usr/lib/pkgconfig" )
173- for _ , pc in ipairs (os .files (path .join (sys_pc_dir , " xau*.pc" ))) do
174- os .tryrm (pc )
175- end
176-
161+ os .tryrm (path .join (_sys_usr_includedir (), " X11/Xauth.h" ))
162+ system .exec (string.format (
163+ " sh -c 'rm -f %s/pkgconfig/xau*.pc'" , _sys_usr_libdir ()
164+ ))
177165 return true
178166end
0 commit comments