comparison libpam-sys/libpam-sys-test/build.rs @ 130:80c07e5ab22f

Transfer over (almost) completely to using libpam-sys. This reimplements everything in nonstick on top of the new -sys crate. We don't yet use libpam-sys's helpers for binary message payloads. Soon.
author Paul Fisher <paul@pfish.zone>
date Tue, 01 Jul 2025 06:11:43 -0400
parents c77846f3a979
children a632a8874131
comparison
equal deleted inserted replaced
129:5b2de52dd8b2 130:80c07e5ab22f
1 use bindgen::MacroTypeVariation; 1 use bindgen::MacroTypeVariation;
2 use libpam_sys_impls::__pam_impl_enum__; 2 use libpam_sys_impls::__pam_impl_enum__;
3 use proc_macro2::{Group, TokenStream, TokenTree}; 3 use proc_macro2::{Group, Ident, TokenStream, TokenTree};
4 use quote::{format_ident, ToTokens}; 4 use quote::{format_ident, ToTokens};
5 use std::path::Path; 5 use std::path::Path;
6 use std::process::Command; 6 use std::process::Command;
7 use std::str::FromStr; 7 use std::str::FromStr;
8 use std::{env, fs}; 8 use std::{env, fs};
148 } 148 }
149 149
150 fn remove_consts(file_contents: &str, out_file: impl AsRef<Path>) { 150 fn remove_consts(file_contents: &str, out_file: impl AsRef<Path>) {
151 let deconstified = deconstify( 151 let deconstified = deconstify(
152 TokenStream::from_str(file_contents).unwrap(), 152 TokenStream::from_str(file_contents).unwrap(),
153 &TokenStream::from_str("mut") 153 &format_ident!("mut"),
154 .unwrap()
155 .into_iter()
156 .next()
157 .unwrap(),
158 ) 154 )
159 .to_string(); 155 .to_string();
160 let out_file = out_file.as_ref(); 156 let out_file = out_file.as_ref();
161 fs::write(out_file, deconstified).unwrap(); 157 fs::write(out_file, deconstified).unwrap();
162 rustfmt(out_file) 158 rustfmt(out_file)
168 .status() 164 .status()
169 .unwrap(); 165 .unwrap();
170 assert!(status.success(), "rustfmt exited with code {status}"); 166 assert!(status.success(), "rustfmt exited with code {status}");
171 } 167 }
172 168
173 fn deconstify(stream: TokenStream, mut_token: &TokenTree) -> TokenStream { 169 fn deconstify(stream: TokenStream, mut_token: &Ident) -> TokenStream {
174 TokenStream::from_iter(stream.into_iter().map(|token| { 170 TokenStream::from_iter(stream.into_iter().map(|token| {
175 match token { 171 match token {
176 TokenTree::Group(g) => { 172 TokenTree::Group(g) => {
177 TokenTree::Group(Group::new(g.delimiter(), deconstify(g.stream(), mut_token))) 173 TokenTree::Group(Group::new(g.delimiter(), deconstify(g.stream(), mut_token)))
178 .into_token_stream() 174 .into_token_stream()